// This file is distributed under the University of Illinois Open Source License.
// See LICENSE.TXT for details.
// RUN: c_compiler -c -o %t1.o -I "common" "common/testsuite.c"
// RUN: cxx_compiler cxx_rtti -c %s -I "common" -o %t2.o
// RUN: c_compiler -c %s -I "common" -o %t3.o
// RUN: linker -o %t2%exeext  %t1.o %t2.o %t3.o
// RUN: runtool %t2%exeext | checker "TEST PASSED"
#include "testsuite.h"
#ifdef __cplusplus

struct  S79C8_nt  {
  int s79c8f0[2];
  void  mf79c8(); // _ZN8S79C8_nt6mf79c8Ev
};
//SIG(-1 S79C8_nt) C1{ m Fi[2]}


void  S79C8_nt ::mf79c8(){}

//skip512 S79C8_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S79C8_nt[];
VTBL_ENTRY *P__ZTI8S79C8_nt = _ZTI8S79C8_nt; 
Class_Descriptor cd_S79C8_nt = {  "S79C8_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  8, // object size
  NSPAIRA(_ZTI8S79C8_nt),ABISELECT(16,8), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S79C7_nt  {
  int s79c7f0;
  __tsi64 s79c7f1;
  void *s79c7f2[4];
  int s79c7f3[2];
  void *s79c7f4;
  ::S79C8_nt s79c7f5;
  void *s79c7f6[2];
  virtual  ~S79C7_nt(); // _ZN8S79C7_ntD1Ev
  virtual void  v4(); // _ZN8S79C7_nt2v4Ev
  virtual void  v5(); // _ZN8S79C7_nt2v5Ev
  virtual void  v6(); // _ZN8S79C7_nt2v6Ev
  virtual void  v7(); // _ZN8S79C7_nt2v7Ev
  virtual void  v8(); // _ZN8S79C7_nt2v8Ev
  virtual void  v9(); // _ZN8S79C7_nt2v9Ev
  virtual void  v10(); // _ZN8S79C7_nt3v10Ev
  virtual void  v11(); // _ZN8S79C7_nt3v11Ev
  virtual void  v12(); // _ZN8S79C7_nt3v12Ev
  virtual void  v13(); // _ZN8S79C7_nt3v13Ev
  virtual void  v14(); // _ZN8S79C7_nt3v14Ev
  virtual void  v15(); // _ZN8S79C7_nt3v15Ev
  virtual void  v16(); // _ZN8S79C7_nt3v16Ev
  virtual void  v17(); // _ZN8S79C7_nt3v17Ev
  virtual void  v18(); // _ZN8S79C7_nt3v18Ev
  virtual void  v19(); // _ZN8S79C7_nt3v19Ev
  virtual void  v20(); // _ZN8S79C7_nt3v20Ev
  virtual void  v21(); // _ZN8S79C7_nt3v21Ev
  virtual void  v22(); // _ZN8S79C7_nt3v22Ev
  virtual void  v23(); // _ZN8S79C7_nt3v23Ev
  virtual void  v24(); // _ZN8S79C7_nt3v24Ev
  virtual void  v25(); // _ZN8S79C7_nt3v25Ev
  virtual void  v26(); // _ZN8S79C7_nt3v26Ev
  virtual void  v27(); // _ZN8S79C7_nt3v27Ev
  virtual void  v28(); // _ZN8S79C7_nt3v28Ev
  virtual void  v29(); // _ZN8S79C7_nt3v29Ev
  virtual void  v30(); // _ZN8S79C7_nt3v30Ev
  virtual void  v31(); // _ZN8S79C7_nt3v31Ev
  virtual void  v32(); // _ZN8S79C7_nt3v32Ev
  virtual void  v33(); // _ZN8S79C7_nt3v33Ev
  virtual void  v34(); // _ZN8S79C7_nt3v34Ev
  virtual void  v35(); // _ZN8S79C7_nt3v35Ev
  virtual void  v36(); // _ZN8S79C7_nt3v36Ev
  virtual void  v37(); // _ZN8S79C7_nt3v37Ev
  virtual void  v38(); // _ZN8S79C7_nt3v38Ev
  virtual void  v39(); // _ZN8S79C7_nt3v39Ev
  virtual void  v40(); // _ZN8S79C7_nt3v40Ev
  virtual void  v41(); // _ZN8S79C7_nt3v41Ev
  virtual void  v42(); // _ZN8S79C7_nt3v42Ev
  virtual void  v43(); // _ZN8S79C7_nt3v43Ev
  virtual void  v44(); // _ZN8S79C7_nt3v44Ev
  virtual void  v45(); // _ZN8S79C7_nt3v45Ev
  virtual void  v46(); // _ZN8S79C7_nt3v46Ev
  virtual void  v47(); // _ZN8S79C7_nt3v47Ev
  virtual void  v48(); // _ZN8S79C7_nt3v48Ev
  virtual void  v49(); // _ZN8S79C7_nt3v49Ev
  virtual void  v50(); // _ZN8S79C7_nt3v50Ev
  virtual void  v51(); // _ZN8S79C7_nt3v51Ev
  virtual void  v52(); // _ZN8S79C7_nt3v52Ev
  virtual void  v53(); // _ZN8S79C7_nt3v53Ev
  virtual void  v54(); // _ZN8S79C7_nt3v54Ev
  virtual void  v55(); // _ZN8S79C7_nt3v55Ev
  virtual void  v56(); // _ZN8S79C7_nt3v56Ev
  virtual void  v57(); // _ZN8S79C7_nt3v57Ev
  virtual void  v58(); // _ZN8S79C7_nt3v58Ev
  virtual void  v59(); // _ZN8S79C7_nt3v59Ev
  virtual void  v60(); // _ZN8S79C7_nt3v60Ev
  virtual void  v61(); // _ZN8S79C7_nt3v61Ev
  virtual void  v62(); // _ZN8S79C7_nt3v62Ev
  virtual void  v63(); // _ZN8S79C7_nt3v63Ev
  virtual void  v64(); // _ZN8S79C7_nt3v64Ev
  virtual void  v65(); // _ZN8S79C7_nt3v65Ev
  virtual void  v66(); // _ZN8S79C7_nt3v66Ev
  virtual void  v67(); // _ZN8S79C7_nt3v67Ev
  S79C7_nt(); // tgen
};
//SIG(-1 S79C7_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 Fi FL Fp[4] Fi[2] Fp FC2{ m Fi[2]} Fp[2]}


 S79C7_nt ::~S79C7_nt(){ note_dtor("S79C7_nt", this);}
void  S79C7_nt ::v4(){vfunc_called(this, "_ZN8S79C7_nt2v4Ev");}
void  S79C7_nt ::v5(){vfunc_called(this, "_ZN8S79C7_nt2v5Ev");}
void  S79C7_nt ::v6(){vfunc_called(this, "_ZN8S79C7_nt2v6Ev");}
void  S79C7_nt ::v7(){vfunc_called(this, "_ZN8S79C7_nt2v7Ev");}
void  S79C7_nt ::v8(){vfunc_called(this, "_ZN8S79C7_nt2v8Ev");}
void  S79C7_nt ::v9(){vfunc_called(this, "_ZN8S79C7_nt2v9Ev");}
void  S79C7_nt ::v10(){vfunc_called(this, "_ZN8S79C7_nt3v10Ev");}
void  S79C7_nt ::v11(){vfunc_called(this, "_ZN8S79C7_nt3v11Ev");}
void  S79C7_nt ::v12(){vfunc_called(this, "_ZN8S79C7_nt3v12Ev");}
void  S79C7_nt ::v13(){vfunc_called(this, "_ZN8S79C7_nt3v13Ev");}
void  S79C7_nt ::v14(){vfunc_called(this, "_ZN8S79C7_nt3v14Ev");}
void  S79C7_nt ::v15(){vfunc_called(this, "_ZN8S79C7_nt3v15Ev");}
void  S79C7_nt ::v16(){vfunc_called(this, "_ZN8S79C7_nt3v16Ev");}
void  S79C7_nt ::v17(){vfunc_called(this, "_ZN8S79C7_nt3v17Ev");}
void  S79C7_nt ::v18(){vfunc_called(this, "_ZN8S79C7_nt3v18Ev");}
void  S79C7_nt ::v19(){vfunc_called(this, "_ZN8S79C7_nt3v19Ev");}
void  S79C7_nt ::v20(){vfunc_called(this, "_ZN8S79C7_nt3v20Ev");}
void  S79C7_nt ::v21(){vfunc_called(this, "_ZN8S79C7_nt3v21Ev");}
void  S79C7_nt ::v22(){vfunc_called(this, "_ZN8S79C7_nt3v22Ev");}
void  S79C7_nt ::v23(){vfunc_called(this, "_ZN8S79C7_nt3v23Ev");}
void  S79C7_nt ::v24(){vfunc_called(this, "_ZN8S79C7_nt3v24Ev");}
void  S79C7_nt ::v25(){vfunc_called(this, "_ZN8S79C7_nt3v25Ev");}
void  S79C7_nt ::v26(){vfunc_called(this, "_ZN8S79C7_nt3v26Ev");}
void  S79C7_nt ::v27(){vfunc_called(this, "_ZN8S79C7_nt3v27Ev");}
void  S79C7_nt ::v28(){vfunc_called(this, "_ZN8S79C7_nt3v28Ev");}
void  S79C7_nt ::v29(){vfunc_called(this, "_ZN8S79C7_nt3v29Ev");}
void  S79C7_nt ::v30(){vfunc_called(this, "_ZN8S79C7_nt3v30Ev");}
void  S79C7_nt ::v31(){vfunc_called(this, "_ZN8S79C7_nt3v31Ev");}
void  S79C7_nt ::v32(){vfunc_called(this, "_ZN8S79C7_nt3v32Ev");}
void  S79C7_nt ::v33(){vfunc_called(this, "_ZN8S79C7_nt3v33Ev");}
void  S79C7_nt ::v34(){vfunc_called(this, "_ZN8S79C7_nt3v34Ev");}
void  S79C7_nt ::v35(){vfunc_called(this, "_ZN8S79C7_nt3v35Ev");}
void  S79C7_nt ::v36(){vfunc_called(this, "_ZN8S79C7_nt3v36Ev");}
void  S79C7_nt ::v37(){vfunc_called(this, "_ZN8S79C7_nt3v37Ev");}
void  S79C7_nt ::v38(){vfunc_called(this, "_ZN8S79C7_nt3v38Ev");}
void  S79C7_nt ::v39(){vfunc_called(this, "_ZN8S79C7_nt3v39Ev");}
void  S79C7_nt ::v40(){vfunc_called(this, "_ZN8S79C7_nt3v40Ev");}
void  S79C7_nt ::v41(){vfunc_called(this, "_ZN8S79C7_nt3v41Ev");}
void  S79C7_nt ::v42(){vfunc_called(this, "_ZN8S79C7_nt3v42Ev");}
void  S79C7_nt ::v43(){vfunc_called(this, "_ZN8S79C7_nt3v43Ev");}
void  S79C7_nt ::v44(){vfunc_called(this, "_ZN8S79C7_nt3v44Ev");}
void  S79C7_nt ::v45(){vfunc_called(this, "_ZN8S79C7_nt3v45Ev");}
void  S79C7_nt ::v46(){vfunc_called(this, "_ZN8S79C7_nt3v46Ev");}
void  S79C7_nt ::v47(){vfunc_called(this, "_ZN8S79C7_nt3v47Ev");}
void  S79C7_nt ::v48(){vfunc_called(this, "_ZN8S79C7_nt3v48Ev");}
void  S79C7_nt ::v49(){vfunc_called(this, "_ZN8S79C7_nt3v49Ev");}
void  S79C7_nt ::v50(){vfunc_called(this, "_ZN8S79C7_nt3v50Ev");}
void  S79C7_nt ::v51(){vfunc_called(this, "_ZN8S79C7_nt3v51Ev");}
void  S79C7_nt ::v52(){vfunc_called(this, "_ZN8S79C7_nt3v52Ev");}
void  S79C7_nt ::v53(){vfunc_called(this, "_ZN8S79C7_nt3v53Ev");}
void  S79C7_nt ::v54(){vfunc_called(this, "_ZN8S79C7_nt3v54Ev");}
void  S79C7_nt ::v55(){vfunc_called(this, "_ZN8S79C7_nt3v55Ev");}
void  S79C7_nt ::v56(){vfunc_called(this, "_ZN8S79C7_nt3v56Ev");}
void  S79C7_nt ::v57(){vfunc_called(this, "_ZN8S79C7_nt3v57Ev");}
void  S79C7_nt ::v58(){vfunc_called(this, "_ZN8S79C7_nt3v58Ev");}
void  S79C7_nt ::v59(){vfunc_called(this, "_ZN8S79C7_nt3v59Ev");}
void  S79C7_nt ::v60(){vfunc_called(this, "_ZN8S79C7_nt3v60Ev");}
void  S79C7_nt ::v61(){vfunc_called(this, "_ZN8S79C7_nt3v61Ev");}
void  S79C7_nt ::v62(){vfunc_called(this, "_ZN8S79C7_nt3v62Ev");}
void  S79C7_nt ::v63(){vfunc_called(this, "_ZN8S79C7_nt3v63Ev");}
void  S79C7_nt ::v64(){vfunc_called(this, "_ZN8S79C7_nt3v64Ev");}
void  S79C7_nt ::v65(){vfunc_called(this, "_ZN8S79C7_nt3v65Ev");}
void  S79C7_nt ::v66(){vfunc_called(this, "_ZN8S79C7_nt3v66Ev");}
void  S79C7_nt ::v67(){vfunc_called(this, "_ZN8S79C7_nt3v67Ev");}
S79C7_nt ::S79C7_nt(){ note_ctor("S79C7_nt", this);} // tgen

//skip512 S79C7_nt

#else // __cplusplus

extern void _ZN8S79C7_ntC1Ev();
extern void _ZN8S79C7_ntD1Ev();
Name_Map name_map_S79C7_nt[] = {
  NSPAIR(_ZN8S79C7_ntC1Ev),
  NSPAIR(_ZN8S79C7_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S79C7_nt[];
extern void _ZN8S79C7_ntD1Ev();
extern void _ZN8S79C7_ntD0Ev();
extern void _ZN8S79C7_nt2v4Ev();
extern void _ZN8S79C7_nt2v5Ev();
extern void _ZN8S79C7_nt2v6Ev();
extern void _ZN8S79C7_nt2v7Ev();
extern void _ZN8S79C7_nt2v8Ev();
extern void _ZN8S79C7_nt2v9Ev();
extern void _ZN8S79C7_nt3v10Ev();
extern void _ZN8S79C7_nt3v11Ev();
extern void _ZN8S79C7_nt3v12Ev();
extern void _ZN8S79C7_nt3v13Ev();
extern void _ZN8S79C7_nt3v14Ev();
extern void _ZN8S79C7_nt3v15Ev();
extern void _ZN8S79C7_nt3v16Ev();
extern void _ZN8S79C7_nt3v17Ev();
extern void _ZN8S79C7_nt3v18Ev();
extern void _ZN8S79C7_nt3v19Ev();
extern void _ZN8S79C7_nt3v20Ev();
extern void _ZN8S79C7_nt3v21Ev();
extern void _ZN8S79C7_nt3v22Ev();
extern void _ZN8S79C7_nt3v23Ev();
extern void _ZN8S79C7_nt3v24Ev();
extern void _ZN8S79C7_nt3v25Ev();
extern void _ZN8S79C7_nt3v26Ev();
extern void _ZN8S79C7_nt3v27Ev();
extern void _ZN8S79C7_nt3v28Ev();
extern void _ZN8S79C7_nt3v29Ev();
extern void _ZN8S79C7_nt3v30Ev();
extern void _ZN8S79C7_nt3v31Ev();
extern void _ZN8S79C7_nt3v32Ev();
extern void _ZN8S79C7_nt3v33Ev();
extern void _ZN8S79C7_nt3v34Ev();
extern void _ZN8S79C7_nt3v35Ev();
extern void _ZN8S79C7_nt3v36Ev();
extern void _ZN8S79C7_nt3v37Ev();
extern void _ZN8S79C7_nt3v38Ev();
extern void _ZN8S79C7_nt3v39Ev();
extern void _ZN8S79C7_nt3v40Ev();
extern void _ZN8S79C7_nt3v41Ev();
extern void _ZN8S79C7_nt3v42Ev();
extern void _ZN8S79C7_nt3v43Ev();
extern void _ZN8S79C7_nt3v44Ev();
extern void _ZN8S79C7_nt3v45Ev();
extern void _ZN8S79C7_nt3v46Ev();
extern void _ZN8S79C7_nt3v47Ev();
extern void _ZN8S79C7_nt3v48Ev();
extern void _ZN8S79C7_nt3v49Ev();
extern void _ZN8S79C7_nt3v50Ev();
extern void _ZN8S79C7_nt3v51Ev();
extern void _ZN8S79C7_nt3v52Ev();
extern void _ZN8S79C7_nt3v53Ev();
extern void _ZN8S79C7_nt3v54Ev();
extern void _ZN8S79C7_nt3v55Ev();
extern void _ZN8S79C7_nt3v56Ev();
extern void _ZN8S79C7_nt3v57Ev();
extern void _ZN8S79C7_nt3v58Ev();
extern void _ZN8S79C7_nt3v59Ev();
extern void _ZN8S79C7_nt3v60Ev();
extern void _ZN8S79C7_nt3v61Ev();
extern void _ZN8S79C7_nt3v62Ev();
extern void _ZN8S79C7_nt3v63Ev();
extern void _ZN8S79C7_nt3v64Ev();
extern void _ZN8S79C7_nt3v65Ev();
extern void _ZN8S79C7_nt3v66Ev();
extern void _ZN8S79C7_nt3v67Ev();
static  VTBL_ENTRY vtc_S79C7_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S79C7_nt[0]),
  (VTBL_ENTRY)&_ZN8S79C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN8S79C7_ntD0Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt2v4Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt2v6Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt2v7Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt2v8Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v11Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v18Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v19Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v20Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v21Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v22Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v23Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v24Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v25Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v26Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v27Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v28Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v29Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v30Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v31Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v32Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v38Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v39Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v40Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v41Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v42Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v43Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v44Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v45Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v46Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v47Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v48Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v49Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v50Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v51Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v52Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v53Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v54Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v55Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v56Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v57Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v58Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v59Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v60Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v61Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v62Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v63Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v64Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v65Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v66Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v67Ev,
};
extern VTBL_ENTRY _ZTI8S79C7_nt[];
VTBL_ENTRY *P__ZTI8S79C7_nt = _ZTI8S79C7_nt; 
extern  VTBL_ENTRY _ZTV8S79C7_nt[];
Class_Descriptor cd_S79C7_nt = {  "S79C7_nt", // class name
  0,0,//no base classes
  &(vtc_S79C7_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI8S79C7_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S79C7_nt),68, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S79C6_nt  : S79C7_nt {
  virtual  ~S79C6_nt(); // _ZN8S79C6_ntD1Ev
  virtual void  v68(); // _ZN8S79C6_nt3v68Ev
  virtual void  v69(); // _ZN8S79C6_nt3v69Ev
  S79C6_nt(); // tgen
};
//SIG(-1 S79C6_nt) C1{ BC2{ vd v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2}


 S79C6_nt ::~S79C6_nt(){ note_dtor("S79C6_nt", this);}
void  S79C6_nt ::v68(){vfunc_called(this, "_ZN8S79C6_nt3v68Ev");}
void  S79C6_nt ::v69(){vfunc_called(this, "_ZN8S79C6_nt3v69Ev");}
S79C6_nt ::S79C6_nt(){ note_ctor("S79C6_nt", this);} // tgen

//skip512 S79C6_nt

#else // __cplusplus

extern void _ZN8S79C6_ntC1Ev();
extern void _ZN8S79C6_ntD1Ev();
Name_Map name_map_S79C6_nt[] = {
  NSPAIR(_ZN8S79C6_ntC1Ev),
  NSPAIR(_ZN8S79C6_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S79C7_nt;
extern VTBL_ENTRY _ZTI8S79C7_nt[];
extern  VTBL_ENTRY _ZTV8S79C7_nt[];
static Base_Class bases_S79C6_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S79C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S79C6_nt[];
extern void _ZN8S79C6_ntD1Ev();
extern void _ZN8S79C6_ntD0Ev();
extern void _ZN8S79C7_nt2v4Ev();
extern void _ZN8S79C7_nt2v5Ev();
extern void _ZN8S79C7_nt2v6Ev();
extern void _ZN8S79C7_nt2v7Ev();
extern void _ZN8S79C7_nt2v8Ev();
extern void _ZN8S79C7_nt2v9Ev();
extern void _ZN8S79C7_nt3v10Ev();
extern void _ZN8S79C7_nt3v11Ev();
extern void _ZN8S79C7_nt3v12Ev();
extern void _ZN8S79C7_nt3v13Ev();
extern void _ZN8S79C7_nt3v14Ev();
extern void _ZN8S79C7_nt3v15Ev();
extern void _ZN8S79C7_nt3v16Ev();
extern void _ZN8S79C7_nt3v17Ev();
extern void _ZN8S79C7_nt3v18Ev();
extern void _ZN8S79C7_nt3v19Ev();
extern void _ZN8S79C7_nt3v20Ev();
extern void _ZN8S79C7_nt3v21Ev();
extern void _ZN8S79C7_nt3v22Ev();
extern void _ZN8S79C7_nt3v23Ev();
extern void _ZN8S79C7_nt3v24Ev();
extern void _ZN8S79C7_nt3v25Ev();
extern void _ZN8S79C7_nt3v26Ev();
extern void _ZN8S79C7_nt3v27Ev();
extern void _ZN8S79C7_nt3v28Ev();
extern void _ZN8S79C7_nt3v29Ev();
extern void _ZN8S79C7_nt3v30Ev();
extern void _ZN8S79C7_nt3v31Ev();
extern void _ZN8S79C7_nt3v32Ev();
extern void _ZN8S79C7_nt3v33Ev();
extern void _ZN8S79C7_nt3v34Ev();
extern void _ZN8S79C7_nt3v35Ev();
extern void _ZN8S79C7_nt3v36Ev();
extern void _ZN8S79C7_nt3v37Ev();
extern void _ZN8S79C7_nt3v38Ev();
extern void _ZN8S79C7_nt3v39Ev();
extern void _ZN8S79C7_nt3v40Ev();
extern void _ZN8S79C7_nt3v41Ev();
extern void _ZN8S79C7_nt3v42Ev();
extern void _ZN8S79C7_nt3v43Ev();
extern void _ZN8S79C7_nt3v44Ev();
extern void _ZN8S79C7_nt3v45Ev();
extern void _ZN8S79C7_nt3v46Ev();
extern void _ZN8S79C7_nt3v47Ev();
extern void _ZN8S79C7_nt3v48Ev();
extern void _ZN8S79C7_nt3v49Ev();
extern void _ZN8S79C7_nt3v50Ev();
extern void _ZN8S79C7_nt3v51Ev();
extern void _ZN8S79C7_nt3v52Ev();
extern void _ZN8S79C7_nt3v53Ev();
extern void _ZN8S79C7_nt3v54Ev();
extern void _ZN8S79C7_nt3v55Ev();
extern void _ZN8S79C7_nt3v56Ev();
extern void _ZN8S79C7_nt3v57Ev();
extern void _ZN8S79C7_nt3v58Ev();
extern void _ZN8S79C7_nt3v59Ev();
extern void _ZN8S79C7_nt3v60Ev();
extern void _ZN8S79C7_nt3v61Ev();
extern void _ZN8S79C7_nt3v62Ev();
extern void _ZN8S79C7_nt3v63Ev();
extern void _ZN8S79C7_nt3v64Ev();
extern void _ZN8S79C7_nt3v65Ev();
extern void _ZN8S79C7_nt3v66Ev();
extern void _ZN8S79C7_nt3v67Ev();
extern void _ZN8S79C6_nt3v68Ev();
extern void _ZN8S79C6_nt3v69Ev();
static  VTBL_ENTRY vtc_S79C6_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S79C6_nt[0]),
  (VTBL_ENTRY)&_ZN8S79C6_ntD1Ev,
  (VTBL_ENTRY)&_ZN8S79C6_ntD0Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt2v4Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt2v6Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt2v7Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt2v8Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v11Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v18Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v19Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v20Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v21Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v22Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v23Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v24Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v25Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v26Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v27Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v28Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v29Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v30Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v31Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v32Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v38Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v39Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v40Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v41Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v42Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v43Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v44Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v45Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v46Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v47Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v48Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v49Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v50Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v51Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v52Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v53Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v54Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v55Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v56Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v57Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v58Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v59Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v60Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v61Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v62Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v63Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v64Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v65Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v66Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v67Ev,
  (VTBL_ENTRY)&_ZN8S79C6_nt3v68Ev,
  (VTBL_ENTRY)&_ZN8S79C6_nt3v69Ev,
};
extern VTBL_ENTRY _ZTI8S79C6_nt[];
VTBL_ENTRY *P__ZTI8S79C6_nt = _ZTI8S79C6_nt; 
extern  VTBL_ENTRY _ZTV8S79C6_nt[];
Class_Descriptor cd_S79C6_nt = {  "S79C6_nt", // class name
  bases_S79C6_nt, 1,
  &(vtc_S79C6_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI8S79C6_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S79C6_nt),70, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S79C9_nt  {
  int s79c9f0[4];
  char s79c9f1[9];
  void  mf79c9(); // _ZN8S79C9_nt6mf79c9Ev
};
//SIG(-1 S79C9_nt) C1{ m Fi[4] Fc[9]}


void  S79C9_nt ::mf79c9(){}

//skip512 S79C9_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S79C12_nt  {
  void *s79c12f0;
  int s79c12f1[2];
  void  mf79c12(); // _ZN9S79C12_nt7mf79c12Ev
};
//SIG(-1 S79C12_nt) C1{ m Fp Fi[2]}


void  S79C12_nt ::mf79c12(){}

//skip512 S79C12_nt

#else // __cplusplus

Class_Descriptor cd_S79C12_nt = {  "S79C12_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(16,12), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S79C11_nt  : S79C12_nt {
};
//SIG(-1 S79C11_nt) C1{ BC2{ m Fp Fi[2]}}



//skip512 S79C11_nt

#else // __cplusplus

extern Class_Descriptor cd_S79C12_nt;
static Base_Class bases_S79C11_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S79C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S79C11_nt = {  "S79C11_nt", // class name
  bases_S79C11_nt, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(16,12), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S79C10_nt  : S79C11_nt {
};
//SIG(-1 S79C10_nt) C1{ BC2{ BC3{ m Fp Fi[2]}}}



//skip512 S79C10_nt

#else // __cplusplus

extern Class_Descriptor cd_S79C12_nt;
extern Class_Descriptor cd_S79C11_nt;
static Base_Class bases_S79C10_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S79C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S79C11_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S79C16  : S79C12_nt {
};
//SIG(-1 S79C16) C1{ BC2{ m Fp Fi[2]}}



static void Test_S79C16()
{
  extern Class_Descriptor cd_S79C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S79C16, buf);
    S79C16 &lv = *(new (buf) S79C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S79C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S79C16)");
    check_base_class_offset(lv, (S79C12_nt*), 0, "S79C16");
    test_class_info(&lv, &cd_S79C16);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS79C16(Test_S79C16, "S79C16", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S79C12_nt;
static Base_Class bases_S79C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S79C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S79C16 = {  "S79C16", // class name
  bases_S79C16, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(16,12), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S79C15  : S79C16 {
};
//SIG(-1 S79C15) C1{ BC2{ BC3{ m Fp Fi[2]}}}



static void Test_S79C15()
{
  extern Class_Descriptor cd_S79C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S79C15, buf);
    S79C15 &lv = *(new (buf) S79C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S79C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S79C15)");
    check_base_class_offset(lv, (S79C12_nt*)(S79C16*), 0, "S79C15");
    check_base_class_offset(lv, (S79C16*), 0, "S79C15");
    test_class_info(&lv, &cd_S79C15);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS79C15(Test_S79C15, "S79C15", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S79C12_nt;
extern Class_Descriptor cd_S79C16;
static Base_Class bases_S79C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S79C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S79C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S79C15 = {  "S79C15", // class name
  bases_S79C15, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(16,12), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S79C20  : S79C12_nt {
};
//SIG(-1 S79C20) C1{ BC2{ m Fp Fi[2]}}



static void Test_S79C20()
{
  extern Class_Descriptor cd_S79C20;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S79C20, buf);
    S79C20 &lv = *(new (buf) S79C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S79C20)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S79C20)");
    check_base_class_offset(lv, (S79C12_nt*), 0, "S79C20");
    test_class_info(&lv, &cd_S79C20);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS79C20(Test_S79C20, "S79C20", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S79C12_nt;
static Base_Class bases_S79C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S79C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S79C20 = {  "S79C20", // class name
  bases_S79C20, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(16,12), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S79C19  : S79C20 {
};
//SIG(-1 S79C19) C1{ BC2{ BC3{ m Fp Fi[2]}}}



static void Test_S79C19()
{
  extern Class_Descriptor cd_S79C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S79C19, buf);
    S79C19 &lv = *(new (buf) S79C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S79C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S79C19)");
    check_base_class_offset(lv, (S79C12_nt*)(S79C20*), 0, "S79C19");
    check_base_class_offset(lv, (S79C20*), 0, "S79C19");
    test_class_info(&lv, &cd_S79C19);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS79C19(Test_S79C19, "S79C19", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S79C12_nt;
extern Class_Descriptor cd_S79C20;
static Base_Class bases_S79C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S79C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S79C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S79C19 = {  "S79C19", // class name
  bases_S79C19, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(16,12), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S79C21_nt  {
  void *s79c21f0;
  ::S79C8_nt s79c21f1;
  void  mf79c21(); // _ZN9S79C21_nt7mf79c21Ev
};
//SIG(-1 S79C21_nt) C1{ m Fp FC2{ m Fi[2]}}


void  S79C21_nt ::mf79c21(){}

//skip512 S79C21_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S79C5_nt  : S79C6_nt {
  ::S79C9_nt s79c5f0;
  int s79c5f1;
  unsigned int s79c5f2:1;
  unsigned int s79c5f3:1;
  unsigned int s79c5f4:1;
  unsigned int s79c5f5:1;
  ::S79C10_nt s79c5f6;
  ::S79C10_nt s79c5f7;
  void *s79c5f8;
  ::S79C15 s79c5f9;
  ::S79C15 s79c5f10;
  ::S79C15 s79c5f11;
  ::S79C19 s79c5f12;
  char s79c5f13;
  int s79c5f14;
  void *s79c5f15;
  ::S79C8_nt s79c5f16;
  ::S79C8_nt s79c5f17;
  ::S79C8_nt s79c5f18;
  ::S79C8_nt s79c5f19;
  ::S79C8_nt s79c5f20;
  ::S79C8_nt s79c5f21;
  ::S79C21_nt s79c5f22;
  ::S79C21_nt s79c5f23;
  ::S79C21_nt s79c5f24;
  ::S79C21_nt s79c5f25;
  ::S79C21_nt s79c5f26;
  ::S79C21_nt s79c5f27;
  ::S79C21_nt s79c5f28;
  ::S79C21_nt s79c5f29;
  ::S79C21_nt s79c5f30;
  ::S79C21_nt s79c5f31;
  virtual  ~S79C5_nt(); // _ZN8S79C5_ntD1Ev
  virtual void  v70(); // _ZN8S79C5_nt3v70Ev
  virtual void  v71(); // _ZN8S79C5_nt3v71Ev
  virtual void  v72(); // _ZN8S79C5_nt3v72Ev
  virtual void  v73(); // _ZN8S79C5_nt3v73Ev
  virtual void  v74(); // _ZN8S79C5_nt3v74Ev
  virtual void  v75(); // _ZN8S79C5_nt3v75Ev
  virtual void  v76(); // _ZN8S79C5_nt3v76Ev
  virtual void  v77(); // _ZN8S79C5_nt3v77Ev
  virtual void  v78(); // _ZN8S79C5_nt3v78Ev
  virtual void  v79(); // _ZN8S79C5_nt3v79Ev
  virtual void  v80(); // _ZN8S79C5_nt3v80Ev
  virtual void  v81(); // _ZN8S79C5_nt3v81Ev
  virtual void  v82(); // _ZN8S79C5_nt3v82Ev
  virtual void  v83(); // _ZN8S79C5_nt3v83Ev
  virtual void  v84(); // _ZN8S79C5_nt3v84Ev
  virtual void  v85(); // _ZN8S79C5_nt3v85Ev
  virtual void  v86(); // _ZN8S79C5_nt3v86Ev
  virtual void  v87(); // _ZN8S79C5_nt3v87Ev
  virtual void  v88(); // _ZN8S79C5_nt3v88Ev
  virtual void  v89(); // _ZN8S79C5_nt3v89Ev
  virtual void  v90(); // _ZN8S79C5_nt3v90Ev
  virtual void  v91(); // _ZN8S79C5_nt3v91Ev
  virtual void  v92(); // _ZN8S79C5_nt3v92Ev
  virtual void  v93(); // _ZN8S79C5_nt3v93Ev
  virtual void  v94(); // _ZN8S79C5_nt3v94Ev
  virtual void  v95(); // _ZN8S79C5_nt3v95Ev
  virtual void  v96(); // _ZN8S79C5_nt3v96Ev
  virtual void  v97(); // _ZN8S79C5_nt3v97Ev
  virtual void  v98(); // _ZN8S79C5_nt3v98Ev
  virtual void  v99(); // _ZN8S79C5_nt3v99Ev
  virtual void  v100(); // _ZN8S79C5_nt4v100Ev
  virtual void  v101(); // _ZN8S79C5_nt4v101Ev
  virtual void  v102(); // _ZN8S79C5_nt4v102Ev
  virtual void  v103(); // _ZN8S79C5_nt4v103Ev
  virtual void  v104(); // _ZN8S79C5_nt4v104Ev
  virtual void  v105(); // _ZN8S79C5_nt4v105Ev
  virtual void  v106(); // _ZN8S79C5_nt4v106Ev
  virtual void  v107(); // _ZN8S79C5_nt4v107Ev
  virtual void  v108(); // _ZN8S79C5_nt4v108Ev
  virtual void  v109(); // _ZN8S79C5_nt4v109Ev
  virtual void  v110(); // _ZN8S79C5_nt4v110Ev
  virtual void  v111(); // _ZN8S79C5_nt4v111Ev
  virtual void  v112(); // _ZN8S79C5_nt4v112Ev
  virtual void  v113(); // _ZN8S79C5_nt4v113Ev
  virtual void  v114(); // _ZN8S79C5_nt4v114Ev
  virtual void  v115(); // _ZN8S79C5_nt4v115Ev
  virtual void  v116(); // _ZN8S79C5_nt4v116Ev
  virtual void  v117(); // _ZN8S79C5_nt4v117Ev
  virtual void  v118(); // _ZN8S79C5_nt4v118Ev
  virtual void  v119(); // _ZN8S79C5_nt4v119Ev
  virtual void  v120(); // _ZN8S79C5_nt4v120Ev
  virtual void  v121(); // _ZN8S79C5_nt4v121Ev
  virtual void  v122(); // _ZN8S79C5_nt4v122Ev
  virtual void  v123(); // _ZN8S79C5_nt4v123Ev
  virtual void  v124(); // _ZN8S79C5_nt4v124Ev
  virtual void  v125(); // _ZN8S79C5_nt4v125Ev
  virtual void  v126(); // _ZN8S79C5_nt4v126Ev
  virtual void  v127(); // _ZN8S79C5_nt4v127Ev
  virtual void  v128(); // _ZN8S79C5_nt4v128Ev
  virtual void  v129(); // _ZN8S79C5_nt4v129Ev
  virtual void  v130(); // _ZN8S79C5_nt4v130Ev
  virtual void  v131(); // _ZN8S79C5_nt4v131Ev
  virtual void  v132(); // _ZN8S79C5_nt4v132Ev
  virtual void  v133(); // _ZN8S79C5_nt4v133Ev
  virtual void  v134(); // _ZN8S79C5_nt4v134Ev
  virtual void  v135(); // _ZN8S79C5_nt4v135Ev
  virtual void  v136(); // _ZN8S79C5_nt4v136Ev
  virtual void  v137(); // _ZN8S79C5_nt4v137Ev
  virtual void  v138(); // _ZN8S79C5_nt4v138Ev
  virtual void  v139(); // _ZN8S79C5_nt4v139Ev
  virtual void  v140(); // _ZN8S79C5_nt4v140Ev
  virtual void  v141(); // _ZN8S79C5_nt4v141Ev
  virtual void  v142(); // _ZN8S79C5_nt4v142Ev
  virtual void  v143(); // _ZN8S79C5_nt4v143Ev
  virtual void  v144(); // _ZN8S79C5_nt4v144Ev
  virtual void  v145(); // _ZN8S79C5_nt4v145Ev
  S79C5_nt(); // tgen
};
//SIG(-1 S79C5_nt) C1{ BC2{ BC3{ vd v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 v112 v113 v114 v115 v116 v117 v118 v119 v120 v121 v122 v123 v124 v125 v126 v127 v128 v129 v130 v131 v132 v133 v134 v135 v136 v137 v138 v139 v140 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd v141 v142} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 FC5{ m Fi[4] Fc[9]} Fi Fi:1 Fi:1 Fi:1 Fi:1 FC6{ BC7{ BC8{ m Fp Fi[2]}}} FC6 Fp FC9{ BC10{ BC8}} FC9 FC9 FC11{ BC12{ BC8}} Fc Fi Fp FC4 FC4 FC4 FC4 FC4 FC4 FC13{ m Fp FC4} FC13 FC13 FC13 FC13 FC13 FC13 FC13 FC13 FC13}


 S79C5_nt ::~S79C5_nt(){ note_dtor("S79C5_nt", this);}
void  S79C5_nt ::v70(){vfunc_called(this, "_ZN8S79C5_nt3v70Ev");}
void  S79C5_nt ::v71(){vfunc_called(this, "_ZN8S79C5_nt3v71Ev");}
void  S79C5_nt ::v72(){vfunc_called(this, "_ZN8S79C5_nt3v72Ev");}
void  S79C5_nt ::v73(){vfunc_called(this, "_ZN8S79C5_nt3v73Ev");}
void  S79C5_nt ::v74(){vfunc_called(this, "_ZN8S79C5_nt3v74Ev");}
void  S79C5_nt ::v75(){vfunc_called(this, "_ZN8S79C5_nt3v75Ev");}
void  S79C5_nt ::v76(){vfunc_called(this, "_ZN8S79C5_nt3v76Ev");}
void  S79C5_nt ::v77(){vfunc_called(this, "_ZN8S79C5_nt3v77Ev");}
void  S79C5_nt ::v78(){vfunc_called(this, "_ZN8S79C5_nt3v78Ev");}
void  S79C5_nt ::v79(){vfunc_called(this, "_ZN8S79C5_nt3v79Ev");}
void  S79C5_nt ::v80(){vfunc_called(this, "_ZN8S79C5_nt3v80Ev");}
void  S79C5_nt ::v81(){vfunc_called(this, "_ZN8S79C5_nt3v81Ev");}
void  S79C5_nt ::v82(){vfunc_called(this, "_ZN8S79C5_nt3v82Ev");}
void  S79C5_nt ::v83(){vfunc_called(this, "_ZN8S79C5_nt3v83Ev");}
void  S79C5_nt ::v84(){vfunc_called(this, "_ZN8S79C5_nt3v84Ev");}
void  S79C5_nt ::v85(){vfunc_called(this, "_ZN8S79C5_nt3v85Ev");}
void  S79C5_nt ::v86(){vfunc_called(this, "_ZN8S79C5_nt3v86Ev");}
void  S79C5_nt ::v87(){vfunc_called(this, "_ZN8S79C5_nt3v87Ev");}
void  S79C5_nt ::v88(){vfunc_called(this, "_ZN8S79C5_nt3v88Ev");}
void  S79C5_nt ::v89(){vfunc_called(this, "_ZN8S79C5_nt3v89Ev");}
void  S79C5_nt ::v90(){vfunc_called(this, "_ZN8S79C5_nt3v90Ev");}
void  S79C5_nt ::v91(){vfunc_called(this, "_ZN8S79C5_nt3v91Ev");}
void  S79C5_nt ::v92(){vfunc_called(this, "_ZN8S79C5_nt3v92Ev");}
void  S79C5_nt ::v93(){vfunc_called(this, "_ZN8S79C5_nt3v93Ev");}
void  S79C5_nt ::v94(){vfunc_called(this, "_ZN8S79C5_nt3v94Ev");}
void  S79C5_nt ::v95(){vfunc_called(this, "_ZN8S79C5_nt3v95Ev");}
void  S79C5_nt ::v96(){vfunc_called(this, "_ZN8S79C5_nt3v96Ev");}
void  S79C5_nt ::v97(){vfunc_called(this, "_ZN8S79C5_nt3v97Ev");}
void  S79C5_nt ::v98(){vfunc_called(this, "_ZN8S79C5_nt3v98Ev");}
void  S79C5_nt ::v99(){vfunc_called(this, "_ZN8S79C5_nt3v99Ev");}
void  S79C5_nt ::v100(){vfunc_called(this, "_ZN8S79C5_nt4v100Ev");}
void  S79C5_nt ::v101(){vfunc_called(this, "_ZN8S79C5_nt4v101Ev");}
void  S79C5_nt ::v102(){vfunc_called(this, "_ZN8S79C5_nt4v102Ev");}
void  S79C5_nt ::v103(){vfunc_called(this, "_ZN8S79C5_nt4v103Ev");}
void  S79C5_nt ::v104(){vfunc_called(this, "_ZN8S79C5_nt4v104Ev");}
void  S79C5_nt ::v105(){vfunc_called(this, "_ZN8S79C5_nt4v105Ev");}
void  S79C5_nt ::v106(){vfunc_called(this, "_ZN8S79C5_nt4v106Ev");}
void  S79C5_nt ::v107(){vfunc_called(this, "_ZN8S79C5_nt4v107Ev");}
void  S79C5_nt ::v108(){vfunc_called(this, "_ZN8S79C5_nt4v108Ev");}
void  S79C5_nt ::v109(){vfunc_called(this, "_ZN8S79C5_nt4v109Ev");}
void  S79C5_nt ::v110(){vfunc_called(this, "_ZN8S79C5_nt4v110Ev");}
void  S79C5_nt ::v111(){vfunc_called(this, "_ZN8S79C5_nt4v111Ev");}
void  S79C5_nt ::v112(){vfunc_called(this, "_ZN8S79C5_nt4v112Ev");}
void  S79C5_nt ::v113(){vfunc_called(this, "_ZN8S79C5_nt4v113Ev");}
void  S79C5_nt ::v114(){vfunc_called(this, "_ZN8S79C5_nt4v114Ev");}
void  S79C5_nt ::v115(){vfunc_called(this, "_ZN8S79C5_nt4v115Ev");}
void  S79C5_nt ::v116(){vfunc_called(this, "_ZN8S79C5_nt4v116Ev");}
void  S79C5_nt ::v117(){vfunc_called(this, "_ZN8S79C5_nt4v117Ev");}
void  S79C5_nt ::v118(){vfunc_called(this, "_ZN8S79C5_nt4v118Ev");}
void  S79C5_nt ::v119(){vfunc_called(this, "_ZN8S79C5_nt4v119Ev");}
void  S79C5_nt ::v120(){vfunc_called(this, "_ZN8S79C5_nt4v120Ev");}
void  S79C5_nt ::v121(){vfunc_called(this, "_ZN8S79C5_nt4v121Ev");}
void  S79C5_nt ::v122(){vfunc_called(this, "_ZN8S79C5_nt4v122Ev");}
void  S79C5_nt ::v123(){vfunc_called(this, "_ZN8S79C5_nt4v123Ev");}
void  S79C5_nt ::v124(){vfunc_called(this, "_ZN8S79C5_nt4v124Ev");}
void  S79C5_nt ::v125(){vfunc_called(this, "_ZN8S79C5_nt4v125Ev");}
void  S79C5_nt ::v126(){vfunc_called(this, "_ZN8S79C5_nt4v126Ev");}
void  S79C5_nt ::v127(){vfunc_called(this, "_ZN8S79C5_nt4v127Ev");}
void  S79C5_nt ::v128(){vfunc_called(this, "_ZN8S79C5_nt4v128Ev");}
void  S79C5_nt ::v129(){vfunc_called(this, "_ZN8S79C5_nt4v129Ev");}
void  S79C5_nt ::v130(){vfunc_called(this, "_ZN8S79C5_nt4v130Ev");}
void  S79C5_nt ::v131(){vfunc_called(this, "_ZN8S79C5_nt4v131Ev");}
void  S79C5_nt ::v132(){vfunc_called(this, "_ZN8S79C5_nt4v132Ev");}
void  S79C5_nt ::v133(){vfunc_called(this, "_ZN8S79C5_nt4v133Ev");}
void  S79C5_nt ::v134(){vfunc_called(this, "_ZN8S79C5_nt4v134Ev");}
void  S79C5_nt ::v135(){vfunc_called(this, "_ZN8S79C5_nt4v135Ev");}
void  S79C5_nt ::v136(){vfunc_called(this, "_ZN8S79C5_nt4v136Ev");}
void  S79C5_nt ::v137(){vfunc_called(this, "_ZN8S79C5_nt4v137Ev");}
void  S79C5_nt ::v138(){vfunc_called(this, "_ZN8S79C5_nt4v138Ev");}
void  S79C5_nt ::v139(){vfunc_called(this, "_ZN8S79C5_nt4v139Ev");}
void  S79C5_nt ::v140(){vfunc_called(this, "_ZN8S79C5_nt4v140Ev");}
void  S79C5_nt ::v141(){vfunc_called(this, "_ZN8S79C5_nt4v141Ev");}
void  S79C5_nt ::v142(){vfunc_called(this, "_ZN8S79C5_nt4v142Ev");}
void  S79C5_nt ::v143(){vfunc_called(this, "_ZN8S79C5_nt4v143Ev");}
void  S79C5_nt ::v144(){vfunc_called(this, "_ZN8S79C5_nt4v144Ev");}
void  S79C5_nt ::v145(){vfunc_called(this, "_ZN8S79C5_nt4v145Ev");}
S79C5_nt ::S79C5_nt(){ note_ctor("S79C5_nt", this);} // tgen

//skip512 S79C5_nt

#else // __cplusplus

extern void _ZN8S79C5_ntC1Ev();
extern void _ZN8S79C5_ntD1Ev();
Name_Map name_map_S79C5_nt[] = {
  NSPAIR(_ZN8S79C5_ntC1Ev),
  NSPAIR(_ZN8S79C5_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S79C7_nt;
extern VTBL_ENTRY _ZTI8S79C7_nt[];
extern  VTBL_ENTRY _ZTV8S79C7_nt[];
extern Class_Descriptor cd_S79C6_nt;
extern VTBL_ENTRY _ZTI8S79C6_nt[];
extern  VTBL_ENTRY _ZTV8S79C6_nt[];
static Base_Class bases_S79C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S79C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S79C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S79C5_nt[];
extern void _ZN8S79C5_ntD1Ev();
extern void _ZN8S79C5_ntD0Ev();
extern void _ZN8S79C7_nt2v4Ev();
extern void _ZN8S79C7_nt2v5Ev();
extern void _ZN8S79C7_nt2v6Ev();
extern void _ZN8S79C7_nt2v7Ev();
extern void _ZN8S79C7_nt2v8Ev();
extern void _ZN8S79C7_nt2v9Ev();
extern void _ZN8S79C7_nt3v10Ev();
extern void _ZN8S79C7_nt3v11Ev();
extern void _ZN8S79C7_nt3v12Ev();
extern void _ZN8S79C7_nt3v13Ev();
extern void _ZN8S79C7_nt3v14Ev();
extern void _ZN8S79C7_nt3v15Ev();
extern void _ZN8S79C7_nt3v16Ev();
extern void _ZN8S79C7_nt3v17Ev();
extern void _ZN8S79C7_nt3v18Ev();
extern void _ZN8S79C7_nt3v19Ev();
extern void _ZN8S79C7_nt3v20Ev();
extern void _ZN8S79C7_nt3v21Ev();
extern void _ZN8S79C7_nt3v22Ev();
extern void _ZN8S79C7_nt3v23Ev();
extern void _ZN8S79C7_nt3v24Ev();
extern void _ZN8S79C7_nt3v25Ev();
extern void _ZN8S79C7_nt3v26Ev();
extern void _ZN8S79C7_nt3v27Ev();
extern void _ZN8S79C7_nt3v28Ev();
extern void _ZN8S79C7_nt3v29Ev();
extern void _ZN8S79C7_nt3v30Ev();
extern void _ZN8S79C7_nt3v31Ev();
extern void _ZN8S79C7_nt3v32Ev();
extern void _ZN8S79C7_nt3v33Ev();
extern void _ZN8S79C7_nt3v34Ev();
extern void _ZN8S79C7_nt3v35Ev();
extern void _ZN8S79C7_nt3v36Ev();
extern void _ZN8S79C7_nt3v37Ev();
extern void _ZN8S79C7_nt3v38Ev();
extern void _ZN8S79C7_nt3v39Ev();
extern void _ZN8S79C7_nt3v40Ev();
extern void _ZN8S79C7_nt3v41Ev();
extern void _ZN8S79C7_nt3v42Ev();
extern void _ZN8S79C7_nt3v43Ev();
extern void _ZN8S79C7_nt3v44Ev();
extern void _ZN8S79C7_nt3v45Ev();
extern void _ZN8S79C7_nt3v46Ev();
extern void _ZN8S79C7_nt3v47Ev();
extern void _ZN8S79C7_nt3v48Ev();
extern void _ZN8S79C7_nt3v49Ev();
extern void _ZN8S79C7_nt3v50Ev();
extern void _ZN8S79C7_nt3v51Ev();
extern void _ZN8S79C7_nt3v52Ev();
extern void _ZN8S79C7_nt3v53Ev();
extern void _ZN8S79C7_nt3v54Ev();
extern void _ZN8S79C7_nt3v55Ev();
extern void _ZN8S79C7_nt3v56Ev();
extern void _ZN8S79C7_nt3v57Ev();
extern void _ZN8S79C7_nt3v58Ev();
extern void _ZN8S79C7_nt3v59Ev();
extern void _ZN8S79C7_nt3v60Ev();
extern void _ZN8S79C7_nt3v61Ev();
extern void _ZN8S79C7_nt3v62Ev();
extern void _ZN8S79C7_nt3v63Ev();
extern void _ZN8S79C7_nt3v64Ev();
extern void _ZN8S79C7_nt3v65Ev();
extern void _ZN8S79C7_nt3v66Ev();
extern void _ZN8S79C7_nt3v67Ev();
extern void _ZN8S79C6_nt3v68Ev();
extern void _ZN8S79C6_nt3v69Ev();
extern void _ZN8S79C5_nt3v70Ev();
extern void _ZN8S79C5_nt3v71Ev();
extern void _ZN8S79C5_nt3v72Ev();
extern void _ZN8S79C5_nt3v73Ev();
extern void _ZN8S79C5_nt3v74Ev();
extern void _ZN8S79C5_nt3v75Ev();
extern void _ZN8S79C5_nt3v76Ev();
extern void _ZN8S79C5_nt3v77Ev();
extern void _ZN8S79C5_nt3v78Ev();
extern void _ZN8S79C5_nt3v79Ev();
extern void _ZN8S79C5_nt3v80Ev();
extern void _ZN8S79C5_nt3v81Ev();
extern void _ZN8S79C5_nt3v82Ev();
extern void _ZN8S79C5_nt3v83Ev();
extern void _ZN8S79C5_nt3v84Ev();
extern void _ZN8S79C5_nt3v85Ev();
extern void _ZN8S79C5_nt3v86Ev();
extern void _ZN8S79C5_nt3v87Ev();
extern void _ZN8S79C5_nt3v88Ev();
extern void _ZN8S79C5_nt3v89Ev();
extern void _ZN8S79C5_nt3v90Ev();
extern void _ZN8S79C5_nt3v91Ev();
extern void _ZN8S79C5_nt3v92Ev();
extern void _ZN8S79C5_nt3v93Ev();
extern void _ZN8S79C5_nt3v94Ev();
extern void _ZN8S79C5_nt3v95Ev();
extern void _ZN8S79C5_nt3v96Ev();
extern void _ZN8S79C5_nt3v97Ev();
extern void _ZN8S79C5_nt3v98Ev();
extern void _ZN8S79C5_nt3v99Ev();
extern void _ZN8S79C5_nt4v100Ev();
extern void _ZN8S79C5_nt4v101Ev();
extern void _ZN8S79C5_nt4v102Ev();
extern void _ZN8S79C5_nt4v103Ev();
extern void _ZN8S79C5_nt4v104Ev();
extern void _ZN8S79C5_nt4v105Ev();
extern void _ZN8S79C5_nt4v106Ev();
extern void _ZN8S79C5_nt4v107Ev();
extern void _ZN8S79C5_nt4v108Ev();
extern void _ZN8S79C5_nt4v109Ev();
extern void _ZN8S79C5_nt4v110Ev();
extern void _ZN8S79C5_nt4v111Ev();
extern void _ZN8S79C5_nt4v112Ev();
extern void _ZN8S79C5_nt4v113Ev();
extern void _ZN8S79C5_nt4v114Ev();
extern void _ZN8S79C5_nt4v115Ev();
extern void _ZN8S79C5_nt4v116Ev();
extern void _ZN8S79C5_nt4v117Ev();
extern void _ZN8S79C5_nt4v118Ev();
extern void _ZN8S79C5_nt4v119Ev();
extern void _ZN8S79C5_nt4v120Ev();
extern void _ZN8S79C5_nt4v121Ev();
extern void _ZN8S79C5_nt4v122Ev();
extern void _ZN8S79C5_nt4v123Ev();
extern void _ZN8S79C5_nt4v124Ev();
extern void _ZN8S79C5_nt4v125Ev();
extern void _ZN8S79C5_nt4v126Ev();
extern void _ZN8S79C5_nt4v127Ev();
extern void _ZN8S79C5_nt4v128Ev();
extern void _ZN8S79C5_nt4v129Ev();
extern void _ZN8S79C5_nt4v130Ev();
extern void _ZN8S79C5_nt4v131Ev();
extern void _ZN8S79C5_nt4v132Ev();
extern void _ZN8S79C5_nt4v133Ev();
extern void _ZN8S79C5_nt4v134Ev();
extern void _ZN8S79C5_nt4v135Ev();
extern void _ZN8S79C5_nt4v136Ev();
extern void _ZN8S79C5_nt4v137Ev();
extern void _ZN8S79C5_nt4v138Ev();
extern void _ZN8S79C5_nt4v139Ev();
extern void _ZN8S79C5_nt4v140Ev();
extern void _ZN8S79C5_nt4v141Ev();
extern void _ZN8S79C5_nt4v142Ev();
extern void _ZN8S79C5_nt4v143Ev();
extern void _ZN8S79C5_nt4v144Ev();
extern void _ZN8S79C5_nt4v145Ev();
static  VTBL_ENTRY vtc_S79C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S79C5_nt[0]),
  (VTBL_ENTRY)&_ZN8S79C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN8S79C5_ntD0Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt2v4Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt2v6Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt2v7Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt2v8Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v11Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v18Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v19Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v20Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v21Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v22Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v23Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v24Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v25Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v26Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v27Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v28Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v29Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v30Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v31Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v32Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v38Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v39Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v40Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v41Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v42Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v43Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v44Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v45Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v46Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v47Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v48Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v49Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v50Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v51Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v52Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v53Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v54Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v55Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v56Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v57Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v58Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v59Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v60Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v61Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v62Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v63Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v64Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v65Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v66Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v67Ev,
  (VTBL_ENTRY)&_ZN8S79C6_nt3v68Ev,
  (VTBL_ENTRY)&_ZN8S79C6_nt3v69Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v70Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v71Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v72Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v73Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v74Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v75Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v76Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v77Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v78Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v79Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v80Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v81Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v82Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v83Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v84Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v85Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v86Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v87Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v88Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v89Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v90Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v91Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v92Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v93Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v94Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v95Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v96Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v97Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v98Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v99Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v100Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v101Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v102Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v103Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v104Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v105Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v106Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v107Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v108Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v109Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v110Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v111Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v112Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v113Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v114Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v115Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v116Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v117Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v118Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v119Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v120Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v121Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v122Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v123Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v124Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v125Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v126Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v127Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v128Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v129Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v130Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v131Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v132Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v133Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v134Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v135Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v136Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v137Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v138Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v139Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v140Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v141Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v142Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v143Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v144Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v145Ev,
};
extern VTBL_ENTRY _ZTI8S79C5_nt[];
VTBL_ENTRY *P__ZTI8S79C5_nt = _ZTI8S79C5_nt; 
extern  VTBL_ENTRY _ZTV8S79C5_nt[];
Class_Descriptor cd_S79C5_nt = {  "S79C5_nt", // class name
  bases_S79C5_nt, 2,
  &(vtc_S79C5_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(464,352), // object size
  NSPAIRA(_ZTI8S79C5_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S79C5_nt),146, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S79C23_nt  {
  int s79c23f0[4];
  void  mf79c23(); // _ZN9S79C23_nt7mf79c23Ev
};
//SIG(-1 S79C23_nt) C1{ m Fi[4]}


void  S79C23_nt ::mf79c23(){}

//skip512 S79C23_nt

#else // __cplusplus

Class_Descriptor cd_S79C23_nt = {  "S79C23_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  16, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S79C22_nt  : S79C23_nt {
};
//SIG(-1 S79C22_nt) C1{ BC2{ m Fi[4]}}



//skip512 S79C22_nt

#else // __cplusplus

extern Class_Descriptor cd_S79C23_nt;
static Base_Class bases_S79C22_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S79C23_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S79C24_nt  {
  ::S79C8_nt s79c24f0;
  void *s79c24f1;
  ::S79C22_nt s79c24f2;
  void *s79c24f3;
  void  mf79c24(); // _ZN9S79C24_nt7mf79c24Ev
};
//SIG(-1 S79C24_nt) C1{ m FC2{ m Fi[2]} Fp FC3{ BC4{ m Fi[4]}} Fp}


void  S79C24_nt ::mf79c24(){}

//skip512 S79C24_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S79C26_nt  {
  void *s79c26f0[8];
  char s79c26f1[4];
  void  mf79c26(); // _ZN9S79C26_nt7mf79c26Ev
};
//SIG(-1 S79C26_nt) C1{ m Fp[8] Fc[4]}


void  S79C26_nt ::mf79c26(){}

//skip512 S79C26_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S79C28_nt  {
  int s79c28f0[4];
  char s79c28f1[4];
  void  mf79c28(); // _ZN9S79C28_nt7mf79c28Ev
};
//SIG(-1 S79C28_nt) C1{ m Fi[4] Fc[4]}


void  S79C28_nt ::mf79c28(){}

//skip512 S79C28_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S79C27_nt  {
  void *s79c27f0[5];
  ::S79C28_nt s79c27f1;
  unsigned int s79c27f2:1;
  unsigned int s79c27f3:1;
  int s79c27f4;
  char s79c27f5[8];
  void  mf79c27(); // _ZN9S79C27_nt7mf79c27Ev
};
//SIG(-1 S79C27_nt) C1{ m Fp[5] FC2{ m Fi[4] Fc[4]} Fi:1 Fi:1 Fi Fc[8]}


void  S79C27_nt ::mf79c27(){}

//skip512 S79C27_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S79C31_nt  {
  int s79c31f0[3];
  void  mf79c31(); // _ZN9S79C31_nt7mf79c31Ev
};
//SIG(-1 S79C31_nt) C1{ m Fi[3]}


void  S79C31_nt ::mf79c31(){}

//skip512 S79C31_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S79C32_nt  {
  void  mf79c32(); // _ZN9S79C32_nt7mf79c32Ev
};
//SIG(-1 S79C32_nt) C1{ m}


void  S79C32_nt ::mf79c32(){}

//skip512 S79C32_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S79C34_nt  {
  int s79c34f0[2];
  char s79c34f1[2];
  void  mf79c34(); // _ZN9S79C34_nt7mf79c34Ev
};
//SIG(-1 S79C34_nt) C1{ m Fi[2] Fc[2]}


void  S79C34_nt ::mf79c34(){}

//skip512 S79C34_nt

#else // __cplusplus

Class_Descriptor cd_S79C34_nt = {  "S79C34_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  12, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S79C33_nt  : S79C34_nt {
  int s79c33f0;
};
//SIG(-1 S79C33_nt) C1{ BC2{ m Fi[2] Fc[2]} Fi}



//skip512 S79C33_nt

#else // __cplusplus

extern Class_Descriptor cd_S79C34_nt;
static Base_Class bases_S79C33_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S79C34_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S79C30_nt  {
  ::S79C31_nt s79c30f0;
  ::S79C32_nt s79c30f1;
  ::S79C33_nt s79c30f2;
  char s79c30f3;
  void  mf79c30(); // _ZN9S79C30_nt7mf79c30Ev
};
//SIG(-1 S79C30_nt) C1{ m FC2{ m Fi[3]} FC3{ m} FC4{ BC5{ m Fi[2] Fc[2]} Fi} Fc}


void  S79C30_nt ::mf79c30(){}

//skip512 S79C30_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S79C38_nt  {
  void *s79c38f0[2];
  void  mf79c38(); // _ZN9S79C38_nt7mf79c38Ev
};
//SIG(-1 S79C38_nt) C1{ m Fp[2]}


void  S79C38_nt ::mf79c38(){}

//skip512 S79C38_nt

#else // __cplusplus

Class_Descriptor cd_S79C38_nt = {  "S79C38_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(16,8), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S79C37_nt  : S79C38_nt {
};
//SIG(-1 S79C37_nt) C1{ BC2{ m Fp[2]}}



//skip512 S79C37_nt

#else // __cplusplus

extern Class_Descriptor cd_S79C38_nt;
static Base_Class bases_S79C37_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S79C38_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S79C41  : S79C12_nt {
};
//SIG(-1 S79C41) C1{ BC2{ m Fp Fi[2]}}



static void Test_S79C41()
{
  extern Class_Descriptor cd_S79C41;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S79C41, buf);
    S79C41 &lv = *(new (buf) S79C41());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S79C41)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S79C41)");
    check_base_class_offset(lv, (S79C12_nt*), 0, "S79C41");
    test_class_info(&lv, &cd_S79C41);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS79C41(Test_S79C41, "S79C41", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S79C12_nt;
static Base_Class bases_S79C41[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S79C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S79C41 = {  "S79C41", // class name
  bases_S79C41, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(16,12), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S79C40  : S79C41 {
};
//SIG(-1 S79C40) C1{ BC2{ BC3{ m Fp Fi[2]}}}



static void Test_S79C40()
{
  extern Class_Descriptor cd_S79C40;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S79C40, buf);
    S79C40 &lv = *(new (buf) S79C40());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S79C40)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S79C40)");
    check_base_class_offset(lv, (S79C12_nt*)(S79C41*), 0, "S79C40");
    check_base_class_offset(lv, (S79C41*), 0, "S79C40");
    test_class_info(&lv, &cd_S79C40);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS79C40(Test_S79C40, "S79C40", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S79C12_nt;
extern Class_Descriptor cd_S79C41;
static Base_Class bases_S79C40[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S79C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S79C41,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S79C40 = {  "S79C40", // class name
  bases_S79C40, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(16,12), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S79C39_nt  : S79C40 {
};
//SIG(-1 S79C39_nt) C1{ BC2{ BC3{ BC4{ m Fp Fi[2]}}}}



//skip512 S79C39_nt

#else // __cplusplus

extern Class_Descriptor cd_S79C12_nt;
extern Class_Descriptor cd_S79C41;
extern Class_Descriptor cd_S79C40;
static Base_Class bases_S79C39_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S79C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S79C41,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S79C40,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S79C36_nt  {
  ::S79C37_nt s79c36f0;
  char s79c36f1;
  ::S79C39_nt s79c36f2;
  int s79c36f3;
  ::S79C8_nt s79c36f4;
  ::S79C8_nt s79c36f5;
  void *s79c36f6;
  void  mf79c36(); // _ZN9S79C36_nt7mf79c36Ev
};
//SIG(-1 S79C36_nt) C1{ m FC2{ BC3{ m Fp[2]}} Fc FC4{ BC5{ BC6{ BC7{ m Fp Fi[2]}}}} Fi FC8{ m Fi[2]} FC8 Fp}


void  S79C36_nt ::mf79c36(){}

//skip512 S79C36_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S79C45  : S79C12_nt {
};
//SIG(-1 S79C45) C1{ BC2{ m Fp Fi[2]}}



static void Test_S79C45()
{
  extern Class_Descriptor cd_S79C45;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S79C45, buf);
    S79C45 &lv = *(new (buf) S79C45());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S79C45)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S79C45)");
    check_base_class_offset(lv, (S79C12_nt*), 0, "S79C45");
    test_class_info(&lv, &cd_S79C45);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS79C45(Test_S79C45, "S79C45", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S79C12_nt;
static Base_Class bases_S79C45[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S79C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S79C45 = {  "S79C45", // class name
  bases_S79C45, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(16,12), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S79C44  : S79C45 {
};
//SIG(-1 S79C44) C1{ BC2{ BC3{ m Fp Fi[2]}}}



static void Test_S79C44()
{
  extern Class_Descriptor cd_S79C44;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S79C44, buf);
    S79C44 &lv = *(new (buf) S79C44());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S79C44)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S79C44)");
    check_base_class_offset(lv, (S79C12_nt*)(S79C45*), 0, "S79C44");
    check_base_class_offset(lv, (S79C45*), 0, "S79C44");
    test_class_info(&lv, &cd_S79C44);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS79C44(Test_S79C44, "S79C44", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S79C12_nt;
extern Class_Descriptor cd_S79C45;
static Base_Class bases_S79C44[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S79C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S79C45,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S79C44 = {  "S79C44", // class name
  bases_S79C44, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(16,12), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S79C4_nt  : S79C5_nt {
  ::S79C22_nt s79c4f0;
  ::S79C8_nt s79c4f1;
  void *s79c4f2[2];
  ::S79C24_nt s79c4f3;
  ::S79C26_nt s79c4f4;
  int s79c4f5;
  ::S79C27_nt s79c4f6;
  int s79c4f7[4];
  ::S79C8_nt s79c4f8[4];
  ::S79C30_nt s79c4f9;
  ::S79C31_nt s79c4f10;
  int s79c4f11;
  ::S79C36_nt s79c4f12;
  ::S79C36_nt s79c4f13;
  void *s79c4f14;
  ::S79C31_nt s79c4f15;
  ::S79C19 s79c4f16;
  ::S79C44 s79c4f17;
  unsigned int s79c4f18:1;
  unsigned int s79c4f19:1;
  unsigned int s79c4f20:1;
  ::S79C32_nt s79c4f21;
  ::S79C21_nt s79c4f22;
  ::S79C21_nt s79c4f23;
  ::S79C21_nt s79c4f24;
  ::S79C21_nt s79c4f25;
  ::S79C21_nt s79c4f26;
  ::S79C21_nt s79c4f27;
  ::S79C21_nt s79c4f28;
  ::S79C21_nt s79c4f29;
  ::S79C21_nt s79c4f30;
  ::S79C21_nt s79c4f31;
  ::S79C21_nt s79c4f32;
  ::S79C21_nt s79c4f33;
  ::S79C21_nt s79c4f34;
  virtual  ~S79C4_nt(); // _ZN8S79C4_ntD1Ev
  virtual void  v146(); // _ZN8S79C4_nt4v146Ev
  virtual void  v147(); // _ZN8S79C4_nt4v147Ev
  virtual void  v148(); // _ZN8S79C4_nt4v148Ev
  virtual void  v149(); // _ZN8S79C4_nt4v149Ev
  virtual void  v150(); // _ZN8S79C4_nt4v150Ev
  virtual void  v151(); // _ZN8S79C4_nt4v151Ev
  virtual void  v152(); // _ZN8S79C4_nt4v152Ev
  virtual void  v153(); // _ZN8S79C4_nt4v153Ev
  virtual void  v154(); // _ZN8S79C4_nt4v154Ev
  virtual void  v155(); // _ZN8S79C4_nt4v155Ev
  virtual void  v156(); // _ZN8S79C4_nt4v156Ev
  virtual void  v157(); // _ZN8S79C4_nt4v157Ev
  virtual void  v158(); // _ZN8S79C4_nt4v158Ev
  virtual void  v159(); // _ZN8S79C4_nt4v159Ev
  virtual void  v160(); // _ZN8S79C4_nt4v160Ev
  virtual void  v161(); // _ZN8S79C4_nt4v161Ev
  virtual void  v162(); // _ZN8S79C4_nt4v162Ev
  virtual void  v163(); // _ZN8S79C4_nt4v163Ev
  virtual void  v164(); // _ZN8S79C4_nt4v164Ev
  virtual void  v165(); // _ZN8S79C4_nt4v165Ev
  virtual void  v166(); // _ZN8S79C4_nt4v166Ev
  virtual void  v167(); // _ZN8S79C4_nt4v167Ev
  virtual void  v168(); // _ZN8S79C4_nt4v168Ev
  virtual void  v169(); // _ZN8S79C4_nt4v169Ev
  virtual void  v170(); // _ZN8S79C4_nt4v170Ev
  virtual void  v171(); // _ZN8S79C4_nt4v171Ev
  virtual void  v172(); // _ZN8S79C4_nt4v172Ev
  virtual void  v173(); // _ZN8S79C4_nt4v173Ev
  virtual void  v174(); // _ZN8S79C4_nt4v174Ev
  virtual void  v175(); // _ZN8S79C4_nt4v175Ev
  virtual void  v176(); // _ZN8S79C4_nt4v176Ev
  virtual void  v177(); // _ZN8S79C4_nt4v177Ev
  virtual void  v178(); // _ZN8S79C4_nt4v178Ev
  virtual void  v179(); // _ZN8S79C4_nt4v179Ev
  virtual void  v180(); // _ZN8S79C4_nt4v180Ev
  virtual void  v181(); // _ZN8S79C4_nt4v181Ev
  virtual void  v182(); // _ZN8S79C4_nt4v182Ev
  virtual void  v183(); // _ZN8S79C4_nt4v183Ev
  virtual void  v184(); // _ZN8S79C4_nt4v184Ev
  virtual void  v185(); // _ZN8S79C4_nt4v185Ev
  virtual void  v186(); // _ZN8S79C4_nt4v186Ev
  virtual void  v187(); // _ZN8S79C4_nt4v187Ev
  virtual void  v188(); // _ZN8S79C4_nt4v188Ev
  virtual void  v189(); // _ZN8S79C4_nt4v189Ev
  virtual void  v190(); // _ZN8S79C4_nt4v190Ev
  virtual void  v191(); // _ZN8S79C4_nt4v191Ev
  virtual void  v192(); // _ZN8S79C4_nt4v192Ev
  virtual void  v193(); // _ZN8S79C4_nt4v193Ev
  virtual void  v194(); // _ZN8S79C4_nt4v194Ev
  virtual void  v195(); // _ZN8S79C4_nt4v195Ev
  virtual void  v196(); // _ZN8S79C4_nt4v196Ev
  virtual void  v197(); // _ZN8S79C4_nt4v197Ev
  virtual void  v198(); // _ZN8S79C4_nt4v198Ev
  virtual void  v199(); // _ZN8S79C4_nt4v199Ev
  virtual void  v200(); // _ZN8S79C4_nt4v200Ev
  virtual void  v201(); // _ZN8S79C4_nt4v201Ev
  virtual void  v202(); // _ZN8S79C4_nt4v202Ev
  virtual void  v203(); // _ZN8S79C4_nt4v203Ev
  virtual void  v204(); // _ZN8S79C4_nt4v204Ev
  virtual void  v205(); // _ZN8S79C4_nt4v205Ev
  virtual void  v206(); // _ZN8S79C4_nt4v206Ev
  virtual void  v207(); // _ZN8S79C4_nt4v207Ev
  virtual void  v208(); // _ZN8S79C4_nt4v208Ev
  virtual void  v209(); // _ZN8S79C4_nt4v209Ev
  virtual void  v210(); // _ZN8S79C4_nt4v210Ev
  virtual void  v211(); // _ZN8S79C4_nt4v211Ev
  virtual void  v212(); // _ZN8S79C4_nt4v212Ev
  virtual void  v213(); // _ZN8S79C4_nt4v213Ev
  virtual void  v214(); // _ZN8S79C4_nt4v214Ev
  S79C4_nt(); // tgen
};
//SIG(-1 S79C4_nt) C1{ BC2{ BC3{ BC4{ vd v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 v112 v113 v114 v115 v116 v117 v118 v119 v120 v121 v122 v123 v124 v125 v126 v127 v128 v129 v130 v131 v132 v133 Fi FL Fp[4] Fi[2] Fp FC5{ m Fi[2]} Fp[2]} vd v134 v135} vd v136 v137 v138 v139 v140 v141 v142 v143 v144 v145 v146 v147 v148 v149 v150 v151 v152 v153 v154 v155 v156 v157 v158 v159 v160 v161 v162 v163 v164 v165 v166 v167 v168 v169 v170 v171 v172 v173 v174 v175 v176 v177 v178 v179 v180 v181 v182 v183 v184 v185 v186 v187 v188 v189 v190 v191 v192 v193 v194 v195 v196 v197 v198 v199 v200 v201 v202 v203 v204 v205 v206 v207 v208 v209 v210 v211 FC6{ m Fi[4] Fc[9]} Fi Fi:1 Fi:1 Fi:1 Fi:1 FC7{ BC8{ BC9{ m Fp Fi[2]}}} FC7 Fp FC10{ BC11{ BC9}} FC10 FC10 FC12{ BC13{ BC9}} Fc Fi Fp FC5 FC5 FC5 FC5 FC5 FC5 FC14{ m Fp FC5} FC14 FC14 FC14 FC14 FC14 FC14 FC14 FC14 FC14} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 FC15{ BC16{ m Fi[4]}} FC5 Fp[2] FC17{ m FC5 Fp FC15 Fp} FC18{ m Fp[8] Fc[4]} Fi FC19{ m Fp[5] FC20{ m Fi[4] Fc[4]} Fi:1 Fi:1 Fi Fc[8]} Fi[4] FC5[4] FC21{ m FC22{ m Fi[3]} FC23{ m} FC24{ BC25{ m Fi[2] Fc[2]} Fi} Fc} FC22 Fi FC26{ m FC27{ BC28{ m Fp[2]}} Fc FC29{ BC30{ BC31{ BC9}}} Fi FC5 FC5 Fp} FC26 Fp FC22 FC12 FC32{ BC33{ BC9}} Fi:1 Fi:1 Fi:1 FC23 FC14 FC14 FC14 FC14 FC14 FC14 FC14 FC14 FC14 FC14 FC14 FC14 FC14}


 S79C4_nt ::~S79C4_nt(){ note_dtor("S79C4_nt", this);}
void  S79C4_nt ::v146(){vfunc_called(this, "_ZN8S79C4_nt4v146Ev");}
void  S79C4_nt ::v147(){vfunc_called(this, "_ZN8S79C4_nt4v147Ev");}
void  S79C4_nt ::v148(){vfunc_called(this, "_ZN8S79C4_nt4v148Ev");}
void  S79C4_nt ::v149(){vfunc_called(this, "_ZN8S79C4_nt4v149Ev");}
void  S79C4_nt ::v150(){vfunc_called(this, "_ZN8S79C4_nt4v150Ev");}
void  S79C4_nt ::v151(){vfunc_called(this, "_ZN8S79C4_nt4v151Ev");}
void  S79C4_nt ::v152(){vfunc_called(this, "_ZN8S79C4_nt4v152Ev");}
void  S79C4_nt ::v153(){vfunc_called(this, "_ZN8S79C4_nt4v153Ev");}
void  S79C4_nt ::v154(){vfunc_called(this, "_ZN8S79C4_nt4v154Ev");}
void  S79C4_nt ::v155(){vfunc_called(this, "_ZN8S79C4_nt4v155Ev");}
void  S79C4_nt ::v156(){vfunc_called(this, "_ZN8S79C4_nt4v156Ev");}
void  S79C4_nt ::v157(){vfunc_called(this, "_ZN8S79C4_nt4v157Ev");}
void  S79C4_nt ::v158(){vfunc_called(this, "_ZN8S79C4_nt4v158Ev");}
void  S79C4_nt ::v159(){vfunc_called(this, "_ZN8S79C4_nt4v159Ev");}
void  S79C4_nt ::v160(){vfunc_called(this, "_ZN8S79C4_nt4v160Ev");}
void  S79C4_nt ::v161(){vfunc_called(this, "_ZN8S79C4_nt4v161Ev");}
void  S79C4_nt ::v162(){vfunc_called(this, "_ZN8S79C4_nt4v162Ev");}
void  S79C4_nt ::v163(){vfunc_called(this, "_ZN8S79C4_nt4v163Ev");}
void  S79C4_nt ::v164(){vfunc_called(this, "_ZN8S79C4_nt4v164Ev");}
void  S79C4_nt ::v165(){vfunc_called(this, "_ZN8S79C4_nt4v165Ev");}
void  S79C4_nt ::v166(){vfunc_called(this, "_ZN8S79C4_nt4v166Ev");}
void  S79C4_nt ::v167(){vfunc_called(this, "_ZN8S79C4_nt4v167Ev");}
void  S79C4_nt ::v168(){vfunc_called(this, "_ZN8S79C4_nt4v168Ev");}
void  S79C4_nt ::v169(){vfunc_called(this, "_ZN8S79C4_nt4v169Ev");}
void  S79C4_nt ::v170(){vfunc_called(this, "_ZN8S79C4_nt4v170Ev");}
void  S79C4_nt ::v171(){vfunc_called(this, "_ZN8S79C4_nt4v171Ev");}
void  S79C4_nt ::v172(){vfunc_called(this, "_ZN8S79C4_nt4v172Ev");}
void  S79C4_nt ::v173(){vfunc_called(this, "_ZN8S79C4_nt4v173Ev");}
void  S79C4_nt ::v174(){vfunc_called(this, "_ZN8S79C4_nt4v174Ev");}
void  S79C4_nt ::v175(){vfunc_called(this, "_ZN8S79C4_nt4v175Ev");}
void  S79C4_nt ::v176(){vfunc_called(this, "_ZN8S79C4_nt4v176Ev");}
void  S79C4_nt ::v177(){vfunc_called(this, "_ZN8S79C4_nt4v177Ev");}
void  S79C4_nt ::v178(){vfunc_called(this, "_ZN8S79C4_nt4v178Ev");}
void  S79C4_nt ::v179(){vfunc_called(this, "_ZN8S79C4_nt4v179Ev");}
void  S79C4_nt ::v180(){vfunc_called(this, "_ZN8S79C4_nt4v180Ev");}
void  S79C4_nt ::v181(){vfunc_called(this, "_ZN8S79C4_nt4v181Ev");}
void  S79C4_nt ::v182(){vfunc_called(this, "_ZN8S79C4_nt4v182Ev");}
void  S79C4_nt ::v183(){vfunc_called(this, "_ZN8S79C4_nt4v183Ev");}
void  S79C4_nt ::v184(){vfunc_called(this, "_ZN8S79C4_nt4v184Ev");}
void  S79C4_nt ::v185(){vfunc_called(this, "_ZN8S79C4_nt4v185Ev");}
void  S79C4_nt ::v186(){vfunc_called(this, "_ZN8S79C4_nt4v186Ev");}
void  S79C4_nt ::v187(){vfunc_called(this, "_ZN8S79C4_nt4v187Ev");}
void  S79C4_nt ::v188(){vfunc_called(this, "_ZN8S79C4_nt4v188Ev");}
void  S79C4_nt ::v189(){vfunc_called(this, "_ZN8S79C4_nt4v189Ev");}
void  S79C4_nt ::v190(){vfunc_called(this, "_ZN8S79C4_nt4v190Ev");}
void  S79C4_nt ::v191(){vfunc_called(this, "_ZN8S79C4_nt4v191Ev");}
void  S79C4_nt ::v192(){vfunc_called(this, "_ZN8S79C4_nt4v192Ev");}
void  S79C4_nt ::v193(){vfunc_called(this, "_ZN8S79C4_nt4v193Ev");}
void  S79C4_nt ::v194(){vfunc_called(this, "_ZN8S79C4_nt4v194Ev");}
void  S79C4_nt ::v195(){vfunc_called(this, "_ZN8S79C4_nt4v195Ev");}
void  S79C4_nt ::v196(){vfunc_called(this, "_ZN8S79C4_nt4v196Ev");}
void  S79C4_nt ::v197(){vfunc_called(this, "_ZN8S79C4_nt4v197Ev");}
void  S79C4_nt ::v198(){vfunc_called(this, "_ZN8S79C4_nt4v198Ev");}
void  S79C4_nt ::v199(){vfunc_called(this, "_ZN8S79C4_nt4v199Ev");}
void  S79C4_nt ::v200(){vfunc_called(this, "_ZN8S79C4_nt4v200Ev");}
void  S79C4_nt ::v201(){vfunc_called(this, "_ZN8S79C4_nt4v201Ev");}
void  S79C4_nt ::v202(){vfunc_called(this, "_ZN8S79C4_nt4v202Ev");}
void  S79C4_nt ::v203(){vfunc_called(this, "_ZN8S79C4_nt4v203Ev");}
void  S79C4_nt ::v204(){vfunc_called(this, "_ZN8S79C4_nt4v204Ev");}
void  S79C4_nt ::v205(){vfunc_called(this, "_ZN8S79C4_nt4v205Ev");}
void  S79C4_nt ::v206(){vfunc_called(this, "_ZN8S79C4_nt4v206Ev");}
void  S79C4_nt ::v207(){vfunc_called(this, "_ZN8S79C4_nt4v207Ev");}
void  S79C4_nt ::v208(){vfunc_called(this, "_ZN8S79C4_nt4v208Ev");}
void  S79C4_nt ::v209(){vfunc_called(this, "_ZN8S79C4_nt4v209Ev");}
void  S79C4_nt ::v210(){vfunc_called(this, "_ZN8S79C4_nt4v210Ev");}
void  S79C4_nt ::v211(){vfunc_called(this, "_ZN8S79C4_nt4v211Ev");}
void  S79C4_nt ::v212(){vfunc_called(this, "_ZN8S79C4_nt4v212Ev");}
void  S79C4_nt ::v213(){vfunc_called(this, "_ZN8S79C4_nt4v213Ev");}
void  S79C4_nt ::v214(){vfunc_called(this, "_ZN8S79C4_nt4v214Ev");}
S79C4_nt ::S79C4_nt(){ note_ctor("S79C4_nt", this);} // tgen

//skip512 S79C4_nt

#else // __cplusplus

extern void _ZN8S79C4_ntC1Ev();
extern void _ZN8S79C4_ntD1Ev();
Name_Map name_map_S79C4_nt[] = {
  NSPAIR(_ZN8S79C4_ntC1Ev),
  NSPAIR(_ZN8S79C4_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S79C7_nt;
extern VTBL_ENTRY _ZTI8S79C7_nt[];
extern  VTBL_ENTRY _ZTV8S79C7_nt[];
extern Class_Descriptor cd_S79C6_nt;
extern VTBL_ENTRY _ZTI8S79C6_nt[];
extern  VTBL_ENTRY _ZTV8S79C6_nt[];
extern Class_Descriptor cd_S79C5_nt;
extern VTBL_ENTRY _ZTI8S79C5_nt[];
extern  VTBL_ENTRY _ZTV8S79C5_nt[];
static Base_Class bases_S79C4_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S79C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S79C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S79C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S79C4_nt[];
extern void _ZN8S79C4_ntD1Ev();
extern void _ZN8S79C4_ntD0Ev();
extern void _ZN8S79C7_nt2v4Ev();
extern void _ZN8S79C7_nt2v5Ev();
extern void _ZN8S79C7_nt2v6Ev();
extern void _ZN8S79C7_nt2v7Ev();
extern void _ZN8S79C7_nt2v8Ev();
extern void _ZN8S79C7_nt2v9Ev();
extern void _ZN8S79C7_nt3v10Ev();
extern void _ZN8S79C7_nt3v11Ev();
extern void _ZN8S79C7_nt3v12Ev();
extern void _ZN8S79C7_nt3v13Ev();
extern void _ZN8S79C7_nt3v14Ev();
extern void _ZN8S79C7_nt3v15Ev();
extern void _ZN8S79C7_nt3v16Ev();
extern void _ZN8S79C7_nt3v17Ev();
extern void _ZN8S79C7_nt3v18Ev();
extern void _ZN8S79C7_nt3v19Ev();
extern void _ZN8S79C7_nt3v20Ev();
extern void _ZN8S79C7_nt3v21Ev();
extern void _ZN8S79C7_nt3v22Ev();
extern void _ZN8S79C7_nt3v23Ev();
extern void _ZN8S79C7_nt3v24Ev();
extern void _ZN8S79C7_nt3v25Ev();
extern void _ZN8S79C7_nt3v26Ev();
extern void _ZN8S79C7_nt3v27Ev();
extern void _ZN8S79C7_nt3v28Ev();
extern void _ZN8S79C7_nt3v29Ev();
extern void _ZN8S79C7_nt3v30Ev();
extern void _ZN8S79C7_nt3v31Ev();
extern void _ZN8S79C7_nt3v32Ev();
extern void _ZN8S79C7_nt3v33Ev();
extern void _ZN8S79C7_nt3v34Ev();
extern void _ZN8S79C7_nt3v35Ev();
extern void _ZN8S79C7_nt3v36Ev();
extern void _ZN8S79C7_nt3v37Ev();
extern void _ZN8S79C7_nt3v38Ev();
extern void _ZN8S79C7_nt3v39Ev();
extern void _ZN8S79C7_nt3v40Ev();
extern void _ZN8S79C7_nt3v41Ev();
extern void _ZN8S79C7_nt3v42Ev();
extern void _ZN8S79C7_nt3v43Ev();
extern void _ZN8S79C7_nt3v44Ev();
extern void _ZN8S79C7_nt3v45Ev();
extern void _ZN8S79C7_nt3v46Ev();
extern void _ZN8S79C7_nt3v47Ev();
extern void _ZN8S79C7_nt3v48Ev();
extern void _ZN8S79C7_nt3v49Ev();
extern void _ZN8S79C7_nt3v50Ev();
extern void _ZN8S79C7_nt3v51Ev();
extern void _ZN8S79C7_nt3v52Ev();
extern void _ZN8S79C7_nt3v53Ev();
extern void _ZN8S79C7_nt3v54Ev();
extern void _ZN8S79C7_nt3v55Ev();
extern void _ZN8S79C7_nt3v56Ev();
extern void _ZN8S79C7_nt3v57Ev();
extern void _ZN8S79C7_nt3v58Ev();
extern void _ZN8S79C7_nt3v59Ev();
extern void _ZN8S79C7_nt3v60Ev();
extern void _ZN8S79C7_nt3v61Ev();
extern void _ZN8S79C7_nt3v62Ev();
extern void _ZN8S79C7_nt3v63Ev();
extern void _ZN8S79C7_nt3v64Ev();
extern void _ZN8S79C7_nt3v65Ev();
extern void _ZN8S79C7_nt3v66Ev();
extern void _ZN8S79C7_nt3v67Ev();
extern void _ZN8S79C6_nt3v68Ev();
extern void _ZN8S79C6_nt3v69Ev();
extern void _ZN8S79C5_nt3v70Ev();
extern void _ZN8S79C5_nt3v71Ev();
extern void _ZN8S79C5_nt3v72Ev();
extern void _ZN8S79C5_nt3v73Ev();
extern void _ZN8S79C5_nt3v74Ev();
extern void _ZN8S79C5_nt3v75Ev();
extern void _ZN8S79C5_nt3v76Ev();
extern void _ZN8S79C5_nt3v77Ev();
extern void _ZN8S79C5_nt3v78Ev();
extern void _ZN8S79C5_nt3v79Ev();
extern void _ZN8S79C5_nt3v80Ev();
extern void _ZN8S79C5_nt3v81Ev();
extern void _ZN8S79C5_nt3v82Ev();
extern void _ZN8S79C5_nt3v83Ev();
extern void _ZN8S79C5_nt3v84Ev();
extern void _ZN8S79C5_nt3v85Ev();
extern void _ZN8S79C5_nt3v86Ev();
extern void _ZN8S79C5_nt3v87Ev();
extern void _ZN8S79C5_nt3v88Ev();
extern void _ZN8S79C5_nt3v89Ev();
extern void _ZN8S79C5_nt3v90Ev();
extern void _ZN8S79C5_nt3v91Ev();
extern void _ZN8S79C5_nt3v92Ev();
extern void _ZN8S79C5_nt3v93Ev();
extern void _ZN8S79C5_nt3v94Ev();
extern void _ZN8S79C5_nt3v95Ev();
extern void _ZN8S79C5_nt3v96Ev();
extern void _ZN8S79C5_nt3v97Ev();
extern void _ZN8S79C5_nt3v98Ev();
extern void _ZN8S79C5_nt3v99Ev();
extern void _ZN8S79C5_nt4v100Ev();
extern void _ZN8S79C5_nt4v101Ev();
extern void _ZN8S79C5_nt4v102Ev();
extern void _ZN8S79C5_nt4v103Ev();
extern void _ZN8S79C5_nt4v104Ev();
extern void _ZN8S79C5_nt4v105Ev();
extern void _ZN8S79C5_nt4v106Ev();
extern void _ZN8S79C5_nt4v107Ev();
extern void _ZN8S79C5_nt4v108Ev();
extern void _ZN8S79C5_nt4v109Ev();
extern void _ZN8S79C5_nt4v110Ev();
extern void _ZN8S79C5_nt4v111Ev();
extern void _ZN8S79C5_nt4v112Ev();
extern void _ZN8S79C5_nt4v113Ev();
extern void _ZN8S79C5_nt4v114Ev();
extern void _ZN8S79C5_nt4v115Ev();
extern void _ZN8S79C5_nt4v116Ev();
extern void _ZN8S79C5_nt4v117Ev();
extern void _ZN8S79C5_nt4v118Ev();
extern void _ZN8S79C5_nt4v119Ev();
extern void _ZN8S79C5_nt4v120Ev();
extern void _ZN8S79C5_nt4v121Ev();
extern void _ZN8S79C5_nt4v122Ev();
extern void _ZN8S79C5_nt4v123Ev();
extern void _ZN8S79C5_nt4v124Ev();
extern void _ZN8S79C5_nt4v125Ev();
extern void _ZN8S79C5_nt4v126Ev();
extern void _ZN8S79C5_nt4v127Ev();
extern void _ZN8S79C5_nt4v128Ev();
extern void _ZN8S79C5_nt4v129Ev();
extern void _ZN8S79C5_nt4v130Ev();
extern void _ZN8S79C5_nt4v131Ev();
extern void _ZN8S79C5_nt4v132Ev();
extern void _ZN8S79C5_nt4v133Ev();
extern void _ZN8S79C5_nt4v134Ev();
extern void _ZN8S79C5_nt4v135Ev();
extern void _ZN8S79C5_nt4v136Ev();
extern void _ZN8S79C5_nt4v137Ev();
extern void _ZN8S79C5_nt4v138Ev();
extern void _ZN8S79C5_nt4v139Ev();
extern void _ZN8S79C5_nt4v140Ev();
extern void _ZN8S79C5_nt4v141Ev();
extern void _ZN8S79C5_nt4v142Ev();
extern void _ZN8S79C5_nt4v143Ev();
extern void _ZN8S79C5_nt4v144Ev();
extern void _ZN8S79C5_nt4v145Ev();
extern void _ZN8S79C4_nt4v146Ev();
extern void _ZN8S79C4_nt4v147Ev();
extern void _ZN8S79C4_nt4v148Ev();
extern void _ZN8S79C4_nt4v149Ev();
extern void _ZN8S79C4_nt4v150Ev();
extern void _ZN8S79C4_nt4v151Ev();
extern void _ZN8S79C4_nt4v152Ev();
extern void _ZN8S79C4_nt4v153Ev();
extern void _ZN8S79C4_nt4v154Ev();
extern void _ZN8S79C4_nt4v155Ev();
extern void _ZN8S79C4_nt4v156Ev();
extern void _ZN8S79C4_nt4v157Ev();
extern void _ZN8S79C4_nt4v158Ev();
extern void _ZN8S79C4_nt4v159Ev();
extern void _ZN8S79C4_nt4v160Ev();
extern void _ZN8S79C4_nt4v161Ev();
extern void _ZN8S79C4_nt4v162Ev();
extern void _ZN8S79C4_nt4v163Ev();
extern void _ZN8S79C4_nt4v164Ev();
extern void _ZN8S79C4_nt4v165Ev();
extern void _ZN8S79C4_nt4v166Ev();
extern void _ZN8S79C4_nt4v167Ev();
extern void _ZN8S79C4_nt4v168Ev();
extern void _ZN8S79C4_nt4v169Ev();
extern void _ZN8S79C4_nt4v170Ev();
extern void _ZN8S79C4_nt4v171Ev();
extern void _ZN8S79C4_nt4v172Ev();
extern void _ZN8S79C4_nt4v173Ev();
extern void _ZN8S79C4_nt4v174Ev();
extern void _ZN8S79C4_nt4v175Ev();
extern void _ZN8S79C4_nt4v176Ev();
extern void _ZN8S79C4_nt4v177Ev();
extern void _ZN8S79C4_nt4v178Ev();
extern void _ZN8S79C4_nt4v179Ev();
extern void _ZN8S79C4_nt4v180Ev();
extern void _ZN8S79C4_nt4v181Ev();
extern void _ZN8S79C4_nt4v182Ev();
extern void _ZN8S79C4_nt4v183Ev();
extern void _ZN8S79C4_nt4v184Ev();
extern void _ZN8S79C4_nt4v185Ev();
extern void _ZN8S79C4_nt4v186Ev();
extern void _ZN8S79C4_nt4v187Ev();
extern void _ZN8S79C4_nt4v188Ev();
extern void _ZN8S79C4_nt4v189Ev();
extern void _ZN8S79C4_nt4v190Ev();
extern void _ZN8S79C4_nt4v191Ev();
extern void _ZN8S79C4_nt4v192Ev();
extern void _ZN8S79C4_nt4v193Ev();
extern void _ZN8S79C4_nt4v194Ev();
extern void _ZN8S79C4_nt4v195Ev();
extern void _ZN8S79C4_nt4v196Ev();
extern void _ZN8S79C4_nt4v197Ev();
extern void _ZN8S79C4_nt4v198Ev();
extern void _ZN8S79C4_nt4v199Ev();
extern void _ZN8S79C4_nt4v200Ev();
extern void _ZN8S79C4_nt4v201Ev();
extern void _ZN8S79C4_nt4v202Ev();
extern void _ZN8S79C4_nt4v203Ev();
extern void _ZN8S79C4_nt4v204Ev();
extern void _ZN8S79C4_nt4v205Ev();
extern void _ZN8S79C4_nt4v206Ev();
extern void _ZN8S79C4_nt4v207Ev();
extern void _ZN8S79C4_nt4v208Ev();
extern void _ZN8S79C4_nt4v209Ev();
extern void _ZN8S79C4_nt4v210Ev();
extern void _ZN8S79C4_nt4v211Ev();
extern void _ZN8S79C4_nt4v212Ev();
extern void _ZN8S79C4_nt4v213Ev();
extern void _ZN8S79C4_nt4v214Ev();
static  VTBL_ENTRY vtc_S79C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S79C4_nt[0]),
  (VTBL_ENTRY)&_ZN8S79C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN8S79C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt2v4Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt2v6Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt2v7Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt2v8Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v11Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v18Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v19Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v20Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v21Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v22Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v23Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v24Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v25Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v26Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v27Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v28Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v29Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v30Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v31Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v32Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v38Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v39Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v40Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v41Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v42Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v43Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v44Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v45Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v46Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v47Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v48Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v49Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v50Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v51Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v52Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v53Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v54Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v55Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v56Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v57Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v58Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v59Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v60Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v61Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v62Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v63Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v64Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v65Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v66Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v67Ev,
  (VTBL_ENTRY)&_ZN8S79C6_nt3v68Ev,
  (VTBL_ENTRY)&_ZN8S79C6_nt3v69Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v70Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v71Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v72Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v73Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v74Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v75Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v76Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v77Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v78Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v79Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v80Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v81Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v82Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v83Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v84Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v85Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v86Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v87Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v88Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v89Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v90Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v91Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v92Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v93Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v94Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v95Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v96Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v97Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v98Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v99Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v100Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v101Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v102Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v103Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v104Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v105Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v106Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v107Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v108Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v109Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v110Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v111Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v112Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v113Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v114Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v115Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v116Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v117Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v118Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v119Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v120Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v121Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v122Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v123Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v124Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v125Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v126Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v127Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v128Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v129Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v130Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v131Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v132Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v133Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v134Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v135Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v136Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v137Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v138Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v139Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v140Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v141Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v142Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v143Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v144Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v145Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v146Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v147Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v148Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v149Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v150Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v151Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v152Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v153Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v154Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v155Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v156Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v157Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v158Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v159Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v160Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v161Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v162Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v163Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v164Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v165Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v166Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v167Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v168Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v169Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v170Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v171Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v172Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v173Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v174Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v175Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v176Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v177Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v178Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v179Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v180Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v181Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v182Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v183Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v184Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v185Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v186Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v187Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v188Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v189Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v190Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v191Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v192Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v193Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v194Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v195Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v196Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v197Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v198Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v199Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v200Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v201Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v202Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v203Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v204Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v205Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v206Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v207Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v208Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v209Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v210Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v211Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v212Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v213Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v214Ev,
};
extern VTBL_ENTRY _ZTI8S79C4_nt[];
VTBL_ENTRY *P__ZTI8S79C4_nt = _ZTI8S79C4_nt; 
extern  VTBL_ENTRY _ZTV8S79C4_nt[];
Class_Descriptor cd_S79C4_nt = {  "S79C4_nt", // class name
  bases_S79C4_nt, 3,
  &(vtc_S79C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1224,908), // object size
  NSPAIRA(_ZTI8S79C4_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S79C4_nt),215, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S79C3_nt  : S79C4_nt {
  unsigned int s79c3f0:1;
  void *s79c3f1;
  virtual  ~S79C3_nt(); // _ZN8S79C3_ntD1Ev
  virtual void  v215(); // _ZN8S79C3_nt4v215Ev
  virtual void  v216(); // _ZN8S79C3_nt4v216Ev
  virtual void  v217(); // _ZN8S79C3_nt4v217Ev
  virtual void  v218(); // _ZN8S79C3_nt4v218Ev
  virtual void  v219(); // _ZN8S79C3_nt4v219Ev
  virtual void  v220(); // _ZN8S79C3_nt4v220Ev
  S79C3_nt(); // tgen
};
//SIG(-1 S79C3_nt) C1{ BC2{ BC3{ BC4{ BC5{ vd v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 Fi FL Fp[4] Fi[2] Fp FC6{ m Fi[2]} Fp[2]} vd v71 v72} vd v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 v112 v113 v114 v115 v116 v117 v118 v119 v120 v121 v122 v123 v124 v125 v126 v127 v128 v129 v130 v131 v132 v133 v134 v135 v136 v137 v138 v139 v140 v141 v142 v143 v144 v145 v146 v147 v148 FC7{ m Fi[4] Fc[9]} Fi Fi:1 Fi:1 Fi:1 Fi:1 FC8{ BC9{ BC10{ m Fp Fi[2]}}} FC8 Fp FC11{ BC12{ BC10}} FC11 FC11 FC13{ BC14{ BC10}} Fc Fi Fp FC6 FC6 FC6 FC6 FC6 FC6 FC15{ m Fp FC6} FC15 FC15 FC15 FC15 FC15 FC15 FC15 FC15 FC15} vd v149 v150 v151 v152 v153 v154 v155 v156 v157 v158 v159 v160 v161 v162 v163 v164 v165 v166 v167 v168 v169 v170 v171 v172 v173 v174 v175 v176 v177 v178 v179 v180 v181 v182 v183 v184 v185 v186 v187 v188 v189 v190 v191 v192 v193 v194 v195 v196 v197 v198 v199 v200 v201 v202 v203 v204 v205 v206 v207 v208 v209 v210 v211 v212 v213 v214 v215 v216 v217 FC16{ BC17{ m Fi[4]}} FC6 Fp[2] FC18{ m FC6 Fp FC16 Fp} FC19{ m Fp[8] Fc[4]} Fi FC20{ m Fp[5] FC21{ m Fi[4] Fc[4]} Fi:1 Fi:1 Fi Fc[8]} Fi[4] FC6[4] FC22{ m FC23{ m Fi[3]} FC24{ m} FC25{ BC26{ m Fi[2] Fc[2]} Fi} Fc} FC23 Fi FC27{ m FC28{ BC29{ m Fp[2]}} Fc FC30{ BC31{ BC32{ BC10}}} Fi FC6 FC6 Fp} FC27 Fp FC23 FC13 FC33{ BC34{ BC10}} Fi:1 Fi:1 Fi:1 FC24 FC15 FC15 FC15 FC15 FC15 FC15 FC15 FC15 FC15 FC15 FC15 FC15 FC15} vd v1 v2 v3 v4 v5 v6 Fi:1 Fp}


 S79C3_nt ::~S79C3_nt(){ note_dtor("S79C3_nt", this);}
void  S79C3_nt ::v215(){vfunc_called(this, "_ZN8S79C3_nt4v215Ev");}
void  S79C3_nt ::v216(){vfunc_called(this, "_ZN8S79C3_nt4v216Ev");}
void  S79C3_nt ::v217(){vfunc_called(this, "_ZN8S79C3_nt4v217Ev");}
void  S79C3_nt ::v218(){vfunc_called(this, "_ZN8S79C3_nt4v218Ev");}
void  S79C3_nt ::v219(){vfunc_called(this, "_ZN8S79C3_nt4v219Ev");}
void  S79C3_nt ::v220(){vfunc_called(this, "_ZN8S79C3_nt4v220Ev");}
S79C3_nt ::S79C3_nt(){ note_ctor("S79C3_nt", this);} // tgen

//skip512 S79C3_nt

#else // __cplusplus

extern void _ZN8S79C3_ntC1Ev();
extern void _ZN8S79C3_ntD1Ev();
Name_Map name_map_S79C3_nt[] = {
  NSPAIR(_ZN8S79C3_ntC1Ev),
  NSPAIR(_ZN8S79C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S79C7_nt;
extern VTBL_ENTRY _ZTI8S79C7_nt[];
extern  VTBL_ENTRY _ZTV8S79C7_nt[];
extern Class_Descriptor cd_S79C6_nt;
extern VTBL_ENTRY _ZTI8S79C6_nt[];
extern  VTBL_ENTRY _ZTV8S79C6_nt[];
extern Class_Descriptor cd_S79C5_nt;
extern VTBL_ENTRY _ZTI8S79C5_nt[];
extern  VTBL_ENTRY _ZTV8S79C5_nt[];
extern Class_Descriptor cd_S79C4_nt;
extern VTBL_ENTRY _ZTI8S79C4_nt[];
extern  VTBL_ENTRY _ZTV8S79C4_nt[];
static Base_Class bases_S79C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S79C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S79C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S79C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S79C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S79C3_nt[];
extern void _ZN8S79C3_ntD1Ev();
extern void _ZN8S79C3_ntD0Ev();
extern void _ZN8S79C7_nt2v4Ev();
extern void _ZN8S79C7_nt2v5Ev();
extern void _ZN8S79C7_nt2v6Ev();
extern void _ZN8S79C7_nt2v7Ev();
extern void _ZN8S79C7_nt2v8Ev();
extern void _ZN8S79C7_nt2v9Ev();
extern void _ZN8S79C7_nt3v10Ev();
extern void _ZN8S79C7_nt3v11Ev();
extern void _ZN8S79C7_nt3v12Ev();
extern void _ZN8S79C7_nt3v13Ev();
extern void _ZN8S79C7_nt3v14Ev();
extern void _ZN8S79C7_nt3v15Ev();
extern void _ZN8S79C7_nt3v16Ev();
extern void _ZN8S79C7_nt3v17Ev();
extern void _ZN8S79C7_nt3v18Ev();
extern void _ZN8S79C7_nt3v19Ev();
extern void _ZN8S79C7_nt3v20Ev();
extern void _ZN8S79C7_nt3v21Ev();
extern void _ZN8S79C7_nt3v22Ev();
extern void _ZN8S79C7_nt3v23Ev();
extern void _ZN8S79C7_nt3v24Ev();
extern void _ZN8S79C7_nt3v25Ev();
extern void _ZN8S79C7_nt3v26Ev();
extern void _ZN8S79C7_nt3v27Ev();
extern void _ZN8S79C7_nt3v28Ev();
extern void _ZN8S79C7_nt3v29Ev();
extern void _ZN8S79C7_nt3v30Ev();
extern void _ZN8S79C7_nt3v31Ev();
extern void _ZN8S79C7_nt3v32Ev();
extern void _ZN8S79C7_nt3v33Ev();
extern void _ZN8S79C7_nt3v34Ev();
extern void _ZN8S79C7_nt3v35Ev();
extern void _ZN8S79C7_nt3v36Ev();
extern void _ZN8S79C7_nt3v37Ev();
extern void _ZN8S79C7_nt3v38Ev();
extern void _ZN8S79C7_nt3v39Ev();
extern void _ZN8S79C7_nt3v40Ev();
extern void _ZN8S79C7_nt3v41Ev();
extern void _ZN8S79C7_nt3v42Ev();
extern void _ZN8S79C7_nt3v43Ev();
extern void _ZN8S79C7_nt3v44Ev();
extern void _ZN8S79C7_nt3v45Ev();
extern void _ZN8S79C7_nt3v46Ev();
extern void _ZN8S79C7_nt3v47Ev();
extern void _ZN8S79C7_nt3v48Ev();
extern void _ZN8S79C7_nt3v49Ev();
extern void _ZN8S79C7_nt3v50Ev();
extern void _ZN8S79C7_nt3v51Ev();
extern void _ZN8S79C7_nt3v52Ev();
extern void _ZN8S79C7_nt3v53Ev();
extern void _ZN8S79C7_nt3v54Ev();
extern void _ZN8S79C7_nt3v55Ev();
extern void _ZN8S79C7_nt3v56Ev();
extern void _ZN8S79C7_nt3v57Ev();
extern void _ZN8S79C7_nt3v58Ev();
extern void _ZN8S79C7_nt3v59Ev();
extern void _ZN8S79C7_nt3v60Ev();
extern void _ZN8S79C7_nt3v61Ev();
extern void _ZN8S79C7_nt3v62Ev();
extern void _ZN8S79C7_nt3v63Ev();
extern void _ZN8S79C7_nt3v64Ev();
extern void _ZN8S79C7_nt3v65Ev();
extern void _ZN8S79C7_nt3v66Ev();
extern void _ZN8S79C7_nt3v67Ev();
extern void _ZN8S79C6_nt3v68Ev();
extern void _ZN8S79C6_nt3v69Ev();
extern void _ZN8S79C5_nt3v70Ev();
extern void _ZN8S79C5_nt3v71Ev();
extern void _ZN8S79C5_nt3v72Ev();
extern void _ZN8S79C5_nt3v73Ev();
extern void _ZN8S79C5_nt3v74Ev();
extern void _ZN8S79C5_nt3v75Ev();
extern void _ZN8S79C5_nt3v76Ev();
extern void _ZN8S79C5_nt3v77Ev();
extern void _ZN8S79C5_nt3v78Ev();
extern void _ZN8S79C5_nt3v79Ev();
extern void _ZN8S79C5_nt3v80Ev();
extern void _ZN8S79C5_nt3v81Ev();
extern void _ZN8S79C5_nt3v82Ev();
extern void _ZN8S79C5_nt3v83Ev();
extern void _ZN8S79C5_nt3v84Ev();
extern void _ZN8S79C5_nt3v85Ev();
extern void _ZN8S79C5_nt3v86Ev();
extern void _ZN8S79C5_nt3v87Ev();
extern void _ZN8S79C5_nt3v88Ev();
extern void _ZN8S79C5_nt3v89Ev();
extern void _ZN8S79C5_nt3v90Ev();
extern void _ZN8S79C5_nt3v91Ev();
extern void _ZN8S79C5_nt3v92Ev();
extern void _ZN8S79C5_nt3v93Ev();
extern void _ZN8S79C5_nt3v94Ev();
extern void _ZN8S79C5_nt3v95Ev();
extern void _ZN8S79C5_nt3v96Ev();
extern void _ZN8S79C5_nt3v97Ev();
extern void _ZN8S79C5_nt3v98Ev();
extern void _ZN8S79C5_nt3v99Ev();
extern void _ZN8S79C5_nt4v100Ev();
extern void _ZN8S79C5_nt4v101Ev();
extern void _ZN8S79C5_nt4v102Ev();
extern void _ZN8S79C5_nt4v103Ev();
extern void _ZN8S79C5_nt4v104Ev();
extern void _ZN8S79C5_nt4v105Ev();
extern void _ZN8S79C5_nt4v106Ev();
extern void _ZN8S79C5_nt4v107Ev();
extern void _ZN8S79C5_nt4v108Ev();
extern void _ZN8S79C5_nt4v109Ev();
extern void _ZN8S79C5_nt4v110Ev();
extern void _ZN8S79C5_nt4v111Ev();
extern void _ZN8S79C5_nt4v112Ev();
extern void _ZN8S79C5_nt4v113Ev();
extern void _ZN8S79C5_nt4v114Ev();
extern void _ZN8S79C5_nt4v115Ev();
extern void _ZN8S79C5_nt4v116Ev();
extern void _ZN8S79C5_nt4v117Ev();
extern void _ZN8S79C5_nt4v118Ev();
extern void _ZN8S79C5_nt4v119Ev();
extern void _ZN8S79C5_nt4v120Ev();
extern void _ZN8S79C5_nt4v121Ev();
extern void _ZN8S79C5_nt4v122Ev();
extern void _ZN8S79C5_nt4v123Ev();
extern void _ZN8S79C5_nt4v124Ev();
extern void _ZN8S79C5_nt4v125Ev();
extern void _ZN8S79C5_nt4v126Ev();
extern void _ZN8S79C5_nt4v127Ev();
extern void _ZN8S79C5_nt4v128Ev();
extern void _ZN8S79C5_nt4v129Ev();
extern void _ZN8S79C5_nt4v130Ev();
extern void _ZN8S79C5_nt4v131Ev();
extern void _ZN8S79C5_nt4v132Ev();
extern void _ZN8S79C5_nt4v133Ev();
extern void _ZN8S79C5_nt4v134Ev();
extern void _ZN8S79C5_nt4v135Ev();
extern void _ZN8S79C5_nt4v136Ev();
extern void _ZN8S79C5_nt4v137Ev();
extern void _ZN8S79C5_nt4v138Ev();
extern void _ZN8S79C5_nt4v139Ev();
extern void _ZN8S79C5_nt4v140Ev();
extern void _ZN8S79C5_nt4v141Ev();
extern void _ZN8S79C5_nt4v142Ev();
extern void _ZN8S79C5_nt4v143Ev();
extern void _ZN8S79C5_nt4v144Ev();
extern void _ZN8S79C5_nt4v145Ev();
extern void _ZN8S79C4_nt4v146Ev();
extern void _ZN8S79C4_nt4v147Ev();
extern void _ZN8S79C4_nt4v148Ev();
extern void _ZN8S79C4_nt4v149Ev();
extern void _ZN8S79C4_nt4v150Ev();
extern void _ZN8S79C4_nt4v151Ev();
extern void _ZN8S79C4_nt4v152Ev();
extern void _ZN8S79C4_nt4v153Ev();
extern void _ZN8S79C4_nt4v154Ev();
extern void _ZN8S79C4_nt4v155Ev();
extern void _ZN8S79C4_nt4v156Ev();
extern void _ZN8S79C4_nt4v157Ev();
extern void _ZN8S79C4_nt4v158Ev();
extern void _ZN8S79C4_nt4v159Ev();
extern void _ZN8S79C4_nt4v160Ev();
extern void _ZN8S79C4_nt4v161Ev();
extern void _ZN8S79C4_nt4v162Ev();
extern void _ZN8S79C4_nt4v163Ev();
extern void _ZN8S79C4_nt4v164Ev();
extern void _ZN8S79C4_nt4v165Ev();
extern void _ZN8S79C4_nt4v166Ev();
extern void _ZN8S79C4_nt4v167Ev();
extern void _ZN8S79C4_nt4v168Ev();
extern void _ZN8S79C4_nt4v169Ev();
extern void _ZN8S79C4_nt4v170Ev();
extern void _ZN8S79C4_nt4v171Ev();
extern void _ZN8S79C4_nt4v172Ev();
extern void _ZN8S79C4_nt4v173Ev();
extern void _ZN8S79C4_nt4v174Ev();
extern void _ZN8S79C4_nt4v175Ev();
extern void _ZN8S79C4_nt4v176Ev();
extern void _ZN8S79C4_nt4v177Ev();
extern void _ZN8S79C4_nt4v178Ev();
extern void _ZN8S79C4_nt4v179Ev();
extern void _ZN8S79C4_nt4v180Ev();
extern void _ZN8S79C4_nt4v181Ev();
extern void _ZN8S79C4_nt4v182Ev();
extern void _ZN8S79C4_nt4v183Ev();
extern void _ZN8S79C4_nt4v184Ev();
extern void _ZN8S79C4_nt4v185Ev();
extern void _ZN8S79C4_nt4v186Ev();
extern void _ZN8S79C4_nt4v187Ev();
extern void _ZN8S79C4_nt4v188Ev();
extern void _ZN8S79C4_nt4v189Ev();
extern void _ZN8S79C4_nt4v190Ev();
extern void _ZN8S79C4_nt4v191Ev();
extern void _ZN8S79C4_nt4v192Ev();
extern void _ZN8S79C4_nt4v193Ev();
extern void _ZN8S79C4_nt4v194Ev();
extern void _ZN8S79C4_nt4v195Ev();
extern void _ZN8S79C4_nt4v196Ev();
extern void _ZN8S79C4_nt4v197Ev();
extern void _ZN8S79C4_nt4v198Ev();
extern void _ZN8S79C4_nt4v199Ev();
extern void _ZN8S79C4_nt4v200Ev();
extern void _ZN8S79C4_nt4v201Ev();
extern void _ZN8S79C4_nt4v202Ev();
extern void _ZN8S79C4_nt4v203Ev();
extern void _ZN8S79C4_nt4v204Ev();
extern void _ZN8S79C4_nt4v205Ev();
extern void _ZN8S79C4_nt4v206Ev();
extern void _ZN8S79C4_nt4v207Ev();
extern void _ZN8S79C4_nt4v208Ev();
extern void _ZN8S79C4_nt4v209Ev();
extern void _ZN8S79C4_nt4v210Ev();
extern void _ZN8S79C4_nt4v211Ev();
extern void _ZN8S79C4_nt4v212Ev();
extern void _ZN8S79C4_nt4v213Ev();
extern void _ZN8S79C4_nt4v214Ev();
extern void _ZN8S79C3_nt4v215Ev();
extern void _ZN8S79C3_nt4v216Ev();
extern void _ZN8S79C3_nt4v217Ev();
extern void _ZN8S79C3_nt4v218Ev();
extern void _ZN8S79C3_nt4v219Ev();
extern void _ZN8S79C3_nt4v220Ev();
static  VTBL_ENTRY vtc_S79C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S79C3_nt[0]),
  (VTBL_ENTRY)&_ZN8S79C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN8S79C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt2v4Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt2v6Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt2v7Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt2v8Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v11Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v18Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v19Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v20Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v21Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v22Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v23Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v24Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v25Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v26Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v27Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v28Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v29Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v30Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v31Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v32Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v38Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v39Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v40Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v41Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v42Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v43Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v44Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v45Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v46Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v47Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v48Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v49Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v50Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v51Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v52Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v53Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v54Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v55Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v56Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v57Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v58Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v59Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v60Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v61Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v62Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v63Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v64Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v65Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v66Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v67Ev,
  (VTBL_ENTRY)&_ZN8S79C6_nt3v68Ev,
  (VTBL_ENTRY)&_ZN8S79C6_nt3v69Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v70Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v71Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v72Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v73Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v74Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v75Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v76Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v77Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v78Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v79Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v80Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v81Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v82Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v83Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v84Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v85Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v86Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v87Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v88Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v89Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v90Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v91Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v92Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v93Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v94Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v95Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v96Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v97Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v98Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v99Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v100Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v101Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v102Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v103Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v104Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v105Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v106Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v107Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v108Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v109Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v110Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v111Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v112Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v113Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v114Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v115Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v116Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v117Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v118Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v119Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v120Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v121Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v122Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v123Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v124Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v125Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v126Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v127Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v128Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v129Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v130Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v131Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v132Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v133Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v134Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v135Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v136Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v137Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v138Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v139Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v140Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v141Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v142Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v143Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v144Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v145Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v146Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v147Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v148Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v149Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v150Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v151Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v152Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v153Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v154Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v155Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v156Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v157Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v158Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v159Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v160Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v161Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v162Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v163Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v164Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v165Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v166Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v167Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v168Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v169Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v170Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v171Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v172Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v173Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v174Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v175Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v176Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v177Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v178Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v179Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v180Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v181Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v182Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v183Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v184Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v185Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v186Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v187Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v188Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v189Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v190Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v191Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v192Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v193Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v194Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v195Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v196Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v197Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v198Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v199Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v200Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v201Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v202Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v203Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v204Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v205Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v206Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v207Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v208Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v209Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v210Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v211Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v212Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v213Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v214Ev,
  (VTBL_ENTRY)&_ZN8S79C3_nt4v215Ev,
  (VTBL_ENTRY)&_ZN8S79C3_nt4v216Ev,
  (VTBL_ENTRY)&_ZN8S79C3_nt4v217Ev,
  (VTBL_ENTRY)&_ZN8S79C3_nt4v218Ev,
  (VTBL_ENTRY)&_ZN8S79C3_nt4v219Ev,
  (VTBL_ENTRY)&_ZN8S79C3_nt4v220Ev,
};
extern VTBL_ENTRY _ZTI8S79C3_nt[];
VTBL_ENTRY *P__ZTI8S79C3_nt = _ZTI8S79C3_nt; 
extern  VTBL_ENTRY _ZTV8S79C3_nt[];
Class_Descriptor cd_S79C3_nt = {  "S79C3_nt", // class name
  bases_S79C3_nt, 4,
  &(vtc_S79C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1240,916), // object size
  NSPAIRA(_ZTI8S79C3_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S79C3_nt),221, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  4, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S79C2_nt  : S79C3_nt {
  unsigned int s79c2f0:1;
  void *s79c2f1;
  int s79c2f2[5];
  ::S79C21_nt s79c2f3;
  virtual  ~S79C2_nt(); // _ZN8S79C2_ntD1Ev
  virtual void  v221(); // _ZN8S79C2_nt4v221Ev
  virtual void  v222(); // _ZN8S79C2_nt4v222Ev
  virtual void  v223(); // _ZN8S79C2_nt4v223Ev
  S79C2_nt(); // tgen
};
//SIG(-1 S79C2_nt) C1{ BC2{ BC3{ BC4{ BC5{ BC6{ vd v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 Fi FL Fp[4] Fi[2] Fp FC7{ m Fi[2]} Fp[2]} vd v68 v69} vd v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 v112 v113 v114 v115 v116 v117 v118 v119 v120 v121 v122 v123 v124 v125 v126 v127 v128 v129 v130 v131 v132 v133 v134 v135 v136 v137 v138 v139 v140 v141 v142 v143 v144 v145 FC8{ m Fi[4] Fc[9]} Fi Fi:1 Fi:1 Fi:1 Fi:1 FC9{ BC10{ BC11{ m Fp Fi[2]}}} FC9 Fp FC12{ BC13{ BC11}} FC12 FC12 FC14{ BC15{ BC11}} Fc Fi Fp FC7 FC7 FC7 FC7 FC7 FC7 FC16{ m Fp FC7} FC16 FC16 FC16 FC16 FC16 FC16 FC16 FC16 FC16} vd v146 v147 v148 v149 v150 v151 v152 v153 v154 v155 v156 v157 v158 v159 v160 v161 v162 v163 v164 v165 v166 v167 v168 v169 v170 v171 v172 v173 v174 v175 v176 v177 v178 v179 v180 v181 v182 v183 v184 v185 v186 v187 v188 v189 v190 v191 v192 v193 v194 v195 v196 v197 v198 v199 v200 v201 v202 v203 v204 v205 v206 v207 v208 v209 v210 v211 v212 v213 v214 FC17{ BC18{ m Fi[4]}} FC7 Fp[2] FC19{ m FC7 Fp FC17 Fp} FC20{ m Fp[8] Fc[4]} Fi FC21{ m Fp[5] FC22{ m Fi[4] Fc[4]} Fi:1 Fi:1 Fi Fc[8]} Fi[4] FC7[4] FC23{ m FC24{ m Fi[3]} FC25{ m} FC26{ BC27{ m Fi[2] Fc[2]} Fi} Fc} FC24 Fi FC28{ m FC29{ BC30{ m Fp[2]}} Fc FC31{ BC32{ BC33{ BC11}}} Fi FC7 FC7 Fp} FC28 Fp FC24 FC14 FC34{ BC35{ BC11}} Fi:1 Fi:1 Fi:1 FC25 FC16 FC16 FC16 FC16 FC16 FC16 FC16 FC16 FC16 FC16 FC16 FC16 FC16} vd v215 v216 v217 v218 v219 v220 Fi:1 Fp} vd v1 v2 v3 Fi:1 Fp Fi[5] FC16}


 S79C2_nt ::~S79C2_nt(){ note_dtor("S79C2_nt", this);}
void  S79C2_nt ::v221(){vfunc_called(this, "_ZN8S79C2_nt4v221Ev");}
void  S79C2_nt ::v222(){vfunc_called(this, "_ZN8S79C2_nt4v222Ev");}
void  S79C2_nt ::v223(){vfunc_called(this, "_ZN8S79C2_nt4v223Ev");}
S79C2_nt ::S79C2_nt(){ note_ctor("S79C2_nt", this);} // tgen

//skip512 S79C2_nt

#else // __cplusplus

extern void _ZN8S79C2_ntC1Ev();
extern void _ZN8S79C2_ntD1Ev();
Name_Map name_map_S79C2_nt[] = {
  NSPAIR(_ZN8S79C2_ntC1Ev),
  NSPAIR(_ZN8S79C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S79C7_nt;
extern VTBL_ENTRY _ZTI8S79C7_nt[];
extern  VTBL_ENTRY _ZTV8S79C7_nt[];
extern Class_Descriptor cd_S79C6_nt;
extern VTBL_ENTRY _ZTI8S79C6_nt[];
extern  VTBL_ENTRY _ZTV8S79C6_nt[];
extern Class_Descriptor cd_S79C5_nt;
extern VTBL_ENTRY _ZTI8S79C5_nt[];
extern  VTBL_ENTRY _ZTV8S79C5_nt[];
extern Class_Descriptor cd_S79C4_nt;
extern VTBL_ENTRY _ZTI8S79C4_nt[];
extern  VTBL_ENTRY _ZTV8S79C4_nt[];
extern Class_Descriptor cd_S79C3_nt;
extern VTBL_ENTRY _ZTI8S79C3_nt[];
extern  VTBL_ENTRY _ZTV8S79C3_nt[];
static Base_Class bases_S79C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S79C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S79C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S79C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S79C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S79C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S79C2_nt[];
extern void _ZN8S79C2_ntD1Ev();
extern void _ZN8S79C2_ntD0Ev();
extern void _ZN8S79C7_nt2v4Ev();
extern void _ZN8S79C7_nt2v5Ev();
extern void _ZN8S79C7_nt2v6Ev();
extern void _ZN8S79C7_nt2v7Ev();
extern void _ZN8S79C7_nt2v8Ev();
extern void _ZN8S79C7_nt2v9Ev();
extern void _ZN8S79C7_nt3v10Ev();
extern void _ZN8S79C7_nt3v11Ev();
extern void _ZN8S79C7_nt3v12Ev();
extern void _ZN8S79C7_nt3v13Ev();
extern void _ZN8S79C7_nt3v14Ev();
extern void _ZN8S79C7_nt3v15Ev();
extern void _ZN8S79C7_nt3v16Ev();
extern void _ZN8S79C7_nt3v17Ev();
extern void _ZN8S79C7_nt3v18Ev();
extern void _ZN8S79C7_nt3v19Ev();
extern void _ZN8S79C7_nt3v20Ev();
extern void _ZN8S79C7_nt3v21Ev();
extern void _ZN8S79C7_nt3v22Ev();
extern void _ZN8S79C7_nt3v23Ev();
extern void _ZN8S79C7_nt3v24Ev();
extern void _ZN8S79C7_nt3v25Ev();
extern void _ZN8S79C7_nt3v26Ev();
extern void _ZN8S79C7_nt3v27Ev();
extern void _ZN8S79C7_nt3v28Ev();
extern void _ZN8S79C7_nt3v29Ev();
extern void _ZN8S79C7_nt3v30Ev();
extern void _ZN8S79C7_nt3v31Ev();
extern void _ZN8S79C7_nt3v32Ev();
extern void _ZN8S79C7_nt3v33Ev();
extern void _ZN8S79C7_nt3v34Ev();
extern void _ZN8S79C7_nt3v35Ev();
extern void _ZN8S79C7_nt3v36Ev();
extern void _ZN8S79C7_nt3v37Ev();
extern void _ZN8S79C7_nt3v38Ev();
extern void _ZN8S79C7_nt3v39Ev();
extern void _ZN8S79C7_nt3v40Ev();
extern void _ZN8S79C7_nt3v41Ev();
extern void _ZN8S79C7_nt3v42Ev();
extern void _ZN8S79C7_nt3v43Ev();
extern void _ZN8S79C7_nt3v44Ev();
extern void _ZN8S79C7_nt3v45Ev();
extern void _ZN8S79C7_nt3v46Ev();
extern void _ZN8S79C7_nt3v47Ev();
extern void _ZN8S79C7_nt3v48Ev();
extern void _ZN8S79C7_nt3v49Ev();
extern void _ZN8S79C7_nt3v50Ev();
extern void _ZN8S79C7_nt3v51Ev();
extern void _ZN8S79C7_nt3v52Ev();
extern void _ZN8S79C7_nt3v53Ev();
extern void _ZN8S79C7_nt3v54Ev();
extern void _ZN8S79C7_nt3v55Ev();
extern void _ZN8S79C7_nt3v56Ev();
extern void _ZN8S79C7_nt3v57Ev();
extern void _ZN8S79C7_nt3v58Ev();
extern void _ZN8S79C7_nt3v59Ev();
extern void _ZN8S79C7_nt3v60Ev();
extern void _ZN8S79C7_nt3v61Ev();
extern void _ZN8S79C7_nt3v62Ev();
extern void _ZN8S79C7_nt3v63Ev();
extern void _ZN8S79C7_nt3v64Ev();
extern void _ZN8S79C7_nt3v65Ev();
extern void _ZN8S79C7_nt3v66Ev();
extern void _ZN8S79C7_nt3v67Ev();
extern void _ZN8S79C6_nt3v68Ev();
extern void _ZN8S79C6_nt3v69Ev();
extern void _ZN8S79C5_nt3v70Ev();
extern void _ZN8S79C5_nt3v71Ev();
extern void _ZN8S79C5_nt3v72Ev();
extern void _ZN8S79C5_nt3v73Ev();
extern void _ZN8S79C5_nt3v74Ev();
extern void _ZN8S79C5_nt3v75Ev();
extern void _ZN8S79C5_nt3v76Ev();
extern void _ZN8S79C5_nt3v77Ev();
extern void _ZN8S79C5_nt3v78Ev();
extern void _ZN8S79C5_nt3v79Ev();
extern void _ZN8S79C5_nt3v80Ev();
extern void _ZN8S79C5_nt3v81Ev();
extern void _ZN8S79C5_nt3v82Ev();
extern void _ZN8S79C5_nt3v83Ev();
extern void _ZN8S79C5_nt3v84Ev();
extern void _ZN8S79C5_nt3v85Ev();
extern void _ZN8S79C5_nt3v86Ev();
extern void _ZN8S79C5_nt3v87Ev();
extern void _ZN8S79C5_nt3v88Ev();
extern void _ZN8S79C5_nt3v89Ev();
extern void _ZN8S79C5_nt3v90Ev();
extern void _ZN8S79C5_nt3v91Ev();
extern void _ZN8S79C5_nt3v92Ev();
extern void _ZN8S79C5_nt3v93Ev();
extern void _ZN8S79C5_nt3v94Ev();
extern void _ZN8S79C5_nt3v95Ev();
extern void _ZN8S79C5_nt3v96Ev();
extern void _ZN8S79C5_nt3v97Ev();
extern void _ZN8S79C5_nt3v98Ev();
extern void _ZN8S79C5_nt3v99Ev();
extern void _ZN8S79C5_nt4v100Ev();
extern void _ZN8S79C5_nt4v101Ev();
extern void _ZN8S79C5_nt4v102Ev();
extern void _ZN8S79C5_nt4v103Ev();
extern void _ZN8S79C5_nt4v104Ev();
extern void _ZN8S79C5_nt4v105Ev();
extern void _ZN8S79C5_nt4v106Ev();
extern void _ZN8S79C5_nt4v107Ev();
extern void _ZN8S79C5_nt4v108Ev();
extern void _ZN8S79C5_nt4v109Ev();
extern void _ZN8S79C5_nt4v110Ev();
extern void _ZN8S79C5_nt4v111Ev();
extern void _ZN8S79C5_nt4v112Ev();
extern void _ZN8S79C5_nt4v113Ev();
extern void _ZN8S79C5_nt4v114Ev();
extern void _ZN8S79C5_nt4v115Ev();
extern void _ZN8S79C5_nt4v116Ev();
extern void _ZN8S79C5_nt4v117Ev();
extern void _ZN8S79C5_nt4v118Ev();
extern void _ZN8S79C5_nt4v119Ev();
extern void _ZN8S79C5_nt4v120Ev();
extern void _ZN8S79C5_nt4v121Ev();
extern void _ZN8S79C5_nt4v122Ev();
extern void _ZN8S79C5_nt4v123Ev();
extern void _ZN8S79C5_nt4v124Ev();
extern void _ZN8S79C5_nt4v125Ev();
extern void _ZN8S79C5_nt4v126Ev();
extern void _ZN8S79C5_nt4v127Ev();
extern void _ZN8S79C5_nt4v128Ev();
extern void _ZN8S79C5_nt4v129Ev();
extern void _ZN8S79C5_nt4v130Ev();
extern void _ZN8S79C5_nt4v131Ev();
extern void _ZN8S79C5_nt4v132Ev();
extern void _ZN8S79C5_nt4v133Ev();
extern void _ZN8S79C5_nt4v134Ev();
extern void _ZN8S79C5_nt4v135Ev();
extern void _ZN8S79C5_nt4v136Ev();
extern void _ZN8S79C5_nt4v137Ev();
extern void _ZN8S79C5_nt4v138Ev();
extern void _ZN8S79C5_nt4v139Ev();
extern void _ZN8S79C5_nt4v140Ev();
extern void _ZN8S79C5_nt4v141Ev();
extern void _ZN8S79C5_nt4v142Ev();
extern void _ZN8S79C5_nt4v143Ev();
extern void _ZN8S79C5_nt4v144Ev();
extern void _ZN8S79C5_nt4v145Ev();
extern void _ZN8S79C4_nt4v146Ev();
extern void _ZN8S79C4_nt4v147Ev();
extern void _ZN8S79C4_nt4v148Ev();
extern void _ZN8S79C4_nt4v149Ev();
extern void _ZN8S79C4_nt4v150Ev();
extern void _ZN8S79C4_nt4v151Ev();
extern void _ZN8S79C4_nt4v152Ev();
extern void _ZN8S79C4_nt4v153Ev();
extern void _ZN8S79C4_nt4v154Ev();
extern void _ZN8S79C4_nt4v155Ev();
extern void _ZN8S79C4_nt4v156Ev();
extern void _ZN8S79C4_nt4v157Ev();
extern void _ZN8S79C4_nt4v158Ev();
extern void _ZN8S79C4_nt4v159Ev();
extern void _ZN8S79C4_nt4v160Ev();
extern void _ZN8S79C4_nt4v161Ev();
extern void _ZN8S79C4_nt4v162Ev();
extern void _ZN8S79C4_nt4v163Ev();
extern void _ZN8S79C4_nt4v164Ev();
extern void _ZN8S79C4_nt4v165Ev();
extern void _ZN8S79C4_nt4v166Ev();
extern void _ZN8S79C4_nt4v167Ev();
extern void _ZN8S79C4_nt4v168Ev();
extern void _ZN8S79C4_nt4v169Ev();
extern void _ZN8S79C4_nt4v170Ev();
extern void _ZN8S79C4_nt4v171Ev();
extern void _ZN8S79C4_nt4v172Ev();
extern void _ZN8S79C4_nt4v173Ev();
extern void _ZN8S79C4_nt4v174Ev();
extern void _ZN8S79C4_nt4v175Ev();
extern void _ZN8S79C4_nt4v176Ev();
extern void _ZN8S79C4_nt4v177Ev();
extern void _ZN8S79C4_nt4v178Ev();
extern void _ZN8S79C4_nt4v179Ev();
extern void _ZN8S79C4_nt4v180Ev();
extern void _ZN8S79C4_nt4v181Ev();
extern void _ZN8S79C4_nt4v182Ev();
extern void _ZN8S79C4_nt4v183Ev();
extern void _ZN8S79C4_nt4v184Ev();
extern void _ZN8S79C4_nt4v185Ev();
extern void _ZN8S79C4_nt4v186Ev();
extern void _ZN8S79C4_nt4v187Ev();
extern void _ZN8S79C4_nt4v188Ev();
extern void _ZN8S79C4_nt4v189Ev();
extern void _ZN8S79C4_nt4v190Ev();
extern void _ZN8S79C4_nt4v191Ev();
extern void _ZN8S79C4_nt4v192Ev();
extern void _ZN8S79C4_nt4v193Ev();
extern void _ZN8S79C4_nt4v194Ev();
extern void _ZN8S79C4_nt4v195Ev();
extern void _ZN8S79C4_nt4v196Ev();
extern void _ZN8S79C4_nt4v197Ev();
extern void _ZN8S79C4_nt4v198Ev();
extern void _ZN8S79C4_nt4v199Ev();
extern void _ZN8S79C4_nt4v200Ev();
extern void _ZN8S79C4_nt4v201Ev();
extern void _ZN8S79C4_nt4v202Ev();
extern void _ZN8S79C4_nt4v203Ev();
extern void _ZN8S79C4_nt4v204Ev();
extern void _ZN8S79C4_nt4v205Ev();
extern void _ZN8S79C4_nt4v206Ev();
extern void _ZN8S79C4_nt4v207Ev();
extern void _ZN8S79C4_nt4v208Ev();
extern void _ZN8S79C4_nt4v209Ev();
extern void _ZN8S79C4_nt4v210Ev();
extern void _ZN8S79C4_nt4v211Ev();
extern void _ZN8S79C4_nt4v212Ev();
extern void _ZN8S79C4_nt4v213Ev();
extern void _ZN8S79C4_nt4v214Ev();
extern void _ZN8S79C3_nt4v215Ev();
extern void _ZN8S79C3_nt4v216Ev();
extern void _ZN8S79C3_nt4v217Ev();
extern void _ZN8S79C3_nt4v218Ev();
extern void _ZN8S79C3_nt4v219Ev();
extern void _ZN8S79C3_nt4v220Ev();
extern void _ZN8S79C2_nt4v221Ev();
extern void _ZN8S79C2_nt4v222Ev();
extern void _ZN8S79C2_nt4v223Ev();
static  VTBL_ENTRY vtc_S79C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S79C2_nt[0]),
  (VTBL_ENTRY)&_ZN8S79C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN8S79C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt2v4Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt2v6Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt2v7Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt2v8Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v11Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v18Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v19Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v20Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v21Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v22Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v23Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v24Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v25Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v26Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v27Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v28Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v29Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v30Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v31Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v32Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v38Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v39Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v40Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v41Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v42Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v43Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v44Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v45Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v46Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v47Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v48Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v49Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v50Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v51Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v52Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v53Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v54Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v55Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v56Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v57Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v58Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v59Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v60Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v61Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v62Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v63Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v64Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v65Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v66Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v67Ev,
  (VTBL_ENTRY)&_ZN8S79C6_nt3v68Ev,
  (VTBL_ENTRY)&_ZN8S79C6_nt3v69Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v70Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v71Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v72Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v73Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v74Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v75Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v76Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v77Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v78Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v79Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v80Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v81Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v82Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v83Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v84Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v85Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v86Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v87Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v88Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v89Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v90Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v91Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v92Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v93Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v94Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v95Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v96Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v97Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v98Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v99Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v100Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v101Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v102Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v103Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v104Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v105Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v106Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v107Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v108Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v109Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v110Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v111Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v112Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v113Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v114Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v115Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v116Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v117Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v118Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v119Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v120Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v121Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v122Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v123Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v124Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v125Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v126Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v127Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v128Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v129Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v130Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v131Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v132Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v133Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v134Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v135Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v136Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v137Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v138Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v139Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v140Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v141Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v142Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v143Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v144Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v145Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v146Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v147Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v148Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v149Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v150Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v151Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v152Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v153Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v154Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v155Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v156Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v157Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v158Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v159Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v160Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v161Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v162Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v163Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v164Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v165Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v166Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v167Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v168Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v169Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v170Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v171Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v172Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v173Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v174Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v175Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v176Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v177Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v178Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v179Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v180Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v181Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v182Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v183Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v184Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v185Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v186Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v187Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v188Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v189Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v190Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v191Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v192Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v193Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v194Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v195Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v196Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v197Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v198Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v199Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v200Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v201Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v202Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v203Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v204Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v205Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v206Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v207Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v208Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v209Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v210Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v211Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v212Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v213Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v214Ev,
  (VTBL_ENTRY)&_ZN8S79C3_nt4v215Ev,
  (VTBL_ENTRY)&_ZN8S79C3_nt4v216Ev,
  (VTBL_ENTRY)&_ZN8S79C3_nt4v217Ev,
  (VTBL_ENTRY)&_ZN8S79C3_nt4v218Ev,
  (VTBL_ENTRY)&_ZN8S79C3_nt4v219Ev,
  (VTBL_ENTRY)&_ZN8S79C3_nt4v220Ev,
  (VTBL_ENTRY)&_ZN8S79C2_nt4v221Ev,
  (VTBL_ENTRY)&_ZN8S79C2_nt4v222Ev,
  (VTBL_ENTRY)&_ZN8S79C2_nt4v223Ev,
};
extern VTBL_ENTRY _ZTI8S79C2_nt[];
VTBL_ENTRY *P__ZTI8S79C2_nt = _ZTI8S79C2_nt; 
extern  VTBL_ENTRY _ZTV8S79C2_nt[];
Class_Descriptor cd_S79C2_nt = {  "S79C2_nt", // class name
  bases_S79C2_nt, 5,
  &(vtc_S79C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1296,956), // object size
  NSPAIRA(_ZTI8S79C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S79C2_nt),224, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  5, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S79C1  : S79C2_nt {
  void *s79c1f0[2];
  unsigned int s79c1f1:1;
  ::S79C32_nt s79c1f2[2];
  ::S79C32_nt s79c1f3[2];
  int s79c1f4;
  ::S79C39_nt s79c1f5[2];
  ::S79C39_nt s79c1f6;
  virtual  ~S79C1(); // _ZN5S79C1D1Ev
  virtual void  v1(); // _ZN5S79C12v1Ev
  virtual void  v2(); // _ZN5S79C12v2Ev
  virtual void  v3(); // _ZN5S79C12v3Ev
  S79C1(); // tgen
};
//SIG(1 S79C1) C1{ BC2{ BC3{ BC4{ BC5{ BC6{ BC7{ vd v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 Fi FL Fp[4] Fi[2] Fp FC8{ m Fi[2]} Fp[2]} vd v68 v69} vd v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 v112 v113 v114 v115 v116 v117 v118 v119 v120 v121 v122 v123 v124 v125 v126 v127 v128 v129 v130 v131 v132 v133 v134 v135 v136 v137 v138 v139 v140 v141 v142 v143 v144 v145 FC9{ m Fi[4] Fc[9]} Fi Fi:1 Fi:1 Fi:1 Fi:1 FC10{ BC11{ BC12{ m Fp Fi[2]}}} FC10 Fp FC13{ BC14{ BC12}} FC13 FC13 FC15{ BC16{ BC12}} Fc Fi Fp FC8 FC8 FC8 FC8 FC8 FC8 FC17{ m Fp FC8} FC17 FC17 FC17 FC17 FC17 FC17 FC17 FC17 FC17} vd v146 v147 v148 v149 v150 v151 v152 v153 v154 v155 v156 v157 v158 v159 v160 v161 v162 v163 v164 v165 v166 v167 v168 v169 v170 v171 v172 v173 v174 v175 v176 v177 v178 v179 v180 v181 v182 v183 v184 v185 v186 v187 v188 v189 v190 v191 v192 v193 v194 v195 v196 v197 v198 v199 v200 v201 v202 v203 v204 v205 v206 v207 v208 v209 v210 v211 v212 v213 v214 FC18{ BC19{ m Fi[4]}} FC8 Fp[2] FC20{ m FC8 Fp FC18 Fp} FC21{ m Fp[8] Fc[4]} Fi FC22{ m Fp[5] FC23{ m Fi[4] Fc[4]} Fi:1 Fi:1 Fi Fc[8]} Fi[4] FC8[4] FC24{ m FC25{ m Fi[3]} FC26{ m} FC27{ BC28{ m Fi[2] Fc[2]} Fi} Fc} FC25 Fi FC29{ m FC30{ BC31{ m Fp[2]}} Fc FC32{ BC33{ BC34{ BC12}}} Fi FC8 FC8 Fp} FC29 Fp FC25 FC15 FC35{ BC36{ BC12}} Fi:1 Fi:1 Fi:1 FC26 FC17 FC17 FC17 FC17 FC17 FC17 FC17 FC17 FC17 FC17 FC17 FC17 FC17} vd v215 v216 v217 v218 v219 v220 Fi:1 Fp} vd v221 v222 v223 Fi:1 Fp Fi[5] FC17} vd v1 v2 v3 Fp[2] Fi:1 FC26[2] FC26[2] Fi FC32[2] FC32}


 S79C1 ::~S79C1(){ note_dtor("S79C1", this);}
void  S79C1 ::v1(){vfunc_called(this, "_ZN5S79C12v1Ev");}
void  S79C1 ::v2(){vfunc_called(this, "_ZN5S79C12v2Ev");}
void  S79C1 ::v3(){vfunc_called(this, "_ZN5S79C12v3Ev");}
S79C1 ::S79C1(){ note_ctor("S79C1", this);} // tgen

static void Test_S79C1()
{
  extern Class_Descriptor cd_S79C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(173,254)];
    init_test(&cd_S79C1, buf);
    S79C1 *dp, &lv = *(dp=new (buf) S79C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1376,1012), "sizeof(S79C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S79C1)");
    check_base_class_offset(lv, (S79C7_nt*)(S79C6_nt*)(S79C5_nt*)(S79C4_nt*)(S79C3_nt*)(S79C2_nt*), 0, "S79C1");
    check_base_class_offset(lv, (S79C6_nt*)(S79C5_nt*)(S79C4_nt*)(S79C3_nt*)(S79C2_nt*), 0, "S79C1");
    check_base_class_offset(lv, (S79C5_nt*)(S79C4_nt*)(S79C3_nt*)(S79C2_nt*), 0, "S79C1");
    check_base_class_offset(lv, (S79C4_nt*)(S79C3_nt*)(S79C2_nt*), 0, "S79C1");
    check_base_class_offset(lv, (S79C3_nt*)(S79C2_nt*), 0, "S79C1");
    check_base_class_offset(lv, (S79C2_nt*), 0, "S79C1");
    check_field_offset(lv, s79c1f0, ABISELECT(1296,956), "S79C1.s79c1f0");
    set_bf_and_test(lv, s79c1f1, ABISELECT(1312,964), 0, 1, 1, "S79C1");
    check_field_offset(lv, s79c1f2, ABISELECT(1313,965), "S79C1.s79c1f2");
    check_field_offset(lv, s79c1f3, ABISELECT(1315,967), "S79C1.s79c1f3");
    check_field_offset(lv, s79c1f4, ABISELECT(1320,972), "S79C1.s79c1f4");
    check_field_offset(lv, s79c1f5, ABISELECT(1328,976), "S79C1.s79c1f5");
    check_field_offset(lv, s79c1f6, ABISELECT(1360,1000), "S79C1.s79c1f6");
    test_class_info(&lv, &cd_S79C1);
    dp->~S79C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS79C1(Test_S79C1, "S79C1", ABISELECT(1376,1012));

#else // __cplusplus

extern void _ZN5S79C1C1Ev();
extern void _ZN5S79C1D1Ev();
Name_Map name_map_S79C1[] = {
  NSPAIR(_ZN5S79C1C1Ev),
  NSPAIR(_ZN5S79C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S79C7_nt;
extern VTBL_ENTRY _ZTI8S79C7_nt[];
extern  VTBL_ENTRY _ZTV8S79C7_nt[];
extern Class_Descriptor cd_S79C6_nt;
extern VTBL_ENTRY _ZTI8S79C6_nt[];
extern  VTBL_ENTRY _ZTV8S79C6_nt[];
extern Class_Descriptor cd_S79C5_nt;
extern VTBL_ENTRY _ZTI8S79C5_nt[];
extern  VTBL_ENTRY _ZTV8S79C5_nt[];
extern Class_Descriptor cd_S79C4_nt;
extern VTBL_ENTRY _ZTI8S79C4_nt[];
extern  VTBL_ENTRY _ZTV8S79C4_nt[];
extern Class_Descriptor cd_S79C3_nt;
extern VTBL_ENTRY _ZTI8S79C3_nt[];
extern  VTBL_ENTRY _ZTV8S79C3_nt[];
extern Class_Descriptor cd_S79C2_nt;
extern VTBL_ENTRY _ZTI8S79C2_nt[];
extern  VTBL_ENTRY _ZTV8S79C2_nt[];
static Base_Class bases_S79C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S79C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S79C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S79C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S79C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S79C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S79C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI5S79C1[];
extern void _ZN5S79C1D1Ev();
extern void _ZN5S79C1D0Ev();
extern void _ZN8S79C7_nt2v4Ev();
extern void _ZN8S79C7_nt2v5Ev();
extern void _ZN8S79C7_nt2v6Ev();
extern void _ZN8S79C7_nt2v7Ev();
extern void _ZN8S79C7_nt2v8Ev();
extern void _ZN8S79C7_nt2v9Ev();
extern void _ZN8S79C7_nt3v10Ev();
extern void _ZN8S79C7_nt3v11Ev();
extern void _ZN8S79C7_nt3v12Ev();
extern void _ZN8S79C7_nt3v13Ev();
extern void _ZN8S79C7_nt3v14Ev();
extern void _ZN8S79C7_nt3v15Ev();
extern void _ZN8S79C7_nt3v16Ev();
extern void _ZN8S79C7_nt3v17Ev();
extern void _ZN8S79C7_nt3v18Ev();
extern void _ZN8S79C7_nt3v19Ev();
extern void _ZN8S79C7_nt3v20Ev();
extern void _ZN8S79C7_nt3v21Ev();
extern void _ZN8S79C7_nt3v22Ev();
extern void _ZN8S79C7_nt3v23Ev();
extern void _ZN8S79C7_nt3v24Ev();
extern void _ZN8S79C7_nt3v25Ev();
extern void _ZN8S79C7_nt3v26Ev();
extern void _ZN8S79C7_nt3v27Ev();
extern void _ZN8S79C7_nt3v28Ev();
extern void _ZN8S79C7_nt3v29Ev();
extern void _ZN8S79C7_nt3v30Ev();
extern void _ZN8S79C7_nt3v31Ev();
extern void _ZN8S79C7_nt3v32Ev();
extern void _ZN8S79C7_nt3v33Ev();
extern void _ZN8S79C7_nt3v34Ev();
extern void _ZN8S79C7_nt3v35Ev();
extern void _ZN8S79C7_nt3v36Ev();
extern void _ZN8S79C7_nt3v37Ev();
extern void _ZN8S79C7_nt3v38Ev();
extern void _ZN8S79C7_nt3v39Ev();
extern void _ZN8S79C7_nt3v40Ev();
extern void _ZN8S79C7_nt3v41Ev();
extern void _ZN8S79C7_nt3v42Ev();
extern void _ZN8S79C7_nt3v43Ev();
extern void _ZN8S79C7_nt3v44Ev();
extern void _ZN8S79C7_nt3v45Ev();
extern void _ZN8S79C7_nt3v46Ev();
extern void _ZN8S79C7_nt3v47Ev();
extern void _ZN8S79C7_nt3v48Ev();
extern void _ZN8S79C7_nt3v49Ev();
extern void _ZN8S79C7_nt3v50Ev();
extern void _ZN8S79C7_nt3v51Ev();
extern void _ZN8S79C7_nt3v52Ev();
extern void _ZN8S79C7_nt3v53Ev();
extern void _ZN8S79C7_nt3v54Ev();
extern void _ZN8S79C7_nt3v55Ev();
extern void _ZN8S79C7_nt3v56Ev();
extern void _ZN8S79C7_nt3v57Ev();
extern void _ZN8S79C7_nt3v58Ev();
extern void _ZN8S79C7_nt3v59Ev();
extern void _ZN8S79C7_nt3v60Ev();
extern void _ZN8S79C7_nt3v61Ev();
extern void _ZN8S79C7_nt3v62Ev();
extern void _ZN8S79C7_nt3v63Ev();
extern void _ZN8S79C7_nt3v64Ev();
extern void _ZN8S79C7_nt3v65Ev();
extern void _ZN8S79C7_nt3v66Ev();
extern void _ZN8S79C7_nt3v67Ev();
extern void _ZN8S79C6_nt3v68Ev();
extern void _ZN8S79C6_nt3v69Ev();
extern void _ZN8S79C5_nt3v70Ev();
extern void _ZN8S79C5_nt3v71Ev();
extern void _ZN8S79C5_nt3v72Ev();
extern void _ZN8S79C5_nt3v73Ev();
extern void _ZN8S79C5_nt3v74Ev();
extern void _ZN8S79C5_nt3v75Ev();
extern void _ZN8S79C5_nt3v76Ev();
extern void _ZN8S79C5_nt3v77Ev();
extern void _ZN8S79C5_nt3v78Ev();
extern void _ZN8S79C5_nt3v79Ev();
extern void _ZN8S79C5_nt3v80Ev();
extern void _ZN8S79C5_nt3v81Ev();
extern void _ZN8S79C5_nt3v82Ev();
extern void _ZN8S79C5_nt3v83Ev();
extern void _ZN8S79C5_nt3v84Ev();
extern void _ZN8S79C5_nt3v85Ev();
extern void _ZN8S79C5_nt3v86Ev();
extern void _ZN8S79C5_nt3v87Ev();
extern void _ZN8S79C5_nt3v88Ev();
extern void _ZN8S79C5_nt3v89Ev();
extern void _ZN8S79C5_nt3v90Ev();
extern void _ZN8S79C5_nt3v91Ev();
extern void _ZN8S79C5_nt3v92Ev();
extern void _ZN8S79C5_nt3v93Ev();
extern void _ZN8S79C5_nt3v94Ev();
extern void _ZN8S79C5_nt3v95Ev();
extern void _ZN8S79C5_nt3v96Ev();
extern void _ZN8S79C5_nt3v97Ev();
extern void _ZN8S79C5_nt3v98Ev();
extern void _ZN8S79C5_nt3v99Ev();
extern void _ZN8S79C5_nt4v100Ev();
extern void _ZN8S79C5_nt4v101Ev();
extern void _ZN8S79C5_nt4v102Ev();
extern void _ZN8S79C5_nt4v103Ev();
extern void _ZN8S79C5_nt4v104Ev();
extern void _ZN8S79C5_nt4v105Ev();
extern void _ZN8S79C5_nt4v106Ev();
extern void _ZN8S79C5_nt4v107Ev();
extern void _ZN8S79C5_nt4v108Ev();
extern void _ZN8S79C5_nt4v109Ev();
extern void _ZN8S79C5_nt4v110Ev();
extern void _ZN8S79C5_nt4v111Ev();
extern void _ZN8S79C5_nt4v112Ev();
extern void _ZN8S79C5_nt4v113Ev();
extern void _ZN8S79C5_nt4v114Ev();
extern void _ZN8S79C5_nt4v115Ev();
extern void _ZN8S79C5_nt4v116Ev();
extern void _ZN8S79C5_nt4v117Ev();
extern void _ZN8S79C5_nt4v118Ev();
extern void _ZN8S79C5_nt4v119Ev();
extern void _ZN8S79C5_nt4v120Ev();
extern void _ZN8S79C5_nt4v121Ev();
extern void _ZN8S79C5_nt4v122Ev();
extern void _ZN8S79C5_nt4v123Ev();
extern void _ZN8S79C5_nt4v124Ev();
extern void _ZN8S79C5_nt4v125Ev();
extern void _ZN8S79C5_nt4v126Ev();
extern void _ZN8S79C5_nt4v127Ev();
extern void _ZN8S79C5_nt4v128Ev();
extern void _ZN8S79C5_nt4v129Ev();
extern void _ZN8S79C5_nt4v130Ev();
extern void _ZN8S79C5_nt4v131Ev();
extern void _ZN8S79C5_nt4v132Ev();
extern void _ZN8S79C5_nt4v133Ev();
extern void _ZN8S79C5_nt4v134Ev();
extern void _ZN8S79C5_nt4v135Ev();
extern void _ZN8S79C5_nt4v136Ev();
extern void _ZN8S79C5_nt4v137Ev();
extern void _ZN8S79C5_nt4v138Ev();
extern void _ZN8S79C5_nt4v139Ev();
extern void _ZN8S79C5_nt4v140Ev();
extern void _ZN8S79C5_nt4v141Ev();
extern void _ZN8S79C5_nt4v142Ev();
extern void _ZN8S79C5_nt4v143Ev();
extern void _ZN8S79C5_nt4v144Ev();
extern void _ZN8S79C5_nt4v145Ev();
extern void _ZN8S79C4_nt4v146Ev();
extern void _ZN8S79C4_nt4v147Ev();
extern void _ZN8S79C4_nt4v148Ev();
extern void _ZN8S79C4_nt4v149Ev();
extern void _ZN8S79C4_nt4v150Ev();
extern void _ZN8S79C4_nt4v151Ev();
extern void _ZN8S79C4_nt4v152Ev();
extern void _ZN8S79C4_nt4v153Ev();
extern void _ZN8S79C4_nt4v154Ev();
extern void _ZN8S79C4_nt4v155Ev();
extern void _ZN8S79C4_nt4v156Ev();
extern void _ZN8S79C4_nt4v157Ev();
extern void _ZN8S79C4_nt4v158Ev();
extern void _ZN8S79C4_nt4v159Ev();
extern void _ZN8S79C4_nt4v160Ev();
extern void _ZN8S79C4_nt4v161Ev();
extern void _ZN8S79C4_nt4v162Ev();
extern void _ZN8S79C4_nt4v163Ev();
extern void _ZN8S79C4_nt4v164Ev();
extern void _ZN8S79C4_nt4v165Ev();
extern void _ZN8S79C4_nt4v166Ev();
extern void _ZN8S79C4_nt4v167Ev();
extern void _ZN8S79C4_nt4v168Ev();
extern void _ZN8S79C4_nt4v169Ev();
extern void _ZN8S79C4_nt4v170Ev();
extern void _ZN8S79C4_nt4v171Ev();
extern void _ZN8S79C4_nt4v172Ev();
extern void _ZN8S79C4_nt4v173Ev();
extern void _ZN8S79C4_nt4v174Ev();
extern void _ZN8S79C4_nt4v175Ev();
extern void _ZN8S79C4_nt4v176Ev();
extern void _ZN8S79C4_nt4v177Ev();
extern void _ZN8S79C4_nt4v178Ev();
extern void _ZN8S79C4_nt4v179Ev();
extern void _ZN8S79C4_nt4v180Ev();
extern void _ZN8S79C4_nt4v181Ev();
extern void _ZN8S79C4_nt4v182Ev();
extern void _ZN8S79C4_nt4v183Ev();
extern void _ZN8S79C4_nt4v184Ev();
extern void _ZN8S79C4_nt4v185Ev();
extern void _ZN8S79C4_nt4v186Ev();
extern void _ZN8S79C4_nt4v187Ev();
extern void _ZN8S79C4_nt4v188Ev();
extern void _ZN8S79C4_nt4v189Ev();
extern void _ZN8S79C4_nt4v190Ev();
extern void _ZN8S79C4_nt4v191Ev();
extern void _ZN8S79C4_nt4v192Ev();
extern void _ZN8S79C4_nt4v193Ev();
extern void _ZN8S79C4_nt4v194Ev();
extern void _ZN8S79C4_nt4v195Ev();
extern void _ZN8S79C4_nt4v196Ev();
extern void _ZN8S79C4_nt4v197Ev();
extern void _ZN8S79C4_nt4v198Ev();
extern void _ZN8S79C4_nt4v199Ev();
extern void _ZN8S79C4_nt4v200Ev();
extern void _ZN8S79C4_nt4v201Ev();
extern void _ZN8S79C4_nt4v202Ev();
extern void _ZN8S79C4_nt4v203Ev();
extern void _ZN8S79C4_nt4v204Ev();
extern void _ZN8S79C4_nt4v205Ev();
extern void _ZN8S79C4_nt4v206Ev();
extern void _ZN8S79C4_nt4v207Ev();
extern void _ZN8S79C4_nt4v208Ev();
extern void _ZN8S79C4_nt4v209Ev();
extern void _ZN8S79C4_nt4v210Ev();
extern void _ZN8S79C4_nt4v211Ev();
extern void _ZN8S79C4_nt4v212Ev();
extern void _ZN8S79C4_nt4v213Ev();
extern void _ZN8S79C4_nt4v214Ev();
extern void _ZN8S79C3_nt4v215Ev();
extern void _ZN8S79C3_nt4v216Ev();
extern void _ZN8S79C3_nt4v217Ev();
extern void _ZN8S79C3_nt4v218Ev();
extern void _ZN8S79C3_nt4v219Ev();
extern void _ZN8S79C3_nt4v220Ev();
extern void _ZN8S79C2_nt4v221Ev();
extern void _ZN8S79C2_nt4v222Ev();
extern void _ZN8S79C2_nt4v223Ev();
extern void _ZN5S79C12v1Ev();
extern void _ZN5S79C12v2Ev();
extern void _ZN5S79C12v3Ev();
static  VTBL_ENTRY vtc_S79C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI5S79C1[0]),
  (VTBL_ENTRY)&_ZN5S79C1D1Ev,
  (VTBL_ENTRY)&_ZN5S79C1D0Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt2v4Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt2v6Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt2v7Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt2v8Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v11Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v15Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v16Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v17Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v18Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v19Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v20Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v21Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v22Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v23Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v24Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v25Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v26Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v27Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v28Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v29Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v30Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v31Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v32Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v38Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v39Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v40Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v41Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v42Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v43Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v44Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v45Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v46Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v47Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v48Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v49Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v50Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v51Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v52Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v53Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v54Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v55Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v56Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v57Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v58Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v59Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v60Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v61Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v62Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v63Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v64Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v65Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v66Ev,
  (VTBL_ENTRY)&_ZN8S79C7_nt3v67Ev,
  (VTBL_ENTRY)&_ZN8S79C6_nt3v68Ev,
  (VTBL_ENTRY)&_ZN8S79C6_nt3v69Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v70Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v71Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v72Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v73Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v74Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v75Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v76Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v77Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v78Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v79Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v80Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v81Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v82Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v83Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v84Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v85Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v86Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v87Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v88Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v89Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v90Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v91Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v92Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v93Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v94Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v95Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v96Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v97Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v98Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt3v99Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v100Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v101Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v102Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v103Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v104Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v105Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v106Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v107Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v108Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v109Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v110Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v111Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v112Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v113Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v114Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v115Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v116Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v117Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v118Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v119Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v120Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v121Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v122Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v123Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v124Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v125Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v126Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v127Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v128Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v129Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v130Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v131Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v132Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v133Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v134Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v135Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v136Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v137Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v138Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v139Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v140Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v141Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v142Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v143Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v144Ev,
  (VTBL_ENTRY)&_ZN8S79C5_nt4v145Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v146Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v147Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v148Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v149Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v150Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v151Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v152Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v153Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v154Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v155Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v156Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v157Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v158Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v159Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v160Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v161Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v162Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v163Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v164Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v165Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v166Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v167Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v168Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v169Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v170Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v171Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v172Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v173Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v174Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v175Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v176Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v177Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v178Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v179Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v180Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v181Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v182Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v183Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v184Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v185Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v186Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v187Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v188Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v189Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v190Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v191Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v192Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v193Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v194Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v195Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v196Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v197Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v198Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v199Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v200Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v201Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v202Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v203Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v204Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v205Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v206Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v207Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v208Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v209Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v210Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v211Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v212Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v213Ev,
  (VTBL_ENTRY)&_ZN8S79C4_nt4v214Ev,
  (VTBL_ENTRY)&_ZN8S79C3_nt4v215Ev,
  (VTBL_ENTRY)&_ZN8S79C3_nt4v216Ev,
  (VTBL_ENTRY)&_ZN8S79C3_nt4v217Ev,
  (VTBL_ENTRY)&_ZN8S79C3_nt4v218Ev,
  (VTBL_ENTRY)&_ZN8S79C3_nt4v219Ev,
  (VTBL_ENTRY)&_ZN8S79C3_nt4v220Ev,
  (VTBL_ENTRY)&_ZN8S79C2_nt4v221Ev,
  (VTBL_ENTRY)&_ZN8S79C2_nt4v222Ev,
  (VTBL_ENTRY)&_ZN8S79C2_nt4v223Ev,
  (VTBL_ENTRY)&_ZN5S79C12v1Ev,
  (VTBL_ENTRY)&_ZN5S79C12v2Ev,
  (VTBL_ENTRY)&_ZN5S79C12v3Ev,
};
extern VTBL_ENTRY _ZTI5S79C1[];
extern  VTBL_ENTRY _ZTV5S79C1[];
Class_Descriptor cd_S79C1 = {  "S79C1", // class name
  bases_S79C1, 6,
  &(vtc_S79C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1376,1012), // object size
  NSPAIRA(_ZTI5S79C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV5S79C1),227, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  6, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5266C7_nt  {
  void  mf5266c7(); // _ZN10S5266C7_nt8mf5266c7Ev
};
//SIG(-1 S5266C7_nt) C1{ m}


void  S5266C7_nt ::mf5266c7(){}

//skip512 S5266C7_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5266C5_nt  {
  void *s5266c5f0;
  int s5266c5f1;
  ::S79C32_nt s5266c5f2;
  ::S5266C7_nt s5266c5f3;
  void  mf5266c5(); // _ZN10S5266C5_nt8mf5266c5Ev
};
//SIG(-1 S5266C5_nt) C1{ m Fp Fi FC2{ m} FC3{ m}}


void  S5266C5_nt ::mf5266c5(){}

//skip512 S5266C5_nt

#else // __cplusplus

Class_Descriptor cd_S5266C5_nt = {  "S5266C5_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(16,12), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5266C4_nt  : S5266C5_nt {
};
//SIG(-1 S5266C4_nt) C1{ BC2{ m Fp Fi FC3{ m} FC4{ m}}}



//skip512 S5266C4_nt

#else // __cplusplus

extern Class_Descriptor cd_S5266C5_nt;
static Base_Class bases_S5266C4_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5266C3_nt  {
  void *s5266c3f0;
  int s5266c3f1;
  ::S5266C4_nt s5266c3f2;
  ::S5266C4_nt s5266c3f3;
  int s5266c3f4;
  virtual  ~S5266C3_nt(); // _ZN10S5266C3_ntD1Ev
  virtual void  v5(); // _ZN10S5266C3_nt2v5Ev
  virtual void  v6(); // _ZN10S5266C3_nt2v6Ev
  virtual void  v7(); // _ZN10S5266C3_nt2v7Ev
  virtual void  v8(); // _ZN10S5266C3_nt2v8Ev
  virtual void  v9(); // _ZN10S5266C3_nt2v9Ev
  virtual void  v10(); // _ZN10S5266C3_nt3v10Ev
  virtual void  v11(); // _ZN10S5266C3_nt3v11Ev
  virtual void  v12(); // _ZN10S5266C3_nt3v12Ev
  virtual void  v13(); // _ZN10S5266C3_nt3v13Ev
  virtual void  v14(); // _ZN10S5266C3_nt3v14Ev
  virtual void  v15(); // _ZN10S5266C3_nt3v15Ev
  virtual void  v16(); // _ZN10S5266C3_nt3v16Ev
  virtual void  v17(); // _ZN10S5266C3_nt3v17Ev
  virtual void  v18(); // _ZN10S5266C3_nt3v18Ev
  virtual void  v19(); // _ZN10S5266C3_nt3v19Ev
  virtual void  v20(); // _ZN10S5266C3_nt3v20Ev
  virtual void  v21(); // _ZN10S5266C3_nt3v21Ev
  virtual void  v22(); // _ZN10S5266C3_nt3v22Ev
  virtual void  v23(); // _ZN10S5266C3_nt3v23Ev
  virtual void  v24(); // _ZN10S5266C3_nt3v24Ev
  virtual void  v25(); // _ZN10S5266C3_nt3v25Ev
  virtual void  v26(); // _ZN10S5266C3_nt3v26Ev
  virtual void  v27(); // _ZN10S5266C3_nt3v27Ev
  S5266C3_nt(); // tgen
};
//SIG(-1 S5266C3_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 Fp Fi FC2{ BC3{ m Fp Fi FC4{ m} FC5{ m}}} FC2 Fi}


 S5266C3_nt ::~S5266C3_nt(){ note_dtor("S5266C3_nt", this);}
void  S5266C3_nt ::v5(){vfunc_called(this, "_ZN10S5266C3_nt2v5Ev");}
void  S5266C3_nt ::v6(){vfunc_called(this, "_ZN10S5266C3_nt2v6Ev");}
void  S5266C3_nt ::v7(){vfunc_called(this, "_ZN10S5266C3_nt2v7Ev");}
void  S5266C3_nt ::v8(){vfunc_called(this, "_ZN10S5266C3_nt2v8Ev");}
void  S5266C3_nt ::v9(){vfunc_called(this, "_ZN10S5266C3_nt2v9Ev");}
void  S5266C3_nt ::v10(){vfunc_called(this, "_ZN10S5266C3_nt3v10Ev");}
void  S5266C3_nt ::v11(){vfunc_called(this, "_ZN10S5266C3_nt3v11Ev");}
void  S5266C3_nt ::v12(){vfunc_called(this, "_ZN10S5266C3_nt3v12Ev");}
void  S5266C3_nt ::v13(){vfunc_called(this, "_ZN10S5266C3_nt3v13Ev");}
void  S5266C3_nt ::v14(){vfunc_called(this, "_ZN10S5266C3_nt3v14Ev");}
void  S5266C3_nt ::v15(){vfunc_called(this, "_ZN10S5266C3_nt3v15Ev");}
void  S5266C3_nt ::v16(){vfunc_called(this, "_ZN10S5266C3_nt3v16Ev");}
void  S5266C3_nt ::v17(){vfunc_called(this, "_ZN10S5266C3_nt3v17Ev");}
void  S5266C3_nt ::v18(){vfunc_called(this, "_ZN10S5266C3_nt3v18Ev");}
void  S5266C3_nt ::v19(){vfunc_called(this, "_ZN10S5266C3_nt3v19Ev");}
void  S5266C3_nt ::v20(){vfunc_called(this, "_ZN10S5266C3_nt3v20Ev");}
void  S5266C3_nt ::v21(){vfunc_called(this, "_ZN10S5266C3_nt3v21Ev");}
void  S5266C3_nt ::v22(){vfunc_called(this, "_ZN10S5266C3_nt3v22Ev");}
void  S5266C3_nt ::v23(){vfunc_called(this, "_ZN10S5266C3_nt3v23Ev");}
void  S5266C3_nt ::v24(){vfunc_called(this, "_ZN10S5266C3_nt3v24Ev");}
void  S5266C3_nt ::v25(){vfunc_called(this, "_ZN10S5266C3_nt3v25Ev");}
void  S5266C3_nt ::v26(){vfunc_called(this, "_ZN10S5266C3_nt3v26Ev");}
void  S5266C3_nt ::v27(){vfunc_called(this, "_ZN10S5266C3_nt3v27Ev");}
S5266C3_nt ::S5266C3_nt(){ note_ctor("S5266C3_nt", this);} // tgen

//skip512 S5266C3_nt

#else // __cplusplus

extern void _ZN10S5266C3_ntC1Ev();
extern void _ZN10S5266C3_ntD1Ev();
Name_Map name_map_S5266C3_nt[] = {
  NSPAIR(_ZN10S5266C3_ntC1Ev),
  NSPAIR(_ZN10S5266C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S5266C3_nt[];
extern void _ZN10S5266C3_ntD1Ev();
extern void _ZN10S5266C3_ntD0Ev();
extern void _ZN10S5266C3_nt2v5Ev();
extern void _ZN10S5266C3_nt2v6Ev();
extern void _ZN10S5266C3_nt2v7Ev();
extern void _ZN10S5266C3_nt2v8Ev();
extern void _ZN10S5266C3_nt2v9Ev();
extern void _ZN10S5266C3_nt3v10Ev();
extern void _ZN10S5266C3_nt3v11Ev();
extern void _ZN10S5266C3_nt3v12Ev();
extern void _ZN10S5266C3_nt3v13Ev();
extern void _ZN10S5266C3_nt3v14Ev();
extern void _ZN10S5266C3_nt3v15Ev();
extern void _ZN10S5266C3_nt3v16Ev();
extern void _ZN10S5266C3_nt3v17Ev();
extern void _ZN10S5266C3_nt3v18Ev();
extern void _ZN10S5266C3_nt3v19Ev();
extern void _ZN10S5266C3_nt3v20Ev();
extern void _ZN10S5266C3_nt3v21Ev();
extern void _ZN10S5266C3_nt3v22Ev();
extern void _ZN10S5266C3_nt3v23Ev();
extern void _ZN10S5266C3_nt3v24Ev();
extern void _ZN10S5266C3_nt3v25Ev();
extern void _ZN10S5266C3_nt3v26Ev();
extern void _ZN10S5266C3_nt3v27Ev();
static  VTBL_ENTRY vtc_S5266C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S5266C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S5266C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v27Ev,
};
extern VTBL_ENTRY _ZTI10S5266C3_nt[];
VTBL_ENTRY *P__ZTI10S5266C3_nt = _ZTI10S5266C3_nt; 
extern  VTBL_ENTRY _ZTV10S5266C3_nt[];
Class_Descriptor cd_S5266C3_nt = {  "S5266C3_nt", // class name
  0,0,//no base classes
  &(vtc_S5266C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,40), // object size
  NSPAIRA(_ZTI10S5266C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S5266C3_nt),27, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5266C13_nt  {
  __tsi64 s5266c13f0[2];
  void  mf5266c13(); // _ZN11S5266C13_nt9mf5266c13Ev
};
//SIG(-1 S5266C13_nt) C1{ m FL[2]}


void  S5266C13_nt ::mf5266c13(){}

//skip512 S5266C13_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5266C12_nt  {
  ::S5266C13_nt s5266c12f0;
  void  mf5266c12(); // _ZN11S5266C12_nt9mf5266c12Ev
};
//SIG(-1 S5266C12_nt) C1{ m FC2{ m FL[2]}}


void  S5266C12_nt ::mf5266c12(){}

//skip512 S5266C12_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5266C16_nt  {
  ::S5266C12_nt s5266c16f0;
  void  mf5266c16(); // _ZN11S5266C16_nt9mf5266c16Ev
};
//SIG(-1 S5266C16_nt) C1{ m FC2{ m FC3{ m FL[2]}}}


void  S5266C16_nt ::mf5266c16(){}

//skip512 S5266C16_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5266C17_nt  {
  ::S5266C12_nt s5266c17f0;
  ::S5266C12_nt s5266c17f1;
  ::S5266C12_nt s5266c17f2;
  ::S5266C12_nt s5266c17f3;
  void  mf5266c17(); // _ZN11S5266C17_nt9mf5266c17Ev
};
//SIG(-1 S5266C17_nt) C1{ m FC2{ m FC3{ m FL[2]}} FC2 FC2 FC2}


void  S5266C17_nt ::mf5266c17(){}

//skip512 S5266C17_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5266C19_nt  {
  void *s5266c19f0;
  int s5266c19f1;
  ::S5266C7_nt s5266c19f2;
  void  mf5266c19(); // _ZN11S5266C19_nt9mf5266c19Ev
};
//SIG(-1 S5266C19_nt) C1{ m Fp Fi FC2{ m}}


void  S5266C19_nt ::mf5266c19(){}

//skip512 S5266C19_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5266C18_nt  {
  ::S5266C19_nt s5266c18f0;
  int s5266c18f1;
  void  mf5266c18(); // _ZN11S5266C18_nt9mf5266c18Ev
};
//SIG(-1 S5266C18_nt) C1{ m FC2{ m Fp Fi FC3{ m}} Fi}


void  S5266C18_nt ::mf5266c18(){}

//skip512 S5266C18_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5266C22  {
  void  mf5266c22(); // _ZN8S5266C229mf5266c22Ev
};
//SIG(-1 S5266C22) C1{ m}


void  S5266C22 ::mf5266c22(){}

static void Test_S5266C22()
{
  {
    init_simple_test("S5266C22");
    S5266C22 lv;
    check2(sizeof(lv), 1, "sizeof(S5266C22)");
    check2(__alignof__(lv), 1, "__alignof__(S5266C22)");
  }
}
static Arrange_To_Call_Me vS5266C22(Test_S5266C22, "S5266C22", 1);

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S5266C22[];
VTBL_ENTRY *P__ZTI8S5266C22 = _ZTI8S5266C22; 
Class_Descriptor cd_S5266C22 = {  "S5266C22", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI8S5266C22),ABISELECT(16,8), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5266C21  {
  void *s5266c21f0;
  int s5266c21f1;
  ::S5266C22 s5266c21f2;
  ::S5266C22 s5266c21f3;
  void  mf5266c21(); // _ZN8S5266C219mf5266c21Ev
};
//SIG(-1 S5266C21) C1{ m Fp Fi FC2{ m} FC2}


void  S5266C21 ::mf5266c21(){}

static void Test_S5266C21()
{
  {
    init_simple_test("S5266C21");
    S5266C21 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S5266C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5266C21)");
    check_field_offset(lv, s5266c21f0, 0, "S5266C21.s5266c21f0");
    check_field_offset(lv, s5266c21f1, ABISELECT(8,4), "S5266C21.s5266c21f1");
    check_field_offset(lv, s5266c21f2, ABISELECT(12,8), "S5266C21.s5266c21f2");
    check_field_offset(lv, s5266c21f3, ABISELECT(13,9), "S5266C21.s5266c21f3");
  }
}
static Arrange_To_Call_Me vS5266C21(Test_S5266C21, "S5266C21", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5266C26  {
  void  mf5266c26(); // _ZN8S5266C269mf5266c26Ev
};
//SIG(-1 S5266C26) C1{ m}


void  S5266C26 ::mf5266c26(){}

static void Test_S5266C26()
{
  {
    init_simple_test("S5266C26");
    S5266C26 lv;
    check2(sizeof(lv), 1, "sizeof(S5266C26)");
    check2(__alignof__(lv), 1, "__alignof__(S5266C26)");
  }
}
static Arrange_To_Call_Me vS5266C26(Test_S5266C26, "S5266C26", 1);

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S5266C26[];
VTBL_ENTRY *P__ZTI8S5266C26 = _ZTI8S5266C26; 
Class_Descriptor cd_S5266C26 = {  "S5266C26", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI8S5266C26),ABISELECT(16,8), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5266C25  {
  void *s5266c25f0;
  int s5266c25f1;
  ::S5266C26 s5266c25f2;
  ::S5266C26 s5266c25f3;
  void  mf5266c25(); // _ZN8S5266C259mf5266c25Ev
};
//SIG(-1 S5266C25) C1{ m Fp Fi FC2{ m} FC2}


void  S5266C25 ::mf5266c25(){}

static void Test_S5266C25()
{
  {
    init_simple_test("S5266C25");
    S5266C25 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S5266C25)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5266C25)");
    check_field_offset(lv, s5266c25f0, 0, "S5266C25.s5266c25f0");
    check_field_offset(lv, s5266c25f1, ABISELECT(8,4), "S5266C25.s5266c25f1");
    check_field_offset(lv, s5266c25f2, ABISELECT(12,8), "S5266C25.s5266c25f2");
    check_field_offset(lv, s5266c25f3, ABISELECT(13,9), "S5266C25.s5266c25f3");
  }
}
static Arrange_To_Call_Me vS5266C25(Test_S5266C25, "S5266C25", ABISELECT(16,12));

#else // __cplusplus

Class_Descriptor cd_S5266C25 = {  "S5266C25", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(16,12), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5266C24  : S5266C25 {
};
//SIG(-1 S5266C24) C1{ BC2{ m Fp Fi FC3{ m} FC3}}



static void Test_S5266C24()
{
  extern Class_Descriptor cd_S5266C24;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S5266C24, buf);
    S5266C24 &lv = *(new (buf) S5266C24());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S5266C24)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5266C24)");
    check_base_class_offset(lv, (S5266C25*), 0, "S5266C24");
    test_class_info(&lv, &cd_S5266C24);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5266C24(Test_S5266C24, "S5266C24", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S5266C25;
static Base_Class bases_S5266C24[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C25,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S5266C24 = {  "S5266C24", // class name
  bases_S5266C24, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(16,12), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5266C29  {
  void  mf5266c29(); // _ZN8S5266C299mf5266c29Ev
};
//SIG(-1 S5266C29) C1{ m}


void  S5266C29 ::mf5266c29(){}

static void Test_S5266C29()
{
  {
    init_simple_test("S5266C29");
    S5266C29 lv;
    check2(sizeof(lv), 1, "sizeof(S5266C29)");
    check2(__alignof__(lv), 1, "__alignof__(S5266C29)");
  }
}
static Arrange_To_Call_Me vS5266C29(Test_S5266C29, "S5266C29", 1);

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S5266C29[];
VTBL_ENTRY *P__ZTI8S5266C29 = _ZTI8S5266C29; 
Class_Descriptor cd_S5266C29 = {  "S5266C29", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI8S5266C29),ABISELECT(16,8), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5266C28_nt  {
  void *s5266c28f0;
  int s5266c28f1[2];
  ::S5266C29 s5266c28f2;
  void  mf5266c28(); // _ZN11S5266C28_nt9mf5266c28Ev
};
//SIG(-1 S5266C28_nt) C1{ m Fp Fi[2] FC2{ m}}


void  S5266C28_nt ::mf5266c28(){}

//skip512 S5266C28_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5266C36  {
  void *s5266c36f0;
  int s5266c36f1[2];
  ::S5266C29 s5266c36f2;
  void  mf5266c36(); // _ZN8S5266C369mf5266c36Ev
};
//SIG(-1 S5266C36) C1{ m Fp Fi[2] FC2{ m}}


void  S5266C36 ::mf5266c36(){}

static void Test_S5266C36()
{
  {
    init_simple_test("S5266C36");
    S5266C36 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S5266C36)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5266C36)");
    check_field_offset(lv, s5266c36f0, 0, "S5266C36.s5266c36f0");
    check_field_offset(lv, s5266c36f1, ABISELECT(8,4), "S5266C36.s5266c36f1");
    check_field_offset(lv, s5266c36f2, ABISELECT(16,12), "S5266C36.s5266c36f2");
  }
}
static Arrange_To_Call_Me vS5266C36(Test_S5266C36, "S5266C36", ABISELECT(24,16));

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S5266C36[];
VTBL_ENTRY *P__ZTI8S5266C36 = _ZTI8S5266C36; 
Class_Descriptor cd_S5266C36 = {  "S5266C36", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S5266C36),ABISELECT(16,8), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5266C2_nt  : S5266C3_nt {
  ::S5266C12_nt s5266c2f0;
  ::S5266C12_nt s5266c2f1;
  ::S5266C12_nt s5266c2f2;
  ::S5266C12_nt s5266c2f3;
  ::S5266C16_nt s5266c2f4;
  ::S5266C17_nt s5266c2f5;
  ::S5266C17_nt s5266c2f6;
  ::S5266C12_nt s5266c2f7;
  ::S5266C12_nt s5266c2f8;
  ::S5266C12_nt s5266c2f9;
  void *s5266c2f10;
  ::S5266C16_nt s5266c2f11;
  ::S5266C18_nt s5266c2f12;
  int s5266c2f13;
  void *s5266c2f14[7];
  ::S5266C21 s5266c2f15;
  int s5266c2f16:8;
  int s5266c2f17:8;
  int s5266c2f18:16;
  int s5266c2f19:16;
  int s5266c2f20:8;
  int s5266c2f21:8;
  int s5266c2f22:8;
  int s5266c2f23:32;
  int s5266c2f24:8;
  int s5266c2f25:4;
  int s5266c2f26:4;
  int s5266c2f27:4;
  int s5266c2f28:4;
  int s5266c2f29:4;
  int s5266c2f30:4;
  int s5266c2f31:4;
  int s5266c2f32:4;
  int s5266c2f33:4;
  int s5266c2f34:4;
  unsigned char s5266c2f35:1;
  unsigned char s5266c2f36:1;
  unsigned char s5266c2f37:1;
  unsigned char s5266c2f38:1;
  unsigned char s5266c2f39:1;
  unsigned char s5266c2f40:1;
  unsigned char s5266c2f41:1;
  unsigned char s5266c2f42:1;
  unsigned char s5266c2f43:1;
  unsigned char s5266c2f44:1;
  unsigned char s5266c2f45:1;
  unsigned char s5266c2f46:1;
  unsigned char s5266c2f47:1;
  unsigned char s5266c2f48:1;
  unsigned char s5266c2f49:1;
  unsigned char s5266c2f50:1;
  unsigned char s5266c2f51:1;
  unsigned char s5266c2f52:1;
  unsigned char s5266c2f53:1;
  unsigned char s5266c2f54:1;
  unsigned char s5266c2f55:1;
  unsigned char s5266c2f56:1;
  unsigned char s5266c2f57:1;
  unsigned char s5266c2f58:1;
  unsigned char s5266c2f59:1;
  unsigned char s5266c2f60:1;
  unsigned char s5266c2f61:1;
  unsigned char s5266c2f62:1;
  unsigned char s5266c2f63:1;
  unsigned char s5266c2f64:1;
  unsigned char s5266c2f65:1;
  unsigned char s5266c2f66:1;
  unsigned char s5266c2f67:1;
  unsigned char s5266c2f68:1;
  unsigned char s5266c2f69:1;
  unsigned char s5266c2f70:1;
  unsigned char s5266c2f71:1;
  unsigned char s5266c2f72:1;
  unsigned char s5266c2f73:1;
  unsigned char s5266c2f74:1;
  unsigned char s5266c2f75:1;
  int s5266c2f76[7];
  void *s5266c2f77[6];
  int s5266c2f78:8;
  int s5266c2f79:8;
  int s5266c2f80:8;
  int s5266c2f81:8;
  int s5266c2f82:8;
  int s5266c2f83:8;
  ::S5266C24 s5266c2f84;
  void *s5266c2f85[4];
  int s5266c2f86:8;
  int s5266c2f87:8;
  int s5266c2f88:8;
  int s5266c2f89:8;
  int s5266c2f90:8;
  int s5266c2f91:16;
  int s5266c2f92:16;
  int s5266c2f93:16;
  int s5266c2f94:4;
  int s5266c2f95:4;
  int s5266c2f96:4;
  int s5266c2f97:4;
  int s5266c2f98:4;
  int s5266c2f99:4;
  int s5266c2f100:4;
  int s5266c2f101:4;
  int s5266c2f102:4;
  int s5266c2f103:4;
  int s5266c2f104:4;
  int s5266c2f105:4;
  int s5266c2f106:8;
  int s5266c2f107:8;
  int s5266c2f108:8;
  void *s5266c2f109[7];
  ::S5266C28_nt s5266c2f110;
  void *s5266c2f111[2];
  int s5266c2f112:16;
  int s5266c2f113:16;
  ::S5266C24 s5266c2f114;
  ::S5266C28_nt s5266c2f115;
  ::S5266C36 s5266c2f116;
  void *s5266c2f117[2];
  int s5266c2f118:24;
  int s5266c2f119:8;
  void *s5266c2f120;
  virtual  ~S5266C2_nt(); // _ZN10S5266C2_ntD1Ev
  virtual void  v28(); // _ZN10S5266C2_nt3v28Ev
  virtual void  v29(); // _ZN10S5266C2_nt3v29Ev
  virtual void  v30(); // _ZN10S5266C2_nt3v30Ev
  virtual void  v31(); // _ZN10S5266C2_nt3v31Ev
  virtual void  v32(); // _ZN10S5266C2_nt3v32Ev
  virtual void  v33(); // _ZN10S5266C2_nt3v33Ev
  virtual void  v34(); // _ZN10S5266C2_nt3v34Ev
  virtual void  v35(); // _ZN10S5266C2_nt3v35Ev
  virtual void  v36(); // _ZN10S5266C2_nt3v36Ev
  virtual void  v37(); // _ZN10S5266C2_nt3v37Ev
  virtual void  v38(); // _ZN10S5266C2_nt3v38Ev
  virtual void  v39(); // _ZN10S5266C2_nt3v39Ev
  virtual void  v40(); // _ZN10S5266C2_nt3v40Ev
  virtual void  v41(); // _ZN10S5266C2_nt3v41Ev
  virtual void  v42(); // _ZN10S5266C2_nt3v42Ev
  virtual void  v43(); // _ZN10S5266C2_nt3v43Ev
  virtual void  v44(); // _ZN10S5266C2_nt3v44Ev
  virtual void  v45(); // _ZN10S5266C2_nt3v45Ev
  virtual void  v46(); // _ZN10S5266C2_nt3v46Ev
  virtual void  v47(); // _ZN10S5266C2_nt3v47Ev
  virtual void  v48(); // _ZN10S5266C2_nt3v48Ev
  virtual void  v49(); // _ZN10S5266C2_nt3v49Ev
  virtual void  v50(); // _ZN10S5266C2_nt3v50Ev
  virtual void  v51(); // _ZN10S5266C2_nt3v51Ev
  virtual void  v52(); // _ZN10S5266C2_nt3v52Ev
  virtual void  v53(); // _ZN10S5266C2_nt3v53Ev
  virtual void  v54(); // _ZN10S5266C2_nt3v54Ev
  virtual void  v55(); // _ZN10S5266C2_nt3v55Ev
  virtual void  v56(); // _ZN10S5266C2_nt3v56Ev
  virtual void  v57(); // _ZN10S5266C2_nt3v57Ev
  virtual void  v58(); // _ZN10S5266C2_nt3v58Ev
  virtual void  v59(); // _ZN10S5266C2_nt3v59Ev
  virtual void  v60(); // _ZN10S5266C2_nt3v60Ev
  virtual void  v61(); // _ZN10S5266C2_nt3v61Ev
  virtual void  v62(); // _ZN10S5266C2_nt3v62Ev
  virtual void  v63(); // _ZN10S5266C2_nt3v63Ev
  virtual void  v64(); // _ZN10S5266C2_nt3v64Ev
  virtual void  v65(); // _ZN10S5266C2_nt3v65Ev
  virtual void  v66(); // _ZN10S5266C2_nt3v66Ev
  virtual void  v67(); // _ZN10S5266C2_nt3v67Ev
  virtual void  v68(); // _ZN10S5266C2_nt3v68Ev
  virtual void  v69(); // _ZN10S5266C2_nt3v69Ev
  virtual void  v70(); // _ZN10S5266C2_nt3v70Ev
  virtual void  v71(); // _ZN10S5266C2_nt3v71Ev
  virtual void  v72(); // _ZN10S5266C2_nt3v72Ev
  virtual void  v73(); // _ZN10S5266C2_nt3v73Ev
  virtual void  v74(); // _ZN10S5266C2_nt3v74Ev
  virtual void  v75(); // _ZN10S5266C2_nt3v75Ev
  virtual void  v76(); // _ZN10S5266C2_nt3v76Ev
  virtual void  v77(); // _ZN10S5266C2_nt3v77Ev
  virtual void  v78(); // _ZN10S5266C2_nt3v78Ev
  virtual void  v79(); // _ZN10S5266C2_nt3v79Ev
  virtual void  v80(); // _ZN10S5266C2_nt3v80Ev
  virtual void  v81(); // _ZN10S5266C2_nt3v81Ev
  virtual void  v82(); // _ZN10S5266C2_nt3v82Ev
  virtual void  v83(); // _ZN10S5266C2_nt3v83Ev
  virtual void  v84(); // _ZN10S5266C2_nt3v84Ev
  virtual void  v85(); // _ZN10S5266C2_nt3v85Ev
  virtual void  v86(); // _ZN10S5266C2_nt3v86Ev
  virtual void  v87(); // _ZN10S5266C2_nt3v87Ev
  virtual void  v88(); // _ZN10S5266C2_nt3v88Ev
  virtual void  v89(); // _ZN10S5266C2_nt3v89Ev
  virtual void  v90(); // _ZN10S5266C2_nt3v90Ev
  virtual void  v91(); // _ZN10S5266C2_nt3v91Ev
  virtual void  v92(); // _ZN10S5266C2_nt3v92Ev
  virtual void  v93(); // _ZN10S5266C2_nt3v93Ev
  virtual void  v94(); // _ZN10S5266C2_nt3v94Ev
  virtual void  v95(); // _ZN10S5266C2_nt3v95Ev
  virtual void  v96(); // _ZN10S5266C2_nt3v96Ev
  virtual void  v97(); // _ZN10S5266C2_nt3v97Ev
  virtual void  v98(); // _ZN10S5266C2_nt3v98Ev
  virtual void  v99(); // _ZN10S5266C2_nt3v99Ev
  virtual void  v100(); // _ZN10S5266C2_nt4v100Ev
  virtual void  v101(); // _ZN10S5266C2_nt4v101Ev
  virtual void  v102(); // _ZN10S5266C2_nt4v102Ev
  virtual void  v103(); // _ZN10S5266C2_nt4v103Ev
  virtual void  v104(); // _ZN10S5266C2_nt4v104Ev
  virtual void  v105(); // _ZN10S5266C2_nt4v105Ev
  S5266C2_nt(); // tgen
};
//SIG(-1 S5266C2_nt) C1{ BC2{ vd v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 Fp Fi FC3{ BC4{ m Fp Fi FC5{ m} FC6{ m}}} FC3 Fi} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 FC7{ m FC8{ m FL[2]}} FC7 FC7 FC7 FC9{ m FC7} FC10{ m FC7 FC7 FC7 FC7} FC10 FC7 FC7 FC7 Fp FC9 FC11{ m FC12{ m Fp Fi FC6} Fi} Fi Fp[7] FC13{ m Fp Fi FC14{ m} FC14} Fi:8 Fi:8 Fi:16 Fi:16 Fi:8 Fi:8 Fi:8 Fi:32 Fi:8 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fi[7] Fp[6] Fi:8 Fi:8 Fi:8 Fi:8 Fi:8 Fi:8 FC15{ BC16{ m Fp Fi FC17{ m} FC17}} Fp[4] Fi:8 Fi:8 Fi:8 Fi:8 Fi:8 Fi:16 Fi:16 Fi:16 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:8 Fi:8 Fi:8 Fp[7] FC18{ m Fp Fi[2] FC19{ m}} Fp[2] Fi:16 Fi:16 FC15 FC18 FC20{ m Fp Fi[2] FC19} Fp[2] Fi:24 Fi:8 Fp}


 S5266C2_nt ::~S5266C2_nt(){ note_dtor("S5266C2_nt", this);}
void  S5266C2_nt ::v28(){vfunc_called(this, "_ZN10S5266C2_nt3v28Ev");}
void  S5266C2_nt ::v29(){vfunc_called(this, "_ZN10S5266C2_nt3v29Ev");}
void  S5266C2_nt ::v30(){vfunc_called(this, "_ZN10S5266C2_nt3v30Ev");}
void  S5266C2_nt ::v31(){vfunc_called(this, "_ZN10S5266C2_nt3v31Ev");}
void  S5266C2_nt ::v32(){vfunc_called(this, "_ZN10S5266C2_nt3v32Ev");}
void  S5266C2_nt ::v33(){vfunc_called(this, "_ZN10S5266C2_nt3v33Ev");}
void  S5266C2_nt ::v34(){vfunc_called(this, "_ZN10S5266C2_nt3v34Ev");}
void  S5266C2_nt ::v35(){vfunc_called(this, "_ZN10S5266C2_nt3v35Ev");}
void  S5266C2_nt ::v36(){vfunc_called(this, "_ZN10S5266C2_nt3v36Ev");}
void  S5266C2_nt ::v37(){vfunc_called(this, "_ZN10S5266C2_nt3v37Ev");}
void  S5266C2_nt ::v38(){vfunc_called(this, "_ZN10S5266C2_nt3v38Ev");}
void  S5266C2_nt ::v39(){vfunc_called(this, "_ZN10S5266C2_nt3v39Ev");}
void  S5266C2_nt ::v40(){vfunc_called(this, "_ZN10S5266C2_nt3v40Ev");}
void  S5266C2_nt ::v41(){vfunc_called(this, "_ZN10S5266C2_nt3v41Ev");}
void  S5266C2_nt ::v42(){vfunc_called(this, "_ZN10S5266C2_nt3v42Ev");}
void  S5266C2_nt ::v43(){vfunc_called(this, "_ZN10S5266C2_nt3v43Ev");}
void  S5266C2_nt ::v44(){vfunc_called(this, "_ZN10S5266C2_nt3v44Ev");}
void  S5266C2_nt ::v45(){vfunc_called(this, "_ZN10S5266C2_nt3v45Ev");}
void  S5266C2_nt ::v46(){vfunc_called(this, "_ZN10S5266C2_nt3v46Ev");}
void  S5266C2_nt ::v47(){vfunc_called(this, "_ZN10S5266C2_nt3v47Ev");}
void  S5266C2_nt ::v48(){vfunc_called(this, "_ZN10S5266C2_nt3v48Ev");}
void  S5266C2_nt ::v49(){vfunc_called(this, "_ZN10S5266C2_nt3v49Ev");}
void  S5266C2_nt ::v50(){vfunc_called(this, "_ZN10S5266C2_nt3v50Ev");}
void  S5266C2_nt ::v51(){vfunc_called(this, "_ZN10S5266C2_nt3v51Ev");}
void  S5266C2_nt ::v52(){vfunc_called(this, "_ZN10S5266C2_nt3v52Ev");}
void  S5266C2_nt ::v53(){vfunc_called(this, "_ZN10S5266C2_nt3v53Ev");}
void  S5266C2_nt ::v54(){vfunc_called(this, "_ZN10S5266C2_nt3v54Ev");}
void  S5266C2_nt ::v55(){vfunc_called(this, "_ZN10S5266C2_nt3v55Ev");}
void  S5266C2_nt ::v56(){vfunc_called(this, "_ZN10S5266C2_nt3v56Ev");}
void  S5266C2_nt ::v57(){vfunc_called(this, "_ZN10S5266C2_nt3v57Ev");}
void  S5266C2_nt ::v58(){vfunc_called(this, "_ZN10S5266C2_nt3v58Ev");}
void  S5266C2_nt ::v59(){vfunc_called(this, "_ZN10S5266C2_nt3v59Ev");}
void  S5266C2_nt ::v60(){vfunc_called(this, "_ZN10S5266C2_nt3v60Ev");}
void  S5266C2_nt ::v61(){vfunc_called(this, "_ZN10S5266C2_nt3v61Ev");}
void  S5266C2_nt ::v62(){vfunc_called(this, "_ZN10S5266C2_nt3v62Ev");}
void  S5266C2_nt ::v63(){vfunc_called(this, "_ZN10S5266C2_nt3v63Ev");}
void  S5266C2_nt ::v64(){vfunc_called(this, "_ZN10S5266C2_nt3v64Ev");}
void  S5266C2_nt ::v65(){vfunc_called(this, "_ZN10S5266C2_nt3v65Ev");}
void  S5266C2_nt ::v66(){vfunc_called(this, "_ZN10S5266C2_nt3v66Ev");}
void  S5266C2_nt ::v67(){vfunc_called(this, "_ZN10S5266C2_nt3v67Ev");}
void  S5266C2_nt ::v68(){vfunc_called(this, "_ZN10S5266C2_nt3v68Ev");}
void  S5266C2_nt ::v69(){vfunc_called(this, "_ZN10S5266C2_nt3v69Ev");}
void  S5266C2_nt ::v70(){vfunc_called(this, "_ZN10S5266C2_nt3v70Ev");}
void  S5266C2_nt ::v71(){vfunc_called(this, "_ZN10S5266C2_nt3v71Ev");}
void  S5266C2_nt ::v72(){vfunc_called(this, "_ZN10S5266C2_nt3v72Ev");}
void  S5266C2_nt ::v73(){vfunc_called(this, "_ZN10S5266C2_nt3v73Ev");}
void  S5266C2_nt ::v74(){vfunc_called(this, "_ZN10S5266C2_nt3v74Ev");}
void  S5266C2_nt ::v75(){vfunc_called(this, "_ZN10S5266C2_nt3v75Ev");}
void  S5266C2_nt ::v76(){vfunc_called(this, "_ZN10S5266C2_nt3v76Ev");}
void  S5266C2_nt ::v77(){vfunc_called(this, "_ZN10S5266C2_nt3v77Ev");}
void  S5266C2_nt ::v78(){vfunc_called(this, "_ZN10S5266C2_nt3v78Ev");}
void  S5266C2_nt ::v79(){vfunc_called(this, "_ZN10S5266C2_nt3v79Ev");}
void  S5266C2_nt ::v80(){vfunc_called(this, "_ZN10S5266C2_nt3v80Ev");}
void  S5266C2_nt ::v81(){vfunc_called(this, "_ZN10S5266C2_nt3v81Ev");}
void  S5266C2_nt ::v82(){vfunc_called(this, "_ZN10S5266C2_nt3v82Ev");}
void  S5266C2_nt ::v83(){vfunc_called(this, "_ZN10S5266C2_nt3v83Ev");}
void  S5266C2_nt ::v84(){vfunc_called(this, "_ZN10S5266C2_nt3v84Ev");}
void  S5266C2_nt ::v85(){vfunc_called(this, "_ZN10S5266C2_nt3v85Ev");}
void  S5266C2_nt ::v86(){vfunc_called(this, "_ZN10S5266C2_nt3v86Ev");}
void  S5266C2_nt ::v87(){vfunc_called(this, "_ZN10S5266C2_nt3v87Ev");}
void  S5266C2_nt ::v88(){vfunc_called(this, "_ZN10S5266C2_nt3v88Ev");}
void  S5266C2_nt ::v89(){vfunc_called(this, "_ZN10S5266C2_nt3v89Ev");}
void  S5266C2_nt ::v90(){vfunc_called(this, "_ZN10S5266C2_nt3v90Ev");}
void  S5266C2_nt ::v91(){vfunc_called(this, "_ZN10S5266C2_nt3v91Ev");}
void  S5266C2_nt ::v92(){vfunc_called(this, "_ZN10S5266C2_nt3v92Ev");}
void  S5266C2_nt ::v93(){vfunc_called(this, "_ZN10S5266C2_nt3v93Ev");}
void  S5266C2_nt ::v94(){vfunc_called(this, "_ZN10S5266C2_nt3v94Ev");}
void  S5266C2_nt ::v95(){vfunc_called(this, "_ZN10S5266C2_nt3v95Ev");}
void  S5266C2_nt ::v96(){vfunc_called(this, "_ZN10S5266C2_nt3v96Ev");}
void  S5266C2_nt ::v97(){vfunc_called(this, "_ZN10S5266C2_nt3v97Ev");}
void  S5266C2_nt ::v98(){vfunc_called(this, "_ZN10S5266C2_nt3v98Ev");}
void  S5266C2_nt ::v99(){vfunc_called(this, "_ZN10S5266C2_nt3v99Ev");}
void  S5266C2_nt ::v100(){vfunc_called(this, "_ZN10S5266C2_nt4v100Ev");}
void  S5266C2_nt ::v101(){vfunc_called(this, "_ZN10S5266C2_nt4v101Ev");}
void  S5266C2_nt ::v102(){vfunc_called(this, "_ZN10S5266C2_nt4v102Ev");}
void  S5266C2_nt ::v103(){vfunc_called(this, "_ZN10S5266C2_nt4v103Ev");}
void  S5266C2_nt ::v104(){vfunc_called(this, "_ZN10S5266C2_nt4v104Ev");}
void  S5266C2_nt ::v105(){vfunc_called(this, "_ZN10S5266C2_nt4v105Ev");}
S5266C2_nt ::S5266C2_nt(){ note_ctor("S5266C2_nt", this);} // tgen

//skip512 S5266C2_nt

#else // __cplusplus

extern void _ZN10S5266C2_ntC1Ev();
extern void _ZN10S5266C2_ntD1Ev();
Name_Map name_map_S5266C2_nt[] = {
  NSPAIR(_ZN10S5266C2_ntC1Ev),
  NSPAIR(_ZN10S5266C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5266C3_nt;
extern VTBL_ENTRY _ZTI10S5266C3_nt[];
extern  VTBL_ENTRY _ZTV10S5266C3_nt[];
static Base_Class bases_S5266C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S5266C2_nt[];
extern void _ZN10S5266C2_ntD1Ev();
extern void _ZN10S5266C2_ntD0Ev();
extern void _ZN10S5266C3_nt2v5Ev();
extern void _ZN10S5266C3_nt2v6Ev();
extern void _ZN10S5266C3_nt2v7Ev();
extern void _ZN10S5266C3_nt2v8Ev();
extern void _ZN10S5266C3_nt2v9Ev();
extern void _ZN10S5266C3_nt3v10Ev();
extern void _ZN10S5266C3_nt3v11Ev();
extern void _ZN10S5266C3_nt3v12Ev();
extern void _ZN10S5266C3_nt3v13Ev();
extern void _ZN10S5266C3_nt3v14Ev();
extern void _ZN10S5266C3_nt3v15Ev();
extern void _ZN10S5266C3_nt3v16Ev();
extern void _ZN10S5266C3_nt3v17Ev();
extern void _ZN10S5266C3_nt3v18Ev();
extern void _ZN10S5266C3_nt3v19Ev();
extern void _ZN10S5266C3_nt3v20Ev();
extern void _ZN10S5266C3_nt3v21Ev();
extern void _ZN10S5266C3_nt3v22Ev();
extern void _ZN10S5266C3_nt3v23Ev();
extern void _ZN10S5266C3_nt3v24Ev();
extern void _ZN10S5266C3_nt3v25Ev();
extern void _ZN10S5266C3_nt3v26Ev();
extern void _ZN10S5266C3_nt3v27Ev();
extern void _ZN10S5266C2_nt3v28Ev();
extern void _ZN10S5266C2_nt3v29Ev();
extern void _ZN10S5266C2_nt3v30Ev();
extern void _ZN10S5266C2_nt3v31Ev();
extern void _ZN10S5266C2_nt3v32Ev();
extern void _ZN10S5266C2_nt3v33Ev();
extern void _ZN10S5266C2_nt3v34Ev();
extern void _ZN10S5266C2_nt3v35Ev();
extern void _ZN10S5266C2_nt3v36Ev();
extern void _ZN10S5266C2_nt3v37Ev();
extern void _ZN10S5266C2_nt3v38Ev();
extern void _ZN10S5266C2_nt3v39Ev();
extern void _ZN10S5266C2_nt3v40Ev();
extern void _ZN10S5266C2_nt3v41Ev();
extern void _ZN10S5266C2_nt3v42Ev();
extern void _ZN10S5266C2_nt3v43Ev();
extern void _ZN10S5266C2_nt3v44Ev();
extern void _ZN10S5266C2_nt3v45Ev();
extern void _ZN10S5266C2_nt3v46Ev();
extern void _ZN10S5266C2_nt3v47Ev();
extern void _ZN10S5266C2_nt3v48Ev();
extern void _ZN10S5266C2_nt3v49Ev();
extern void _ZN10S5266C2_nt3v50Ev();
extern void _ZN10S5266C2_nt3v51Ev();
extern void _ZN10S5266C2_nt3v52Ev();
extern void _ZN10S5266C2_nt3v53Ev();
extern void _ZN10S5266C2_nt3v54Ev();
extern void _ZN10S5266C2_nt3v55Ev();
extern void _ZN10S5266C2_nt3v56Ev();
extern void _ZN10S5266C2_nt3v57Ev();
extern void _ZN10S5266C2_nt3v58Ev();
extern void _ZN10S5266C2_nt3v59Ev();
extern void _ZN10S5266C2_nt3v60Ev();
extern void _ZN10S5266C2_nt3v61Ev();
extern void _ZN10S5266C2_nt3v62Ev();
extern void _ZN10S5266C2_nt3v63Ev();
extern void _ZN10S5266C2_nt3v64Ev();
extern void _ZN10S5266C2_nt3v65Ev();
extern void _ZN10S5266C2_nt3v66Ev();
extern void _ZN10S5266C2_nt3v67Ev();
extern void _ZN10S5266C2_nt3v68Ev();
extern void _ZN10S5266C2_nt3v69Ev();
extern void _ZN10S5266C2_nt3v70Ev();
extern void _ZN10S5266C2_nt3v71Ev();
extern void _ZN10S5266C2_nt3v72Ev();
extern void _ZN10S5266C2_nt3v73Ev();
extern void _ZN10S5266C2_nt3v74Ev();
extern void _ZN10S5266C2_nt3v75Ev();
extern void _ZN10S5266C2_nt3v76Ev();
extern void _ZN10S5266C2_nt3v77Ev();
extern void _ZN10S5266C2_nt3v78Ev();
extern void _ZN10S5266C2_nt3v79Ev();
extern void _ZN10S5266C2_nt3v80Ev();
extern void _ZN10S5266C2_nt3v81Ev();
extern void _ZN10S5266C2_nt3v82Ev();
extern void _ZN10S5266C2_nt3v83Ev();
extern void _ZN10S5266C2_nt3v84Ev();
extern void _ZN10S5266C2_nt3v85Ev();
extern void _ZN10S5266C2_nt3v86Ev();
extern void _ZN10S5266C2_nt3v87Ev();
extern void _ZN10S5266C2_nt3v88Ev();
extern void _ZN10S5266C2_nt3v89Ev();
extern void _ZN10S5266C2_nt3v90Ev();
extern void _ZN10S5266C2_nt3v91Ev();
extern void _ZN10S5266C2_nt3v92Ev();
extern void _ZN10S5266C2_nt3v93Ev();
extern void _ZN10S5266C2_nt3v94Ev();
extern void _ZN10S5266C2_nt3v95Ev();
extern void _ZN10S5266C2_nt3v96Ev();
extern void _ZN10S5266C2_nt3v97Ev();
extern void _ZN10S5266C2_nt3v98Ev();
extern void _ZN10S5266C2_nt3v99Ev();
extern void _ZN10S5266C2_nt4v100Ev();
extern void _ZN10S5266C2_nt4v101Ev();
extern void _ZN10S5266C2_nt4v102Ev();
extern void _ZN10S5266C2_nt4v103Ev();
extern void _ZN10S5266C2_nt4v104Ev();
extern void _ZN10S5266C2_nt4v105Ev();
static  VTBL_ENTRY vtc_S5266C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S5266C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S5266C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v94Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v95Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v96Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v97Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v98Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v99Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt4v100Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt4v101Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt4v102Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt4v103Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt4v104Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt4v105Ev,
};
extern VTBL_ENTRY _ZTI10S5266C2_nt[];
VTBL_ENTRY *P__ZTI10S5266C2_nt = _ZTI10S5266C2_nt; 
extern  VTBL_ENTRY _ZTV10S5266C2_nt[];
Class_Descriptor cd_S5266C2_nt = {  "S5266C2_nt", // class name
  bases_S5266C2_nt, 1,
  &(vtc_S5266C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(832,632), // object size
  NSPAIRA(_ZTI10S5266C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S5266C2_nt),105, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5266C39_nt  {
  __tsi64 s5266c39f0;
  void  mf5266c39(); // _ZN11S5266C39_nt9mf5266c39Ev
};
//SIG(-1 S5266C39_nt) C1{ m FL}


void  S5266C39_nt ::mf5266c39(){}

//skip512 S5266C39_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5266C38_nt  {
  ::S5266C39_nt s5266c38f0;
  void  mf5266c38(); // _ZN11S5266C38_nt9mf5266c38Ev
};
//SIG(-1 S5266C38_nt) C1{ m FC2{ m FL}}


void  S5266C38_nt ::mf5266c38(){}

//skip512 S5266C38_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5266C1  : S5266C2_nt {
  void *s5266c1f0;
  ::S5266C38_nt s5266c1f1;
  ::S5266C38_nt s5266c1f2;
  void *s5266c1f3;
  ::S5266C38_nt s5266c1f4;
  ::S5266C38_nt s5266c1f5;
  ::S5266C12_nt s5266c1f6;
  int s5266c1f7;
  char s5266c1f8;
  virtual  ~S5266C1(); // _ZN7S5266C1D1Ev
  virtual void  v1(); // _ZN7S5266C12v1Ev
  virtual void  v2(); // _ZN7S5266C12v2Ev
  virtual void  v3(); // _ZN7S5266C12v3Ev
  virtual void  v4(); // _ZN7S5266C12v4Ev
  S5266C1(); // tgen
};
//SIG(1 S5266C1) C1{ BC2{ BC3{ vd v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 Fp Fi FC4{ BC5{ m Fp Fi FC6{ m} FC7{ m}}} FC4 Fi} vd v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 FC8{ m FC9{ m FL[2]}} FC8 FC8 FC8 FC10{ m FC8} FC11{ m FC8 FC8 FC8 FC8} FC11 FC8 FC8 FC8 Fp FC10 FC12{ m FC13{ m Fp Fi FC7} Fi} Fi Fp[7] FC14{ m Fp Fi FC15{ m} FC15} Fi:8 Fi:8 Fi:16 Fi:16 Fi:8 Fi:8 Fi:8 Fi:32 Fi:8 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fi[7] Fp[6] Fi:8 Fi:8 Fi:8 Fi:8 Fi:8 Fi:8 FC16{ BC17{ m Fp Fi FC18{ m} FC18}} Fp[4] Fi:8 Fi:8 Fi:8 Fi:8 Fi:8 Fi:16 Fi:16 Fi:16 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:8 Fi:8 Fi:8 Fp[7] FC19{ m Fp Fi[2] FC20{ m}} Fp[2] Fi:16 Fi:16 FC16 FC19 FC21{ m Fp Fi[2] FC20} Fp[2] Fi:24 Fi:8 Fp} vd v1 v2 v3 v4 Fp FC22{ m FC23{ m FL}} FC22 Fp FC22 FC22 FC8 Fi Fc}


 S5266C1 ::~S5266C1(){ note_dtor("S5266C1", this);}
void  S5266C1 ::v1(){vfunc_called(this, "_ZN7S5266C12v1Ev");}
void  S5266C1 ::v2(){vfunc_called(this, "_ZN7S5266C12v2Ev");}
void  S5266C1 ::v3(){vfunc_called(this, "_ZN7S5266C12v3Ev");}
void  S5266C1 ::v4(){vfunc_called(this, "_ZN7S5266C12v4Ev");}
S5266C1 ::S5266C1(){ note_ctor("S5266C1", this);} // tgen

static void Test_S5266C1()
{
  extern Class_Descriptor cd_S5266C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(114,175)];
    init_test(&cd_S5266C1, buf);
    S5266C1 *dp, &lv = *(dp=new (buf) S5266C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(904,696), "sizeof(S5266C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5266C1)");
    check_base_class_offset(lv, (S5266C3_nt*)(S5266C2_nt*), 0, "S5266C1");
    check_base_class_offset(lv, (S5266C2_nt*), 0, "S5266C1");
    check_field_offset(lv, s5266c1f0, ABISELECT(832,632), "S5266C1.s5266c1f0");
    check_field_offset(lv, s5266c1f1, ABISELECT(840,636), "S5266C1.s5266c1f1");
    check_field_offset(lv, s5266c1f2, ABISELECT(848,644), "S5266C1.s5266c1f2");
    check_field_offset(lv, s5266c1f3, ABISELECT(856,652), "S5266C1.s5266c1f3");
    check_field_offset(lv, s5266c1f4, ABISELECT(864,656), "S5266C1.s5266c1f4");
    check_field_offset(lv, s5266c1f5, ABISELECT(872,664), "S5266C1.s5266c1f5");
    check_field_offset(lv, s5266c1f6, ABISELECT(880,672), "S5266C1.s5266c1f6");
    check_field_offset(lv, s5266c1f7, ABISELECT(896,688), "S5266C1.s5266c1f7");
    check_field_offset(lv, s5266c1f8, ABISELECT(900,692), "S5266C1.s5266c1f8");
    test_class_info(&lv, &cd_S5266C1);
    dp->~S5266C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5266C1(Test_S5266C1, "S5266C1", ABISELECT(904,696));

#else // __cplusplus

extern void _ZN7S5266C1C1Ev();
extern void _ZN7S5266C1D1Ev();
Name_Map name_map_S5266C1[] = {
  NSPAIR(_ZN7S5266C1C1Ev),
  NSPAIR(_ZN7S5266C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5266C3_nt;
extern VTBL_ENTRY _ZTI10S5266C3_nt[];
extern  VTBL_ENTRY _ZTV10S5266C3_nt[];
extern Class_Descriptor cd_S5266C2_nt;
extern VTBL_ENTRY _ZTI10S5266C2_nt[];
extern  VTBL_ENTRY _ZTV10S5266C2_nt[];
static Base_Class bases_S5266C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S5266C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5266C1[];
extern void _ZN7S5266C1D1Ev();
extern void _ZN7S5266C1D0Ev();
extern void _ZN10S5266C3_nt2v5Ev();
extern void _ZN10S5266C3_nt2v6Ev();
extern void _ZN10S5266C3_nt2v7Ev();
extern void _ZN10S5266C3_nt2v8Ev();
extern void _ZN10S5266C3_nt2v9Ev();
extern void _ZN10S5266C3_nt3v10Ev();
extern void _ZN10S5266C3_nt3v11Ev();
extern void _ZN10S5266C3_nt3v12Ev();
extern void _ZN10S5266C3_nt3v13Ev();
extern void _ZN10S5266C3_nt3v14Ev();
extern void _ZN10S5266C3_nt3v15Ev();
extern void _ZN10S5266C3_nt3v16Ev();
extern void _ZN10S5266C3_nt3v17Ev();
extern void _ZN10S5266C3_nt3v18Ev();
extern void _ZN10S5266C3_nt3v19Ev();
extern void _ZN10S5266C3_nt3v20Ev();
extern void _ZN10S5266C3_nt3v21Ev();
extern void _ZN10S5266C3_nt3v22Ev();
extern void _ZN10S5266C3_nt3v23Ev();
extern void _ZN10S5266C3_nt3v24Ev();
extern void _ZN10S5266C3_nt3v25Ev();
extern void _ZN10S5266C3_nt3v26Ev();
extern void _ZN10S5266C3_nt3v27Ev();
extern void _ZN10S5266C2_nt3v28Ev();
extern void _ZN10S5266C2_nt3v29Ev();
extern void _ZN10S5266C2_nt3v30Ev();
extern void _ZN10S5266C2_nt3v31Ev();
extern void _ZN10S5266C2_nt3v32Ev();
extern void _ZN10S5266C2_nt3v33Ev();
extern void _ZN10S5266C2_nt3v34Ev();
extern void _ZN10S5266C2_nt3v35Ev();
extern void _ZN10S5266C2_nt3v36Ev();
extern void _ZN10S5266C2_nt3v37Ev();
extern void _ZN10S5266C2_nt3v38Ev();
extern void _ZN10S5266C2_nt3v39Ev();
extern void _ZN10S5266C2_nt3v40Ev();
extern void _ZN10S5266C2_nt3v41Ev();
extern void _ZN10S5266C2_nt3v42Ev();
extern void _ZN10S5266C2_nt3v43Ev();
extern void _ZN10S5266C2_nt3v44Ev();
extern void _ZN10S5266C2_nt3v45Ev();
extern void _ZN10S5266C2_nt3v46Ev();
extern void _ZN10S5266C2_nt3v47Ev();
extern void _ZN10S5266C2_nt3v48Ev();
extern void _ZN10S5266C2_nt3v49Ev();
extern void _ZN10S5266C2_nt3v50Ev();
extern void _ZN10S5266C2_nt3v51Ev();
extern void _ZN10S5266C2_nt3v52Ev();
extern void _ZN10S5266C2_nt3v53Ev();
extern void _ZN10S5266C2_nt3v54Ev();
extern void _ZN10S5266C2_nt3v55Ev();
extern void _ZN10S5266C2_nt3v56Ev();
extern void _ZN10S5266C2_nt3v57Ev();
extern void _ZN10S5266C2_nt3v58Ev();
extern void _ZN10S5266C2_nt3v59Ev();
extern void _ZN10S5266C2_nt3v60Ev();
extern void _ZN10S5266C2_nt3v61Ev();
extern void _ZN10S5266C2_nt3v62Ev();
extern void _ZN10S5266C2_nt3v63Ev();
extern void _ZN10S5266C2_nt3v64Ev();
extern void _ZN10S5266C2_nt3v65Ev();
extern void _ZN10S5266C2_nt3v66Ev();
extern void _ZN10S5266C2_nt3v67Ev();
extern void _ZN10S5266C2_nt3v68Ev();
extern void _ZN10S5266C2_nt3v69Ev();
extern void _ZN10S5266C2_nt3v70Ev();
extern void _ZN10S5266C2_nt3v71Ev();
extern void _ZN10S5266C2_nt3v72Ev();
extern void _ZN10S5266C2_nt3v73Ev();
extern void _ZN10S5266C2_nt3v74Ev();
extern void _ZN10S5266C2_nt3v75Ev();
extern void _ZN10S5266C2_nt3v76Ev();
extern void _ZN10S5266C2_nt3v77Ev();
extern void _ZN10S5266C2_nt3v78Ev();
extern void _ZN10S5266C2_nt3v79Ev();
extern void _ZN10S5266C2_nt3v80Ev();
extern void _ZN10S5266C2_nt3v81Ev();
extern void _ZN10S5266C2_nt3v82Ev();
extern void _ZN10S5266C2_nt3v83Ev();
extern void _ZN10S5266C2_nt3v84Ev();
extern void _ZN10S5266C2_nt3v85Ev();
extern void _ZN10S5266C2_nt3v86Ev();
extern void _ZN10S5266C2_nt3v87Ev();
extern void _ZN10S5266C2_nt3v88Ev();
extern void _ZN10S5266C2_nt3v89Ev();
extern void _ZN10S5266C2_nt3v90Ev();
extern void _ZN10S5266C2_nt3v91Ev();
extern void _ZN10S5266C2_nt3v92Ev();
extern void _ZN10S5266C2_nt3v93Ev();
extern void _ZN10S5266C2_nt3v94Ev();
extern void _ZN10S5266C2_nt3v95Ev();
extern void _ZN10S5266C2_nt3v96Ev();
extern void _ZN10S5266C2_nt3v97Ev();
extern void _ZN10S5266C2_nt3v98Ev();
extern void _ZN10S5266C2_nt3v99Ev();
extern void _ZN10S5266C2_nt4v100Ev();
extern void _ZN10S5266C2_nt4v101Ev();
extern void _ZN10S5266C2_nt4v102Ev();
extern void _ZN10S5266C2_nt4v103Ev();
extern void _ZN10S5266C2_nt4v104Ev();
extern void _ZN10S5266C2_nt4v105Ev();
extern void _ZN7S5266C12v1Ev();
extern void _ZN7S5266C12v2Ev();
extern void _ZN7S5266C12v3Ev();
extern void _ZN7S5266C12v4Ev();
static  VTBL_ENTRY vtc_S5266C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5266C1[0]),
  (VTBL_ENTRY)&_ZN7S5266C1D1Ev,
  (VTBL_ENTRY)&_ZN7S5266C1D0Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S5266C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v94Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v95Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v96Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v97Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v98Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt3v99Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt4v100Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt4v101Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt4v102Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt4v103Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt4v104Ev,
  (VTBL_ENTRY)&_ZN10S5266C2_nt4v105Ev,
  (VTBL_ENTRY)&_ZN7S5266C12v1Ev,
  (VTBL_ENTRY)&_ZN7S5266C12v2Ev,
  (VTBL_ENTRY)&_ZN7S5266C12v3Ev,
  (VTBL_ENTRY)&_ZN7S5266C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S5266C1[];
extern  VTBL_ENTRY _ZTV7S5266C1[];
Class_Descriptor cd_S5266C1 = {  "S5266C1", // class name
  bases_S5266C1, 2,
  &(vtc_S5266C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(904,696), // object size
  NSPAIRA(_ZTI7S5266C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5266C1),109, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3262C3  {
  int s3262c3f0;
  __tsi64 s3262c3f1;
  void *s3262c3f2[4];
  int s3262c3f3[2];
  void *s3262c3f4;
  ::S79C8_nt s3262c3f5;
  void *s3262c3f6[2];
  virtual  ~S3262C3(); // _ZN7S3262C3D1Ev
  virtual void  v44(); // _ZN7S3262C33v44Ev
  virtual void  v45(); // _ZN7S3262C33v45Ev
  virtual void  v46(); // _ZN7S3262C33v46Ev
  virtual void  v47(); // _ZN7S3262C33v47Ev
  virtual void  v48(); // _ZN7S3262C33v48Ev
  virtual void  v49(); // _ZN7S3262C33v49Ev
  virtual void  v50(); // _ZN7S3262C33v50Ev
  virtual void  v51(); // _ZN7S3262C33v51Ev
  virtual void  v52(); // _ZN7S3262C33v52Ev
  virtual void  v53(); // _ZN7S3262C33v53Ev
  virtual void  v54(); // _ZN7S3262C33v54Ev
  virtual void  v55(); // _ZN7S3262C33v55Ev
  virtual void  v56(); // _ZN7S3262C33v56Ev
  virtual void  v57(); // _ZN7S3262C33v57Ev
  virtual void  v58(); // _ZN7S3262C33v58Ev
  virtual void  v59(); // _ZN7S3262C33v59Ev
  virtual void  v60(); // _ZN7S3262C33v60Ev
  virtual void  v61(); // _ZN7S3262C33v61Ev
  virtual void  v62(); // _ZN7S3262C33v62Ev
  virtual void  v63(); // _ZN7S3262C33v63Ev
  virtual void  v64(); // _ZN7S3262C33v64Ev
  virtual void  v65(); // _ZN7S3262C33v65Ev
  virtual void  v66(); // _ZN7S3262C33v66Ev
  virtual void  v67(); // _ZN7S3262C33v67Ev
  virtual void  v68(); // _ZN7S3262C33v68Ev
  virtual void  v69(); // _ZN7S3262C33v69Ev
  virtual void  v70(); // _ZN7S3262C33v70Ev
  virtual void  v71(); // _ZN7S3262C33v71Ev
  virtual void  v72(); // _ZN7S3262C33v72Ev
  virtual void  v73(); // _ZN7S3262C33v73Ev
  virtual void  v74(); // _ZN7S3262C33v74Ev
  virtual void  v75(); // _ZN7S3262C33v75Ev
  virtual void  v76(); // _ZN7S3262C33v76Ev
  virtual void  v77(); // _ZN7S3262C33v77Ev
  virtual void  v78(); // _ZN7S3262C33v78Ev
  virtual void  v79(); // _ZN7S3262C33v79Ev
  virtual void  v80(); // _ZN7S3262C33v80Ev
  virtual void  v81(); // _ZN7S3262C33v81Ev
  virtual void  v82(); // _ZN7S3262C33v82Ev
  virtual void  v83(); // _ZN7S3262C33v83Ev
  virtual void  v84(); // _ZN7S3262C33v84Ev
  virtual void  v85(); // _ZN7S3262C33v85Ev
  virtual void  v86(); // _ZN7S3262C33v86Ev
  virtual void  v87(); // _ZN7S3262C33v87Ev
  virtual void  v88(); // _ZN7S3262C33v88Ev
  virtual void  v89(); // _ZN7S3262C33v89Ev
  virtual void  v90(); // _ZN7S3262C33v90Ev
  virtual void  v91(); // _ZN7S3262C33v91Ev
  virtual void  v92(); // _ZN7S3262C33v92Ev
  virtual void  v93(); // _ZN7S3262C33v93Ev
  virtual void  v94(); // _ZN7S3262C33v94Ev
  virtual void  v95(); // _ZN7S3262C33v95Ev
  virtual void  v96(); // _ZN7S3262C33v96Ev
  virtual void  v97(); // _ZN7S3262C33v97Ev
  virtual void  v98(); // _ZN7S3262C33v98Ev
  virtual void  v99(); // _ZN7S3262C33v99Ev
  virtual void  v100(); // _ZN7S3262C34v100Ev
  virtual void  v101(); // _ZN7S3262C34v101Ev
  virtual void  v102(); // _ZN7S3262C34v102Ev
  virtual void  v103(); // _ZN7S3262C34v103Ev
  virtual void  v104(); // _ZN7S3262C34v104Ev
  virtual void  v105(); // _ZN7S3262C34v105Ev
  virtual void  v106(); // _ZN7S3262C34v106Ev
  virtual void  v107(); // _ZN7S3262C34v107Ev
  S3262C3(); // tgen
};
//SIG(-1 S3262C3) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 Fi FL Fp[4] Fi[2] Fp FC2{ m Fi[2]} Fp[2]}


 S3262C3 ::~S3262C3(){ note_dtor("S3262C3", this);}
void  S3262C3 ::v44(){vfunc_called(this, "_ZN7S3262C33v44Ev");}
void  S3262C3 ::v45(){vfunc_called(this, "_ZN7S3262C33v45Ev");}
void  S3262C3 ::v46(){vfunc_called(this, "_ZN7S3262C33v46Ev");}
void  S3262C3 ::v47(){vfunc_called(this, "_ZN7S3262C33v47Ev");}
void  S3262C3 ::v48(){vfunc_called(this, "_ZN7S3262C33v48Ev");}
void  S3262C3 ::v49(){vfunc_called(this, "_ZN7S3262C33v49Ev");}
void  S3262C3 ::v50(){vfunc_called(this, "_ZN7S3262C33v50Ev");}
void  S3262C3 ::v51(){vfunc_called(this, "_ZN7S3262C33v51Ev");}
void  S3262C3 ::v52(){vfunc_called(this, "_ZN7S3262C33v52Ev");}
void  S3262C3 ::v53(){vfunc_called(this, "_ZN7S3262C33v53Ev");}
void  S3262C3 ::v54(){vfunc_called(this, "_ZN7S3262C33v54Ev");}
void  S3262C3 ::v55(){vfunc_called(this, "_ZN7S3262C33v55Ev");}
void  S3262C3 ::v56(){vfunc_called(this, "_ZN7S3262C33v56Ev");}
void  S3262C3 ::v57(){vfunc_called(this, "_ZN7S3262C33v57Ev");}
void  S3262C3 ::v58(){vfunc_called(this, "_ZN7S3262C33v58Ev");}
void  S3262C3 ::v59(){vfunc_called(this, "_ZN7S3262C33v59Ev");}
void  S3262C3 ::v60(){vfunc_called(this, "_ZN7S3262C33v60Ev");}
void  S3262C3 ::v61(){vfunc_called(this, "_ZN7S3262C33v61Ev");}
void  S3262C3 ::v62(){vfunc_called(this, "_ZN7S3262C33v62Ev");}
void  S3262C3 ::v63(){vfunc_called(this, "_ZN7S3262C33v63Ev");}
void  S3262C3 ::v64(){vfunc_called(this, "_ZN7S3262C33v64Ev");}
void  S3262C3 ::v65(){vfunc_called(this, "_ZN7S3262C33v65Ev");}
void  S3262C3 ::v66(){vfunc_called(this, "_ZN7S3262C33v66Ev");}
void  S3262C3 ::v67(){vfunc_called(this, "_ZN7S3262C33v67Ev");}
void  S3262C3 ::v68(){vfunc_called(this, "_ZN7S3262C33v68Ev");}
void  S3262C3 ::v69(){vfunc_called(this, "_ZN7S3262C33v69Ev");}
void  S3262C3 ::v70(){vfunc_called(this, "_ZN7S3262C33v70Ev");}
void  S3262C3 ::v71(){vfunc_called(this, "_ZN7S3262C33v71Ev");}
void  S3262C3 ::v72(){vfunc_called(this, "_ZN7S3262C33v72Ev");}
void  S3262C3 ::v73(){vfunc_called(this, "_ZN7S3262C33v73Ev");}
void  S3262C3 ::v74(){vfunc_called(this, "_ZN7S3262C33v74Ev");}
void  S3262C3 ::v75(){vfunc_called(this, "_ZN7S3262C33v75Ev");}
void  S3262C3 ::v76(){vfunc_called(this, "_ZN7S3262C33v76Ev");}
void  S3262C3 ::v77(){vfunc_called(this, "_ZN7S3262C33v77Ev");}
void  S3262C3 ::v78(){vfunc_called(this, "_ZN7S3262C33v78Ev");}
void  S3262C3 ::v79(){vfunc_called(this, "_ZN7S3262C33v79Ev");}
void  S3262C3 ::v80(){vfunc_called(this, "_ZN7S3262C33v80Ev");}
void  S3262C3 ::v81(){vfunc_called(this, "_ZN7S3262C33v81Ev");}
void  S3262C3 ::v82(){vfunc_called(this, "_ZN7S3262C33v82Ev");}
void  S3262C3 ::v83(){vfunc_called(this, "_ZN7S3262C33v83Ev");}
void  S3262C3 ::v84(){vfunc_called(this, "_ZN7S3262C33v84Ev");}
void  S3262C3 ::v85(){vfunc_called(this, "_ZN7S3262C33v85Ev");}
void  S3262C3 ::v86(){vfunc_called(this, "_ZN7S3262C33v86Ev");}
void  S3262C3 ::v87(){vfunc_called(this, "_ZN7S3262C33v87Ev");}
void  S3262C3 ::v88(){vfunc_called(this, "_ZN7S3262C33v88Ev");}
void  S3262C3 ::v89(){vfunc_called(this, "_ZN7S3262C33v89Ev");}
void  S3262C3 ::v90(){vfunc_called(this, "_ZN7S3262C33v90Ev");}
void  S3262C3 ::v91(){vfunc_called(this, "_ZN7S3262C33v91Ev");}
void  S3262C3 ::v92(){vfunc_called(this, "_ZN7S3262C33v92Ev");}
void  S3262C3 ::v93(){vfunc_called(this, "_ZN7S3262C33v93Ev");}
void  S3262C3 ::v94(){vfunc_called(this, "_ZN7S3262C33v94Ev");}
void  S3262C3 ::v95(){vfunc_called(this, "_ZN7S3262C33v95Ev");}
void  S3262C3 ::v96(){vfunc_called(this, "_ZN7S3262C33v96Ev");}
void  S3262C3 ::v97(){vfunc_called(this, "_ZN7S3262C33v97Ev");}
void  S3262C3 ::v98(){vfunc_called(this, "_ZN7S3262C33v98Ev");}
void  S3262C3 ::v99(){vfunc_called(this, "_ZN7S3262C33v99Ev");}
void  S3262C3 ::v100(){vfunc_called(this, "_ZN7S3262C34v100Ev");}
void  S3262C3 ::v101(){vfunc_called(this, "_ZN7S3262C34v101Ev");}
void  S3262C3 ::v102(){vfunc_called(this, "_ZN7S3262C34v102Ev");}
void  S3262C3 ::v103(){vfunc_called(this, "_ZN7S3262C34v103Ev");}
void  S3262C3 ::v104(){vfunc_called(this, "_ZN7S3262C34v104Ev");}
void  S3262C3 ::v105(){vfunc_called(this, "_ZN7S3262C34v105Ev");}
void  S3262C3 ::v106(){vfunc_called(this, "_ZN7S3262C34v106Ev");}
void  S3262C3 ::v107(){vfunc_called(this, "_ZN7S3262C34v107Ev");}
S3262C3 ::S3262C3(){ note_ctor("S3262C3", this);} // tgen

static void Test_S3262C3()
{
  extern Class_Descriptor cd_S3262C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S3262C3, buf);
    S3262C3 *dp, &lv = *(dp=new (buf) S3262C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S3262C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3262C3)");
    check_field_offset(lv, s3262c3f0, ABISELECT(8,4), "S3262C3.s3262c3f0");
    check_field_offset(lv, s3262c3f1, ABISELECT(16,8), "S3262C3.s3262c3f1");
    check_field_offset(lv, s3262c3f2, ABISELECT(24,16), "S3262C3.s3262c3f2");
    check_field_offset(lv, s3262c3f3, ABISELECT(56,32), "S3262C3.s3262c3f3");
    check_field_offset(lv, s3262c3f4, ABISELECT(64,40), "S3262C3.s3262c3f4");
    check_field_offset(lv, s3262c3f5, ABISELECT(72,44), "S3262C3.s3262c3f5");
    check_field_offset(lv, s3262c3f6, ABISELECT(80,52), "S3262C3.s3262c3f6");
    test_class_info(&lv, &cd_S3262C3);
    dp->~S3262C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3262C3(Test_S3262C3, "S3262C3", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S3262C3C1Ev();
extern void _ZN7S3262C3D1Ev();
Name_Map name_map_S3262C3[] = {
  NSPAIR(_ZN7S3262C3C1Ev),
  NSPAIR(_ZN7S3262C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3262C3[];
extern void _ZN7S3262C3D1Ev();
extern void _ZN7S3262C3D0Ev();
extern void _ZN7S3262C33v44Ev();
extern void _ZN7S3262C33v45Ev();
extern void _ZN7S3262C33v46Ev();
extern void _ZN7S3262C33v47Ev();
extern void _ZN7S3262C33v48Ev();
extern void _ZN7S3262C33v49Ev();
extern void _ZN7S3262C33v50Ev();
extern void _ZN7S3262C33v51Ev();
extern void _ZN7S3262C33v52Ev();
extern void _ZN7S3262C33v53Ev();
extern void _ZN7S3262C33v54Ev();
extern void _ZN7S3262C33v55Ev();
extern void _ZN7S3262C33v56Ev();
extern void _ZN7S3262C33v57Ev();
extern void _ZN7S3262C33v58Ev();
extern void _ZN7S3262C33v59Ev();
extern void _ZN7S3262C33v60Ev();
extern void _ZN7S3262C33v61Ev();
extern void _ZN7S3262C33v62Ev();
extern void _ZN7S3262C33v63Ev();
extern void _ZN7S3262C33v64Ev();
extern void _ZN7S3262C33v65Ev();
extern void _ZN7S3262C33v66Ev();
extern void _ZN7S3262C33v67Ev();
extern void _ZN7S3262C33v68Ev();
extern void _ZN7S3262C33v69Ev();
extern void _ZN7S3262C33v70Ev();
extern void _ZN7S3262C33v71Ev();
extern void _ZN7S3262C33v72Ev();
extern void _ZN7S3262C33v73Ev();
extern void _ZN7S3262C33v74Ev();
extern void _ZN7S3262C33v75Ev();
extern void _ZN7S3262C33v76Ev();
extern void _ZN7S3262C33v77Ev();
extern void _ZN7S3262C33v78Ev();
extern void _ZN7S3262C33v79Ev();
extern void _ZN7S3262C33v80Ev();
extern void _ZN7S3262C33v81Ev();
extern void _ZN7S3262C33v82Ev();
extern void _ZN7S3262C33v83Ev();
extern void _ZN7S3262C33v84Ev();
extern void _ZN7S3262C33v85Ev();
extern void _ZN7S3262C33v86Ev();
extern void _ZN7S3262C33v87Ev();
extern void _ZN7S3262C33v88Ev();
extern void _ZN7S3262C33v89Ev();
extern void _ZN7S3262C33v90Ev();
extern void _ZN7S3262C33v91Ev();
extern void _ZN7S3262C33v92Ev();
extern void _ZN7S3262C33v93Ev();
extern void _ZN7S3262C33v94Ev();
extern void _ZN7S3262C33v95Ev();
extern void _ZN7S3262C33v96Ev();
extern void _ZN7S3262C33v97Ev();
extern void _ZN7S3262C33v98Ev();
extern void _ZN7S3262C33v99Ev();
extern void _ZN7S3262C34v100Ev();
extern void _ZN7S3262C34v101Ev();
extern void _ZN7S3262C34v102Ev();
extern void _ZN7S3262C34v103Ev();
extern void _ZN7S3262C34v104Ev();
extern void _ZN7S3262C34v105Ev();
extern void _ZN7S3262C34v106Ev();
extern void _ZN7S3262C34v107Ev();
static  VTBL_ENTRY vtc_S3262C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3262C3[0]),
  (VTBL_ENTRY)&_ZN7S3262C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3262C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v68Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v69Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v70Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v71Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v72Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v73Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v74Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v75Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v76Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v77Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v78Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v79Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v80Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v81Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v82Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v83Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v84Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v85Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v86Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v87Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v88Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v89Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v90Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v91Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v92Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v93Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v94Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v95Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v96Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v97Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v98Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v99Ev,
  (VTBL_ENTRY)&_ZN7S3262C34v100Ev,
  (VTBL_ENTRY)&_ZN7S3262C34v101Ev,
  (VTBL_ENTRY)&_ZN7S3262C34v102Ev,
  (VTBL_ENTRY)&_ZN7S3262C34v103Ev,
  (VTBL_ENTRY)&_ZN7S3262C34v104Ev,
  (VTBL_ENTRY)&_ZN7S3262C34v105Ev,
  (VTBL_ENTRY)&_ZN7S3262C34v106Ev,
  (VTBL_ENTRY)&_ZN7S3262C34v107Ev,
};
extern VTBL_ENTRY _ZTI7S3262C3[];
extern  VTBL_ENTRY _ZTV7S3262C3[];
Class_Descriptor cd_S3262C3 = {  "S3262C3", // class name
  0,0,//no base classes
  &(vtc_S3262C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S3262C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3262C3),68, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3262C5  {
  virtual void  v108(); // _ZN7S3262C54v108Ev
  virtual void  v109(); // _ZN7S3262C54v109Ev
  virtual void  v110(); // _ZN7S3262C54v110Ev
  virtual void  v111(); // _ZN7S3262C54v111Ev
  virtual void  v112(); // _ZN7S3262C54v112Ev
  virtual void  v113(); // _ZN7S3262C54v113Ev
  virtual void  v114(); // _ZN7S3262C54v114Ev
  virtual void  v115(); // _ZN7S3262C54v115Ev
  virtual void  v116(); // _ZN7S3262C54v116Ev
  virtual void  v117(); // _ZN7S3262C54v117Ev
  virtual void  v118(); // _ZN7S3262C54v118Ev
  virtual void  v119(); // _ZN7S3262C54v119Ev
  virtual void  v120(); // _ZN7S3262C54v120Ev
  virtual void  v121(); // _ZN7S3262C54v121Ev
  virtual void  v122(); // _ZN7S3262C54v122Ev
  virtual void  v123(); // _ZN7S3262C54v123Ev
  ~S3262C5(); // tgen
  S3262C5(); // tgen
};
//SIG(-1 S3262C5) C1{ v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16}


void  S3262C5 ::v108(){vfunc_called(this, "_ZN7S3262C54v108Ev");}
void  S3262C5 ::v109(){vfunc_called(this, "_ZN7S3262C54v109Ev");}
void  S3262C5 ::v110(){vfunc_called(this, "_ZN7S3262C54v110Ev");}
void  S3262C5 ::v111(){vfunc_called(this, "_ZN7S3262C54v111Ev");}
void  S3262C5 ::v112(){vfunc_called(this, "_ZN7S3262C54v112Ev");}
void  S3262C5 ::v113(){vfunc_called(this, "_ZN7S3262C54v113Ev");}
void  S3262C5 ::v114(){vfunc_called(this, "_ZN7S3262C54v114Ev");}
void  S3262C5 ::v115(){vfunc_called(this, "_ZN7S3262C54v115Ev");}
void  S3262C5 ::v116(){vfunc_called(this, "_ZN7S3262C54v116Ev");}
void  S3262C5 ::v117(){vfunc_called(this, "_ZN7S3262C54v117Ev");}
void  S3262C5 ::v118(){vfunc_called(this, "_ZN7S3262C54v118Ev");}
void  S3262C5 ::v119(){vfunc_called(this, "_ZN7S3262C54v119Ev");}
void  S3262C5 ::v120(){vfunc_called(this, "_ZN7S3262C54v120Ev");}
void  S3262C5 ::v121(){vfunc_called(this, "_ZN7S3262C54v121Ev");}
void  S3262C5 ::v122(){vfunc_called(this, "_ZN7S3262C54v122Ev");}
void  S3262C5 ::v123(){vfunc_called(this, "_ZN7S3262C54v123Ev");}
S3262C5 ::~S3262C5(){ note_dtor("S3262C5", this);} // tgen
S3262C5 ::S3262C5(){ note_ctor("S3262C5", this);} // tgen

static void Test_S3262C5()
{
  extern Class_Descriptor cd_S3262C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3262C5, buf);
    S3262C5 *dp, &lv = *(dp=new (buf) S3262C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3262C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3262C5)");
    test_class_info(&lv, &cd_S3262C5);
    dp->~S3262C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3262C5(Test_S3262C5, "S3262C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3262C5C1Ev();
extern void _ZN7S3262C5D1Ev();
Name_Map name_map_S3262C5[] = {
  NSPAIR(_ZN7S3262C5C1Ev),
  NSPAIR(_ZN7S3262C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3262C5[];
extern void _ZN7S3262C54v108Ev();
extern void _ZN7S3262C54v109Ev();
extern void _ZN7S3262C54v110Ev();
extern void _ZN7S3262C54v111Ev();
extern void _ZN7S3262C54v112Ev();
extern void _ZN7S3262C54v113Ev();
extern void _ZN7S3262C54v114Ev();
extern void _ZN7S3262C54v115Ev();
extern void _ZN7S3262C54v116Ev();
extern void _ZN7S3262C54v117Ev();
extern void _ZN7S3262C54v118Ev();
extern void _ZN7S3262C54v119Ev();
extern void _ZN7S3262C54v120Ev();
extern void _ZN7S3262C54v121Ev();
extern void _ZN7S3262C54v122Ev();
extern void _ZN7S3262C54v123Ev();
static  VTBL_ENTRY vtc_S3262C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3262C5[0]),
  (VTBL_ENTRY)&_ZN7S3262C54v108Ev,
  (VTBL_ENTRY)&_ZN7S3262C54v109Ev,
  (VTBL_ENTRY)&_ZN7S3262C54v110Ev,
  (VTBL_ENTRY)&_ZN7S3262C54v111Ev,
  (VTBL_ENTRY)&_ZN7S3262C54v112Ev,
  (VTBL_ENTRY)&_ZN7S3262C54v113Ev,
  (VTBL_ENTRY)&_ZN7S3262C54v114Ev,
  (VTBL_ENTRY)&_ZN7S3262C54v115Ev,
  (VTBL_ENTRY)&_ZN7S3262C54v116Ev,
  (VTBL_ENTRY)&_ZN7S3262C54v117Ev,
  (VTBL_ENTRY)&_ZN7S3262C54v118Ev,
  (VTBL_ENTRY)&_ZN7S3262C54v119Ev,
  (VTBL_ENTRY)&_ZN7S3262C54v120Ev,
  (VTBL_ENTRY)&_ZN7S3262C54v121Ev,
  (VTBL_ENTRY)&_ZN7S3262C54v122Ev,
  (VTBL_ENTRY)&_ZN7S3262C54v123Ev,
};
extern VTBL_ENTRY _ZTI7S3262C5[];
extern  VTBL_ENTRY _ZTV7S3262C5[];
Class_Descriptor cd_S3262C5 = {  "S3262C5", // class name
  0,0,//no base classes
  &(vtc_S3262C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3262C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3262C5),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3262C6  {
  virtual void  v124(); // _ZN7S3262C64v124Ev
  virtual void  v125(); // _ZN7S3262C64v125Ev
  virtual void  v126(); // _ZN7S3262C64v126Ev
  virtual void  v127(); // _ZN7S3262C64v127Ev
  virtual void  v128(); // _ZN7S3262C64v128Ev
  virtual void  v129(); // _ZN7S3262C64v129Ev
  virtual void  v130(); // _ZN7S3262C64v130Ev
  virtual void  v131(); // _ZN7S3262C64v131Ev
  virtual void  v132(); // _ZN7S3262C64v132Ev
  ~S3262C6(); // tgen
  S3262C6(); // tgen
};
//SIG(-1 S3262C6) C1{ v1 v2 v3 v4 v5 v6 v7 v8 v9}


void  S3262C6 ::v124(){vfunc_called(this, "_ZN7S3262C64v124Ev");}
void  S3262C6 ::v125(){vfunc_called(this, "_ZN7S3262C64v125Ev");}
void  S3262C6 ::v126(){vfunc_called(this, "_ZN7S3262C64v126Ev");}
void  S3262C6 ::v127(){vfunc_called(this, "_ZN7S3262C64v127Ev");}
void  S3262C6 ::v128(){vfunc_called(this, "_ZN7S3262C64v128Ev");}
void  S3262C6 ::v129(){vfunc_called(this, "_ZN7S3262C64v129Ev");}
void  S3262C6 ::v130(){vfunc_called(this, "_ZN7S3262C64v130Ev");}
void  S3262C6 ::v131(){vfunc_called(this, "_ZN7S3262C64v131Ev");}
void  S3262C6 ::v132(){vfunc_called(this, "_ZN7S3262C64v132Ev");}
S3262C6 ::~S3262C6(){ note_dtor("S3262C6", this);} // tgen
S3262C6 ::S3262C6(){ note_ctor("S3262C6", this);} // tgen

static void Test_S3262C6()
{
  extern Class_Descriptor cd_S3262C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3262C6, buf);
    S3262C6 *dp, &lv = *(dp=new (buf) S3262C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3262C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3262C6)");
    test_class_info(&lv, &cd_S3262C6);
    dp->~S3262C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3262C6(Test_S3262C6, "S3262C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3262C6C1Ev();
extern void _ZN7S3262C6D1Ev();
Name_Map name_map_S3262C6[] = {
  NSPAIR(_ZN7S3262C6C1Ev),
  NSPAIR(_ZN7S3262C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3262C6[];
extern void _ZN7S3262C64v124Ev();
extern void _ZN7S3262C64v125Ev();
extern void _ZN7S3262C64v126Ev();
extern void _ZN7S3262C64v127Ev();
extern void _ZN7S3262C64v128Ev();
extern void _ZN7S3262C64v129Ev();
extern void _ZN7S3262C64v130Ev();
extern void _ZN7S3262C64v131Ev();
extern void _ZN7S3262C64v132Ev();
static  VTBL_ENTRY vtc_S3262C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3262C6[0]),
  (VTBL_ENTRY)&_ZN7S3262C64v124Ev,
  (VTBL_ENTRY)&_ZN7S3262C64v125Ev,
  (VTBL_ENTRY)&_ZN7S3262C64v126Ev,
  (VTBL_ENTRY)&_ZN7S3262C64v127Ev,
  (VTBL_ENTRY)&_ZN7S3262C64v128Ev,
  (VTBL_ENTRY)&_ZN7S3262C64v129Ev,
  (VTBL_ENTRY)&_ZN7S3262C64v130Ev,
  (VTBL_ENTRY)&_ZN7S3262C64v131Ev,
  (VTBL_ENTRY)&_ZN7S3262C64v132Ev,
};
extern VTBL_ENTRY _ZTI7S3262C6[];
extern  VTBL_ENTRY _ZTV7S3262C6[];
Class_Descriptor cd_S3262C6 = {  "S3262C6", // class name
  0,0,//no base classes
  &(vtc_S3262C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3262C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3262C6),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3262C2  : S3262C3 , S3262C5 , S3262C6 {
  void *s3262c2f0;
  ::S79C39_nt s3262c2f1;
  unsigned int s3262c2f2:1;
  unsigned int s3262c2f3:1;
  unsigned int s3262c2f4:1;
  unsigned int s3262c2f5:1;
  virtual  ~S3262C2(); // _ZN7S3262C2D1Ev
  virtual void  v133(); // _ZN7S3262C24v133Ev
  virtual void  v134(); // _ZN7S3262C24v134Ev
  virtual void  v135(); // _ZN7S3262C24v135Ev
  virtual void  v136(); // _ZN7S3262C24v136Ev
  virtual void  v137(); // _ZN7S3262C24v137Ev
  virtual void  v138(); // _ZN7S3262C24v138Ev
  virtual void  v139(); // _ZN7S3262C24v139Ev
  virtual void  v140(); // _ZN7S3262C24v140Ev
  virtual void  v141(); // _ZN7S3262C24v141Ev
  virtual void  v142(); // _ZN7S3262C24v142Ev
  virtual void  v143(); // _ZN7S3262C24v143Ev
  virtual void  v144(); // _ZN7S3262C24v144Ev
  virtual void  v145(); // _ZN7S3262C24v145Ev
  virtual void  v146(); // _ZN7S3262C24v146Ev
  virtual void  v147(); // _ZN7S3262C24v147Ev
  virtual void  v148(); // _ZN7S3262C24v148Ev
  virtual void  v149(); // _ZN7S3262C24v149Ev
  virtual void  v150(); // _ZN7S3262C24v150Ev
  virtual void  v151(); // _ZN7S3262C24v151Ev
  virtual void  v152(); // _ZN7S3262C24v152Ev
  virtual void  v153(); // _ZN7S3262C24v153Ev
  virtual void  v154(); // _ZN7S3262C24v154Ev
  virtual void  v155(); // _ZN7S3262C24v155Ev
  virtual void  v156(); // _ZN7S3262C24v156Ev
  S3262C2(); // tgen
};
//SIG(-1 S3262C2) C1{ BC2{ vd v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} BC4{ v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104} BC5{ v105 v106 v107 v108 v109 v110 v111 v112 v113} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 Fp FC6{ BC7{ BC8{ BC9{ m Fp Fi[2]}}}} Fi:1 Fi:1 Fi:1 Fi:1}


 S3262C2 ::~S3262C2(){ note_dtor("S3262C2", this);}
void  S3262C2 ::v133(){vfunc_called(this, "_ZN7S3262C24v133Ev");}
void  S3262C2 ::v134(){vfunc_called(this, "_ZN7S3262C24v134Ev");}
void  S3262C2 ::v135(){vfunc_called(this, "_ZN7S3262C24v135Ev");}
void  S3262C2 ::v136(){vfunc_called(this, "_ZN7S3262C24v136Ev");}
void  S3262C2 ::v137(){vfunc_called(this, "_ZN7S3262C24v137Ev");}
void  S3262C2 ::v138(){vfunc_called(this, "_ZN7S3262C24v138Ev");}
void  S3262C2 ::v139(){vfunc_called(this, "_ZN7S3262C24v139Ev");}
void  S3262C2 ::v140(){vfunc_called(this, "_ZN7S3262C24v140Ev");}
void  S3262C2 ::v141(){vfunc_called(this, "_ZN7S3262C24v141Ev");}
void  S3262C2 ::v142(){vfunc_called(this, "_ZN7S3262C24v142Ev");}
void  S3262C2 ::v143(){vfunc_called(this, "_ZN7S3262C24v143Ev");}
void  S3262C2 ::v144(){vfunc_called(this, "_ZN7S3262C24v144Ev");}
void  S3262C2 ::v145(){vfunc_called(this, "_ZN7S3262C24v145Ev");}
void  S3262C2 ::v146(){vfunc_called(this, "_ZN7S3262C24v146Ev");}
void  S3262C2 ::v147(){vfunc_called(this, "_ZN7S3262C24v147Ev");}
void  S3262C2 ::v148(){vfunc_called(this, "_ZN7S3262C24v148Ev");}
void  S3262C2 ::v149(){vfunc_called(this, "_ZN7S3262C24v149Ev");}
void  S3262C2 ::v150(){vfunc_called(this, "_ZN7S3262C24v150Ev");}
void  S3262C2 ::v151(){vfunc_called(this, "_ZN7S3262C24v151Ev");}
void  S3262C2 ::v152(){vfunc_called(this, "_ZN7S3262C24v152Ev");}
void  S3262C2 ::v153(){vfunc_called(this, "_ZN7S3262C24v153Ev");}
void  S3262C2 ::v154(){vfunc_called(this, "_ZN7S3262C24v154Ev");}
void  S3262C2 ::v155(){vfunc_called(this, "_ZN7S3262C24v155Ev");}
void  S3262C2 ::v156(){vfunc_called(this, "_ZN7S3262C24v156Ev");}
S3262C2 ::S3262C2(){ note_ctor("S3262C2", this);} // tgen

static void Test_S3262C2()
{
  extern Class_Descriptor cd_S3262C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,23)];
    init_test(&cd_S3262C2, buf);
    S3262C2 *dp, &lv = *(dp=new (buf) S3262C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,88), "sizeof(S3262C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3262C2)");
    check_base_class_offset(lv, (S3262C3*), 0, "S3262C2");
    check_base_class_offset(lv, (S3262C5*), ABISELECT(96,60), "S3262C2");
    check_base_class_offset(lv, (S3262C6*), ABISELECT(104,64), "S3262C2");
    check_field_offset(lv, s3262c2f0, ABISELECT(112,68), "S3262C2.s3262c2f0");
    check_field_offset(lv, s3262c2f1, ABISELECT(120,72), "S3262C2.s3262c2f1");
    set_bf_and_test(lv, s3262c2f2, ABISELECT(136,84), 0, 1, 1, "S3262C2");
    set_bf_and_test(lv, s3262c2f3, ABISELECT(136,84), 1, 1, 1, "S3262C2");
    set_bf_and_test(lv, s3262c2f4, ABISELECT(136,84), 2, 1, 1, "S3262C2");
    set_bf_and_test(lv, s3262c2f5, ABISELECT(136,84), 3, 1, 1, "S3262C2");
    test_class_info(&lv, &cd_S3262C2);
    dp->~S3262C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3262C2(Test_S3262C2, "S3262C2", ABISELECT(144,88));

#else // __cplusplus

extern void _ZN7S3262C2C1Ev();
extern void _ZN7S3262C2D1Ev();
Name_Map name_map_S3262C2[] = {
  NSPAIR(_ZN7S3262C2C1Ev),
  NSPAIR(_ZN7S3262C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3262C3;
extern VTBL_ENTRY _ZTI7S3262C3[];
extern  VTBL_ENTRY _ZTV7S3262C3[];
extern Class_Descriptor cd_S3262C5;
extern VTBL_ENTRY _ZTI7S3262C5[];
extern  VTBL_ENTRY _ZTV7S3262C5[];
extern Class_Descriptor cd_S3262C6;
extern VTBL_ENTRY _ZTI7S3262C6[];
extern  VTBL_ENTRY _ZTV7S3262C6[];
static Base_Class bases_S3262C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3262C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3262C5,    ABISELECT(96,60), //bcp->offset
    92, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3262C6,    ABISELECT(104,64), //bcp->offset
    110, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3262C2[];
extern void _ZN7S3262C2D1Ev();
extern void _ZN7S3262C2D0Ev();
extern void _ZN7S3262C33v44Ev();
extern void _ZN7S3262C33v45Ev();
extern void _ZN7S3262C33v46Ev();
extern void _ZN7S3262C33v47Ev();
extern void _ZN7S3262C33v48Ev();
extern void _ZN7S3262C33v49Ev();
extern void _ZN7S3262C33v50Ev();
extern void _ZN7S3262C33v51Ev();
extern void _ZN7S3262C33v52Ev();
extern void _ZN7S3262C33v53Ev();
extern void _ZN7S3262C33v54Ev();
extern void _ZN7S3262C33v55Ev();
extern void _ZN7S3262C33v56Ev();
extern void _ZN7S3262C33v57Ev();
extern void _ZN7S3262C33v58Ev();
extern void _ZN7S3262C33v59Ev();
extern void _ZN7S3262C33v60Ev();
extern void _ZN7S3262C33v61Ev();
extern void _ZN7S3262C33v62Ev();
extern void _ZN7S3262C33v63Ev();
extern void _ZN7S3262C33v64Ev();
extern void _ZN7S3262C33v65Ev();
extern void _ZN7S3262C33v66Ev();
extern void _ZN7S3262C33v67Ev();
extern void _ZN7S3262C33v68Ev();
extern void _ZN7S3262C33v69Ev();
extern void _ZN7S3262C33v70Ev();
extern void _ZN7S3262C33v71Ev();
extern void _ZN7S3262C33v72Ev();
extern void _ZN7S3262C33v73Ev();
extern void _ZN7S3262C33v74Ev();
extern void _ZN7S3262C33v75Ev();
extern void _ZN7S3262C33v76Ev();
extern void _ZN7S3262C33v77Ev();
extern void _ZN7S3262C33v78Ev();
extern void _ZN7S3262C33v79Ev();
extern void _ZN7S3262C33v80Ev();
extern void _ZN7S3262C33v81Ev();
extern void _ZN7S3262C33v82Ev();
extern void _ZN7S3262C33v83Ev();
extern void _ZN7S3262C33v84Ev();
extern void _ZN7S3262C33v85Ev();
extern void _ZN7S3262C33v86Ev();
extern void _ZN7S3262C33v87Ev();
extern void _ZN7S3262C33v88Ev();
extern void _ZN7S3262C33v89Ev();
extern void _ZN7S3262C33v90Ev();
extern void _ZN7S3262C33v91Ev();
extern void _ZN7S3262C33v92Ev();
extern void _ZN7S3262C33v93Ev();
extern void _ZN7S3262C33v94Ev();
extern void _ZN7S3262C33v95Ev();
extern void _ZN7S3262C33v96Ev();
extern void _ZN7S3262C33v97Ev();
extern void _ZN7S3262C33v98Ev();
extern void _ZN7S3262C33v99Ev();
extern void _ZN7S3262C34v100Ev();
extern void _ZN7S3262C34v101Ev();
extern void _ZN7S3262C34v102Ev();
extern void _ZN7S3262C34v103Ev();
extern void _ZN7S3262C34v104Ev();
extern void _ZN7S3262C34v105Ev();
extern void _ZN7S3262C34v106Ev();
extern void _ZN7S3262C34v107Ev();
extern void _ZN7S3262C24v133Ev();
extern void _ZN7S3262C24v134Ev();
extern void _ZN7S3262C24v135Ev();
extern void _ZN7S3262C24v136Ev();
extern void _ZN7S3262C24v137Ev();
extern void _ZN7S3262C24v138Ev();
extern void _ZN7S3262C24v139Ev();
extern void _ZN7S3262C24v140Ev();
extern void _ZN7S3262C24v141Ev();
extern void _ZN7S3262C24v142Ev();
extern void _ZN7S3262C24v143Ev();
extern void _ZN7S3262C24v144Ev();
extern void _ZN7S3262C24v145Ev();
extern void _ZN7S3262C24v146Ev();
extern void _ZN7S3262C24v147Ev();
extern void _ZN7S3262C24v148Ev();
extern void _ZN7S3262C24v149Ev();
extern void _ZN7S3262C24v150Ev();
extern void _ZN7S3262C24v151Ev();
extern void _ZN7S3262C24v152Ev();
extern void _ZN7S3262C24v153Ev();
extern void _ZN7S3262C24v154Ev();
extern void _ZN7S3262C24v155Ev();
extern void _ZN7S3262C24v156Ev();
extern void _ZN7S3262C54v108Ev();
extern void _ZN7S3262C54v109Ev();
extern void _ZN7S3262C54v110Ev();
extern void _ZN7S3262C54v111Ev();
extern void _ZN7S3262C54v112Ev();
extern void _ZN7S3262C54v113Ev();
extern void _ZN7S3262C54v114Ev();
extern void _ZN7S3262C54v115Ev();
extern void _ZN7S3262C54v116Ev();
extern void _ZN7S3262C54v117Ev();
extern void _ZN7S3262C54v118Ev();
extern void _ZN7S3262C54v119Ev();
extern void _ZN7S3262C54v120Ev();
extern void _ZN7S3262C54v121Ev();
extern void _ZN7S3262C54v122Ev();
extern void _ZN7S3262C54v123Ev();
extern void _ZN7S3262C64v124Ev();
extern void _ZN7S3262C64v125Ev();
extern void _ZN7S3262C64v126Ev();
extern void _ZN7S3262C64v127Ev();
extern void _ZN7S3262C64v128Ev();
extern void _ZN7S3262C64v129Ev();
extern void _ZN7S3262C64v130Ev();
extern void _ZN7S3262C64v131Ev();
extern void _ZN7S3262C64v132Ev();
static  VTBL_ENTRY vtc_S3262C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3262C2[0]),
  (VTBL_ENTRY)&_ZN7S3262C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3262C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v68Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v69Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v70Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v71Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v72Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v73Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v74Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v75Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v76Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v77Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v78Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v79Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v80Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v81Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v82Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v83Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v84Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v85Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v86Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v87Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v88Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v89Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v90Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v91Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v92Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v93Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v94Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v95Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v96Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v97Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v98Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v99Ev,
  (VTBL_ENTRY)&_ZN7S3262C34v100Ev,
  (VTBL_ENTRY)&_ZN7S3262C34v101Ev,
  (VTBL_ENTRY)&_ZN7S3262C34v102Ev,
  (VTBL_ENTRY)&_ZN7S3262C34v103Ev,
  (VTBL_ENTRY)&_ZN7S3262C34v104Ev,
  (VTBL_ENTRY)&_ZN7S3262C34v105Ev,
  (VTBL_ENTRY)&_ZN7S3262C34v106Ev,
  (VTBL_ENTRY)&_ZN7S3262C34v107Ev,
  (VTBL_ENTRY)&_ZN7S3262C24v133Ev,
  (VTBL_ENTRY)&_ZN7S3262C24v134Ev,
  (VTBL_ENTRY)&_ZN7S3262C24v135Ev,
  (VTBL_ENTRY)&_ZN7S3262C24v136Ev,
  (VTBL_ENTRY)&_ZN7S3262C24v137Ev,
  (VTBL_ENTRY)&_ZN7S3262C24v138Ev,
  (VTBL_ENTRY)&_ZN7S3262C24v139Ev,
  (VTBL_ENTRY)&_ZN7S3262C24v140Ev,
  (VTBL_ENTRY)&_ZN7S3262C24v141Ev,
  (VTBL_ENTRY)&_ZN7S3262C24v142Ev,
  (VTBL_ENTRY)&_ZN7S3262C24v143Ev,
  (VTBL_ENTRY)&_ZN7S3262C24v144Ev,
  (VTBL_ENTRY)&_ZN7S3262C24v145Ev,
  (VTBL_ENTRY)&_ZN7S3262C24v146Ev,
  (VTBL_ENTRY)&_ZN7S3262C24v147Ev,
  (VTBL_ENTRY)&_ZN7S3262C24v148Ev,
  (VTBL_ENTRY)&_ZN7S3262C24v149Ev,
  (VTBL_ENTRY)&_ZN7S3262C24v150Ev,
  (VTBL_ENTRY)&_ZN7S3262C24v151Ev,
  (VTBL_ENTRY)&_ZN7S3262C24v152Ev,
  (VTBL_ENTRY)&_ZN7S3262C24v153Ev,
  (VTBL_ENTRY)&_ZN7S3262C24v154Ev,
  (VTBL_ENTRY)&_ZN7S3262C24v155Ev,
  (VTBL_ENTRY)&_ZN7S3262C24v156Ev,
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S3262C2[0]),
  (VTBL_ENTRY)&_ZN7S3262C54v108Ev,
  (VTBL_ENTRY)&_ZN7S3262C54v109Ev,
  (VTBL_ENTRY)&_ZN7S3262C54v110Ev,
  (VTBL_ENTRY)&_ZN7S3262C54v111Ev,
  (VTBL_ENTRY)&_ZN7S3262C54v112Ev,
  (VTBL_ENTRY)&_ZN7S3262C54v113Ev,
  (VTBL_ENTRY)&_ZN7S3262C54v114Ev,
  (VTBL_ENTRY)&_ZN7S3262C54v115Ev,
  (VTBL_ENTRY)&_ZN7S3262C54v116Ev,
  (VTBL_ENTRY)&_ZN7S3262C54v117Ev,
  (VTBL_ENTRY)&_ZN7S3262C54v118Ev,
  (VTBL_ENTRY)&_ZN7S3262C54v119Ev,
  (VTBL_ENTRY)&_ZN7S3262C54v120Ev,
  (VTBL_ENTRY)&_ZN7S3262C54v121Ev,
  (VTBL_ENTRY)&_ZN7S3262C54v122Ev,
  (VTBL_ENTRY)&_ZN7S3262C54v123Ev,
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S3262C2[0]),
  (VTBL_ENTRY)&_ZN7S3262C64v124Ev,
  (VTBL_ENTRY)&_ZN7S3262C64v125Ev,
  (VTBL_ENTRY)&_ZN7S3262C64v126Ev,
  (VTBL_ENTRY)&_ZN7S3262C64v127Ev,
  (VTBL_ENTRY)&_ZN7S3262C64v128Ev,
  (VTBL_ENTRY)&_ZN7S3262C64v129Ev,
  (VTBL_ENTRY)&_ZN7S3262C64v130Ev,
  (VTBL_ENTRY)&_ZN7S3262C64v131Ev,
  (VTBL_ENTRY)&_ZN7S3262C64v132Ev,
};
extern VTBL_ENTRY _ZTI7S3262C2[];
extern  VTBL_ENTRY _ZTV7S3262C2[];
Class_Descriptor cd_S3262C2 = {  "S3262C2", // class name
  bases_S3262C2, 3,
  &(vtc_S3262C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,88), // object size
  NSPAIRA(_ZTI7S3262C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S3262C2),121, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3262C11_nt  {
  ::S79C44 s3262c11f0;
  char s3262c11f1;
  void  mf3262c11(); // _ZN11S3262C11_nt9mf3262c11Ev
};
//SIG(-1 S3262C11_nt) C1{ m FC2{ BC3{ BC4{ m Fp Fi[2]}}} Fc}


void  S3262C11_nt ::mf3262c11(){}

//skip512 S3262C11_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3262C14_nt  {
  ::S79C40 s3262c14f0;
  void  mf3262c14(); // _ZN11S3262C14_nt9mf3262c14Ev
};
//SIG(-1 S3262C14_nt) C1{ m FC2{ BC3{ BC4{ m Fp Fi[2]}}}}


void  S3262C14_nt ::mf3262c14(){}

//skip512 S3262C14_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3262C1  : S3262C2 {
  ::S3262C11_nt s3262c1f0;
  ::S3262C11_nt s3262c1f1;
  ::S3262C14_nt s3262c1f2;
  ::S79C8_nt s3262c1f3;
  int s3262c1f4[2];
  unsigned int s3262c1f5:1;
  unsigned int s3262c1f6:1;
  unsigned int s3262c1f7:1;
  unsigned int s3262c1f8:1;
  unsigned int s3262c1f9:1;
  unsigned int s3262c1f10:1;
  char s3262c1f11;
  char s3262c1f12;
  virtual  ~S3262C1(); // _ZN7S3262C1D1Ev
  virtual void  v1(); // _ZN7S3262C12v1Ev
  virtual void  v2(); // _ZN7S3262C12v2Ev
  virtual void  v3(); // _ZN7S3262C12v3Ev
  virtual void  v4(); // _ZN7S3262C12v4Ev
  virtual void  v5(); // _ZN7S3262C12v5Ev
  virtual void  v6(); // _ZN7S3262C12v6Ev
  virtual void  v7(); // _ZN7S3262C12v7Ev
  virtual void  v8(); // _ZN7S3262C12v8Ev
  virtual void  v9(); // _ZN7S3262C12v9Ev
  virtual void  v10(); // _ZN7S3262C13v10Ev
  virtual void  v11(); // _ZN7S3262C13v11Ev
  virtual void  v12(); // _ZN7S3262C13v12Ev
  virtual void  v13(); // _ZN7S3262C13v13Ev
  virtual void  v14(); // _ZN7S3262C13v14Ev
  virtual void  v15(); // _ZN7S3262C13v15Ev
  virtual void  v16(); // _ZN7S3262C13v16Ev
  virtual void  v17(); // _ZN7S3262C13v17Ev
  virtual void  v18(); // _ZN7S3262C13v18Ev
  virtual void  v19(); // _ZN7S3262C13v19Ev
  virtual void  v20(); // _ZN7S3262C13v20Ev
  virtual void  v21(); // _ZN7S3262C13v21Ev
  virtual void  v22(); // _ZN7S3262C13v22Ev
  virtual void  v23(); // _ZN7S3262C13v23Ev
  virtual void  v24(); // _ZN7S3262C13v24Ev
  virtual void  v25(); // _ZN7S3262C13v25Ev
  virtual void  v26(); // _ZN7S3262C13v26Ev
  virtual void  v27(); // _ZN7S3262C13v27Ev
  virtual void  v28(); // _ZN7S3262C13v28Ev
  virtual void  v29(); // _ZN7S3262C13v29Ev
  virtual void  v30(); // _ZN7S3262C13v30Ev
  virtual void  v31(); // _ZN7S3262C13v31Ev
  virtual void  v32(); // _ZN7S3262C13v32Ev
  virtual void  v33(); // _ZN7S3262C13v33Ev
  virtual void  v34(); // _ZN7S3262C13v34Ev
  virtual void  v35(); // _ZN7S3262C13v35Ev
  virtual void  v36(); // _ZN7S3262C13v36Ev
  virtual void  v37(); // _ZN7S3262C13v37Ev
  virtual void  v38(); // _ZN7S3262C13v38Ev
  virtual void  v39(); // _ZN7S3262C13v39Ev
  virtual void  v40(); // _ZN7S3262C13v40Ev
  virtual void  v41(); // _ZN7S3262C13v41Ev
  virtual void  v42(); // _ZN7S3262C13v42Ev
  virtual void  v43(); // _ZN7S3262C13v43Ev
  S3262C1(); // tgen
};
//SIG(1 S3262C1) C1{ BC2{ BC3{ vd v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} BC5{ v108 v109 v110 v111 v112 v113 v114 v115 v116 v117 v118 v119 v120 v121 v122 v123} BC6{ v124 v125 v126 v127 v128 v129 v130 v131 v132} vd v133 v134 v135 v136 v137 v138 v139 v140 v141 v142 v143 v144 v145 v146 v147 v148 v149 v150 v151 v152 v153 v154 v155 v156 Fp FC7{ BC8{ BC9{ BC10{ m Fp Fi[2]}}}} Fi:1 Fi:1 Fi:1 Fi:1} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 FC11{ m FC12{ BC13{ BC10}} Fc} FC11 FC14{ m FC8} FC4 Fi[2] Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fc[2]}


 S3262C1 ::~S3262C1(){ note_dtor("S3262C1", this);}
void  S3262C1 ::v1(){vfunc_called(this, "_ZN7S3262C12v1Ev");}
void  S3262C1 ::v2(){vfunc_called(this, "_ZN7S3262C12v2Ev");}
void  S3262C1 ::v3(){vfunc_called(this, "_ZN7S3262C12v3Ev");}
void  S3262C1 ::v4(){vfunc_called(this, "_ZN7S3262C12v4Ev");}
void  S3262C1 ::v5(){vfunc_called(this, "_ZN7S3262C12v5Ev");}
void  S3262C1 ::v6(){vfunc_called(this, "_ZN7S3262C12v6Ev");}
void  S3262C1 ::v7(){vfunc_called(this, "_ZN7S3262C12v7Ev");}
void  S3262C1 ::v8(){vfunc_called(this, "_ZN7S3262C12v8Ev");}
void  S3262C1 ::v9(){vfunc_called(this, "_ZN7S3262C12v9Ev");}
void  S3262C1 ::v10(){vfunc_called(this, "_ZN7S3262C13v10Ev");}
void  S3262C1 ::v11(){vfunc_called(this, "_ZN7S3262C13v11Ev");}
void  S3262C1 ::v12(){vfunc_called(this, "_ZN7S3262C13v12Ev");}
void  S3262C1 ::v13(){vfunc_called(this, "_ZN7S3262C13v13Ev");}
void  S3262C1 ::v14(){vfunc_called(this, "_ZN7S3262C13v14Ev");}
void  S3262C1 ::v15(){vfunc_called(this, "_ZN7S3262C13v15Ev");}
void  S3262C1 ::v16(){vfunc_called(this, "_ZN7S3262C13v16Ev");}
void  S3262C1 ::v17(){vfunc_called(this, "_ZN7S3262C13v17Ev");}
void  S3262C1 ::v18(){vfunc_called(this, "_ZN7S3262C13v18Ev");}
void  S3262C1 ::v19(){vfunc_called(this, "_ZN7S3262C13v19Ev");}
void  S3262C1 ::v20(){vfunc_called(this, "_ZN7S3262C13v20Ev");}
void  S3262C1 ::v21(){vfunc_called(this, "_ZN7S3262C13v21Ev");}
void  S3262C1 ::v22(){vfunc_called(this, "_ZN7S3262C13v22Ev");}
void  S3262C1 ::v23(){vfunc_called(this, "_ZN7S3262C13v23Ev");}
void  S3262C1 ::v24(){vfunc_called(this, "_ZN7S3262C13v24Ev");}
void  S3262C1 ::v25(){vfunc_called(this, "_ZN7S3262C13v25Ev");}
void  S3262C1 ::v26(){vfunc_called(this, "_ZN7S3262C13v26Ev");}
void  S3262C1 ::v27(){vfunc_called(this, "_ZN7S3262C13v27Ev");}
void  S3262C1 ::v28(){vfunc_called(this, "_ZN7S3262C13v28Ev");}
void  S3262C1 ::v29(){vfunc_called(this, "_ZN7S3262C13v29Ev");}
void  S3262C1 ::v30(){vfunc_called(this, "_ZN7S3262C13v30Ev");}
void  S3262C1 ::v31(){vfunc_called(this, "_ZN7S3262C13v31Ev");}
void  S3262C1 ::v32(){vfunc_called(this, "_ZN7S3262C13v32Ev");}
void  S3262C1 ::v33(){vfunc_called(this, "_ZN7S3262C13v33Ev");}
void  S3262C1 ::v34(){vfunc_called(this, "_ZN7S3262C13v34Ev");}
void  S3262C1 ::v35(){vfunc_called(this, "_ZN7S3262C13v35Ev");}
void  S3262C1 ::v36(){vfunc_called(this, "_ZN7S3262C13v36Ev");}
void  S3262C1 ::v37(){vfunc_called(this, "_ZN7S3262C13v37Ev");}
void  S3262C1 ::v38(){vfunc_called(this, "_ZN7S3262C13v38Ev");}
void  S3262C1 ::v39(){vfunc_called(this, "_ZN7S3262C13v39Ev");}
void  S3262C1 ::v40(){vfunc_called(this, "_ZN7S3262C13v40Ev");}
void  S3262C1 ::v41(){vfunc_called(this, "_ZN7S3262C13v41Ev");}
void  S3262C1 ::v42(){vfunc_called(this, "_ZN7S3262C13v42Ev");}
void  S3262C1 ::v43(){vfunc_called(this, "_ZN7S3262C13v43Ev");}
S3262C1 ::S3262C1(){ note_ctor("S3262C1", this);} // tgen

static void Test_S3262C1()
{
  extern Class_Descriptor cd_S3262C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(30,39)];
    init_test(&cd_S3262C1, buf);
    S3262C1 *dp, &lv = *(dp=new (buf) S3262C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(232,152), "sizeof(S3262C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3262C1)");
    check_base_class_offset(lv, (S3262C3*)(S3262C2*), 0, "S3262C1");
    check_base_class_offset(lv, (S3262C5*)(S3262C2*), ABISELECT(96,60), "S3262C1");
    check_base_class_offset(lv, (S3262C6*)(S3262C2*), ABISELECT(104,64), "S3262C1");
    check_base_class_offset(lv, (S3262C2*), 0, "S3262C1");
    check_field_offset(lv, s3262c1f0, ABISELECT(144,88), "S3262C1.s3262c1f0");
    check_field_offset(lv, s3262c1f1, ABISELECT(168,104), "S3262C1.s3262c1f1");
    check_field_offset(lv, s3262c1f2, ABISELECT(192,120), "S3262C1.s3262c1f2");
    check_field_offset(lv, s3262c1f3, ABISELECT(208,132), "S3262C1.s3262c1f3");
    check_field_offset(lv, s3262c1f4, ABISELECT(216,140), "S3262C1.s3262c1f4");
    set_bf_and_test(lv, s3262c1f5, ABISELECT(224,148), 0, 1, 1, "S3262C1");
    set_bf_and_test(lv, s3262c1f6, ABISELECT(224,148), 1, 1, 1, "S3262C1");
    set_bf_and_test(lv, s3262c1f7, ABISELECT(224,148), 2, 1, 1, "S3262C1");
    set_bf_and_test(lv, s3262c1f8, ABISELECT(224,148), 3, 1, 1, "S3262C1");
    set_bf_and_test(lv, s3262c1f9, ABISELECT(224,148), 4, 1, 1, "S3262C1");
    set_bf_and_test(lv, s3262c1f10, ABISELECT(224,148), 5, 1, 1, "S3262C1");
    check_field_offset(lv, s3262c1f11, ABISELECT(225,149), "S3262C1.s3262c1f11");
    check_field_offset(lv, s3262c1f12, ABISELECT(226,150), "S3262C1.s3262c1f12");
    test_class_info(&lv, &cd_S3262C1);
    dp->~S3262C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3262C1(Test_S3262C1, "S3262C1", ABISELECT(232,152));

#else // __cplusplus

extern void _ZN7S3262C1C1Ev();
extern void _ZN7S3262C1D1Ev();
Name_Map name_map_S3262C1[] = {
  NSPAIR(_ZN7S3262C1C1Ev),
  NSPAIR(_ZN7S3262C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3262C3;
extern VTBL_ENTRY _ZTI7S3262C3[];
extern  VTBL_ENTRY _ZTV7S3262C3[];
extern Class_Descriptor cd_S3262C5;
extern VTBL_ENTRY _ZTI7S3262C5[];
extern  VTBL_ENTRY _ZTV7S3262C5[];
extern Class_Descriptor cd_S3262C6;
extern VTBL_ENTRY _ZTI7S3262C6[];
extern  VTBL_ENTRY _ZTV7S3262C6[];
extern Class_Descriptor cd_S3262C2;
extern VTBL_ENTRY _ZTI7S3262C2[];
extern  VTBL_ENTRY _ZTV7S3262C2[];
static Base_Class bases_S3262C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3262C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S3262C5,    ABISELECT(96,60), //bcp->offset
    135, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S3262C6,    ABISELECT(104,64), //bcp->offset
    153, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S3262C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3262C1[];
extern void _ZN7S3262C1D1Ev();
extern void _ZN7S3262C1D0Ev();
extern void _ZN7S3262C33v44Ev();
extern void _ZN7S3262C33v45Ev();
extern void _ZN7S3262C33v46Ev();
extern void _ZN7S3262C33v47Ev();
extern void _ZN7S3262C33v48Ev();
extern void _ZN7S3262C33v49Ev();
extern void _ZN7S3262C33v50Ev();
extern void _ZN7S3262C33v51Ev();
extern void _ZN7S3262C33v52Ev();
extern void _ZN7S3262C33v53Ev();
extern void _ZN7S3262C33v54Ev();
extern void _ZN7S3262C33v55Ev();
extern void _ZN7S3262C33v56Ev();
extern void _ZN7S3262C33v57Ev();
extern void _ZN7S3262C33v58Ev();
extern void _ZN7S3262C33v59Ev();
extern void _ZN7S3262C33v60Ev();
extern void _ZN7S3262C33v61Ev();
extern void _ZN7S3262C33v62Ev();
extern void _ZN7S3262C33v63Ev();
extern void _ZN7S3262C33v64Ev();
extern void _ZN7S3262C33v65Ev();
extern void _ZN7S3262C33v66Ev();
extern void _ZN7S3262C33v67Ev();
extern void _ZN7S3262C33v68Ev();
extern void _ZN7S3262C33v69Ev();
extern void _ZN7S3262C33v70Ev();
extern void _ZN7S3262C33v71Ev();
extern void _ZN7S3262C33v72Ev();
extern void _ZN7S3262C33v73Ev();
extern void _ZN7S3262C33v74Ev();
extern void _ZN7S3262C33v75Ev();
extern void _ZN7S3262C33v76Ev();
extern void _ZN7S3262C33v77Ev();
extern void _ZN7S3262C33v78Ev();
extern void _ZN7S3262C33v79Ev();
extern void _ZN7S3262C33v80Ev();
extern void _ZN7S3262C33v81Ev();
extern void _ZN7S3262C33v82Ev();
extern void _ZN7S3262C33v83Ev();
extern void _ZN7S3262C33v84Ev();
extern void _ZN7S3262C33v85Ev();
extern void _ZN7S3262C33v86Ev();
extern void _ZN7S3262C33v87Ev();
extern void _ZN7S3262C33v88Ev();
extern void _ZN7S3262C33v89Ev();
extern void _ZN7S3262C33v90Ev();
extern void _ZN7S3262C33v91Ev();
extern void _ZN7S3262C33v92Ev();
extern void _ZN7S3262C33v93Ev();
extern void _ZN7S3262C33v94Ev();
extern void _ZN7S3262C33v95Ev();
extern void _ZN7S3262C33v96Ev();
extern void _ZN7S3262C33v97Ev();
extern void _ZN7S3262C33v98Ev();
extern void _ZN7S3262C33v99Ev();
extern void _ZN7S3262C34v100Ev();
extern void _ZN7S3262C34v101Ev();
extern void _ZN7S3262C34v102Ev();
extern void _ZN7S3262C34v103Ev();
extern void _ZN7S3262C34v104Ev();
extern void _ZN7S3262C34v105Ev();
extern void _ZN7S3262C34v106Ev();
extern void _ZN7S3262C34v107Ev();
extern void _ZN7S3262C24v133Ev();
extern void _ZN7S3262C24v134Ev();
extern void _ZN7S3262C24v135Ev();
extern void _ZN7S3262C24v136Ev();
extern void _ZN7S3262C24v137Ev();
extern void _ZN7S3262C24v138Ev();
extern void _ZN7S3262C24v139Ev();
extern void _ZN7S3262C24v140Ev();
extern void _ZN7S3262C24v141Ev();
extern void _ZN7S3262C24v142Ev();
extern void _ZN7S3262C24v143Ev();
extern void _ZN7S3262C24v144Ev();
extern void _ZN7S3262C24v145Ev();
extern void _ZN7S3262C24v146Ev();
extern void _ZN7S3262C24v147Ev();
extern void _ZN7S3262C24v148Ev();
extern void _ZN7S3262C24v149Ev();
extern void _ZN7S3262C24v150Ev();
extern void _ZN7S3262C24v151Ev();
extern void _ZN7S3262C24v152Ev();
extern void _ZN7S3262C24v153Ev();
extern void _ZN7S3262C24v154Ev();
extern void _ZN7S3262C24v155Ev();
extern void _ZN7S3262C24v156Ev();
extern void _ZN7S3262C12v1Ev();
extern void _ZN7S3262C12v2Ev();
extern void _ZN7S3262C12v3Ev();
extern void _ZN7S3262C12v4Ev();
extern void _ZN7S3262C12v5Ev();
extern void _ZN7S3262C12v6Ev();
extern void _ZN7S3262C12v7Ev();
extern void _ZN7S3262C12v8Ev();
extern void _ZN7S3262C12v9Ev();
extern void _ZN7S3262C13v10Ev();
extern void _ZN7S3262C13v11Ev();
extern void _ZN7S3262C13v12Ev();
extern void _ZN7S3262C13v13Ev();
extern void _ZN7S3262C13v14Ev();
extern void _ZN7S3262C13v15Ev();
extern void _ZN7S3262C13v16Ev();
extern void _ZN7S3262C13v17Ev();
extern void _ZN7S3262C13v18Ev();
extern void _ZN7S3262C13v19Ev();
extern void _ZN7S3262C13v20Ev();
extern void _ZN7S3262C13v21Ev();
extern void _ZN7S3262C13v22Ev();
extern void _ZN7S3262C13v23Ev();
extern void _ZN7S3262C13v24Ev();
extern void _ZN7S3262C13v25Ev();
extern void _ZN7S3262C13v26Ev();
extern void _ZN7S3262C13v27Ev();
extern void _ZN7S3262C13v28Ev();
extern void _ZN7S3262C13v29Ev();
extern void _ZN7S3262C13v30Ev();
extern void _ZN7S3262C13v31Ev();
extern void _ZN7S3262C13v32Ev();
extern void _ZN7S3262C13v33Ev();
extern void _ZN7S3262C13v34Ev();
extern void _ZN7S3262C13v35Ev();
extern void _ZN7S3262C13v36Ev();
extern void _ZN7S3262C13v37Ev();
extern void _ZN7S3262C13v38Ev();
extern void _ZN7S3262C13v39Ev();
extern void _ZN7S3262C13v40Ev();
extern void _ZN7S3262C13v41Ev();
extern void _ZN7S3262C13v42Ev();
extern void _ZN7S3262C13v43Ev();
extern void _ZN7S3262C54v108Ev();
extern void _ZN7S3262C54v109Ev();
extern void _ZN7S3262C54v110Ev();
extern void _ZN7S3262C54v111Ev();
extern void _ZN7S3262C54v112Ev();
extern void _ZN7S3262C54v113Ev();
extern void _ZN7S3262C54v114Ev();
extern void _ZN7S3262C54v115Ev();
extern void _ZN7S3262C54v116Ev();
extern void _ZN7S3262C54v117Ev();
extern void _ZN7S3262C54v118Ev();
extern void _ZN7S3262C54v119Ev();
extern void _ZN7S3262C54v120Ev();
extern void _ZN7S3262C54v121Ev();
extern void _ZN7S3262C54v122Ev();
extern void _ZN7S3262C54v123Ev();
extern void _ZN7S3262C64v124Ev();
extern void _ZN7S3262C64v125Ev();
extern void _ZN7S3262C64v126Ev();
extern void _ZN7S3262C64v127Ev();
extern void _ZN7S3262C64v128Ev();
extern void _ZN7S3262C64v129Ev();
extern void _ZN7S3262C64v130Ev();
extern void _ZN7S3262C64v131Ev();
extern void _ZN7S3262C64v132Ev();
static  VTBL_ENTRY vtc_S3262C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3262C1[0]),
  (VTBL_ENTRY)&_ZN7S3262C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3262C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v68Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v69Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v70Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v71Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v72Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v73Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v74Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v75Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v76Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v77Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v78Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v79Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v80Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v81Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v82Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v83Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v84Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v85Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v86Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v87Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v88Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v89Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v90Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v91Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v92Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v93Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v94Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v95Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v96Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v97Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v98Ev,
  (VTBL_ENTRY)&_ZN7S3262C33v99Ev,
  (VTBL_ENTRY)&_ZN7S3262C34v100Ev,
  (VTBL_ENTRY)&_ZN7S3262C34v101Ev,
  (VTBL_ENTRY)&_ZN7S3262C34v102Ev,
  (VTBL_ENTRY)&_ZN7S3262C34v103Ev,
  (VTBL_ENTRY)&_ZN7S3262C34v104Ev,
  (VTBL_ENTRY)&_ZN7S3262C34v105Ev,
  (VTBL_ENTRY)&_ZN7S3262C34v106Ev,
  (VTBL_ENTRY)&_ZN7S3262C34v107Ev,
  (VTBL_ENTRY)&_ZN7S3262C24v133Ev,
  (VTBL_ENTRY)&_ZN7S3262C24v134Ev,
  (VTBL_ENTRY)&_ZN7S3262C24v135Ev,
  (VTBL_ENTRY)&_ZN7S3262C24v136Ev,
  (VTBL_ENTRY)&_ZN7S3262C24v137Ev,
  (VTBL_ENTRY)&_ZN7S3262C24v138Ev,
  (VTBL_ENTRY)&_ZN7S3262C24v139Ev,
  (VTBL_ENTRY)&_ZN7S3262C24v140Ev,
  (VTBL_ENTRY)&_ZN7S3262C24v141Ev,
  (VTBL_ENTRY)&_ZN7S3262C24v142Ev,
  (VTBL_ENTRY)&_ZN7S3262C24v143Ev,
  (VTBL_ENTRY)&_ZN7S3262C24v144Ev,
  (VTBL_ENTRY)&_ZN7S3262C24v145Ev,
  (VTBL_ENTRY)&_ZN7S3262C24v146Ev,
  (VTBL_ENTRY)&_ZN7S3262C24v147Ev,
  (VTBL_ENTRY)&_ZN7S3262C24v148Ev,
  (VTBL_ENTRY)&_ZN7S3262C24v149Ev,
  (VTBL_ENTRY)&_ZN7S3262C24v150Ev,
  (VTBL_ENTRY)&_ZN7S3262C24v151Ev,
  (VTBL_ENTRY)&_ZN7S3262C24v152Ev,
  (VTBL_ENTRY)&_ZN7S3262C24v153Ev,
  (VTBL_ENTRY)&_ZN7S3262C24v154Ev,
  (VTBL_ENTRY)&_ZN7S3262C24v155Ev,
  (VTBL_ENTRY)&_ZN7S3262C24v156Ev,
  (VTBL_ENTRY)&_ZN7S3262C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3262C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3262C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3262C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3262C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3262C12v6Ev,
  (VTBL_ENTRY)&_ZN7S3262C12v7Ev,
  (VTBL_ENTRY)&_ZN7S3262C12v8Ev,
  (VTBL_ENTRY)&_ZN7S3262C12v9Ev,
  (VTBL_ENTRY)&_ZN7S3262C13v10Ev,
  (VTBL_ENTRY)&_ZN7S3262C13v11Ev,
  (VTBL_ENTRY)&_ZN7S3262C13v12Ev,
  (VTBL_ENTRY)&_ZN7S3262C13v13Ev,
  (VTBL_ENTRY)&_ZN7S3262C13v14Ev,
  (VTBL_ENTRY)&_ZN7S3262C13v15Ev,
  (VTBL_ENTRY)&_ZN7S3262C13v16Ev,
  (VTBL_ENTRY)&_ZN7S3262C13v17Ev,
  (VTBL_ENTRY)&_ZN7S3262C13v18Ev,
  (VTBL_ENTRY)&_ZN7S3262C13v19Ev,
  (VTBL_ENTRY)&_ZN7S3262C13v20Ev,
  (VTBL_ENTRY)&_ZN7S3262C13v21Ev,
  (VTBL_ENTRY)&_ZN7S3262C13v22Ev,
  (VTBL_ENTRY)&_ZN7S3262C13v23Ev,
  (VTBL_ENTRY)&_ZN7S3262C13v24Ev,
  (VTBL_ENTRY)&_ZN7S3262C13v25Ev,
  (VTBL_ENTRY)&_ZN7S3262C13v26Ev,
  (VTBL_ENTRY)&_ZN7S3262C13v27Ev,
  (VTBL_ENTRY)&_ZN7S3262C13v28Ev,
  (VTBL_ENTRY)&_ZN7S3262C13v29Ev,
  (VTBL_ENTRY)&_ZN7S3262C13v30Ev,
  (VTBL_ENTRY)&_ZN7S3262C13v31Ev,
  (VTBL_ENTRY)&_ZN7S3262C13v32Ev,
  (VTBL_ENTRY)&_ZN7S3262C13v33Ev,
  (VTBL_ENTRY)&_ZN7S3262C13v34Ev,
  (VTBL_ENTRY)&_ZN7S3262C13v35Ev,
  (VTBL_ENTRY)&_ZN7S3262C13v36Ev,
  (VTBL_ENTRY)&_ZN7S3262C13v37Ev,
  (VTBL_ENTRY)&_ZN7S3262C13v38Ev,
  (VTBL_ENTRY)&_ZN7S3262C13v39Ev,
  (VTBL_ENTRY)&_ZN7S3262C13v40Ev,
  (VTBL_ENTRY)&_ZN7S3262C13v41Ev,
  (VTBL_ENTRY)&_ZN7S3262C13v42Ev,
  (VTBL_ENTRY)&_ZN7S3262C13v43Ev,
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S3262C1[0]),
  (VTBL_ENTRY)&_ZN7S3262C54v108Ev,
  (VTBL_ENTRY)&_ZN7S3262C54v109Ev,
  (VTBL_ENTRY)&_ZN7S3262C54v110Ev,
  (VTBL_ENTRY)&_ZN7S3262C54v111Ev,
  (VTBL_ENTRY)&_ZN7S3262C54v112Ev,
  (VTBL_ENTRY)&_ZN7S3262C54v113Ev,
  (VTBL_ENTRY)&_ZN7S3262C54v114Ev,
  (VTBL_ENTRY)&_ZN7S3262C54v115Ev,
  (VTBL_ENTRY)&_ZN7S3262C54v116Ev,
  (VTBL_ENTRY)&_ZN7S3262C54v117Ev,
  (VTBL_ENTRY)&_ZN7S3262C54v118Ev,
  (VTBL_ENTRY)&_ZN7S3262C54v119Ev,
  (VTBL_ENTRY)&_ZN7S3262C54v120Ev,
  (VTBL_ENTRY)&_ZN7S3262C54v121Ev,
  (VTBL_ENTRY)&_ZN7S3262C54v122Ev,
  (VTBL_ENTRY)&_ZN7S3262C54v123Ev,
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S3262C1[0]),
  (VTBL_ENTRY)&_ZN7S3262C64v124Ev,
  (VTBL_ENTRY)&_ZN7S3262C64v125Ev,
  (VTBL_ENTRY)&_ZN7S3262C64v126Ev,
  (VTBL_ENTRY)&_ZN7S3262C64v127Ev,
  (VTBL_ENTRY)&_ZN7S3262C64v128Ev,
  (VTBL_ENTRY)&_ZN7S3262C64v129Ev,
  (VTBL_ENTRY)&_ZN7S3262C64v130Ev,
  (VTBL_ENTRY)&_ZN7S3262C64v131Ev,
  (VTBL_ENTRY)&_ZN7S3262C64v132Ev,
};
extern VTBL_ENTRY _ZTI7S3262C1[];
extern  VTBL_ENTRY _ZTV7S3262C1[];
Class_Descriptor cd_S3262C1 = {  "S3262C1", // class name
  bases_S3262C1, 4,
  &(vtc_S3262C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(232,152), // object size
  NSPAIRA(_ZTI7S3262C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3262C1),164, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  4, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1350C4  {
  int s1350c4f0;
  __tsi64 s1350c4f1;
  void *s1350c4f2[4];
  int s1350c4f3[2];
  void *s1350c4f4;
  ::S79C8_nt s1350c4f5;
  void *s1350c4f6[2];
  virtual  ~S1350C4(); // _ZN7S1350C4D1Ev
  virtual void  v22(); // _ZN7S1350C43v22Ev
  virtual void  v23(); // _ZN7S1350C43v23Ev
  virtual void  v24(); // _ZN7S1350C43v24Ev
  virtual void  v25(); // _ZN7S1350C43v25Ev
  virtual void  v26(); // _ZN7S1350C43v26Ev
  virtual void  v27(); // _ZN7S1350C43v27Ev
  virtual void  v28(); // _ZN7S1350C43v28Ev
  virtual void  v29(); // _ZN7S1350C43v29Ev
  virtual void  v30(); // _ZN7S1350C43v30Ev
  virtual void  v31(); // _ZN7S1350C43v31Ev
  virtual void  v32(); // _ZN7S1350C43v32Ev
  virtual void  v33(); // _ZN7S1350C43v33Ev
  virtual void  v34(); // _ZN7S1350C43v34Ev
  virtual void  v35(); // _ZN7S1350C43v35Ev
  virtual void  v36(); // _ZN7S1350C43v36Ev
  virtual void  v37(); // _ZN7S1350C43v37Ev
  virtual void  v38(); // _ZN7S1350C43v38Ev
  virtual void  v39(); // _ZN7S1350C43v39Ev
  virtual void  v40(); // _ZN7S1350C43v40Ev
  virtual void  v41(); // _ZN7S1350C43v41Ev
  virtual void  v42(); // _ZN7S1350C43v42Ev
  virtual void  v43(); // _ZN7S1350C43v43Ev
  virtual void  v44(); // _ZN7S1350C43v44Ev
  virtual void  v45(); // _ZN7S1350C43v45Ev
  virtual void  v46(); // _ZN7S1350C43v46Ev
  virtual void  v47(); // _ZN7S1350C43v47Ev
  virtual void  v48(); // _ZN7S1350C43v48Ev
  virtual void  v49(); // _ZN7S1350C43v49Ev
  virtual void  v50(); // _ZN7S1350C43v50Ev
  virtual void  v51(); // _ZN7S1350C43v51Ev
  virtual void  v52(); // _ZN7S1350C43v52Ev
  virtual void  v53(); // _ZN7S1350C43v53Ev
  virtual void  v54(); // _ZN7S1350C43v54Ev
  virtual void  v55(); // _ZN7S1350C43v55Ev
  virtual void  v56(); // _ZN7S1350C43v56Ev
  virtual void  v57(); // _ZN7S1350C43v57Ev
  virtual void  v58(); // _ZN7S1350C43v58Ev
  virtual void  v59(); // _ZN7S1350C43v59Ev
  virtual void  v60(); // _ZN7S1350C43v60Ev
  virtual void  v61(); // _ZN7S1350C43v61Ev
  virtual void  v62(); // _ZN7S1350C43v62Ev
  virtual void  v63(); // _ZN7S1350C43v63Ev
  virtual void  v64(); // _ZN7S1350C43v64Ev
  virtual void  v65(); // _ZN7S1350C43v65Ev
  virtual void  v66(); // _ZN7S1350C43v66Ev
  virtual void  v67(); // _ZN7S1350C43v67Ev
  virtual void  v68(); // _ZN7S1350C43v68Ev
  virtual void  v69(); // _ZN7S1350C43v69Ev
  virtual void  v70(); // _ZN7S1350C43v70Ev
  virtual void  v71(); // _ZN7S1350C43v71Ev
  virtual void  v72(); // _ZN7S1350C43v72Ev
  virtual void  v73(); // _ZN7S1350C43v73Ev
  virtual void  v74(); // _ZN7S1350C43v74Ev
  virtual void  v75(); // _ZN7S1350C43v75Ev
  virtual void  v76(); // _ZN7S1350C43v76Ev
  virtual void  v77(); // _ZN7S1350C43v77Ev
  virtual void  v78(); // _ZN7S1350C43v78Ev
  virtual void  v79(); // _ZN7S1350C43v79Ev
  virtual void  v80(); // _ZN7S1350C43v80Ev
  virtual void  v81(); // _ZN7S1350C43v81Ev
  virtual void  v82(); // _ZN7S1350C43v82Ev
  virtual void  v83(); // _ZN7S1350C43v83Ev
  virtual void  v84(); // _ZN7S1350C43v84Ev
  virtual void  v85(); // _ZN7S1350C43v85Ev
  S1350C4(); // tgen
};
//SIG(-1 S1350C4) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 Fi FL Fp[4] Fi[2] Fp FC2{ m Fi[2]} Fp[2]}


 S1350C4 ::~S1350C4(){ note_dtor("S1350C4", this);}
void  S1350C4 ::v22(){vfunc_called(this, "_ZN7S1350C43v22Ev");}
void  S1350C4 ::v23(){vfunc_called(this, "_ZN7S1350C43v23Ev");}
void  S1350C4 ::v24(){vfunc_called(this, "_ZN7S1350C43v24Ev");}
void  S1350C4 ::v25(){vfunc_called(this, "_ZN7S1350C43v25Ev");}
void  S1350C4 ::v26(){vfunc_called(this, "_ZN7S1350C43v26Ev");}
void  S1350C4 ::v27(){vfunc_called(this, "_ZN7S1350C43v27Ev");}
void  S1350C4 ::v28(){vfunc_called(this, "_ZN7S1350C43v28Ev");}
void  S1350C4 ::v29(){vfunc_called(this, "_ZN7S1350C43v29Ev");}
void  S1350C4 ::v30(){vfunc_called(this, "_ZN7S1350C43v30Ev");}
void  S1350C4 ::v31(){vfunc_called(this, "_ZN7S1350C43v31Ev");}
void  S1350C4 ::v32(){vfunc_called(this, "_ZN7S1350C43v32Ev");}
void  S1350C4 ::v33(){vfunc_called(this, "_ZN7S1350C43v33Ev");}
void  S1350C4 ::v34(){vfunc_called(this, "_ZN7S1350C43v34Ev");}
void  S1350C4 ::v35(){vfunc_called(this, "_ZN7S1350C43v35Ev");}
void  S1350C4 ::v36(){vfunc_called(this, "_ZN7S1350C43v36Ev");}
void  S1350C4 ::v37(){vfunc_called(this, "_ZN7S1350C43v37Ev");}
void  S1350C4 ::v38(){vfunc_called(this, "_ZN7S1350C43v38Ev");}
void  S1350C4 ::v39(){vfunc_called(this, "_ZN7S1350C43v39Ev");}
void  S1350C4 ::v40(){vfunc_called(this, "_ZN7S1350C43v40Ev");}
void  S1350C4 ::v41(){vfunc_called(this, "_ZN7S1350C43v41Ev");}
void  S1350C4 ::v42(){vfunc_called(this, "_ZN7S1350C43v42Ev");}
void  S1350C4 ::v43(){vfunc_called(this, "_ZN7S1350C43v43Ev");}
void  S1350C4 ::v44(){vfunc_called(this, "_ZN7S1350C43v44Ev");}
void  S1350C4 ::v45(){vfunc_called(this, "_ZN7S1350C43v45Ev");}
void  S1350C4 ::v46(){vfunc_called(this, "_ZN7S1350C43v46Ev");}
void  S1350C4 ::v47(){vfunc_called(this, "_ZN7S1350C43v47Ev");}
void  S1350C4 ::v48(){vfunc_called(this, "_ZN7S1350C43v48Ev");}
void  S1350C4 ::v49(){vfunc_called(this, "_ZN7S1350C43v49Ev");}
void  S1350C4 ::v50(){vfunc_called(this, "_ZN7S1350C43v50Ev");}
void  S1350C4 ::v51(){vfunc_called(this, "_ZN7S1350C43v51Ev");}
void  S1350C4 ::v52(){vfunc_called(this, "_ZN7S1350C43v52Ev");}
void  S1350C4 ::v53(){vfunc_called(this, "_ZN7S1350C43v53Ev");}
void  S1350C4 ::v54(){vfunc_called(this, "_ZN7S1350C43v54Ev");}
void  S1350C4 ::v55(){vfunc_called(this, "_ZN7S1350C43v55Ev");}
void  S1350C4 ::v56(){vfunc_called(this, "_ZN7S1350C43v56Ev");}
void  S1350C4 ::v57(){vfunc_called(this, "_ZN7S1350C43v57Ev");}
void  S1350C4 ::v58(){vfunc_called(this, "_ZN7S1350C43v58Ev");}
void  S1350C4 ::v59(){vfunc_called(this, "_ZN7S1350C43v59Ev");}
void  S1350C4 ::v60(){vfunc_called(this, "_ZN7S1350C43v60Ev");}
void  S1350C4 ::v61(){vfunc_called(this, "_ZN7S1350C43v61Ev");}
void  S1350C4 ::v62(){vfunc_called(this, "_ZN7S1350C43v62Ev");}
void  S1350C4 ::v63(){vfunc_called(this, "_ZN7S1350C43v63Ev");}
void  S1350C4 ::v64(){vfunc_called(this, "_ZN7S1350C43v64Ev");}
void  S1350C4 ::v65(){vfunc_called(this, "_ZN7S1350C43v65Ev");}
void  S1350C4 ::v66(){vfunc_called(this, "_ZN7S1350C43v66Ev");}
void  S1350C4 ::v67(){vfunc_called(this, "_ZN7S1350C43v67Ev");}
void  S1350C4 ::v68(){vfunc_called(this, "_ZN7S1350C43v68Ev");}
void  S1350C4 ::v69(){vfunc_called(this, "_ZN7S1350C43v69Ev");}
void  S1350C4 ::v70(){vfunc_called(this, "_ZN7S1350C43v70Ev");}
void  S1350C4 ::v71(){vfunc_called(this, "_ZN7S1350C43v71Ev");}
void  S1350C4 ::v72(){vfunc_called(this, "_ZN7S1350C43v72Ev");}
void  S1350C4 ::v73(){vfunc_called(this, "_ZN7S1350C43v73Ev");}
void  S1350C4 ::v74(){vfunc_called(this, "_ZN7S1350C43v74Ev");}
void  S1350C4 ::v75(){vfunc_called(this, "_ZN7S1350C43v75Ev");}
void  S1350C4 ::v76(){vfunc_called(this, "_ZN7S1350C43v76Ev");}
void  S1350C4 ::v77(){vfunc_called(this, "_ZN7S1350C43v77Ev");}
void  S1350C4 ::v78(){vfunc_called(this, "_ZN7S1350C43v78Ev");}
void  S1350C4 ::v79(){vfunc_called(this, "_ZN7S1350C43v79Ev");}
void  S1350C4 ::v80(){vfunc_called(this, "_ZN7S1350C43v80Ev");}
void  S1350C4 ::v81(){vfunc_called(this, "_ZN7S1350C43v81Ev");}
void  S1350C4 ::v82(){vfunc_called(this, "_ZN7S1350C43v82Ev");}
void  S1350C4 ::v83(){vfunc_called(this, "_ZN7S1350C43v83Ev");}
void  S1350C4 ::v84(){vfunc_called(this, "_ZN7S1350C43v84Ev");}
void  S1350C4 ::v85(){vfunc_called(this, "_ZN7S1350C43v85Ev");}
S1350C4 ::S1350C4(){ note_ctor("S1350C4", this);} // tgen

static void Test_S1350C4()
{
  extern Class_Descriptor cd_S1350C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S1350C4, buf);
    S1350C4 *dp, &lv = *(dp=new (buf) S1350C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S1350C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1350C4)");
    check_field_offset(lv, s1350c4f0, ABISELECT(8,4), "S1350C4.s1350c4f0");
    check_field_offset(lv, s1350c4f1, ABISELECT(16,8), "S1350C4.s1350c4f1");
    check_field_offset(lv, s1350c4f2, ABISELECT(24,16), "S1350C4.s1350c4f2");
    check_field_offset(lv, s1350c4f3, ABISELECT(56,32), "S1350C4.s1350c4f3");
    check_field_offset(lv, s1350c4f4, ABISELECT(64,40), "S1350C4.s1350c4f4");
    check_field_offset(lv, s1350c4f5, ABISELECT(72,44), "S1350C4.s1350c4f5");
    check_field_offset(lv, s1350c4f6, ABISELECT(80,52), "S1350C4.s1350c4f6");
    test_class_info(&lv, &cd_S1350C4);
    dp->~S1350C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1350C4(Test_S1350C4, "S1350C4", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S1350C4C1Ev();
extern void _ZN7S1350C4D1Ev();
Name_Map name_map_S1350C4[] = {
  NSPAIR(_ZN7S1350C4C1Ev),
  NSPAIR(_ZN7S1350C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1350C4[];
extern void _ZN7S1350C4D1Ev();
extern void _ZN7S1350C4D0Ev();
extern void _ZN7S1350C43v22Ev();
extern void _ZN7S1350C43v23Ev();
extern void _ZN7S1350C43v24Ev();
extern void _ZN7S1350C43v25Ev();
extern void _ZN7S1350C43v26Ev();
extern void _ZN7S1350C43v27Ev();
extern void _ZN7S1350C43v28Ev();
extern void _ZN7S1350C43v29Ev();
extern void _ZN7S1350C43v30Ev();
extern void _ZN7S1350C43v31Ev();
extern void _ZN7S1350C43v32Ev();
extern void _ZN7S1350C43v33Ev();
extern void _ZN7S1350C43v34Ev();
extern void _ZN7S1350C43v35Ev();
extern void _ZN7S1350C43v36Ev();
extern void _ZN7S1350C43v37Ev();
extern void _ZN7S1350C43v38Ev();
extern void _ZN7S1350C43v39Ev();
extern void _ZN7S1350C43v40Ev();
extern void _ZN7S1350C43v41Ev();
extern void _ZN7S1350C43v42Ev();
extern void _ZN7S1350C43v43Ev();
extern void _ZN7S1350C43v44Ev();
extern void _ZN7S1350C43v45Ev();
extern void _ZN7S1350C43v46Ev();
extern void _ZN7S1350C43v47Ev();
extern void _ZN7S1350C43v48Ev();
extern void _ZN7S1350C43v49Ev();
extern void _ZN7S1350C43v50Ev();
extern void _ZN7S1350C43v51Ev();
extern void _ZN7S1350C43v52Ev();
extern void _ZN7S1350C43v53Ev();
extern void _ZN7S1350C43v54Ev();
extern void _ZN7S1350C43v55Ev();
extern void _ZN7S1350C43v56Ev();
extern void _ZN7S1350C43v57Ev();
extern void _ZN7S1350C43v58Ev();
extern void _ZN7S1350C43v59Ev();
extern void _ZN7S1350C43v60Ev();
extern void _ZN7S1350C43v61Ev();
extern void _ZN7S1350C43v62Ev();
extern void _ZN7S1350C43v63Ev();
extern void _ZN7S1350C43v64Ev();
extern void _ZN7S1350C43v65Ev();
extern void _ZN7S1350C43v66Ev();
extern void _ZN7S1350C43v67Ev();
extern void _ZN7S1350C43v68Ev();
extern void _ZN7S1350C43v69Ev();
extern void _ZN7S1350C43v70Ev();
extern void _ZN7S1350C43v71Ev();
extern void _ZN7S1350C43v72Ev();
extern void _ZN7S1350C43v73Ev();
extern void _ZN7S1350C43v74Ev();
extern void _ZN7S1350C43v75Ev();
extern void _ZN7S1350C43v76Ev();
extern void _ZN7S1350C43v77Ev();
extern void _ZN7S1350C43v78Ev();
extern void _ZN7S1350C43v79Ev();
extern void _ZN7S1350C43v80Ev();
extern void _ZN7S1350C43v81Ev();
extern void _ZN7S1350C43v82Ev();
extern void _ZN7S1350C43v83Ev();
extern void _ZN7S1350C43v84Ev();
extern void _ZN7S1350C43v85Ev();
static  VTBL_ENTRY vtc_S1350C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1350C4[0]),
  (VTBL_ENTRY)&_ZN7S1350C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1350C4D0Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v71Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v72Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v73Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v74Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v75Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v76Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v77Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v78Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v79Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v80Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v81Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v82Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v83Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v84Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v85Ev,
};
extern VTBL_ENTRY _ZTI7S1350C4[];
extern  VTBL_ENTRY _ZTV7S1350C4[];
Class_Descriptor cd_S1350C4 = {  "S1350C4", // class name
  0,0,//no base classes
  &(vtc_S1350C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S1350C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1350C4),68, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1350C6  {
  virtual void  v86(); // _ZN7S1350C63v86Ev
  virtual void  v87(); // _ZN7S1350C63v87Ev
  virtual void  v88(); // _ZN7S1350C63v88Ev
  virtual void  v89(); // _ZN7S1350C63v89Ev
  virtual void  v90(); // _ZN7S1350C63v90Ev
  virtual void  v91(); // _ZN7S1350C63v91Ev
  virtual void  v92(); // _ZN7S1350C63v92Ev
  virtual void  v93(); // _ZN7S1350C63v93Ev
  virtual void  v94(); // _ZN7S1350C63v94Ev
  virtual void  v95(); // _ZN7S1350C63v95Ev
  virtual void  v96(); // _ZN7S1350C63v96Ev
  virtual void  v97(); // _ZN7S1350C63v97Ev
  virtual void  v98(); // _ZN7S1350C63v98Ev
  virtual void  v99(); // _ZN7S1350C63v99Ev
  virtual void  v100(); // _ZN7S1350C64v100Ev
  virtual void  v101(); // _ZN7S1350C64v101Ev
  ~S1350C6(); // tgen
  S1350C6(); // tgen
};
//SIG(-1 S1350C6) C1{ v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16}


void  S1350C6 ::v86(){vfunc_called(this, "_ZN7S1350C63v86Ev");}
void  S1350C6 ::v87(){vfunc_called(this, "_ZN7S1350C63v87Ev");}
void  S1350C6 ::v88(){vfunc_called(this, "_ZN7S1350C63v88Ev");}
void  S1350C6 ::v89(){vfunc_called(this, "_ZN7S1350C63v89Ev");}
void  S1350C6 ::v90(){vfunc_called(this, "_ZN7S1350C63v90Ev");}
void  S1350C6 ::v91(){vfunc_called(this, "_ZN7S1350C63v91Ev");}
void  S1350C6 ::v92(){vfunc_called(this, "_ZN7S1350C63v92Ev");}
void  S1350C6 ::v93(){vfunc_called(this, "_ZN7S1350C63v93Ev");}
void  S1350C6 ::v94(){vfunc_called(this, "_ZN7S1350C63v94Ev");}
void  S1350C6 ::v95(){vfunc_called(this, "_ZN7S1350C63v95Ev");}
void  S1350C6 ::v96(){vfunc_called(this, "_ZN7S1350C63v96Ev");}
void  S1350C6 ::v97(){vfunc_called(this, "_ZN7S1350C63v97Ev");}
void  S1350C6 ::v98(){vfunc_called(this, "_ZN7S1350C63v98Ev");}
void  S1350C6 ::v99(){vfunc_called(this, "_ZN7S1350C63v99Ev");}
void  S1350C6 ::v100(){vfunc_called(this, "_ZN7S1350C64v100Ev");}
void  S1350C6 ::v101(){vfunc_called(this, "_ZN7S1350C64v101Ev");}
S1350C6 ::~S1350C6(){ note_dtor("S1350C6", this);} // tgen
S1350C6 ::S1350C6(){ note_ctor("S1350C6", this);} // tgen

static void Test_S1350C6()
{
  extern Class_Descriptor cd_S1350C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S1350C6, buf);
    S1350C6 *dp, &lv = *(dp=new (buf) S1350C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1350C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1350C6)");
    test_class_info(&lv, &cd_S1350C6);
    dp->~S1350C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1350C6(Test_S1350C6, "S1350C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S1350C6C1Ev();
extern void _ZN7S1350C6D1Ev();
Name_Map name_map_S1350C6[] = {
  NSPAIR(_ZN7S1350C6C1Ev),
  NSPAIR(_ZN7S1350C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1350C6[];
extern void _ZN7S1350C63v86Ev();
extern void _ZN7S1350C63v87Ev();
extern void _ZN7S1350C63v88Ev();
extern void _ZN7S1350C63v89Ev();
extern void _ZN7S1350C63v90Ev();
extern void _ZN7S1350C63v91Ev();
extern void _ZN7S1350C63v92Ev();
extern void _ZN7S1350C63v93Ev();
extern void _ZN7S1350C63v94Ev();
extern void _ZN7S1350C63v95Ev();
extern void _ZN7S1350C63v96Ev();
extern void _ZN7S1350C63v97Ev();
extern void _ZN7S1350C63v98Ev();
extern void _ZN7S1350C63v99Ev();
extern void _ZN7S1350C64v100Ev();
extern void _ZN7S1350C64v101Ev();
static  VTBL_ENTRY vtc_S1350C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1350C6[0]),
  (VTBL_ENTRY)&_ZN7S1350C63v86Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v87Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v88Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v89Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v90Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v91Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v92Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v93Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v94Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v95Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v96Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v97Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v98Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v99Ev,
  (VTBL_ENTRY)&_ZN7S1350C64v100Ev,
  (VTBL_ENTRY)&_ZN7S1350C64v101Ev,
};
extern VTBL_ENTRY _ZTI7S1350C6[];
extern  VTBL_ENTRY _ZTV7S1350C6[];
Class_Descriptor cd_S1350C6 = {  "S1350C6", // class name
  0,0,//no base classes
  &(vtc_S1350C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S1350C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1350C6),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1350C7  {
  virtual void  v102(); // _ZN7S1350C74v102Ev
  virtual void  v103(); // _ZN7S1350C74v103Ev
  virtual void  v104(); // _ZN7S1350C74v104Ev
  virtual void  v105(); // _ZN7S1350C74v105Ev
  virtual void  v106(); // _ZN7S1350C74v106Ev
  virtual void  v107(); // _ZN7S1350C74v107Ev
  virtual void  v108(); // _ZN7S1350C74v108Ev
  virtual void  v109(); // _ZN7S1350C74v109Ev
  virtual void  v110(); // _ZN7S1350C74v110Ev
  ~S1350C7(); // tgen
  S1350C7(); // tgen
};
//SIG(-1 S1350C7) C1{ v1 v2 v3 v4 v5 v6 v7 v8 v9}


void  S1350C7 ::v102(){vfunc_called(this, "_ZN7S1350C74v102Ev");}
void  S1350C7 ::v103(){vfunc_called(this, "_ZN7S1350C74v103Ev");}
void  S1350C7 ::v104(){vfunc_called(this, "_ZN7S1350C74v104Ev");}
void  S1350C7 ::v105(){vfunc_called(this, "_ZN7S1350C74v105Ev");}
void  S1350C7 ::v106(){vfunc_called(this, "_ZN7S1350C74v106Ev");}
void  S1350C7 ::v107(){vfunc_called(this, "_ZN7S1350C74v107Ev");}
void  S1350C7 ::v108(){vfunc_called(this, "_ZN7S1350C74v108Ev");}
void  S1350C7 ::v109(){vfunc_called(this, "_ZN7S1350C74v109Ev");}
void  S1350C7 ::v110(){vfunc_called(this, "_ZN7S1350C74v110Ev");}
S1350C7 ::~S1350C7(){ note_dtor("S1350C7", this);} // tgen
S1350C7 ::S1350C7(){ note_ctor("S1350C7", this);} // tgen

static void Test_S1350C7()
{
  extern Class_Descriptor cd_S1350C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S1350C7, buf);
    S1350C7 *dp, &lv = *(dp=new (buf) S1350C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1350C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1350C7)");
    test_class_info(&lv, &cd_S1350C7);
    dp->~S1350C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1350C7(Test_S1350C7, "S1350C7", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S1350C7C1Ev();
extern void _ZN7S1350C7D1Ev();
Name_Map name_map_S1350C7[] = {
  NSPAIR(_ZN7S1350C7C1Ev),
  NSPAIR(_ZN7S1350C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1350C7[];
extern void _ZN7S1350C74v102Ev();
extern void _ZN7S1350C74v103Ev();
extern void _ZN7S1350C74v104Ev();
extern void _ZN7S1350C74v105Ev();
extern void _ZN7S1350C74v106Ev();
extern void _ZN7S1350C74v107Ev();
extern void _ZN7S1350C74v108Ev();
extern void _ZN7S1350C74v109Ev();
extern void _ZN7S1350C74v110Ev();
static  VTBL_ENTRY vtc_S1350C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1350C7[0]),
  (VTBL_ENTRY)&_ZN7S1350C74v102Ev,
  (VTBL_ENTRY)&_ZN7S1350C74v103Ev,
  (VTBL_ENTRY)&_ZN7S1350C74v104Ev,
  (VTBL_ENTRY)&_ZN7S1350C74v105Ev,
  (VTBL_ENTRY)&_ZN7S1350C74v106Ev,
  (VTBL_ENTRY)&_ZN7S1350C74v107Ev,
  (VTBL_ENTRY)&_ZN7S1350C74v108Ev,
  (VTBL_ENTRY)&_ZN7S1350C74v109Ev,
  (VTBL_ENTRY)&_ZN7S1350C74v110Ev,
};
extern VTBL_ENTRY _ZTI7S1350C7[];
extern  VTBL_ENTRY _ZTV7S1350C7[];
Class_Descriptor cd_S1350C7 = {  "S1350C7", // class name
  0,0,//no base classes
  &(vtc_S1350C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S1350C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1350C7),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1350C3  : S1350C4 , S1350C6 , S1350C7 {
  void *s1350c3f0;
  ::S79C39_nt s1350c3f1;
  unsigned int s1350c3f2:1;
  unsigned int s1350c3f3:1;
  unsigned int s1350c3f4:1;
  unsigned int s1350c3f5:1;
  virtual  ~S1350C3(); // _ZN7S1350C3D1Ev
  virtual void  v111(); // _ZN7S1350C34v111Ev
  virtual void  v112(); // _ZN7S1350C34v112Ev
  virtual void  v113(); // _ZN7S1350C34v113Ev
  virtual void  v114(); // _ZN7S1350C34v114Ev
  virtual void  v115(); // _ZN7S1350C34v115Ev
  virtual void  v116(); // _ZN7S1350C34v116Ev
  virtual void  v117(); // _ZN7S1350C34v117Ev
  virtual void  v118(); // _ZN7S1350C34v118Ev
  virtual void  v119(); // _ZN7S1350C34v119Ev
  virtual void  v120(); // _ZN7S1350C34v120Ev
  virtual void  v121(); // _ZN7S1350C34v121Ev
  virtual void  v122(); // _ZN7S1350C34v122Ev
  virtual void  v123(); // _ZN7S1350C34v123Ev
  virtual void  v124(); // _ZN7S1350C34v124Ev
  virtual void  v125(); // _ZN7S1350C34v125Ev
  virtual void  v126(); // _ZN7S1350C34v126Ev
  virtual void  v127(); // _ZN7S1350C34v127Ev
  virtual void  v128(); // _ZN7S1350C34v128Ev
  virtual void  v129(); // _ZN7S1350C34v129Ev
  virtual void  v130(); // _ZN7S1350C34v130Ev
  virtual void  v131(); // _ZN7S1350C34v131Ev
  virtual void  v132(); // _ZN7S1350C34v132Ev
  virtual void  v133(); // _ZN7S1350C34v133Ev
  virtual void  v134(); // _ZN7S1350C34v134Ev
  S1350C3(); // tgen
};
//SIG(-1 S1350C3) C1{ BC2{ vd v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} BC4{ v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104} BC5{ v105 v106 v107 v108 v109 v110 v111 v112 v113} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 Fp FC6{ BC7{ BC8{ BC9{ m Fp Fi[2]}}}} Fi:1 Fi:1 Fi:1 Fi:1}


 S1350C3 ::~S1350C3(){ note_dtor("S1350C3", this);}
void  S1350C3 ::v111(){vfunc_called(this, "_ZN7S1350C34v111Ev");}
void  S1350C3 ::v112(){vfunc_called(this, "_ZN7S1350C34v112Ev");}
void  S1350C3 ::v113(){vfunc_called(this, "_ZN7S1350C34v113Ev");}
void  S1350C3 ::v114(){vfunc_called(this, "_ZN7S1350C34v114Ev");}
void  S1350C3 ::v115(){vfunc_called(this, "_ZN7S1350C34v115Ev");}
void  S1350C3 ::v116(){vfunc_called(this, "_ZN7S1350C34v116Ev");}
void  S1350C3 ::v117(){vfunc_called(this, "_ZN7S1350C34v117Ev");}
void  S1350C3 ::v118(){vfunc_called(this, "_ZN7S1350C34v118Ev");}
void  S1350C3 ::v119(){vfunc_called(this, "_ZN7S1350C34v119Ev");}
void  S1350C3 ::v120(){vfunc_called(this, "_ZN7S1350C34v120Ev");}
void  S1350C3 ::v121(){vfunc_called(this, "_ZN7S1350C34v121Ev");}
void  S1350C3 ::v122(){vfunc_called(this, "_ZN7S1350C34v122Ev");}
void  S1350C3 ::v123(){vfunc_called(this, "_ZN7S1350C34v123Ev");}
void  S1350C3 ::v124(){vfunc_called(this, "_ZN7S1350C34v124Ev");}
void  S1350C3 ::v125(){vfunc_called(this, "_ZN7S1350C34v125Ev");}
void  S1350C3 ::v126(){vfunc_called(this, "_ZN7S1350C34v126Ev");}
void  S1350C3 ::v127(){vfunc_called(this, "_ZN7S1350C34v127Ev");}
void  S1350C3 ::v128(){vfunc_called(this, "_ZN7S1350C34v128Ev");}
void  S1350C3 ::v129(){vfunc_called(this, "_ZN7S1350C34v129Ev");}
void  S1350C3 ::v130(){vfunc_called(this, "_ZN7S1350C34v130Ev");}
void  S1350C3 ::v131(){vfunc_called(this, "_ZN7S1350C34v131Ev");}
void  S1350C3 ::v132(){vfunc_called(this, "_ZN7S1350C34v132Ev");}
void  S1350C3 ::v133(){vfunc_called(this, "_ZN7S1350C34v133Ev");}
void  S1350C3 ::v134(){vfunc_called(this, "_ZN7S1350C34v134Ev");}
S1350C3 ::S1350C3(){ note_ctor("S1350C3", this);} // tgen

static void Test_S1350C3()
{
  extern Class_Descriptor cd_S1350C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,23)];
    init_test(&cd_S1350C3, buf);
    S1350C3 *dp, &lv = *(dp=new (buf) S1350C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,88), "sizeof(S1350C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1350C3)");
    check_base_class_offset(lv, (S1350C4*), 0, "S1350C3");
    check_base_class_offset(lv, (S1350C6*), ABISELECT(96,60), "S1350C3");
    check_base_class_offset(lv, (S1350C7*), ABISELECT(104,64), "S1350C3");
    check_field_offset(lv, s1350c3f0, ABISELECT(112,68), "S1350C3.s1350c3f0");
    check_field_offset(lv, s1350c3f1, ABISELECT(120,72), "S1350C3.s1350c3f1");
    set_bf_and_test(lv, s1350c3f2, ABISELECT(136,84), 0, 1, 1, "S1350C3");
    set_bf_and_test(lv, s1350c3f3, ABISELECT(136,84), 1, 1, 1, "S1350C3");
    set_bf_and_test(lv, s1350c3f4, ABISELECT(136,84), 2, 1, 1, "S1350C3");
    set_bf_and_test(lv, s1350c3f5, ABISELECT(136,84), 3, 1, 1, "S1350C3");
    test_class_info(&lv, &cd_S1350C3);
    dp->~S1350C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1350C3(Test_S1350C3, "S1350C3", ABISELECT(144,88));

#else // __cplusplus

extern void _ZN7S1350C3C1Ev();
extern void _ZN7S1350C3D1Ev();
Name_Map name_map_S1350C3[] = {
  NSPAIR(_ZN7S1350C3C1Ev),
  NSPAIR(_ZN7S1350C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1350C4;
extern VTBL_ENTRY _ZTI7S1350C4[];
extern  VTBL_ENTRY _ZTV7S1350C4[];
extern Class_Descriptor cd_S1350C6;
extern VTBL_ENTRY _ZTI7S1350C6[];
extern  VTBL_ENTRY _ZTV7S1350C6[];
extern Class_Descriptor cd_S1350C7;
extern VTBL_ENTRY _ZTI7S1350C7[];
extern  VTBL_ENTRY _ZTV7S1350C7[];
static Base_Class bases_S1350C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1350C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1350C6,    ABISELECT(96,60), //bcp->offset
    92, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1350C7,    ABISELECT(104,64), //bcp->offset
    110, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1350C3[];
extern void _ZN7S1350C3D1Ev();
extern void _ZN7S1350C3D0Ev();
extern void _ZN7S1350C43v22Ev();
extern void _ZN7S1350C43v23Ev();
extern void _ZN7S1350C43v24Ev();
extern void _ZN7S1350C43v25Ev();
extern void _ZN7S1350C43v26Ev();
extern void _ZN7S1350C43v27Ev();
extern void _ZN7S1350C43v28Ev();
extern void _ZN7S1350C43v29Ev();
extern void _ZN7S1350C43v30Ev();
extern void _ZN7S1350C43v31Ev();
extern void _ZN7S1350C43v32Ev();
extern void _ZN7S1350C43v33Ev();
extern void _ZN7S1350C43v34Ev();
extern void _ZN7S1350C43v35Ev();
extern void _ZN7S1350C43v36Ev();
extern void _ZN7S1350C43v37Ev();
extern void _ZN7S1350C43v38Ev();
extern void _ZN7S1350C43v39Ev();
extern void _ZN7S1350C43v40Ev();
extern void _ZN7S1350C43v41Ev();
extern void _ZN7S1350C43v42Ev();
extern void _ZN7S1350C43v43Ev();
extern void _ZN7S1350C43v44Ev();
extern void _ZN7S1350C43v45Ev();
extern void _ZN7S1350C43v46Ev();
extern void _ZN7S1350C43v47Ev();
extern void _ZN7S1350C43v48Ev();
extern void _ZN7S1350C43v49Ev();
extern void _ZN7S1350C43v50Ev();
extern void _ZN7S1350C43v51Ev();
extern void _ZN7S1350C43v52Ev();
extern void _ZN7S1350C43v53Ev();
extern void _ZN7S1350C43v54Ev();
extern void _ZN7S1350C43v55Ev();
extern void _ZN7S1350C43v56Ev();
extern void _ZN7S1350C43v57Ev();
extern void _ZN7S1350C43v58Ev();
extern void _ZN7S1350C43v59Ev();
extern void _ZN7S1350C43v60Ev();
extern void _ZN7S1350C43v61Ev();
extern void _ZN7S1350C43v62Ev();
extern void _ZN7S1350C43v63Ev();
extern void _ZN7S1350C43v64Ev();
extern void _ZN7S1350C43v65Ev();
extern void _ZN7S1350C43v66Ev();
extern void _ZN7S1350C43v67Ev();
extern void _ZN7S1350C43v68Ev();
extern void _ZN7S1350C43v69Ev();
extern void _ZN7S1350C43v70Ev();
extern void _ZN7S1350C43v71Ev();
extern void _ZN7S1350C43v72Ev();
extern void _ZN7S1350C43v73Ev();
extern void _ZN7S1350C43v74Ev();
extern void _ZN7S1350C43v75Ev();
extern void _ZN7S1350C43v76Ev();
extern void _ZN7S1350C43v77Ev();
extern void _ZN7S1350C43v78Ev();
extern void _ZN7S1350C43v79Ev();
extern void _ZN7S1350C43v80Ev();
extern void _ZN7S1350C43v81Ev();
extern void _ZN7S1350C43v82Ev();
extern void _ZN7S1350C43v83Ev();
extern void _ZN7S1350C43v84Ev();
extern void _ZN7S1350C43v85Ev();
extern void _ZN7S1350C34v111Ev();
extern void _ZN7S1350C34v112Ev();
extern void _ZN7S1350C34v113Ev();
extern void _ZN7S1350C34v114Ev();
extern void _ZN7S1350C34v115Ev();
extern void _ZN7S1350C34v116Ev();
extern void _ZN7S1350C34v117Ev();
extern void _ZN7S1350C34v118Ev();
extern void _ZN7S1350C34v119Ev();
extern void _ZN7S1350C34v120Ev();
extern void _ZN7S1350C34v121Ev();
extern void _ZN7S1350C34v122Ev();
extern void _ZN7S1350C34v123Ev();
extern void _ZN7S1350C34v124Ev();
extern void _ZN7S1350C34v125Ev();
extern void _ZN7S1350C34v126Ev();
extern void _ZN7S1350C34v127Ev();
extern void _ZN7S1350C34v128Ev();
extern void _ZN7S1350C34v129Ev();
extern void _ZN7S1350C34v130Ev();
extern void _ZN7S1350C34v131Ev();
extern void _ZN7S1350C34v132Ev();
extern void _ZN7S1350C34v133Ev();
extern void _ZN7S1350C34v134Ev();
extern void _ZN7S1350C63v86Ev();
extern void _ZN7S1350C63v87Ev();
extern void _ZN7S1350C63v88Ev();
extern void _ZN7S1350C63v89Ev();
extern void _ZN7S1350C63v90Ev();
extern void _ZN7S1350C63v91Ev();
extern void _ZN7S1350C63v92Ev();
extern void _ZN7S1350C63v93Ev();
extern void _ZN7S1350C63v94Ev();
extern void _ZN7S1350C63v95Ev();
extern void _ZN7S1350C63v96Ev();
extern void _ZN7S1350C63v97Ev();
extern void _ZN7S1350C63v98Ev();
extern void _ZN7S1350C63v99Ev();
extern void _ZN7S1350C64v100Ev();
extern void _ZN7S1350C64v101Ev();
extern void _ZN7S1350C74v102Ev();
extern void _ZN7S1350C74v103Ev();
extern void _ZN7S1350C74v104Ev();
extern void _ZN7S1350C74v105Ev();
extern void _ZN7S1350C74v106Ev();
extern void _ZN7S1350C74v107Ev();
extern void _ZN7S1350C74v108Ev();
extern void _ZN7S1350C74v109Ev();
extern void _ZN7S1350C74v110Ev();
static  VTBL_ENTRY vtc_S1350C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1350C3[0]),
  (VTBL_ENTRY)&_ZN7S1350C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1350C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v71Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v72Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v73Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v74Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v75Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v76Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v77Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v78Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v79Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v80Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v81Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v82Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v83Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v84Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v85Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v119Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v120Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v121Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v122Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v123Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v124Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v125Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v126Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v127Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v128Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v129Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v130Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v131Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v132Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v133Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v134Ev,
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S1350C3[0]),
  (VTBL_ENTRY)&_ZN7S1350C63v86Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v87Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v88Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v89Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v90Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v91Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v92Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v93Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v94Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v95Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v96Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v97Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v98Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v99Ev,
  (VTBL_ENTRY)&_ZN7S1350C64v100Ev,
  (VTBL_ENTRY)&_ZN7S1350C64v101Ev,
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S1350C3[0]),
  (VTBL_ENTRY)&_ZN7S1350C74v102Ev,
  (VTBL_ENTRY)&_ZN7S1350C74v103Ev,
  (VTBL_ENTRY)&_ZN7S1350C74v104Ev,
  (VTBL_ENTRY)&_ZN7S1350C74v105Ev,
  (VTBL_ENTRY)&_ZN7S1350C74v106Ev,
  (VTBL_ENTRY)&_ZN7S1350C74v107Ev,
  (VTBL_ENTRY)&_ZN7S1350C74v108Ev,
  (VTBL_ENTRY)&_ZN7S1350C74v109Ev,
  (VTBL_ENTRY)&_ZN7S1350C74v110Ev,
};
extern VTBL_ENTRY _ZTI7S1350C3[];
extern  VTBL_ENTRY _ZTV7S1350C3[];
Class_Descriptor cd_S1350C3 = {  "S1350C3", // class name
  bases_S1350C3, 3,
  &(vtc_S1350C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,88), // object size
  NSPAIRA(_ZTI7S1350C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S1350C3),121, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1350C2  : S1350C3 {
  ::S3262C11_nt s1350c2f0;
  int s1350c2f1;
  virtual  ~S1350C2(); // _ZN7S1350C2D1Ev
  virtual void  v135(); // _ZN7S1350C24v135Ev
  virtual void  v136(); // _ZN7S1350C24v136Ev
  virtual void  v137(); // _ZN7S1350C24v137Ev
  virtual void  v138(); // _ZN7S1350C24v138Ev
  virtual void  v139(); // _ZN7S1350C24v139Ev
  virtual void  v140(); // _ZN7S1350C24v140Ev
  virtual void  v141(); // _ZN7S1350C24v141Ev
  virtual void  v142(); // _ZN7S1350C24v142Ev
  virtual void  v143(); // _ZN7S1350C24v143Ev
  virtual void  v144(); // _ZN7S1350C24v144Ev
  virtual void  v145(); // _ZN7S1350C24v145Ev
  virtual void  v146(); // _ZN7S1350C24v146Ev
  virtual void  v147(); // _ZN7S1350C24v147Ev
  virtual void  v148(); // _ZN7S1350C24v148Ev
  virtual void  v149(); // _ZN7S1350C24v149Ev
  virtual void  v150(); // _ZN7S1350C24v150Ev
  virtual void  v151(); // _ZN7S1350C24v151Ev
  virtual void  v152(); // _ZN7S1350C24v152Ev
  virtual void  v153(); // _ZN7S1350C24v153Ev
  virtual void  v154(); // _ZN7S1350C24v154Ev
  virtual void  v155(); // _ZN7S1350C24v155Ev
  virtual void  v156(); // _ZN7S1350C24v156Ev
  virtual void  v157(); // _ZN7S1350C24v157Ev
  virtual void  v158(); // _ZN7S1350C24v158Ev
  virtual void  v159(); // _ZN7S1350C24v159Ev
  virtual void  v160(); // _ZN7S1350C24v160Ev
  S1350C2(); // tgen
};
//SIG(-1 S1350C2) C1{ BC2{ BC3{ vd v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} BC5{ v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106} BC6{ v107 v108 v109 v110 v111 v112 v113 v114 v115} vd v116 v117 v118 v119 v120 v121 v122 v123 v124 v125 v126 v127 v128 v129 v130 v131 v132 v133 v134 v135 v136 v137 v138 v139 Fp FC7{ BC8{ BC9{ BC10{ m Fp Fi[2]}}}} Fi:1 Fi:1 Fi:1 Fi:1} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 FC11{ m FC12{ BC13{ BC10}} Fc} Fi}


 S1350C2 ::~S1350C2(){ note_dtor("S1350C2", this);}
void  S1350C2 ::v135(){vfunc_called(this, "_ZN7S1350C24v135Ev");}
void  S1350C2 ::v136(){vfunc_called(this, "_ZN7S1350C24v136Ev");}
void  S1350C2 ::v137(){vfunc_called(this, "_ZN7S1350C24v137Ev");}
void  S1350C2 ::v138(){vfunc_called(this, "_ZN7S1350C24v138Ev");}
void  S1350C2 ::v139(){vfunc_called(this, "_ZN7S1350C24v139Ev");}
void  S1350C2 ::v140(){vfunc_called(this, "_ZN7S1350C24v140Ev");}
void  S1350C2 ::v141(){vfunc_called(this, "_ZN7S1350C24v141Ev");}
void  S1350C2 ::v142(){vfunc_called(this, "_ZN7S1350C24v142Ev");}
void  S1350C2 ::v143(){vfunc_called(this, "_ZN7S1350C24v143Ev");}
void  S1350C2 ::v144(){vfunc_called(this, "_ZN7S1350C24v144Ev");}
void  S1350C2 ::v145(){vfunc_called(this, "_ZN7S1350C24v145Ev");}
void  S1350C2 ::v146(){vfunc_called(this, "_ZN7S1350C24v146Ev");}
void  S1350C2 ::v147(){vfunc_called(this, "_ZN7S1350C24v147Ev");}
void  S1350C2 ::v148(){vfunc_called(this, "_ZN7S1350C24v148Ev");}
void  S1350C2 ::v149(){vfunc_called(this, "_ZN7S1350C24v149Ev");}
void  S1350C2 ::v150(){vfunc_called(this, "_ZN7S1350C24v150Ev");}
void  S1350C2 ::v151(){vfunc_called(this, "_ZN7S1350C24v151Ev");}
void  S1350C2 ::v152(){vfunc_called(this, "_ZN7S1350C24v152Ev");}
void  S1350C2 ::v153(){vfunc_called(this, "_ZN7S1350C24v153Ev");}
void  S1350C2 ::v154(){vfunc_called(this, "_ZN7S1350C24v154Ev");}
void  S1350C2 ::v155(){vfunc_called(this, "_ZN7S1350C24v155Ev");}
void  S1350C2 ::v156(){vfunc_called(this, "_ZN7S1350C24v156Ev");}
void  S1350C2 ::v157(){vfunc_called(this, "_ZN7S1350C24v157Ev");}
void  S1350C2 ::v158(){vfunc_called(this, "_ZN7S1350C24v158Ev");}
void  S1350C2 ::v159(){vfunc_called(this, "_ZN7S1350C24v159Ev");}
void  S1350C2 ::v160(){vfunc_called(this, "_ZN7S1350C24v160Ev");}
S1350C2 ::S1350C2(){ note_ctor("S1350C2", this);} // tgen

static void Test_S1350C2()
{
  extern Class_Descriptor cd_S1350C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,28)];
    init_test(&cd_S1350C2, buf);
    S1350C2 *dp, &lv = *(dp=new (buf) S1350C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,108), "sizeof(S1350C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1350C2)");
    check_base_class_offset(lv, (S1350C4*)(S1350C3*), 0, "S1350C2");
    check_base_class_offset(lv, (S1350C6*)(S1350C3*), ABISELECT(96,60), "S1350C2");
    check_base_class_offset(lv, (S1350C7*)(S1350C3*), ABISELECT(104,64), "S1350C2");
    check_base_class_offset(lv, (S1350C3*), 0, "S1350C2");
    check_field_offset(lv, s1350c2f0, ABISELECT(144,88), "S1350C2.s1350c2f0");
    check_field_offset(lv, s1350c2f1, ABISELECT(168,104), "S1350C2.s1350c2f1");
    test_class_info(&lv, &cd_S1350C2);
    dp->~S1350C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1350C2(Test_S1350C2, "S1350C2", ABISELECT(176,108));

#else // __cplusplus

extern void _ZN7S1350C2C1Ev();
extern void _ZN7S1350C2D1Ev();
Name_Map name_map_S1350C2[] = {
  NSPAIR(_ZN7S1350C2C1Ev),
  NSPAIR(_ZN7S1350C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1350C4;
extern VTBL_ENTRY _ZTI7S1350C4[];
extern  VTBL_ENTRY _ZTV7S1350C4[];
extern Class_Descriptor cd_S1350C6;
extern VTBL_ENTRY _ZTI7S1350C6[];
extern  VTBL_ENTRY _ZTV7S1350C6[];
extern Class_Descriptor cd_S1350C7;
extern VTBL_ENTRY _ZTI7S1350C7[];
extern  VTBL_ENTRY _ZTV7S1350C7[];
extern Class_Descriptor cd_S1350C3;
extern VTBL_ENTRY _ZTI7S1350C3[];
extern  VTBL_ENTRY _ZTV7S1350C3[];
static Base_Class bases_S1350C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1350C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1350C6,    ABISELECT(96,60), //bcp->offset
    118, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1350C7,    ABISELECT(104,64), //bcp->offset
    136, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1350C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1350C2[];
extern void _ZN7S1350C2D1Ev();
extern void _ZN7S1350C2D0Ev();
extern void _ZN7S1350C43v22Ev();
extern void _ZN7S1350C43v23Ev();
extern void _ZN7S1350C43v24Ev();
extern void _ZN7S1350C43v25Ev();
extern void _ZN7S1350C43v26Ev();
extern void _ZN7S1350C43v27Ev();
extern void _ZN7S1350C43v28Ev();
extern void _ZN7S1350C43v29Ev();
extern void _ZN7S1350C43v30Ev();
extern void _ZN7S1350C43v31Ev();
extern void _ZN7S1350C43v32Ev();
extern void _ZN7S1350C43v33Ev();
extern void _ZN7S1350C43v34Ev();
extern void _ZN7S1350C43v35Ev();
extern void _ZN7S1350C43v36Ev();
extern void _ZN7S1350C43v37Ev();
extern void _ZN7S1350C43v38Ev();
extern void _ZN7S1350C43v39Ev();
extern void _ZN7S1350C43v40Ev();
extern void _ZN7S1350C43v41Ev();
extern void _ZN7S1350C43v42Ev();
extern void _ZN7S1350C43v43Ev();
extern void _ZN7S1350C43v44Ev();
extern void _ZN7S1350C43v45Ev();
extern void _ZN7S1350C43v46Ev();
extern void _ZN7S1350C43v47Ev();
extern void _ZN7S1350C43v48Ev();
extern void _ZN7S1350C43v49Ev();
extern void _ZN7S1350C43v50Ev();
extern void _ZN7S1350C43v51Ev();
extern void _ZN7S1350C43v52Ev();
extern void _ZN7S1350C43v53Ev();
extern void _ZN7S1350C43v54Ev();
extern void _ZN7S1350C43v55Ev();
extern void _ZN7S1350C43v56Ev();
extern void _ZN7S1350C43v57Ev();
extern void _ZN7S1350C43v58Ev();
extern void _ZN7S1350C43v59Ev();
extern void _ZN7S1350C43v60Ev();
extern void _ZN7S1350C43v61Ev();
extern void _ZN7S1350C43v62Ev();
extern void _ZN7S1350C43v63Ev();
extern void _ZN7S1350C43v64Ev();
extern void _ZN7S1350C43v65Ev();
extern void _ZN7S1350C43v66Ev();
extern void _ZN7S1350C43v67Ev();
extern void _ZN7S1350C43v68Ev();
extern void _ZN7S1350C43v69Ev();
extern void _ZN7S1350C43v70Ev();
extern void _ZN7S1350C43v71Ev();
extern void _ZN7S1350C43v72Ev();
extern void _ZN7S1350C43v73Ev();
extern void _ZN7S1350C43v74Ev();
extern void _ZN7S1350C43v75Ev();
extern void _ZN7S1350C43v76Ev();
extern void _ZN7S1350C43v77Ev();
extern void _ZN7S1350C43v78Ev();
extern void _ZN7S1350C43v79Ev();
extern void _ZN7S1350C43v80Ev();
extern void _ZN7S1350C43v81Ev();
extern void _ZN7S1350C43v82Ev();
extern void _ZN7S1350C43v83Ev();
extern void _ZN7S1350C43v84Ev();
extern void _ZN7S1350C43v85Ev();
extern void _ZN7S1350C34v111Ev();
extern void _ZN7S1350C34v112Ev();
extern void _ZN7S1350C34v113Ev();
extern void _ZN7S1350C34v114Ev();
extern void _ZN7S1350C34v115Ev();
extern void _ZN7S1350C34v116Ev();
extern void _ZN7S1350C34v117Ev();
extern void _ZN7S1350C34v118Ev();
extern void _ZN7S1350C34v119Ev();
extern void _ZN7S1350C34v120Ev();
extern void _ZN7S1350C34v121Ev();
extern void _ZN7S1350C34v122Ev();
extern void _ZN7S1350C34v123Ev();
extern void _ZN7S1350C34v124Ev();
extern void _ZN7S1350C34v125Ev();
extern void _ZN7S1350C34v126Ev();
extern void _ZN7S1350C34v127Ev();
extern void _ZN7S1350C34v128Ev();
extern void _ZN7S1350C34v129Ev();
extern void _ZN7S1350C34v130Ev();
extern void _ZN7S1350C34v131Ev();
extern void _ZN7S1350C34v132Ev();
extern void _ZN7S1350C34v133Ev();
extern void _ZN7S1350C34v134Ev();
extern void _ZN7S1350C24v135Ev();
extern void _ZN7S1350C24v136Ev();
extern void _ZN7S1350C24v137Ev();
extern void _ZN7S1350C24v138Ev();
extern void _ZN7S1350C24v139Ev();
extern void _ZN7S1350C24v140Ev();
extern void _ZN7S1350C24v141Ev();
extern void _ZN7S1350C24v142Ev();
extern void _ZN7S1350C24v143Ev();
extern void _ZN7S1350C24v144Ev();
extern void _ZN7S1350C24v145Ev();
extern void _ZN7S1350C24v146Ev();
extern void _ZN7S1350C24v147Ev();
extern void _ZN7S1350C24v148Ev();
extern void _ZN7S1350C24v149Ev();
extern void _ZN7S1350C24v150Ev();
extern void _ZN7S1350C24v151Ev();
extern void _ZN7S1350C24v152Ev();
extern void _ZN7S1350C24v153Ev();
extern void _ZN7S1350C24v154Ev();
extern void _ZN7S1350C24v155Ev();
extern void _ZN7S1350C24v156Ev();
extern void _ZN7S1350C24v157Ev();
extern void _ZN7S1350C24v158Ev();
extern void _ZN7S1350C24v159Ev();
extern void _ZN7S1350C24v160Ev();
extern void _ZN7S1350C63v86Ev();
extern void _ZN7S1350C63v87Ev();
extern void _ZN7S1350C63v88Ev();
extern void _ZN7S1350C63v89Ev();
extern void _ZN7S1350C63v90Ev();
extern void _ZN7S1350C63v91Ev();
extern void _ZN7S1350C63v92Ev();
extern void _ZN7S1350C63v93Ev();
extern void _ZN7S1350C63v94Ev();
extern void _ZN7S1350C63v95Ev();
extern void _ZN7S1350C63v96Ev();
extern void _ZN7S1350C63v97Ev();
extern void _ZN7S1350C63v98Ev();
extern void _ZN7S1350C63v99Ev();
extern void _ZN7S1350C64v100Ev();
extern void _ZN7S1350C64v101Ev();
extern void _ZN7S1350C74v102Ev();
extern void _ZN7S1350C74v103Ev();
extern void _ZN7S1350C74v104Ev();
extern void _ZN7S1350C74v105Ev();
extern void _ZN7S1350C74v106Ev();
extern void _ZN7S1350C74v107Ev();
extern void _ZN7S1350C74v108Ev();
extern void _ZN7S1350C74v109Ev();
extern void _ZN7S1350C74v110Ev();
static  VTBL_ENTRY vtc_S1350C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1350C2[0]),
  (VTBL_ENTRY)&_ZN7S1350C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1350C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v71Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v72Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v73Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v74Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v75Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v76Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v77Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v78Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v79Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v80Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v81Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v82Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v83Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v84Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v85Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v119Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v120Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v121Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v122Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v123Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v124Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v125Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v126Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v127Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v128Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v129Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v130Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v131Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v132Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v133Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v134Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v135Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v136Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v137Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v138Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v139Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v140Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v141Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v142Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v143Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v144Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v145Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v146Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v147Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v148Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v149Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v150Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v151Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v152Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v153Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v154Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v155Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v156Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v157Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v158Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v159Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v160Ev,
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S1350C2[0]),
  (VTBL_ENTRY)&_ZN7S1350C63v86Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v87Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v88Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v89Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v90Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v91Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v92Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v93Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v94Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v95Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v96Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v97Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v98Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v99Ev,
  (VTBL_ENTRY)&_ZN7S1350C64v100Ev,
  (VTBL_ENTRY)&_ZN7S1350C64v101Ev,
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S1350C2[0]),
  (VTBL_ENTRY)&_ZN7S1350C74v102Ev,
  (VTBL_ENTRY)&_ZN7S1350C74v103Ev,
  (VTBL_ENTRY)&_ZN7S1350C74v104Ev,
  (VTBL_ENTRY)&_ZN7S1350C74v105Ev,
  (VTBL_ENTRY)&_ZN7S1350C74v106Ev,
  (VTBL_ENTRY)&_ZN7S1350C74v107Ev,
  (VTBL_ENTRY)&_ZN7S1350C74v108Ev,
  (VTBL_ENTRY)&_ZN7S1350C74v109Ev,
  (VTBL_ENTRY)&_ZN7S1350C74v110Ev,
};
extern VTBL_ENTRY _ZTI7S1350C2[];
extern  VTBL_ENTRY _ZTV7S1350C2[];
Class_Descriptor cd_S1350C2 = {  "S1350C2", // class name
  bases_S1350C2, 4,
  &(vtc_S1350C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(176,108), // object size
  NSPAIRA(_ZTI7S1350C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1350C2),147, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  4, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1350C1  : S1350C2 {
  ::S79C44 s1350c1f0;
  ::S79C8_nt s1350c1f1;
  ::S79C40 s1350c1f2;
  virtual  ~S1350C1(); // _ZN7S1350C1D1Ev
  virtual void  v1(); // _ZN7S1350C12v1Ev
  virtual void  v2(); // _ZN7S1350C12v2Ev
  virtual void  v3(); // _ZN7S1350C12v3Ev
  virtual void  v4(); // _ZN7S1350C12v4Ev
  virtual void  v5(); // _ZN7S1350C12v5Ev
  virtual void  v6(); // _ZN7S1350C12v6Ev
  virtual void  v7(); // _ZN7S1350C12v7Ev
  virtual void  v8(); // _ZN7S1350C12v8Ev
  virtual void  v9(); // _ZN7S1350C12v9Ev
  virtual void  v10(); // _ZN7S1350C13v10Ev
  virtual void  v11(); // _ZN7S1350C13v11Ev
  virtual void  v12(); // _ZN7S1350C13v12Ev
  virtual void  v13(); // _ZN7S1350C13v13Ev
  virtual void  v14(); // _ZN7S1350C13v14Ev
  virtual void  v15(); // _ZN7S1350C13v15Ev
  virtual void  v16(); // _ZN7S1350C13v16Ev
  virtual void  v17(); // _ZN7S1350C13v17Ev
  virtual void  v18(); // _ZN7S1350C13v18Ev
  virtual void  v19(); // _ZN7S1350C13v19Ev
  virtual void  v20(); // _ZN7S1350C13v20Ev
  virtual void  v21(); // _ZN7S1350C13v21Ev
  S1350C1(); // tgen
};
//SIG(1 S1350C1) C1{ BC2{ BC3{ BC4{ vd v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 Fi FL Fp[4] Fi[2] Fp FC5{ m Fi[2]} Fp[2]} BC6{ v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101} BC7{ v102 v103 v104 v105 v106 v107 v108 v109 v110} vd v111 v112 v113 v114 v115 v116 v117 v118 v119 v120 v121 v122 v123 v124 v125 v126 v127 v128 v129 v130 v131 v132 v133 v134 Fp FC8{ BC9{ BC10{ BC11{ m Fp Fi[2]}}}} Fi:1 Fi:1 Fi:1 Fi:1} vd v135 v136 v137 v138 v139 v140 v141 v142 v143 v144 v145 v146 v147 v148 v149 v150 v151 v152 v153 v154 v155 v156 v157 v158 v159 v160 FC12{ m FC13{ BC14{ BC11}} Fc} Fi} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 FC13 FC5 FC9}


 S1350C1 ::~S1350C1(){ note_dtor("S1350C1", this);}
void  S1350C1 ::v1(){vfunc_called(this, "_ZN7S1350C12v1Ev");}
void  S1350C1 ::v2(){vfunc_called(this, "_ZN7S1350C12v2Ev");}
void  S1350C1 ::v3(){vfunc_called(this, "_ZN7S1350C12v3Ev");}
void  S1350C1 ::v4(){vfunc_called(this, "_ZN7S1350C12v4Ev");}
void  S1350C1 ::v5(){vfunc_called(this, "_ZN7S1350C12v5Ev");}
void  S1350C1 ::v6(){vfunc_called(this, "_ZN7S1350C12v6Ev");}
void  S1350C1 ::v7(){vfunc_called(this, "_ZN7S1350C12v7Ev");}
void  S1350C1 ::v8(){vfunc_called(this, "_ZN7S1350C12v8Ev");}
void  S1350C1 ::v9(){vfunc_called(this, "_ZN7S1350C12v9Ev");}
void  S1350C1 ::v10(){vfunc_called(this, "_ZN7S1350C13v10Ev");}
void  S1350C1 ::v11(){vfunc_called(this, "_ZN7S1350C13v11Ev");}
void  S1350C1 ::v12(){vfunc_called(this, "_ZN7S1350C13v12Ev");}
void  S1350C1 ::v13(){vfunc_called(this, "_ZN7S1350C13v13Ev");}
void  S1350C1 ::v14(){vfunc_called(this, "_ZN7S1350C13v14Ev");}
void  S1350C1 ::v15(){vfunc_called(this, "_ZN7S1350C13v15Ev");}
void  S1350C1 ::v16(){vfunc_called(this, "_ZN7S1350C13v16Ev");}
void  S1350C1 ::v17(){vfunc_called(this, "_ZN7S1350C13v17Ev");}
void  S1350C1 ::v18(){vfunc_called(this, "_ZN7S1350C13v18Ev");}
void  S1350C1 ::v19(){vfunc_called(this, "_ZN7S1350C13v19Ev");}
void  S1350C1 ::v20(){vfunc_called(this, "_ZN7S1350C13v20Ev");}
void  S1350C1 ::v21(){vfunc_called(this, "_ZN7S1350C13v21Ev");}
S1350C1 ::S1350C1(){ note_ctor("S1350C1", this);} // tgen

static void Test_S1350C1()
{
  extern Class_Descriptor cd_S1350C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(28,36)];
    init_test(&cd_S1350C1, buf);
    S1350C1 *dp, &lv = *(dp=new (buf) S1350C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(216,140), "sizeof(S1350C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1350C1)");
    check_base_class_offset(lv, (S1350C4*)(S1350C3*)(S1350C2*), 0, "S1350C1");
    check_base_class_offset(lv, (S1350C6*)(S1350C3*)(S1350C2*), ABISELECT(96,60), "S1350C1");
    check_base_class_offset(lv, (S1350C7*)(S1350C3*)(S1350C2*), ABISELECT(104,64), "S1350C1");
    check_base_class_offset(lv, (S1350C3*)(S1350C2*), 0, "S1350C1");
    check_base_class_offset(lv, (S1350C2*), 0, "S1350C1");
    check_field_offset(lv, s1350c1f0, ABISELECT(176,108), "S1350C1.s1350c1f0");
    check_field_offset(lv, s1350c1f1, ABISELECT(192,120), "S1350C1.s1350c1f1");
    check_field_offset(lv, s1350c1f2, ABISELECT(200,128), "S1350C1.s1350c1f2");
    test_class_info(&lv, &cd_S1350C1);
    dp->~S1350C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1350C1(Test_S1350C1, "S1350C1", ABISELECT(216,140));

#else // __cplusplus

extern void _ZN7S1350C1C1Ev();
extern void _ZN7S1350C1D1Ev();
Name_Map name_map_S1350C1[] = {
  NSPAIR(_ZN7S1350C1C1Ev),
  NSPAIR(_ZN7S1350C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1350C4;
extern VTBL_ENTRY _ZTI7S1350C4[];
extern  VTBL_ENTRY _ZTV7S1350C4[];
extern Class_Descriptor cd_S1350C6;
extern VTBL_ENTRY _ZTI7S1350C6[];
extern  VTBL_ENTRY _ZTV7S1350C6[];
extern Class_Descriptor cd_S1350C7;
extern VTBL_ENTRY _ZTI7S1350C7[];
extern  VTBL_ENTRY _ZTV7S1350C7[];
extern Class_Descriptor cd_S1350C3;
extern VTBL_ENTRY _ZTI7S1350C3[];
extern  VTBL_ENTRY _ZTV7S1350C3[];
extern Class_Descriptor cd_S1350C2;
extern VTBL_ENTRY _ZTI7S1350C2[];
extern  VTBL_ENTRY _ZTV7S1350C2[];
static Base_Class bases_S1350C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1350C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1350C6,    ABISELECT(96,60), //bcp->offset
    139, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1350C7,    ABISELECT(104,64), //bcp->offset
    157, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1350C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S1350C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1350C1[];
extern void _ZN7S1350C1D1Ev();
extern void _ZN7S1350C1D0Ev();
extern void _ZN7S1350C43v22Ev();
extern void _ZN7S1350C43v23Ev();
extern void _ZN7S1350C43v24Ev();
extern void _ZN7S1350C43v25Ev();
extern void _ZN7S1350C43v26Ev();
extern void _ZN7S1350C43v27Ev();
extern void _ZN7S1350C43v28Ev();
extern void _ZN7S1350C43v29Ev();
extern void _ZN7S1350C43v30Ev();
extern void _ZN7S1350C43v31Ev();
extern void _ZN7S1350C43v32Ev();
extern void _ZN7S1350C43v33Ev();
extern void _ZN7S1350C43v34Ev();
extern void _ZN7S1350C43v35Ev();
extern void _ZN7S1350C43v36Ev();
extern void _ZN7S1350C43v37Ev();
extern void _ZN7S1350C43v38Ev();
extern void _ZN7S1350C43v39Ev();
extern void _ZN7S1350C43v40Ev();
extern void _ZN7S1350C43v41Ev();
extern void _ZN7S1350C43v42Ev();
extern void _ZN7S1350C43v43Ev();
extern void _ZN7S1350C43v44Ev();
extern void _ZN7S1350C43v45Ev();
extern void _ZN7S1350C43v46Ev();
extern void _ZN7S1350C43v47Ev();
extern void _ZN7S1350C43v48Ev();
extern void _ZN7S1350C43v49Ev();
extern void _ZN7S1350C43v50Ev();
extern void _ZN7S1350C43v51Ev();
extern void _ZN7S1350C43v52Ev();
extern void _ZN7S1350C43v53Ev();
extern void _ZN7S1350C43v54Ev();
extern void _ZN7S1350C43v55Ev();
extern void _ZN7S1350C43v56Ev();
extern void _ZN7S1350C43v57Ev();
extern void _ZN7S1350C43v58Ev();
extern void _ZN7S1350C43v59Ev();
extern void _ZN7S1350C43v60Ev();
extern void _ZN7S1350C43v61Ev();
extern void _ZN7S1350C43v62Ev();
extern void _ZN7S1350C43v63Ev();
extern void _ZN7S1350C43v64Ev();
extern void _ZN7S1350C43v65Ev();
extern void _ZN7S1350C43v66Ev();
extern void _ZN7S1350C43v67Ev();
extern void _ZN7S1350C43v68Ev();
extern void _ZN7S1350C43v69Ev();
extern void _ZN7S1350C43v70Ev();
extern void _ZN7S1350C43v71Ev();
extern void _ZN7S1350C43v72Ev();
extern void _ZN7S1350C43v73Ev();
extern void _ZN7S1350C43v74Ev();
extern void _ZN7S1350C43v75Ev();
extern void _ZN7S1350C43v76Ev();
extern void _ZN7S1350C43v77Ev();
extern void _ZN7S1350C43v78Ev();
extern void _ZN7S1350C43v79Ev();
extern void _ZN7S1350C43v80Ev();
extern void _ZN7S1350C43v81Ev();
extern void _ZN7S1350C43v82Ev();
extern void _ZN7S1350C43v83Ev();
extern void _ZN7S1350C43v84Ev();
extern void _ZN7S1350C43v85Ev();
extern void _ZN7S1350C34v111Ev();
extern void _ZN7S1350C34v112Ev();
extern void _ZN7S1350C34v113Ev();
extern void _ZN7S1350C34v114Ev();
extern void _ZN7S1350C34v115Ev();
extern void _ZN7S1350C34v116Ev();
extern void _ZN7S1350C34v117Ev();
extern void _ZN7S1350C34v118Ev();
extern void _ZN7S1350C34v119Ev();
extern void _ZN7S1350C34v120Ev();
extern void _ZN7S1350C34v121Ev();
extern void _ZN7S1350C34v122Ev();
extern void _ZN7S1350C34v123Ev();
extern void _ZN7S1350C34v124Ev();
extern void _ZN7S1350C34v125Ev();
extern void _ZN7S1350C34v126Ev();
extern void _ZN7S1350C34v127Ev();
extern void _ZN7S1350C34v128Ev();
extern void _ZN7S1350C34v129Ev();
extern void _ZN7S1350C34v130Ev();
extern void _ZN7S1350C34v131Ev();
extern void _ZN7S1350C34v132Ev();
extern void _ZN7S1350C34v133Ev();
extern void _ZN7S1350C34v134Ev();
extern void _ZN7S1350C24v135Ev();
extern void _ZN7S1350C24v136Ev();
extern void _ZN7S1350C24v137Ev();
extern void _ZN7S1350C24v138Ev();
extern void _ZN7S1350C24v139Ev();
extern void _ZN7S1350C24v140Ev();
extern void _ZN7S1350C24v141Ev();
extern void _ZN7S1350C24v142Ev();
extern void _ZN7S1350C24v143Ev();
extern void _ZN7S1350C24v144Ev();
extern void _ZN7S1350C24v145Ev();
extern void _ZN7S1350C24v146Ev();
extern void _ZN7S1350C24v147Ev();
extern void _ZN7S1350C24v148Ev();
extern void _ZN7S1350C24v149Ev();
extern void _ZN7S1350C24v150Ev();
extern void _ZN7S1350C24v151Ev();
extern void _ZN7S1350C24v152Ev();
extern void _ZN7S1350C24v153Ev();
extern void _ZN7S1350C24v154Ev();
extern void _ZN7S1350C24v155Ev();
extern void _ZN7S1350C24v156Ev();
extern void _ZN7S1350C24v157Ev();
extern void _ZN7S1350C24v158Ev();
extern void _ZN7S1350C24v159Ev();
extern void _ZN7S1350C24v160Ev();
extern void _ZN7S1350C12v1Ev();
extern void _ZN7S1350C12v2Ev();
extern void _ZN7S1350C12v3Ev();
extern void _ZN7S1350C12v4Ev();
extern void _ZN7S1350C12v5Ev();
extern void _ZN7S1350C12v6Ev();
extern void _ZN7S1350C12v7Ev();
extern void _ZN7S1350C12v8Ev();
extern void _ZN7S1350C12v9Ev();
extern void _ZN7S1350C13v10Ev();
extern void _ZN7S1350C13v11Ev();
extern void _ZN7S1350C13v12Ev();
extern void _ZN7S1350C13v13Ev();
extern void _ZN7S1350C13v14Ev();
extern void _ZN7S1350C13v15Ev();
extern void _ZN7S1350C13v16Ev();
extern void _ZN7S1350C13v17Ev();
extern void _ZN7S1350C13v18Ev();
extern void _ZN7S1350C13v19Ev();
extern void _ZN7S1350C13v20Ev();
extern void _ZN7S1350C13v21Ev();
extern void _ZN7S1350C63v86Ev();
extern void _ZN7S1350C63v87Ev();
extern void _ZN7S1350C63v88Ev();
extern void _ZN7S1350C63v89Ev();
extern void _ZN7S1350C63v90Ev();
extern void _ZN7S1350C63v91Ev();
extern void _ZN7S1350C63v92Ev();
extern void _ZN7S1350C63v93Ev();
extern void _ZN7S1350C63v94Ev();
extern void _ZN7S1350C63v95Ev();
extern void _ZN7S1350C63v96Ev();
extern void _ZN7S1350C63v97Ev();
extern void _ZN7S1350C63v98Ev();
extern void _ZN7S1350C63v99Ev();
extern void _ZN7S1350C64v100Ev();
extern void _ZN7S1350C64v101Ev();
extern void _ZN7S1350C74v102Ev();
extern void _ZN7S1350C74v103Ev();
extern void _ZN7S1350C74v104Ev();
extern void _ZN7S1350C74v105Ev();
extern void _ZN7S1350C74v106Ev();
extern void _ZN7S1350C74v107Ev();
extern void _ZN7S1350C74v108Ev();
extern void _ZN7S1350C74v109Ev();
extern void _ZN7S1350C74v110Ev();
static  VTBL_ENTRY vtc_S1350C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1350C1[0]),
  (VTBL_ENTRY)&_ZN7S1350C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1350C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v71Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v72Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v73Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v74Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v75Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v76Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v77Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v78Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v79Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v80Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v81Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v82Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v83Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v84Ev,
  (VTBL_ENTRY)&_ZN7S1350C43v85Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v119Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v120Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v121Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v122Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v123Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v124Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v125Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v126Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v127Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v128Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v129Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v130Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v131Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v132Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v133Ev,
  (VTBL_ENTRY)&_ZN7S1350C34v134Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v135Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v136Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v137Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v138Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v139Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v140Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v141Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v142Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v143Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v144Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v145Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v146Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v147Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v148Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v149Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v150Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v151Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v152Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v153Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v154Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v155Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v156Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v157Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v158Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v159Ev,
  (VTBL_ENTRY)&_ZN7S1350C24v160Ev,
  (VTBL_ENTRY)&_ZN7S1350C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1350C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1350C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1350C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1350C12v5Ev,
  (VTBL_ENTRY)&_ZN7S1350C12v6Ev,
  (VTBL_ENTRY)&_ZN7S1350C12v7Ev,
  (VTBL_ENTRY)&_ZN7S1350C12v8Ev,
  (VTBL_ENTRY)&_ZN7S1350C12v9Ev,
  (VTBL_ENTRY)&_ZN7S1350C13v10Ev,
  (VTBL_ENTRY)&_ZN7S1350C13v11Ev,
  (VTBL_ENTRY)&_ZN7S1350C13v12Ev,
  (VTBL_ENTRY)&_ZN7S1350C13v13Ev,
  (VTBL_ENTRY)&_ZN7S1350C13v14Ev,
  (VTBL_ENTRY)&_ZN7S1350C13v15Ev,
  (VTBL_ENTRY)&_ZN7S1350C13v16Ev,
  (VTBL_ENTRY)&_ZN7S1350C13v17Ev,
  (VTBL_ENTRY)&_ZN7S1350C13v18Ev,
  (VTBL_ENTRY)&_ZN7S1350C13v19Ev,
  (VTBL_ENTRY)&_ZN7S1350C13v20Ev,
  (VTBL_ENTRY)&_ZN7S1350C13v21Ev,
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S1350C1[0]),
  (VTBL_ENTRY)&_ZN7S1350C63v86Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v87Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v88Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v89Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v90Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v91Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v92Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v93Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v94Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v95Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v96Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v97Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v98Ev,
  (VTBL_ENTRY)&_ZN7S1350C63v99Ev,
  (VTBL_ENTRY)&_ZN7S1350C64v100Ev,
  (VTBL_ENTRY)&_ZN7S1350C64v101Ev,
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S1350C1[0]),
  (VTBL_ENTRY)&_ZN7S1350C74v102Ev,
  (VTBL_ENTRY)&_ZN7S1350C74v103Ev,
  (VTBL_ENTRY)&_ZN7S1350C74v104Ev,
  (VTBL_ENTRY)&_ZN7S1350C74v105Ev,
  (VTBL_ENTRY)&_ZN7S1350C74v106Ev,
  (VTBL_ENTRY)&_ZN7S1350C74v107Ev,
  (VTBL_ENTRY)&_ZN7S1350C74v108Ev,
  (VTBL_ENTRY)&_ZN7S1350C74v109Ev,
  (VTBL_ENTRY)&_ZN7S1350C74v110Ev,
};
extern VTBL_ENTRY _ZTI7S1350C1[];
extern  VTBL_ENTRY _ZTV7S1350C1[];
Class_Descriptor cd_S1350C1 = {  "S1350C1", // class name
  bases_S1350C1, 5,
  &(vtc_S1350C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(216,140), // object size
  NSPAIRA(_ZTI7S1350C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1350C1),168, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  5, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1346C4  {
  int s1346c4f0;
  __tsi64 s1346c4f1;
  void *s1346c4f2[4];
  int s1346c4f3[2];
  void *s1346c4f4;
  ::S79C8_nt s1346c4f5;
  void *s1346c4f6[2];
  virtual  ~S1346C4(); // _ZN7S1346C4D1Ev
  virtual void  v20(); // _ZN7S1346C43v20Ev
  virtual void  v21(); // _ZN7S1346C43v21Ev
  virtual void  v22(); // _ZN7S1346C43v22Ev
  virtual void  v23(); // _ZN7S1346C43v23Ev
  virtual void  v24(); // _ZN7S1346C43v24Ev
  virtual void  v25(); // _ZN7S1346C43v25Ev
  virtual void  v26(); // _ZN7S1346C43v26Ev
  virtual void  v27(); // _ZN7S1346C43v27Ev
  virtual void  v28(); // _ZN7S1346C43v28Ev
  virtual void  v29(); // _ZN7S1346C43v29Ev
  virtual void  v30(); // _ZN7S1346C43v30Ev
  virtual void  v31(); // _ZN7S1346C43v31Ev
  virtual void  v32(); // _ZN7S1346C43v32Ev
  virtual void  v33(); // _ZN7S1346C43v33Ev
  virtual void  v34(); // _ZN7S1346C43v34Ev
  virtual void  v35(); // _ZN7S1346C43v35Ev
  virtual void  v36(); // _ZN7S1346C43v36Ev
  virtual void  v37(); // _ZN7S1346C43v37Ev
  virtual void  v38(); // _ZN7S1346C43v38Ev
  virtual void  v39(); // _ZN7S1346C43v39Ev
  virtual void  v40(); // _ZN7S1346C43v40Ev
  virtual void  v41(); // _ZN7S1346C43v41Ev
  virtual void  v42(); // _ZN7S1346C43v42Ev
  virtual void  v43(); // _ZN7S1346C43v43Ev
  virtual void  v44(); // _ZN7S1346C43v44Ev
  virtual void  v45(); // _ZN7S1346C43v45Ev
  virtual void  v46(); // _ZN7S1346C43v46Ev
  virtual void  v47(); // _ZN7S1346C43v47Ev
  virtual void  v48(); // _ZN7S1346C43v48Ev
  virtual void  v49(); // _ZN7S1346C43v49Ev
  virtual void  v50(); // _ZN7S1346C43v50Ev
  virtual void  v51(); // _ZN7S1346C43v51Ev
  virtual void  v52(); // _ZN7S1346C43v52Ev
  virtual void  v53(); // _ZN7S1346C43v53Ev
  virtual void  v54(); // _ZN7S1346C43v54Ev
  virtual void  v55(); // _ZN7S1346C43v55Ev
  virtual void  v56(); // _ZN7S1346C43v56Ev
  virtual void  v57(); // _ZN7S1346C43v57Ev
  virtual void  v58(); // _ZN7S1346C43v58Ev
  virtual void  v59(); // _ZN7S1346C43v59Ev
  virtual void  v60(); // _ZN7S1346C43v60Ev
  virtual void  v61(); // _ZN7S1346C43v61Ev
  virtual void  v62(); // _ZN7S1346C43v62Ev
  virtual void  v63(); // _ZN7S1346C43v63Ev
  virtual void  v64(); // _ZN7S1346C43v64Ev
  virtual void  v65(); // _ZN7S1346C43v65Ev
  virtual void  v66(); // _ZN7S1346C43v66Ev
  virtual void  v67(); // _ZN7S1346C43v67Ev
  virtual void  v68(); // _ZN7S1346C43v68Ev
  virtual void  v69(); // _ZN7S1346C43v69Ev
  virtual void  v70(); // _ZN7S1346C43v70Ev
  virtual void  v71(); // _ZN7S1346C43v71Ev
  virtual void  v72(); // _ZN7S1346C43v72Ev
  virtual void  v73(); // _ZN7S1346C43v73Ev
  virtual void  v74(); // _ZN7S1346C43v74Ev
  virtual void  v75(); // _ZN7S1346C43v75Ev
  virtual void  v76(); // _ZN7S1346C43v76Ev
  virtual void  v77(); // _ZN7S1346C43v77Ev
  virtual void  v78(); // _ZN7S1346C43v78Ev
  virtual void  v79(); // _ZN7S1346C43v79Ev
  virtual void  v80(); // _ZN7S1346C43v80Ev
  virtual void  v81(); // _ZN7S1346C43v81Ev
  virtual void  v82(); // _ZN7S1346C43v82Ev
  virtual void  v83(); // _ZN7S1346C43v83Ev
  S1346C4(); // tgen
};
//SIG(-1 S1346C4) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 Fi FL Fp[4] Fi[2] Fp FC2{ m Fi[2]} Fp[2]}


 S1346C4 ::~S1346C4(){ note_dtor("S1346C4", this);}
void  S1346C4 ::v20(){vfunc_called(this, "_ZN7S1346C43v20Ev");}
void  S1346C4 ::v21(){vfunc_called(this, "_ZN7S1346C43v21Ev");}
void  S1346C4 ::v22(){vfunc_called(this, "_ZN7S1346C43v22Ev");}
void  S1346C4 ::v23(){vfunc_called(this, "_ZN7S1346C43v23Ev");}
void  S1346C4 ::v24(){vfunc_called(this, "_ZN7S1346C43v24Ev");}
void  S1346C4 ::v25(){vfunc_called(this, "_ZN7S1346C43v25Ev");}
void  S1346C4 ::v26(){vfunc_called(this, "_ZN7S1346C43v26Ev");}
void  S1346C4 ::v27(){vfunc_called(this, "_ZN7S1346C43v27Ev");}
void  S1346C4 ::v28(){vfunc_called(this, "_ZN7S1346C43v28Ev");}
void  S1346C4 ::v29(){vfunc_called(this, "_ZN7S1346C43v29Ev");}
void  S1346C4 ::v30(){vfunc_called(this, "_ZN7S1346C43v30Ev");}
void  S1346C4 ::v31(){vfunc_called(this, "_ZN7S1346C43v31Ev");}
void  S1346C4 ::v32(){vfunc_called(this, "_ZN7S1346C43v32Ev");}
void  S1346C4 ::v33(){vfunc_called(this, "_ZN7S1346C43v33Ev");}
void  S1346C4 ::v34(){vfunc_called(this, "_ZN7S1346C43v34Ev");}
void  S1346C4 ::v35(){vfunc_called(this, "_ZN7S1346C43v35Ev");}
void  S1346C4 ::v36(){vfunc_called(this, "_ZN7S1346C43v36Ev");}
void  S1346C4 ::v37(){vfunc_called(this, "_ZN7S1346C43v37Ev");}
void  S1346C4 ::v38(){vfunc_called(this, "_ZN7S1346C43v38Ev");}
void  S1346C4 ::v39(){vfunc_called(this, "_ZN7S1346C43v39Ev");}
void  S1346C4 ::v40(){vfunc_called(this, "_ZN7S1346C43v40Ev");}
void  S1346C4 ::v41(){vfunc_called(this, "_ZN7S1346C43v41Ev");}
void  S1346C4 ::v42(){vfunc_called(this, "_ZN7S1346C43v42Ev");}
void  S1346C4 ::v43(){vfunc_called(this, "_ZN7S1346C43v43Ev");}
void  S1346C4 ::v44(){vfunc_called(this, "_ZN7S1346C43v44Ev");}
void  S1346C4 ::v45(){vfunc_called(this, "_ZN7S1346C43v45Ev");}
void  S1346C4 ::v46(){vfunc_called(this, "_ZN7S1346C43v46Ev");}
void  S1346C4 ::v47(){vfunc_called(this, "_ZN7S1346C43v47Ev");}
void  S1346C4 ::v48(){vfunc_called(this, "_ZN7S1346C43v48Ev");}
void  S1346C4 ::v49(){vfunc_called(this, "_ZN7S1346C43v49Ev");}
void  S1346C4 ::v50(){vfunc_called(this, "_ZN7S1346C43v50Ev");}
void  S1346C4 ::v51(){vfunc_called(this, "_ZN7S1346C43v51Ev");}
void  S1346C4 ::v52(){vfunc_called(this, "_ZN7S1346C43v52Ev");}
void  S1346C4 ::v53(){vfunc_called(this, "_ZN7S1346C43v53Ev");}
void  S1346C4 ::v54(){vfunc_called(this, "_ZN7S1346C43v54Ev");}
void  S1346C4 ::v55(){vfunc_called(this, "_ZN7S1346C43v55Ev");}
void  S1346C4 ::v56(){vfunc_called(this, "_ZN7S1346C43v56Ev");}
void  S1346C4 ::v57(){vfunc_called(this, "_ZN7S1346C43v57Ev");}
void  S1346C4 ::v58(){vfunc_called(this, "_ZN7S1346C43v58Ev");}
void  S1346C4 ::v59(){vfunc_called(this, "_ZN7S1346C43v59Ev");}
void  S1346C4 ::v60(){vfunc_called(this, "_ZN7S1346C43v60Ev");}
void  S1346C4 ::v61(){vfunc_called(this, "_ZN7S1346C43v61Ev");}
void  S1346C4 ::v62(){vfunc_called(this, "_ZN7S1346C43v62Ev");}
void  S1346C4 ::v63(){vfunc_called(this, "_ZN7S1346C43v63Ev");}
void  S1346C4 ::v64(){vfunc_called(this, "_ZN7S1346C43v64Ev");}
void  S1346C4 ::v65(){vfunc_called(this, "_ZN7S1346C43v65Ev");}
void  S1346C4 ::v66(){vfunc_called(this, "_ZN7S1346C43v66Ev");}
void  S1346C4 ::v67(){vfunc_called(this, "_ZN7S1346C43v67Ev");}
void  S1346C4 ::v68(){vfunc_called(this, "_ZN7S1346C43v68Ev");}
void  S1346C4 ::v69(){vfunc_called(this, "_ZN7S1346C43v69Ev");}
void  S1346C4 ::v70(){vfunc_called(this, "_ZN7S1346C43v70Ev");}
void  S1346C4 ::v71(){vfunc_called(this, "_ZN7S1346C43v71Ev");}
void  S1346C4 ::v72(){vfunc_called(this, "_ZN7S1346C43v72Ev");}
void  S1346C4 ::v73(){vfunc_called(this, "_ZN7S1346C43v73Ev");}
void  S1346C4 ::v74(){vfunc_called(this, "_ZN7S1346C43v74Ev");}
void  S1346C4 ::v75(){vfunc_called(this, "_ZN7S1346C43v75Ev");}
void  S1346C4 ::v76(){vfunc_called(this, "_ZN7S1346C43v76Ev");}
void  S1346C4 ::v77(){vfunc_called(this, "_ZN7S1346C43v77Ev");}
void  S1346C4 ::v78(){vfunc_called(this, "_ZN7S1346C43v78Ev");}
void  S1346C4 ::v79(){vfunc_called(this, "_ZN7S1346C43v79Ev");}
void  S1346C4 ::v80(){vfunc_called(this, "_ZN7S1346C43v80Ev");}
void  S1346C4 ::v81(){vfunc_called(this, "_ZN7S1346C43v81Ev");}
void  S1346C4 ::v82(){vfunc_called(this, "_ZN7S1346C43v82Ev");}
void  S1346C4 ::v83(){vfunc_called(this, "_ZN7S1346C43v83Ev");}
S1346C4 ::S1346C4(){ note_ctor("S1346C4", this);} // tgen

static void Test_S1346C4()
{
  extern Class_Descriptor cd_S1346C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S1346C4, buf);
    S1346C4 *dp, &lv = *(dp=new (buf) S1346C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S1346C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1346C4)");
    check_field_offset(lv, s1346c4f0, ABISELECT(8,4), "S1346C4.s1346c4f0");
    check_field_offset(lv, s1346c4f1, ABISELECT(16,8), "S1346C4.s1346c4f1");
    check_field_offset(lv, s1346c4f2, ABISELECT(24,16), "S1346C4.s1346c4f2");
    check_field_offset(lv, s1346c4f3, ABISELECT(56,32), "S1346C4.s1346c4f3");
    check_field_offset(lv, s1346c4f4, ABISELECT(64,40), "S1346C4.s1346c4f4");
    check_field_offset(lv, s1346c4f5, ABISELECT(72,44), "S1346C4.s1346c4f5");
    check_field_offset(lv, s1346c4f6, ABISELECT(80,52), "S1346C4.s1346c4f6");
    test_class_info(&lv, &cd_S1346C4);
    dp->~S1346C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1346C4(Test_S1346C4, "S1346C4", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S1346C4C1Ev();
extern void _ZN7S1346C4D1Ev();
Name_Map name_map_S1346C4[] = {
  NSPAIR(_ZN7S1346C4C1Ev),
  NSPAIR(_ZN7S1346C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1346C4[];
extern void _ZN7S1346C4D1Ev();
extern void _ZN7S1346C4D0Ev();
extern void _ZN7S1346C43v20Ev();
extern void _ZN7S1346C43v21Ev();
extern void _ZN7S1346C43v22Ev();
extern void _ZN7S1346C43v23Ev();
extern void _ZN7S1346C43v24Ev();
extern void _ZN7S1346C43v25Ev();
extern void _ZN7S1346C43v26Ev();
extern void _ZN7S1346C43v27Ev();
extern void _ZN7S1346C43v28Ev();
extern void _ZN7S1346C43v29Ev();
extern void _ZN7S1346C43v30Ev();
extern void _ZN7S1346C43v31Ev();
extern void _ZN7S1346C43v32Ev();
extern void _ZN7S1346C43v33Ev();
extern void _ZN7S1346C43v34Ev();
extern void _ZN7S1346C43v35Ev();
extern void _ZN7S1346C43v36Ev();
extern void _ZN7S1346C43v37Ev();
extern void _ZN7S1346C43v38Ev();
extern void _ZN7S1346C43v39Ev();
extern void _ZN7S1346C43v40Ev();
extern void _ZN7S1346C43v41Ev();
extern void _ZN7S1346C43v42Ev();
extern void _ZN7S1346C43v43Ev();
extern void _ZN7S1346C43v44Ev();
extern void _ZN7S1346C43v45Ev();
extern void _ZN7S1346C43v46Ev();
extern void _ZN7S1346C43v47Ev();
extern void _ZN7S1346C43v48Ev();
extern void _ZN7S1346C43v49Ev();
extern void _ZN7S1346C43v50Ev();
extern void _ZN7S1346C43v51Ev();
extern void _ZN7S1346C43v52Ev();
extern void _ZN7S1346C43v53Ev();
extern void _ZN7S1346C43v54Ev();
extern void _ZN7S1346C43v55Ev();
extern void _ZN7S1346C43v56Ev();
extern void _ZN7S1346C43v57Ev();
extern void _ZN7S1346C43v58Ev();
extern void _ZN7S1346C43v59Ev();
extern void _ZN7S1346C43v60Ev();
extern void _ZN7S1346C43v61Ev();
extern void _ZN7S1346C43v62Ev();
extern void _ZN7S1346C43v63Ev();
extern void _ZN7S1346C43v64Ev();
extern void _ZN7S1346C43v65Ev();
extern void _ZN7S1346C43v66Ev();
extern void _ZN7S1346C43v67Ev();
extern void _ZN7S1346C43v68Ev();
extern void _ZN7S1346C43v69Ev();
extern void _ZN7S1346C43v70Ev();
extern void _ZN7S1346C43v71Ev();
extern void _ZN7S1346C43v72Ev();
extern void _ZN7S1346C43v73Ev();
extern void _ZN7S1346C43v74Ev();
extern void _ZN7S1346C43v75Ev();
extern void _ZN7S1346C43v76Ev();
extern void _ZN7S1346C43v77Ev();
extern void _ZN7S1346C43v78Ev();
extern void _ZN7S1346C43v79Ev();
extern void _ZN7S1346C43v80Ev();
extern void _ZN7S1346C43v81Ev();
extern void _ZN7S1346C43v82Ev();
extern void _ZN7S1346C43v83Ev();
static  VTBL_ENTRY vtc_S1346C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1346C4[0]),
  (VTBL_ENTRY)&_ZN7S1346C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1346C4D0Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v71Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v72Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v73Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v74Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v75Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v76Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v77Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v78Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v79Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v80Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v81Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v82Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v83Ev,
};
extern VTBL_ENTRY _ZTI7S1346C4[];
extern  VTBL_ENTRY _ZTV7S1346C4[];
Class_Descriptor cd_S1346C4 = {  "S1346C4", // class name
  0,0,//no base classes
  &(vtc_S1346C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S1346C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1346C4),68, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1346C6  {
  virtual void  v84(); // _ZN7S1346C63v84Ev
  virtual void  v85(); // _ZN7S1346C63v85Ev
  virtual void  v86(); // _ZN7S1346C63v86Ev
  virtual void  v87(); // _ZN7S1346C63v87Ev
  virtual void  v88(); // _ZN7S1346C63v88Ev
  virtual void  v89(); // _ZN7S1346C63v89Ev
  virtual void  v90(); // _ZN7S1346C63v90Ev
  virtual void  v91(); // _ZN7S1346C63v91Ev
  virtual void  v92(); // _ZN7S1346C63v92Ev
  virtual void  v93(); // _ZN7S1346C63v93Ev
  virtual void  v94(); // _ZN7S1346C63v94Ev
  virtual void  v95(); // _ZN7S1346C63v95Ev
  virtual void  v96(); // _ZN7S1346C63v96Ev
  virtual void  v97(); // _ZN7S1346C63v97Ev
  virtual void  v98(); // _ZN7S1346C63v98Ev
  virtual void  v99(); // _ZN7S1346C63v99Ev
  ~S1346C6(); // tgen
  S1346C6(); // tgen
};
//SIG(-1 S1346C6) C1{ v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16}


void  S1346C6 ::v84(){vfunc_called(this, "_ZN7S1346C63v84Ev");}
void  S1346C6 ::v85(){vfunc_called(this, "_ZN7S1346C63v85Ev");}
void  S1346C6 ::v86(){vfunc_called(this, "_ZN7S1346C63v86Ev");}
void  S1346C6 ::v87(){vfunc_called(this, "_ZN7S1346C63v87Ev");}
void  S1346C6 ::v88(){vfunc_called(this, "_ZN7S1346C63v88Ev");}
void  S1346C6 ::v89(){vfunc_called(this, "_ZN7S1346C63v89Ev");}
void  S1346C6 ::v90(){vfunc_called(this, "_ZN7S1346C63v90Ev");}
void  S1346C6 ::v91(){vfunc_called(this, "_ZN7S1346C63v91Ev");}
void  S1346C6 ::v92(){vfunc_called(this, "_ZN7S1346C63v92Ev");}
void  S1346C6 ::v93(){vfunc_called(this, "_ZN7S1346C63v93Ev");}
void  S1346C6 ::v94(){vfunc_called(this, "_ZN7S1346C63v94Ev");}
void  S1346C6 ::v95(){vfunc_called(this, "_ZN7S1346C63v95Ev");}
void  S1346C6 ::v96(){vfunc_called(this, "_ZN7S1346C63v96Ev");}
void  S1346C6 ::v97(){vfunc_called(this, "_ZN7S1346C63v97Ev");}
void  S1346C6 ::v98(){vfunc_called(this, "_ZN7S1346C63v98Ev");}
void  S1346C6 ::v99(){vfunc_called(this, "_ZN7S1346C63v99Ev");}
S1346C6 ::~S1346C6(){ note_dtor("S1346C6", this);} // tgen
S1346C6 ::S1346C6(){ note_ctor("S1346C6", this);} // tgen

static void Test_S1346C6()
{
  extern Class_Descriptor cd_S1346C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S1346C6, buf);
    S1346C6 *dp, &lv = *(dp=new (buf) S1346C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1346C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1346C6)");
    test_class_info(&lv, &cd_S1346C6);
    dp->~S1346C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1346C6(Test_S1346C6, "S1346C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S1346C6C1Ev();
extern void _ZN7S1346C6D1Ev();
Name_Map name_map_S1346C6[] = {
  NSPAIR(_ZN7S1346C6C1Ev),
  NSPAIR(_ZN7S1346C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1346C6[];
extern void _ZN7S1346C63v84Ev();
extern void _ZN7S1346C63v85Ev();
extern void _ZN7S1346C63v86Ev();
extern void _ZN7S1346C63v87Ev();
extern void _ZN7S1346C63v88Ev();
extern void _ZN7S1346C63v89Ev();
extern void _ZN7S1346C63v90Ev();
extern void _ZN7S1346C63v91Ev();
extern void _ZN7S1346C63v92Ev();
extern void _ZN7S1346C63v93Ev();
extern void _ZN7S1346C63v94Ev();
extern void _ZN7S1346C63v95Ev();
extern void _ZN7S1346C63v96Ev();
extern void _ZN7S1346C63v97Ev();
extern void _ZN7S1346C63v98Ev();
extern void _ZN7S1346C63v99Ev();
static  VTBL_ENTRY vtc_S1346C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1346C6[0]),
  (VTBL_ENTRY)&_ZN7S1346C63v84Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v85Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v86Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v87Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v88Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v89Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v90Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v91Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v92Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v93Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v94Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v95Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v96Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v97Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v98Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v99Ev,
};
extern VTBL_ENTRY _ZTI7S1346C6[];
extern  VTBL_ENTRY _ZTV7S1346C6[];
Class_Descriptor cd_S1346C6 = {  "S1346C6", // class name
  0,0,//no base classes
  &(vtc_S1346C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S1346C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1346C6),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1346C7  {
  virtual void  v100(); // _ZN7S1346C74v100Ev
  virtual void  v101(); // _ZN7S1346C74v101Ev
  virtual void  v102(); // _ZN7S1346C74v102Ev
  virtual void  v103(); // _ZN7S1346C74v103Ev
  virtual void  v104(); // _ZN7S1346C74v104Ev
  virtual void  v105(); // _ZN7S1346C74v105Ev
  virtual void  v106(); // _ZN7S1346C74v106Ev
  virtual void  v107(); // _ZN7S1346C74v107Ev
  virtual void  v108(); // _ZN7S1346C74v108Ev
  ~S1346C7(); // tgen
  S1346C7(); // tgen
};
//SIG(-1 S1346C7) C1{ v1 v2 v3 v4 v5 v6 v7 v8 v9}


void  S1346C7 ::v100(){vfunc_called(this, "_ZN7S1346C74v100Ev");}
void  S1346C7 ::v101(){vfunc_called(this, "_ZN7S1346C74v101Ev");}
void  S1346C7 ::v102(){vfunc_called(this, "_ZN7S1346C74v102Ev");}
void  S1346C7 ::v103(){vfunc_called(this, "_ZN7S1346C74v103Ev");}
void  S1346C7 ::v104(){vfunc_called(this, "_ZN7S1346C74v104Ev");}
void  S1346C7 ::v105(){vfunc_called(this, "_ZN7S1346C74v105Ev");}
void  S1346C7 ::v106(){vfunc_called(this, "_ZN7S1346C74v106Ev");}
void  S1346C7 ::v107(){vfunc_called(this, "_ZN7S1346C74v107Ev");}
void  S1346C7 ::v108(){vfunc_called(this, "_ZN7S1346C74v108Ev");}
S1346C7 ::~S1346C7(){ note_dtor("S1346C7", this);} // tgen
S1346C7 ::S1346C7(){ note_ctor("S1346C7", this);} // tgen

static void Test_S1346C7()
{
  extern Class_Descriptor cd_S1346C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S1346C7, buf);
    S1346C7 *dp, &lv = *(dp=new (buf) S1346C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1346C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1346C7)");
    test_class_info(&lv, &cd_S1346C7);
    dp->~S1346C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1346C7(Test_S1346C7, "S1346C7", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S1346C7C1Ev();
extern void _ZN7S1346C7D1Ev();
Name_Map name_map_S1346C7[] = {
  NSPAIR(_ZN7S1346C7C1Ev),
  NSPAIR(_ZN7S1346C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1346C7[];
extern void _ZN7S1346C74v100Ev();
extern void _ZN7S1346C74v101Ev();
extern void _ZN7S1346C74v102Ev();
extern void _ZN7S1346C74v103Ev();
extern void _ZN7S1346C74v104Ev();
extern void _ZN7S1346C74v105Ev();
extern void _ZN7S1346C74v106Ev();
extern void _ZN7S1346C74v107Ev();
extern void _ZN7S1346C74v108Ev();
static  VTBL_ENTRY vtc_S1346C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1346C7[0]),
  (VTBL_ENTRY)&_ZN7S1346C74v100Ev,
  (VTBL_ENTRY)&_ZN7S1346C74v101Ev,
  (VTBL_ENTRY)&_ZN7S1346C74v102Ev,
  (VTBL_ENTRY)&_ZN7S1346C74v103Ev,
  (VTBL_ENTRY)&_ZN7S1346C74v104Ev,
  (VTBL_ENTRY)&_ZN7S1346C74v105Ev,
  (VTBL_ENTRY)&_ZN7S1346C74v106Ev,
  (VTBL_ENTRY)&_ZN7S1346C74v107Ev,
  (VTBL_ENTRY)&_ZN7S1346C74v108Ev,
};
extern VTBL_ENTRY _ZTI7S1346C7[];
extern  VTBL_ENTRY _ZTV7S1346C7[];
Class_Descriptor cd_S1346C7 = {  "S1346C7", // class name
  0,0,//no base classes
  &(vtc_S1346C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S1346C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1346C7),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1346C3  : S1346C4 , S1346C6 , S1346C7 {
  void *s1346c3f0;
  ::S79C39_nt s1346c3f1;
  unsigned int s1346c3f2:1;
  unsigned int s1346c3f3:1;
  unsigned int s1346c3f4:1;
  unsigned int s1346c3f5:1;
  virtual  ~S1346C3(); // _ZN7S1346C3D1Ev
  virtual void  v109(); // _ZN7S1346C34v109Ev
  virtual void  v110(); // _ZN7S1346C34v110Ev
  virtual void  v111(); // _ZN7S1346C34v111Ev
  virtual void  v112(); // _ZN7S1346C34v112Ev
  virtual void  v113(); // _ZN7S1346C34v113Ev
  virtual void  v114(); // _ZN7S1346C34v114Ev
  virtual void  v115(); // _ZN7S1346C34v115Ev
  virtual void  v116(); // _ZN7S1346C34v116Ev
  virtual void  v117(); // _ZN7S1346C34v117Ev
  virtual void  v118(); // _ZN7S1346C34v118Ev
  virtual void  v119(); // _ZN7S1346C34v119Ev
  virtual void  v120(); // _ZN7S1346C34v120Ev
  virtual void  v121(); // _ZN7S1346C34v121Ev
  virtual void  v122(); // _ZN7S1346C34v122Ev
  virtual void  v123(); // _ZN7S1346C34v123Ev
  virtual void  v124(); // _ZN7S1346C34v124Ev
  virtual void  v125(); // _ZN7S1346C34v125Ev
  virtual void  v126(); // _ZN7S1346C34v126Ev
  virtual void  v127(); // _ZN7S1346C34v127Ev
  virtual void  v128(); // _ZN7S1346C34v128Ev
  virtual void  v129(); // _ZN7S1346C34v129Ev
  virtual void  v130(); // _ZN7S1346C34v130Ev
  virtual void  v131(); // _ZN7S1346C34v131Ev
  virtual void  v132(); // _ZN7S1346C34v132Ev
  S1346C3(); // tgen
};
//SIG(-1 S1346C3) C1{ BC2{ vd v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} BC4{ v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104} BC5{ v105 v106 v107 v108 v109 v110 v111 v112 v113} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 Fp FC6{ BC7{ BC8{ BC9{ m Fp Fi[2]}}}} Fi:1 Fi:1 Fi:1 Fi:1}


 S1346C3 ::~S1346C3(){ note_dtor("S1346C3", this);}
void  S1346C3 ::v109(){vfunc_called(this, "_ZN7S1346C34v109Ev");}
void  S1346C3 ::v110(){vfunc_called(this, "_ZN7S1346C34v110Ev");}
void  S1346C3 ::v111(){vfunc_called(this, "_ZN7S1346C34v111Ev");}
void  S1346C3 ::v112(){vfunc_called(this, "_ZN7S1346C34v112Ev");}
void  S1346C3 ::v113(){vfunc_called(this, "_ZN7S1346C34v113Ev");}
void  S1346C3 ::v114(){vfunc_called(this, "_ZN7S1346C34v114Ev");}
void  S1346C3 ::v115(){vfunc_called(this, "_ZN7S1346C34v115Ev");}
void  S1346C3 ::v116(){vfunc_called(this, "_ZN7S1346C34v116Ev");}
void  S1346C3 ::v117(){vfunc_called(this, "_ZN7S1346C34v117Ev");}
void  S1346C3 ::v118(){vfunc_called(this, "_ZN7S1346C34v118Ev");}
void  S1346C3 ::v119(){vfunc_called(this, "_ZN7S1346C34v119Ev");}
void  S1346C3 ::v120(){vfunc_called(this, "_ZN7S1346C34v120Ev");}
void  S1346C3 ::v121(){vfunc_called(this, "_ZN7S1346C34v121Ev");}
void  S1346C3 ::v122(){vfunc_called(this, "_ZN7S1346C34v122Ev");}
void  S1346C3 ::v123(){vfunc_called(this, "_ZN7S1346C34v123Ev");}
void  S1346C3 ::v124(){vfunc_called(this, "_ZN7S1346C34v124Ev");}
void  S1346C3 ::v125(){vfunc_called(this, "_ZN7S1346C34v125Ev");}
void  S1346C3 ::v126(){vfunc_called(this, "_ZN7S1346C34v126Ev");}
void  S1346C3 ::v127(){vfunc_called(this, "_ZN7S1346C34v127Ev");}
void  S1346C3 ::v128(){vfunc_called(this, "_ZN7S1346C34v128Ev");}
void  S1346C3 ::v129(){vfunc_called(this, "_ZN7S1346C34v129Ev");}
void  S1346C3 ::v130(){vfunc_called(this, "_ZN7S1346C34v130Ev");}
void  S1346C3 ::v131(){vfunc_called(this, "_ZN7S1346C34v131Ev");}
void  S1346C3 ::v132(){vfunc_called(this, "_ZN7S1346C34v132Ev");}
S1346C3 ::S1346C3(){ note_ctor("S1346C3", this);} // tgen

static void Test_S1346C3()
{
  extern Class_Descriptor cd_S1346C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,23)];
    init_test(&cd_S1346C3, buf);
    S1346C3 *dp, &lv = *(dp=new (buf) S1346C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,88), "sizeof(S1346C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1346C3)");
    check_base_class_offset(lv, (S1346C4*), 0, "S1346C3");
    check_base_class_offset(lv, (S1346C6*), ABISELECT(96,60), "S1346C3");
    check_base_class_offset(lv, (S1346C7*), ABISELECT(104,64), "S1346C3");
    check_field_offset(lv, s1346c3f0, ABISELECT(112,68), "S1346C3.s1346c3f0");
    check_field_offset(lv, s1346c3f1, ABISELECT(120,72), "S1346C3.s1346c3f1");
    set_bf_and_test(lv, s1346c3f2, ABISELECT(136,84), 0, 1, 1, "S1346C3");
    set_bf_and_test(lv, s1346c3f3, ABISELECT(136,84), 1, 1, 1, "S1346C3");
    set_bf_and_test(lv, s1346c3f4, ABISELECT(136,84), 2, 1, 1, "S1346C3");
    set_bf_and_test(lv, s1346c3f5, ABISELECT(136,84), 3, 1, 1, "S1346C3");
    test_class_info(&lv, &cd_S1346C3);
    dp->~S1346C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1346C3(Test_S1346C3, "S1346C3", ABISELECT(144,88));

#else // __cplusplus

extern void _ZN7S1346C3C1Ev();
extern void _ZN7S1346C3D1Ev();
Name_Map name_map_S1346C3[] = {
  NSPAIR(_ZN7S1346C3C1Ev),
  NSPAIR(_ZN7S1346C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1346C4;
extern VTBL_ENTRY _ZTI7S1346C4[];
extern  VTBL_ENTRY _ZTV7S1346C4[];
extern Class_Descriptor cd_S1346C6;
extern VTBL_ENTRY _ZTI7S1346C6[];
extern  VTBL_ENTRY _ZTV7S1346C6[];
extern Class_Descriptor cd_S1346C7;
extern VTBL_ENTRY _ZTI7S1346C7[];
extern  VTBL_ENTRY _ZTV7S1346C7[];
static Base_Class bases_S1346C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1346C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1346C6,    ABISELECT(96,60), //bcp->offset
    92, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1346C7,    ABISELECT(104,64), //bcp->offset
    110, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1346C3[];
extern void _ZN7S1346C3D1Ev();
extern void _ZN7S1346C3D0Ev();
extern void _ZN7S1346C43v20Ev();
extern void _ZN7S1346C43v21Ev();
extern void _ZN7S1346C43v22Ev();
extern void _ZN7S1346C43v23Ev();
extern void _ZN7S1346C43v24Ev();
extern void _ZN7S1346C43v25Ev();
extern void _ZN7S1346C43v26Ev();
extern void _ZN7S1346C43v27Ev();
extern void _ZN7S1346C43v28Ev();
extern void _ZN7S1346C43v29Ev();
extern void _ZN7S1346C43v30Ev();
extern void _ZN7S1346C43v31Ev();
extern void _ZN7S1346C43v32Ev();
extern void _ZN7S1346C43v33Ev();
extern void _ZN7S1346C43v34Ev();
extern void _ZN7S1346C43v35Ev();
extern void _ZN7S1346C43v36Ev();
extern void _ZN7S1346C43v37Ev();
extern void _ZN7S1346C43v38Ev();
extern void _ZN7S1346C43v39Ev();
extern void _ZN7S1346C43v40Ev();
extern void _ZN7S1346C43v41Ev();
extern void _ZN7S1346C43v42Ev();
extern void _ZN7S1346C43v43Ev();
extern void _ZN7S1346C43v44Ev();
extern void _ZN7S1346C43v45Ev();
extern void _ZN7S1346C43v46Ev();
extern void _ZN7S1346C43v47Ev();
extern void _ZN7S1346C43v48Ev();
extern void _ZN7S1346C43v49Ev();
extern void _ZN7S1346C43v50Ev();
extern void _ZN7S1346C43v51Ev();
extern void _ZN7S1346C43v52Ev();
extern void _ZN7S1346C43v53Ev();
extern void _ZN7S1346C43v54Ev();
extern void _ZN7S1346C43v55Ev();
extern void _ZN7S1346C43v56Ev();
extern void _ZN7S1346C43v57Ev();
extern void _ZN7S1346C43v58Ev();
extern void _ZN7S1346C43v59Ev();
extern void _ZN7S1346C43v60Ev();
extern void _ZN7S1346C43v61Ev();
extern void _ZN7S1346C43v62Ev();
extern void _ZN7S1346C43v63Ev();
extern void _ZN7S1346C43v64Ev();
extern void _ZN7S1346C43v65Ev();
extern void _ZN7S1346C43v66Ev();
extern void _ZN7S1346C43v67Ev();
extern void _ZN7S1346C43v68Ev();
extern void _ZN7S1346C43v69Ev();
extern void _ZN7S1346C43v70Ev();
extern void _ZN7S1346C43v71Ev();
extern void _ZN7S1346C43v72Ev();
extern void _ZN7S1346C43v73Ev();
extern void _ZN7S1346C43v74Ev();
extern void _ZN7S1346C43v75Ev();
extern void _ZN7S1346C43v76Ev();
extern void _ZN7S1346C43v77Ev();
extern void _ZN7S1346C43v78Ev();
extern void _ZN7S1346C43v79Ev();
extern void _ZN7S1346C43v80Ev();
extern void _ZN7S1346C43v81Ev();
extern void _ZN7S1346C43v82Ev();
extern void _ZN7S1346C43v83Ev();
extern void _ZN7S1346C34v109Ev();
extern void _ZN7S1346C34v110Ev();
extern void _ZN7S1346C34v111Ev();
extern void _ZN7S1346C34v112Ev();
extern void _ZN7S1346C34v113Ev();
extern void _ZN7S1346C34v114Ev();
extern void _ZN7S1346C34v115Ev();
extern void _ZN7S1346C34v116Ev();
extern void _ZN7S1346C34v117Ev();
extern void _ZN7S1346C34v118Ev();
extern void _ZN7S1346C34v119Ev();
extern void _ZN7S1346C34v120Ev();
extern void _ZN7S1346C34v121Ev();
extern void _ZN7S1346C34v122Ev();
extern void _ZN7S1346C34v123Ev();
extern void _ZN7S1346C34v124Ev();
extern void _ZN7S1346C34v125Ev();
extern void _ZN7S1346C34v126Ev();
extern void _ZN7S1346C34v127Ev();
extern void _ZN7S1346C34v128Ev();
extern void _ZN7S1346C34v129Ev();
extern void _ZN7S1346C34v130Ev();
extern void _ZN7S1346C34v131Ev();
extern void _ZN7S1346C34v132Ev();
extern void _ZN7S1346C63v84Ev();
extern void _ZN7S1346C63v85Ev();
extern void _ZN7S1346C63v86Ev();
extern void _ZN7S1346C63v87Ev();
extern void _ZN7S1346C63v88Ev();
extern void _ZN7S1346C63v89Ev();
extern void _ZN7S1346C63v90Ev();
extern void _ZN7S1346C63v91Ev();
extern void _ZN7S1346C63v92Ev();
extern void _ZN7S1346C63v93Ev();
extern void _ZN7S1346C63v94Ev();
extern void _ZN7S1346C63v95Ev();
extern void _ZN7S1346C63v96Ev();
extern void _ZN7S1346C63v97Ev();
extern void _ZN7S1346C63v98Ev();
extern void _ZN7S1346C63v99Ev();
extern void _ZN7S1346C74v100Ev();
extern void _ZN7S1346C74v101Ev();
extern void _ZN7S1346C74v102Ev();
extern void _ZN7S1346C74v103Ev();
extern void _ZN7S1346C74v104Ev();
extern void _ZN7S1346C74v105Ev();
extern void _ZN7S1346C74v106Ev();
extern void _ZN7S1346C74v107Ev();
extern void _ZN7S1346C74v108Ev();
static  VTBL_ENTRY vtc_S1346C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1346C3[0]),
  (VTBL_ENTRY)&_ZN7S1346C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1346C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v71Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v72Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v73Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v74Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v75Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v76Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v77Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v78Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v79Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v80Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v81Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v82Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v83Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v119Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v120Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v121Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v122Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v123Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v124Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v125Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v126Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v127Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v128Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v129Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v130Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v131Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v132Ev,
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S1346C3[0]),
  (VTBL_ENTRY)&_ZN7S1346C63v84Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v85Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v86Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v87Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v88Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v89Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v90Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v91Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v92Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v93Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v94Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v95Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v96Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v97Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v98Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v99Ev,
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S1346C3[0]),
  (VTBL_ENTRY)&_ZN7S1346C74v100Ev,
  (VTBL_ENTRY)&_ZN7S1346C74v101Ev,
  (VTBL_ENTRY)&_ZN7S1346C74v102Ev,
  (VTBL_ENTRY)&_ZN7S1346C74v103Ev,
  (VTBL_ENTRY)&_ZN7S1346C74v104Ev,
  (VTBL_ENTRY)&_ZN7S1346C74v105Ev,
  (VTBL_ENTRY)&_ZN7S1346C74v106Ev,
  (VTBL_ENTRY)&_ZN7S1346C74v107Ev,
  (VTBL_ENTRY)&_ZN7S1346C74v108Ev,
};
extern VTBL_ENTRY _ZTI7S1346C3[];
extern  VTBL_ENTRY _ZTV7S1346C3[];
Class_Descriptor cd_S1346C3 = {  "S1346C3", // class name
  bases_S1346C3, 3,
  &(vtc_S1346C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,88), // object size
  NSPAIRA(_ZTI7S1346C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S1346C3),121, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1346C2  : S1346C3 {
  ::S3262C11_nt s1346c2f0;
  int s1346c2f1;
  virtual  ~S1346C2(); // _ZN7S1346C2D1Ev
  virtual void  v133(); // _ZN7S1346C24v133Ev
  virtual void  v134(); // _ZN7S1346C24v134Ev
  virtual void  v135(); // _ZN7S1346C24v135Ev
  virtual void  v136(); // _ZN7S1346C24v136Ev
  virtual void  v137(); // _ZN7S1346C24v137Ev
  virtual void  v138(); // _ZN7S1346C24v138Ev
  virtual void  v139(); // _ZN7S1346C24v139Ev
  virtual void  v140(); // _ZN7S1346C24v140Ev
  virtual void  v141(); // _ZN7S1346C24v141Ev
  virtual void  v142(); // _ZN7S1346C24v142Ev
  virtual void  v143(); // _ZN7S1346C24v143Ev
  virtual void  v144(); // _ZN7S1346C24v144Ev
  virtual void  v145(); // _ZN7S1346C24v145Ev
  virtual void  v146(); // _ZN7S1346C24v146Ev
  virtual void  v147(); // _ZN7S1346C24v147Ev
  virtual void  v148(); // _ZN7S1346C24v148Ev
  virtual void  v149(); // _ZN7S1346C24v149Ev
  virtual void  v150(); // _ZN7S1346C24v150Ev
  virtual void  v151(); // _ZN7S1346C24v151Ev
  virtual void  v152(); // _ZN7S1346C24v152Ev
  virtual void  v153(); // _ZN7S1346C24v153Ev
  virtual void  v154(); // _ZN7S1346C24v154Ev
  virtual void  v155(); // _ZN7S1346C24v155Ev
  virtual void  v156(); // _ZN7S1346C24v156Ev
  virtual void  v157(); // _ZN7S1346C24v157Ev
  virtual void  v158(); // _ZN7S1346C24v158Ev
  virtual void  v159(); // _ZN7S1346C24v159Ev
  S1346C2(); // tgen
};
//SIG(-1 S1346C2) C1{ BC2{ BC3{ vd v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} BC5{ v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107} BC6{ v108 v109 v110 v111 v112 v113 v114 v115 v116} vd v117 v118 v119 v120 v121 v122 v123 v124 v125 v126 v127 v128 v129 v130 v131 v132 v133 v134 v135 v136 v137 v138 v139 v140 Fp FC7{ BC8{ BC9{ BC10{ m Fp Fi[2]}}}} Fi:1 Fi:1 Fi:1 Fi:1} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 FC11{ m FC12{ BC13{ BC10}} Fc} Fi}


 S1346C2 ::~S1346C2(){ note_dtor("S1346C2", this);}
void  S1346C2 ::v133(){vfunc_called(this, "_ZN7S1346C24v133Ev");}
void  S1346C2 ::v134(){vfunc_called(this, "_ZN7S1346C24v134Ev");}
void  S1346C2 ::v135(){vfunc_called(this, "_ZN7S1346C24v135Ev");}
void  S1346C2 ::v136(){vfunc_called(this, "_ZN7S1346C24v136Ev");}
void  S1346C2 ::v137(){vfunc_called(this, "_ZN7S1346C24v137Ev");}
void  S1346C2 ::v138(){vfunc_called(this, "_ZN7S1346C24v138Ev");}
void  S1346C2 ::v139(){vfunc_called(this, "_ZN7S1346C24v139Ev");}
void  S1346C2 ::v140(){vfunc_called(this, "_ZN7S1346C24v140Ev");}
void  S1346C2 ::v141(){vfunc_called(this, "_ZN7S1346C24v141Ev");}
void  S1346C2 ::v142(){vfunc_called(this, "_ZN7S1346C24v142Ev");}
void  S1346C2 ::v143(){vfunc_called(this, "_ZN7S1346C24v143Ev");}
void  S1346C2 ::v144(){vfunc_called(this, "_ZN7S1346C24v144Ev");}
void  S1346C2 ::v145(){vfunc_called(this, "_ZN7S1346C24v145Ev");}
void  S1346C2 ::v146(){vfunc_called(this, "_ZN7S1346C24v146Ev");}
void  S1346C2 ::v147(){vfunc_called(this, "_ZN7S1346C24v147Ev");}
void  S1346C2 ::v148(){vfunc_called(this, "_ZN7S1346C24v148Ev");}
void  S1346C2 ::v149(){vfunc_called(this, "_ZN7S1346C24v149Ev");}
void  S1346C2 ::v150(){vfunc_called(this, "_ZN7S1346C24v150Ev");}
void  S1346C2 ::v151(){vfunc_called(this, "_ZN7S1346C24v151Ev");}
void  S1346C2 ::v152(){vfunc_called(this, "_ZN7S1346C24v152Ev");}
void  S1346C2 ::v153(){vfunc_called(this, "_ZN7S1346C24v153Ev");}
void  S1346C2 ::v154(){vfunc_called(this, "_ZN7S1346C24v154Ev");}
void  S1346C2 ::v155(){vfunc_called(this, "_ZN7S1346C24v155Ev");}
void  S1346C2 ::v156(){vfunc_called(this, "_ZN7S1346C24v156Ev");}
void  S1346C2 ::v157(){vfunc_called(this, "_ZN7S1346C24v157Ev");}
void  S1346C2 ::v158(){vfunc_called(this, "_ZN7S1346C24v158Ev");}
void  S1346C2 ::v159(){vfunc_called(this, "_ZN7S1346C24v159Ev");}
S1346C2 ::S1346C2(){ note_ctor("S1346C2", this);} // tgen

static void Test_S1346C2()
{
  extern Class_Descriptor cd_S1346C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,28)];
    init_test(&cd_S1346C2, buf);
    S1346C2 *dp, &lv = *(dp=new (buf) S1346C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,108), "sizeof(S1346C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1346C2)");
    check_base_class_offset(lv, (S1346C4*)(S1346C3*), 0, "S1346C2");
    check_base_class_offset(lv, (S1346C6*)(S1346C3*), ABISELECT(96,60), "S1346C2");
    check_base_class_offset(lv, (S1346C7*)(S1346C3*), ABISELECT(104,64), "S1346C2");
    check_base_class_offset(lv, (S1346C3*), 0, "S1346C2");
    check_field_offset(lv, s1346c2f0, ABISELECT(144,88), "S1346C2.s1346c2f0");
    check_field_offset(lv, s1346c2f1, ABISELECT(168,104), "S1346C2.s1346c2f1");
    test_class_info(&lv, &cd_S1346C2);
    dp->~S1346C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1346C2(Test_S1346C2, "S1346C2", ABISELECT(176,108));

#else // __cplusplus

extern void _ZN7S1346C2C1Ev();
extern void _ZN7S1346C2D1Ev();
Name_Map name_map_S1346C2[] = {
  NSPAIR(_ZN7S1346C2C1Ev),
  NSPAIR(_ZN7S1346C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1346C4;
extern VTBL_ENTRY _ZTI7S1346C4[];
extern  VTBL_ENTRY _ZTV7S1346C4[];
extern Class_Descriptor cd_S1346C6;
extern VTBL_ENTRY _ZTI7S1346C6[];
extern  VTBL_ENTRY _ZTV7S1346C6[];
extern Class_Descriptor cd_S1346C7;
extern VTBL_ENTRY _ZTI7S1346C7[];
extern  VTBL_ENTRY _ZTV7S1346C7[];
extern Class_Descriptor cd_S1346C3;
extern VTBL_ENTRY _ZTI7S1346C3[];
extern  VTBL_ENTRY _ZTV7S1346C3[];
static Base_Class bases_S1346C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1346C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1346C6,    ABISELECT(96,60), //bcp->offset
    119, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1346C7,    ABISELECT(104,64), //bcp->offset
    137, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1346C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1346C2[];
extern void _ZN7S1346C2D1Ev();
extern void _ZN7S1346C2D0Ev();
extern void _ZN7S1346C43v20Ev();
extern void _ZN7S1346C43v21Ev();
extern void _ZN7S1346C43v22Ev();
extern void _ZN7S1346C43v23Ev();
extern void _ZN7S1346C43v24Ev();
extern void _ZN7S1346C43v25Ev();
extern void _ZN7S1346C43v26Ev();
extern void _ZN7S1346C43v27Ev();
extern void _ZN7S1346C43v28Ev();
extern void _ZN7S1346C43v29Ev();
extern void _ZN7S1346C43v30Ev();
extern void _ZN7S1346C43v31Ev();
extern void _ZN7S1346C43v32Ev();
extern void _ZN7S1346C43v33Ev();
extern void _ZN7S1346C43v34Ev();
extern void _ZN7S1346C43v35Ev();
extern void _ZN7S1346C43v36Ev();
extern void _ZN7S1346C43v37Ev();
extern void _ZN7S1346C43v38Ev();
extern void _ZN7S1346C43v39Ev();
extern void _ZN7S1346C43v40Ev();
extern void _ZN7S1346C43v41Ev();
extern void _ZN7S1346C43v42Ev();
extern void _ZN7S1346C43v43Ev();
extern void _ZN7S1346C43v44Ev();
extern void _ZN7S1346C43v45Ev();
extern void _ZN7S1346C43v46Ev();
extern void _ZN7S1346C43v47Ev();
extern void _ZN7S1346C43v48Ev();
extern void _ZN7S1346C43v49Ev();
extern void _ZN7S1346C43v50Ev();
extern void _ZN7S1346C43v51Ev();
extern void _ZN7S1346C43v52Ev();
extern void _ZN7S1346C43v53Ev();
extern void _ZN7S1346C43v54Ev();
extern void _ZN7S1346C43v55Ev();
extern void _ZN7S1346C43v56Ev();
extern void _ZN7S1346C43v57Ev();
extern void _ZN7S1346C43v58Ev();
extern void _ZN7S1346C43v59Ev();
extern void _ZN7S1346C43v60Ev();
extern void _ZN7S1346C43v61Ev();
extern void _ZN7S1346C43v62Ev();
extern void _ZN7S1346C43v63Ev();
extern void _ZN7S1346C43v64Ev();
extern void _ZN7S1346C43v65Ev();
extern void _ZN7S1346C43v66Ev();
extern void _ZN7S1346C43v67Ev();
extern void _ZN7S1346C43v68Ev();
extern void _ZN7S1346C43v69Ev();
extern void _ZN7S1346C43v70Ev();
extern void _ZN7S1346C43v71Ev();
extern void _ZN7S1346C43v72Ev();
extern void _ZN7S1346C43v73Ev();
extern void _ZN7S1346C43v74Ev();
extern void _ZN7S1346C43v75Ev();
extern void _ZN7S1346C43v76Ev();
extern void _ZN7S1346C43v77Ev();
extern void _ZN7S1346C43v78Ev();
extern void _ZN7S1346C43v79Ev();
extern void _ZN7S1346C43v80Ev();
extern void _ZN7S1346C43v81Ev();
extern void _ZN7S1346C43v82Ev();
extern void _ZN7S1346C43v83Ev();
extern void _ZN7S1346C34v109Ev();
extern void _ZN7S1346C34v110Ev();
extern void _ZN7S1346C34v111Ev();
extern void _ZN7S1346C34v112Ev();
extern void _ZN7S1346C34v113Ev();
extern void _ZN7S1346C34v114Ev();
extern void _ZN7S1346C34v115Ev();
extern void _ZN7S1346C34v116Ev();
extern void _ZN7S1346C34v117Ev();
extern void _ZN7S1346C34v118Ev();
extern void _ZN7S1346C34v119Ev();
extern void _ZN7S1346C34v120Ev();
extern void _ZN7S1346C34v121Ev();
extern void _ZN7S1346C34v122Ev();
extern void _ZN7S1346C34v123Ev();
extern void _ZN7S1346C34v124Ev();
extern void _ZN7S1346C34v125Ev();
extern void _ZN7S1346C34v126Ev();
extern void _ZN7S1346C34v127Ev();
extern void _ZN7S1346C34v128Ev();
extern void _ZN7S1346C34v129Ev();
extern void _ZN7S1346C34v130Ev();
extern void _ZN7S1346C34v131Ev();
extern void _ZN7S1346C34v132Ev();
extern void _ZN7S1346C24v133Ev();
extern void _ZN7S1346C24v134Ev();
extern void _ZN7S1346C24v135Ev();
extern void _ZN7S1346C24v136Ev();
extern void _ZN7S1346C24v137Ev();
extern void _ZN7S1346C24v138Ev();
extern void _ZN7S1346C24v139Ev();
extern void _ZN7S1346C24v140Ev();
extern void _ZN7S1346C24v141Ev();
extern void _ZN7S1346C24v142Ev();
extern void _ZN7S1346C24v143Ev();
extern void _ZN7S1346C24v144Ev();
extern void _ZN7S1346C24v145Ev();
extern void _ZN7S1346C24v146Ev();
extern void _ZN7S1346C24v147Ev();
extern void _ZN7S1346C24v148Ev();
extern void _ZN7S1346C24v149Ev();
extern void _ZN7S1346C24v150Ev();
extern void _ZN7S1346C24v151Ev();
extern void _ZN7S1346C24v152Ev();
extern void _ZN7S1346C24v153Ev();
extern void _ZN7S1346C24v154Ev();
extern void _ZN7S1346C24v155Ev();
extern void _ZN7S1346C24v156Ev();
extern void _ZN7S1346C24v157Ev();
extern void _ZN7S1346C24v158Ev();
extern void _ZN7S1346C24v159Ev();
extern void _ZN7S1346C63v84Ev();
extern void _ZN7S1346C63v85Ev();
extern void _ZN7S1346C63v86Ev();
extern void _ZN7S1346C63v87Ev();
extern void _ZN7S1346C63v88Ev();
extern void _ZN7S1346C63v89Ev();
extern void _ZN7S1346C63v90Ev();
extern void _ZN7S1346C63v91Ev();
extern void _ZN7S1346C63v92Ev();
extern void _ZN7S1346C63v93Ev();
extern void _ZN7S1346C63v94Ev();
extern void _ZN7S1346C63v95Ev();
extern void _ZN7S1346C63v96Ev();
extern void _ZN7S1346C63v97Ev();
extern void _ZN7S1346C63v98Ev();
extern void _ZN7S1346C63v99Ev();
extern void _ZN7S1346C74v100Ev();
extern void _ZN7S1346C74v101Ev();
extern void _ZN7S1346C74v102Ev();
extern void _ZN7S1346C74v103Ev();
extern void _ZN7S1346C74v104Ev();
extern void _ZN7S1346C74v105Ev();
extern void _ZN7S1346C74v106Ev();
extern void _ZN7S1346C74v107Ev();
extern void _ZN7S1346C74v108Ev();
static  VTBL_ENTRY vtc_S1346C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1346C2[0]),
  (VTBL_ENTRY)&_ZN7S1346C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1346C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v71Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v72Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v73Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v74Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v75Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v76Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v77Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v78Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v79Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v80Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v81Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v82Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v83Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v119Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v120Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v121Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v122Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v123Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v124Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v125Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v126Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v127Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v128Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v129Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v130Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v131Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v132Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v133Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v134Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v135Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v136Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v137Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v138Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v139Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v140Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v141Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v142Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v143Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v144Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v145Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v146Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v147Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v148Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v149Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v150Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v151Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v152Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v153Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v154Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v155Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v156Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v157Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v158Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v159Ev,
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S1346C2[0]),
  (VTBL_ENTRY)&_ZN7S1346C63v84Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v85Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v86Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v87Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v88Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v89Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v90Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v91Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v92Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v93Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v94Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v95Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v96Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v97Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v98Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v99Ev,
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S1346C2[0]),
  (VTBL_ENTRY)&_ZN7S1346C74v100Ev,
  (VTBL_ENTRY)&_ZN7S1346C74v101Ev,
  (VTBL_ENTRY)&_ZN7S1346C74v102Ev,
  (VTBL_ENTRY)&_ZN7S1346C74v103Ev,
  (VTBL_ENTRY)&_ZN7S1346C74v104Ev,
  (VTBL_ENTRY)&_ZN7S1346C74v105Ev,
  (VTBL_ENTRY)&_ZN7S1346C74v106Ev,
  (VTBL_ENTRY)&_ZN7S1346C74v107Ev,
  (VTBL_ENTRY)&_ZN7S1346C74v108Ev,
};
extern VTBL_ENTRY _ZTI7S1346C2[];
extern  VTBL_ENTRY _ZTV7S1346C2[];
Class_Descriptor cd_S1346C2 = {  "S1346C2", // class name
  bases_S1346C2, 4,
  &(vtc_S1346C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(176,108), // object size
  NSPAIRA(_ZTI7S1346C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1346C2),148, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  4, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1346C1  : S1346C2 {
  ::S79C44 s1346c1f0;
  unsigned int s1346c1f1:1;
  unsigned int s1346c1f2:1;
  virtual  ~S1346C1(); // _ZN7S1346C1D1Ev
  virtual void  v1(); // _ZN7S1346C12v1Ev
  virtual void  v2(); // _ZN7S1346C12v2Ev
  virtual void  v3(); // _ZN7S1346C12v3Ev
  virtual void  v4(); // _ZN7S1346C12v4Ev
  virtual void  v5(); // _ZN7S1346C12v5Ev
  virtual void  v6(); // _ZN7S1346C12v6Ev
  virtual void  v7(); // _ZN7S1346C12v7Ev
  virtual void  v8(); // _ZN7S1346C12v8Ev
  virtual void  v9(); // _ZN7S1346C12v9Ev
  virtual void  v10(); // _ZN7S1346C13v10Ev
  virtual void  v11(); // _ZN7S1346C13v11Ev
  virtual void  v12(); // _ZN7S1346C13v12Ev
  virtual void  v13(); // _ZN7S1346C13v13Ev
  virtual void  v14(); // _ZN7S1346C13v14Ev
  virtual void  v15(); // _ZN7S1346C13v15Ev
  virtual void  v16(); // _ZN7S1346C13v16Ev
  virtual void  v17(); // _ZN7S1346C13v17Ev
  virtual void  v18(); // _ZN7S1346C13v18Ev
  virtual void  v19(); // _ZN7S1346C13v19Ev
  S1346C1(); // tgen
};
//SIG(1 S1346C1) C1{ BC2{ BC3{ BC4{ vd v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 Fi FL Fp[4] Fi[2] Fp FC5{ m Fi[2]} Fp[2]} BC6{ v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99} BC7{ v100 v101 v102 v103 v104 v105 v106 v107 v108} vd v109 v110 v111 v112 v113 v114 v115 v116 v117 v118 v119 v120 v121 v122 v123 v124 v125 v126 v127 v128 v129 v130 v131 v132 Fp FC8{ BC9{ BC10{ BC11{ m Fp Fi[2]}}}} Fi:1 Fi:1 Fi:1 Fi:1} vd v133 v134 v135 v136 v137 v138 v139 v140 v141 v142 v143 v144 v145 v146 v147 v148 v149 v150 v151 v152 v153 v154 v155 v156 v157 v158 v159 FC12{ m FC13{ BC14{ BC11}} Fc} Fi} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 FC13 Fi:1 Fi:1}


 S1346C1 ::~S1346C1(){ note_dtor("S1346C1", this);}
void  S1346C1 ::v1(){vfunc_called(this, "_ZN7S1346C12v1Ev");}
void  S1346C1 ::v2(){vfunc_called(this, "_ZN7S1346C12v2Ev");}
void  S1346C1 ::v3(){vfunc_called(this, "_ZN7S1346C12v3Ev");}
void  S1346C1 ::v4(){vfunc_called(this, "_ZN7S1346C12v4Ev");}
void  S1346C1 ::v5(){vfunc_called(this, "_ZN7S1346C12v5Ev");}
void  S1346C1 ::v6(){vfunc_called(this, "_ZN7S1346C12v6Ev");}
void  S1346C1 ::v7(){vfunc_called(this, "_ZN7S1346C12v7Ev");}
void  S1346C1 ::v8(){vfunc_called(this, "_ZN7S1346C12v8Ev");}
void  S1346C1 ::v9(){vfunc_called(this, "_ZN7S1346C12v9Ev");}
void  S1346C1 ::v10(){vfunc_called(this, "_ZN7S1346C13v10Ev");}
void  S1346C1 ::v11(){vfunc_called(this, "_ZN7S1346C13v11Ev");}
void  S1346C1 ::v12(){vfunc_called(this, "_ZN7S1346C13v12Ev");}
void  S1346C1 ::v13(){vfunc_called(this, "_ZN7S1346C13v13Ev");}
void  S1346C1 ::v14(){vfunc_called(this, "_ZN7S1346C13v14Ev");}
void  S1346C1 ::v15(){vfunc_called(this, "_ZN7S1346C13v15Ev");}
void  S1346C1 ::v16(){vfunc_called(this, "_ZN7S1346C13v16Ev");}
void  S1346C1 ::v17(){vfunc_called(this, "_ZN7S1346C13v17Ev");}
void  S1346C1 ::v18(){vfunc_called(this, "_ZN7S1346C13v18Ev");}
void  S1346C1 ::v19(){vfunc_called(this, "_ZN7S1346C13v19Ev");}
S1346C1 ::S1346C1(){ note_ctor("S1346C1", this);} // tgen

static void Test_S1346C1()
{
  extern Class_Descriptor cd_S1346C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(26,32)];
    init_test(&cd_S1346C1, buf);
    S1346C1 *dp, &lv = *(dp=new (buf) S1346C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(200,124), "sizeof(S1346C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1346C1)");
    check_base_class_offset(lv, (S1346C4*)(S1346C3*)(S1346C2*), 0, "S1346C1");
    check_base_class_offset(lv, (S1346C6*)(S1346C3*)(S1346C2*), ABISELECT(96,60), "S1346C1");
    check_base_class_offset(lv, (S1346C7*)(S1346C3*)(S1346C2*), ABISELECT(104,64), "S1346C1");
    check_base_class_offset(lv, (S1346C3*)(S1346C2*), 0, "S1346C1");
    check_base_class_offset(lv, (S1346C2*), 0, "S1346C1");
    check_field_offset(lv, s1346c1f0, ABISELECT(176,108), "S1346C1.s1346c1f0");
    set_bf_and_test(lv, s1346c1f1, ABISELECT(192,120), 0, 1, 1, "S1346C1");
    set_bf_and_test(lv, s1346c1f2, ABISELECT(192,120), 1, 1, 1, "S1346C1");
    test_class_info(&lv, &cd_S1346C1);
    dp->~S1346C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1346C1(Test_S1346C1, "S1346C1", ABISELECT(200,124));

#else // __cplusplus

extern void _ZN7S1346C1C1Ev();
extern void _ZN7S1346C1D1Ev();
Name_Map name_map_S1346C1[] = {
  NSPAIR(_ZN7S1346C1C1Ev),
  NSPAIR(_ZN7S1346C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1346C4;
extern VTBL_ENTRY _ZTI7S1346C4[];
extern  VTBL_ENTRY _ZTV7S1346C4[];
extern Class_Descriptor cd_S1346C6;
extern VTBL_ENTRY _ZTI7S1346C6[];
extern  VTBL_ENTRY _ZTV7S1346C6[];
extern Class_Descriptor cd_S1346C7;
extern VTBL_ENTRY _ZTI7S1346C7[];
extern  VTBL_ENTRY _ZTV7S1346C7[];
extern Class_Descriptor cd_S1346C3;
extern VTBL_ENTRY _ZTI7S1346C3[];
extern  VTBL_ENTRY _ZTV7S1346C3[];
extern Class_Descriptor cd_S1346C2;
extern VTBL_ENTRY _ZTI7S1346C2[];
extern  VTBL_ENTRY _ZTV7S1346C2[];
static Base_Class bases_S1346C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1346C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1346C6,    ABISELECT(96,60), //bcp->offset
    138, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1346C7,    ABISELECT(104,64), //bcp->offset
    156, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1346C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S1346C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1346C1[];
extern void _ZN7S1346C1D1Ev();
extern void _ZN7S1346C1D0Ev();
extern void _ZN7S1346C43v20Ev();
extern void _ZN7S1346C43v21Ev();
extern void _ZN7S1346C43v22Ev();
extern void _ZN7S1346C43v23Ev();
extern void _ZN7S1346C43v24Ev();
extern void _ZN7S1346C43v25Ev();
extern void _ZN7S1346C43v26Ev();
extern void _ZN7S1346C43v27Ev();
extern void _ZN7S1346C43v28Ev();
extern void _ZN7S1346C43v29Ev();
extern void _ZN7S1346C43v30Ev();
extern void _ZN7S1346C43v31Ev();
extern void _ZN7S1346C43v32Ev();
extern void _ZN7S1346C43v33Ev();
extern void _ZN7S1346C43v34Ev();
extern void _ZN7S1346C43v35Ev();
extern void _ZN7S1346C43v36Ev();
extern void _ZN7S1346C43v37Ev();
extern void _ZN7S1346C43v38Ev();
extern void _ZN7S1346C43v39Ev();
extern void _ZN7S1346C43v40Ev();
extern void _ZN7S1346C43v41Ev();
extern void _ZN7S1346C43v42Ev();
extern void _ZN7S1346C43v43Ev();
extern void _ZN7S1346C43v44Ev();
extern void _ZN7S1346C43v45Ev();
extern void _ZN7S1346C43v46Ev();
extern void _ZN7S1346C43v47Ev();
extern void _ZN7S1346C43v48Ev();
extern void _ZN7S1346C43v49Ev();
extern void _ZN7S1346C43v50Ev();
extern void _ZN7S1346C43v51Ev();
extern void _ZN7S1346C43v52Ev();
extern void _ZN7S1346C43v53Ev();
extern void _ZN7S1346C43v54Ev();
extern void _ZN7S1346C43v55Ev();
extern void _ZN7S1346C43v56Ev();
extern void _ZN7S1346C43v57Ev();
extern void _ZN7S1346C43v58Ev();
extern void _ZN7S1346C43v59Ev();
extern void _ZN7S1346C43v60Ev();
extern void _ZN7S1346C43v61Ev();
extern void _ZN7S1346C43v62Ev();
extern void _ZN7S1346C43v63Ev();
extern void _ZN7S1346C43v64Ev();
extern void _ZN7S1346C43v65Ev();
extern void _ZN7S1346C43v66Ev();
extern void _ZN7S1346C43v67Ev();
extern void _ZN7S1346C43v68Ev();
extern void _ZN7S1346C43v69Ev();
extern void _ZN7S1346C43v70Ev();
extern void _ZN7S1346C43v71Ev();
extern void _ZN7S1346C43v72Ev();
extern void _ZN7S1346C43v73Ev();
extern void _ZN7S1346C43v74Ev();
extern void _ZN7S1346C43v75Ev();
extern void _ZN7S1346C43v76Ev();
extern void _ZN7S1346C43v77Ev();
extern void _ZN7S1346C43v78Ev();
extern void _ZN7S1346C43v79Ev();
extern void _ZN7S1346C43v80Ev();
extern void _ZN7S1346C43v81Ev();
extern void _ZN7S1346C43v82Ev();
extern void _ZN7S1346C43v83Ev();
extern void _ZN7S1346C34v109Ev();
extern void _ZN7S1346C34v110Ev();
extern void _ZN7S1346C34v111Ev();
extern void _ZN7S1346C34v112Ev();
extern void _ZN7S1346C34v113Ev();
extern void _ZN7S1346C34v114Ev();
extern void _ZN7S1346C34v115Ev();
extern void _ZN7S1346C34v116Ev();
extern void _ZN7S1346C34v117Ev();
extern void _ZN7S1346C34v118Ev();
extern void _ZN7S1346C34v119Ev();
extern void _ZN7S1346C34v120Ev();
extern void _ZN7S1346C34v121Ev();
extern void _ZN7S1346C34v122Ev();
extern void _ZN7S1346C34v123Ev();
extern void _ZN7S1346C34v124Ev();
extern void _ZN7S1346C34v125Ev();
extern void _ZN7S1346C34v126Ev();
extern void _ZN7S1346C34v127Ev();
extern void _ZN7S1346C34v128Ev();
extern void _ZN7S1346C34v129Ev();
extern void _ZN7S1346C34v130Ev();
extern void _ZN7S1346C34v131Ev();
extern void _ZN7S1346C34v132Ev();
extern void _ZN7S1346C24v133Ev();
extern void _ZN7S1346C24v134Ev();
extern void _ZN7S1346C24v135Ev();
extern void _ZN7S1346C24v136Ev();
extern void _ZN7S1346C24v137Ev();
extern void _ZN7S1346C24v138Ev();
extern void _ZN7S1346C24v139Ev();
extern void _ZN7S1346C24v140Ev();
extern void _ZN7S1346C24v141Ev();
extern void _ZN7S1346C24v142Ev();
extern void _ZN7S1346C24v143Ev();
extern void _ZN7S1346C24v144Ev();
extern void _ZN7S1346C24v145Ev();
extern void _ZN7S1346C24v146Ev();
extern void _ZN7S1346C24v147Ev();
extern void _ZN7S1346C24v148Ev();
extern void _ZN7S1346C24v149Ev();
extern void _ZN7S1346C24v150Ev();
extern void _ZN7S1346C24v151Ev();
extern void _ZN7S1346C24v152Ev();
extern void _ZN7S1346C24v153Ev();
extern void _ZN7S1346C24v154Ev();
extern void _ZN7S1346C24v155Ev();
extern void _ZN7S1346C24v156Ev();
extern void _ZN7S1346C24v157Ev();
extern void _ZN7S1346C24v158Ev();
extern void _ZN7S1346C24v159Ev();
extern void _ZN7S1346C12v1Ev();
extern void _ZN7S1346C12v2Ev();
extern void _ZN7S1346C12v3Ev();
extern void _ZN7S1346C12v4Ev();
extern void _ZN7S1346C12v5Ev();
extern void _ZN7S1346C12v6Ev();
extern void _ZN7S1346C12v7Ev();
extern void _ZN7S1346C12v8Ev();
extern void _ZN7S1346C12v9Ev();
extern void _ZN7S1346C13v10Ev();
extern void _ZN7S1346C13v11Ev();
extern void _ZN7S1346C13v12Ev();
extern void _ZN7S1346C13v13Ev();
extern void _ZN7S1346C13v14Ev();
extern void _ZN7S1346C13v15Ev();
extern void _ZN7S1346C13v16Ev();
extern void _ZN7S1346C13v17Ev();
extern void _ZN7S1346C13v18Ev();
extern void _ZN7S1346C13v19Ev();
extern void _ZN7S1346C63v84Ev();
extern void _ZN7S1346C63v85Ev();
extern void _ZN7S1346C63v86Ev();
extern void _ZN7S1346C63v87Ev();
extern void _ZN7S1346C63v88Ev();
extern void _ZN7S1346C63v89Ev();
extern void _ZN7S1346C63v90Ev();
extern void _ZN7S1346C63v91Ev();
extern void _ZN7S1346C63v92Ev();
extern void _ZN7S1346C63v93Ev();
extern void _ZN7S1346C63v94Ev();
extern void _ZN7S1346C63v95Ev();
extern void _ZN7S1346C63v96Ev();
extern void _ZN7S1346C63v97Ev();
extern void _ZN7S1346C63v98Ev();
extern void _ZN7S1346C63v99Ev();
extern void _ZN7S1346C74v100Ev();
extern void _ZN7S1346C74v101Ev();
extern void _ZN7S1346C74v102Ev();
extern void _ZN7S1346C74v103Ev();
extern void _ZN7S1346C74v104Ev();
extern void _ZN7S1346C74v105Ev();
extern void _ZN7S1346C74v106Ev();
extern void _ZN7S1346C74v107Ev();
extern void _ZN7S1346C74v108Ev();
static  VTBL_ENTRY vtc_S1346C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1346C1[0]),
  (VTBL_ENTRY)&_ZN7S1346C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1346C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v71Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v72Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v73Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v74Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v75Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v76Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v77Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v78Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v79Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v80Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v81Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v82Ev,
  (VTBL_ENTRY)&_ZN7S1346C43v83Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v119Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v120Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v121Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v122Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v123Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v124Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v125Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v126Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v127Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v128Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v129Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v130Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v131Ev,
  (VTBL_ENTRY)&_ZN7S1346C34v132Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v133Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v134Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v135Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v136Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v137Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v138Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v139Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v140Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v141Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v142Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v143Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v144Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v145Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v146Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v147Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v148Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v149Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v150Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v151Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v152Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v153Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v154Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v155Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v156Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v157Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v158Ev,
  (VTBL_ENTRY)&_ZN7S1346C24v159Ev,
  (VTBL_ENTRY)&_ZN7S1346C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1346C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1346C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1346C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1346C12v5Ev,
  (VTBL_ENTRY)&_ZN7S1346C12v6Ev,
  (VTBL_ENTRY)&_ZN7S1346C12v7Ev,
  (VTBL_ENTRY)&_ZN7S1346C12v8Ev,
  (VTBL_ENTRY)&_ZN7S1346C12v9Ev,
  (VTBL_ENTRY)&_ZN7S1346C13v10Ev,
  (VTBL_ENTRY)&_ZN7S1346C13v11Ev,
  (VTBL_ENTRY)&_ZN7S1346C13v12Ev,
  (VTBL_ENTRY)&_ZN7S1346C13v13Ev,
  (VTBL_ENTRY)&_ZN7S1346C13v14Ev,
  (VTBL_ENTRY)&_ZN7S1346C13v15Ev,
  (VTBL_ENTRY)&_ZN7S1346C13v16Ev,
  (VTBL_ENTRY)&_ZN7S1346C13v17Ev,
  (VTBL_ENTRY)&_ZN7S1346C13v18Ev,
  (VTBL_ENTRY)&_ZN7S1346C13v19Ev,
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S1346C1[0]),
  (VTBL_ENTRY)&_ZN7S1346C63v84Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v85Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v86Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v87Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v88Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v89Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v90Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v91Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v92Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v93Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v94Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v95Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v96Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v97Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v98Ev,
  (VTBL_ENTRY)&_ZN7S1346C63v99Ev,
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S1346C1[0]),
  (VTBL_ENTRY)&_ZN7S1346C74v100Ev,
  (VTBL_ENTRY)&_ZN7S1346C74v101Ev,
  (VTBL_ENTRY)&_ZN7S1346C74v102Ev,
  (VTBL_ENTRY)&_ZN7S1346C74v103Ev,
  (VTBL_ENTRY)&_ZN7S1346C74v104Ev,
  (VTBL_ENTRY)&_ZN7S1346C74v105Ev,
  (VTBL_ENTRY)&_ZN7S1346C74v106Ev,
  (VTBL_ENTRY)&_ZN7S1346C74v107Ev,
  (VTBL_ENTRY)&_ZN7S1346C74v108Ev,
};
extern VTBL_ENTRY _ZTI7S1346C1[];
extern  VTBL_ENTRY _ZTV7S1346C1[];
Class_Descriptor cd_S1346C1 = {  "S1346C1", // class name
  bases_S1346C1, 5,
  &(vtc_S1346C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(200,124), // object size
  NSPAIRA(_ZTI7S1346C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1346C1),167, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  5, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1590C4  {
  int s1590c4f0;
  __tsi64 s1590c4f1;
  void *s1590c4f2[4];
  int s1590c4f3[2];
  void *s1590c4f4;
  ::S79C8_nt s1590c4f5;
  void *s1590c4f6[2];
  virtual  ~S1590C4(); // _ZN7S1590C4D1Ev
  virtual void  v9(); // _ZN7S1590C42v9Ev
  virtual void  v10(); // _ZN7S1590C43v10Ev
  virtual void  v11(); // _ZN7S1590C43v11Ev
  virtual void  v12(); // _ZN7S1590C43v12Ev
  virtual void  v13(); // _ZN7S1590C43v13Ev
  virtual void  v14(); // _ZN7S1590C43v14Ev
  virtual void  v15(); // _ZN7S1590C43v15Ev
  virtual void  v16(); // _ZN7S1590C43v16Ev
  virtual void  v17(); // _ZN7S1590C43v17Ev
  virtual void  v18(); // _ZN7S1590C43v18Ev
  virtual void  v19(); // _ZN7S1590C43v19Ev
  virtual void  v20(); // _ZN7S1590C43v20Ev
  virtual void  v21(); // _ZN7S1590C43v21Ev
  virtual void  v22(); // _ZN7S1590C43v22Ev
  virtual void  v23(); // _ZN7S1590C43v23Ev
  virtual void  v24(); // _ZN7S1590C43v24Ev
  virtual void  v25(); // _ZN7S1590C43v25Ev
  virtual void  v26(); // _ZN7S1590C43v26Ev
  virtual void  v27(); // _ZN7S1590C43v27Ev
  virtual void  v28(); // _ZN7S1590C43v28Ev
  virtual void  v29(); // _ZN7S1590C43v29Ev
  virtual void  v30(); // _ZN7S1590C43v30Ev
  virtual void  v31(); // _ZN7S1590C43v31Ev
  virtual void  v32(); // _ZN7S1590C43v32Ev
  virtual void  v33(); // _ZN7S1590C43v33Ev
  virtual void  v34(); // _ZN7S1590C43v34Ev
  virtual void  v35(); // _ZN7S1590C43v35Ev
  virtual void  v36(); // _ZN7S1590C43v36Ev
  virtual void  v37(); // _ZN7S1590C43v37Ev
  virtual void  v38(); // _ZN7S1590C43v38Ev
  virtual void  v39(); // _ZN7S1590C43v39Ev
  virtual void  v40(); // _ZN7S1590C43v40Ev
  virtual void  v41(); // _ZN7S1590C43v41Ev
  virtual void  v42(); // _ZN7S1590C43v42Ev
  virtual void  v43(); // _ZN7S1590C43v43Ev
  virtual void  v44(); // _ZN7S1590C43v44Ev
  virtual void  v45(); // _ZN7S1590C43v45Ev
  virtual void  v46(); // _ZN7S1590C43v46Ev
  virtual void  v47(); // _ZN7S1590C43v47Ev
  virtual void  v48(); // _ZN7S1590C43v48Ev
  virtual void  v49(); // _ZN7S1590C43v49Ev
  virtual void  v50(); // _ZN7S1590C43v50Ev
  virtual void  v51(); // _ZN7S1590C43v51Ev
  virtual void  v52(); // _ZN7S1590C43v52Ev
  virtual void  v53(); // _ZN7S1590C43v53Ev
  virtual void  v54(); // _ZN7S1590C43v54Ev
  virtual void  v55(); // _ZN7S1590C43v55Ev
  virtual void  v56(); // _ZN7S1590C43v56Ev
  virtual void  v57(); // _ZN7S1590C43v57Ev
  virtual void  v58(); // _ZN7S1590C43v58Ev
  virtual void  v59(); // _ZN7S1590C43v59Ev
  virtual void  v60(); // _ZN7S1590C43v60Ev
  virtual void  v61(); // _ZN7S1590C43v61Ev
  virtual void  v62(); // _ZN7S1590C43v62Ev
  virtual void  v63(); // _ZN7S1590C43v63Ev
  virtual void  v64(); // _ZN7S1590C43v64Ev
  virtual void  v65(); // _ZN7S1590C43v65Ev
  virtual void  v66(); // _ZN7S1590C43v66Ev
  virtual void  v67(); // _ZN7S1590C43v67Ev
  virtual void  v68(); // _ZN7S1590C43v68Ev
  virtual void  v69(); // _ZN7S1590C43v69Ev
  virtual void  v70(); // _ZN7S1590C43v70Ev
  virtual void  v71(); // _ZN7S1590C43v71Ev
  virtual void  v72(); // _ZN7S1590C43v72Ev
  S1590C4(); // tgen
};
//SIG(-1 S1590C4) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 Fi FL Fp[4] Fi[2] Fp FC2{ m Fi[2]} Fp[2]}


 S1590C4 ::~S1590C4(){ note_dtor("S1590C4", this);}
void  S1590C4 ::v9(){vfunc_called(this, "_ZN7S1590C42v9Ev");}
void  S1590C4 ::v10(){vfunc_called(this, "_ZN7S1590C43v10Ev");}
void  S1590C4 ::v11(){vfunc_called(this, "_ZN7S1590C43v11Ev");}
void  S1590C4 ::v12(){vfunc_called(this, "_ZN7S1590C43v12Ev");}
void  S1590C4 ::v13(){vfunc_called(this, "_ZN7S1590C43v13Ev");}
void  S1590C4 ::v14(){vfunc_called(this, "_ZN7S1590C43v14Ev");}
void  S1590C4 ::v15(){vfunc_called(this, "_ZN7S1590C43v15Ev");}
void  S1590C4 ::v16(){vfunc_called(this, "_ZN7S1590C43v16Ev");}
void  S1590C4 ::v17(){vfunc_called(this, "_ZN7S1590C43v17Ev");}
void  S1590C4 ::v18(){vfunc_called(this, "_ZN7S1590C43v18Ev");}
void  S1590C4 ::v19(){vfunc_called(this, "_ZN7S1590C43v19Ev");}
void  S1590C4 ::v20(){vfunc_called(this, "_ZN7S1590C43v20Ev");}
void  S1590C4 ::v21(){vfunc_called(this, "_ZN7S1590C43v21Ev");}
void  S1590C4 ::v22(){vfunc_called(this, "_ZN7S1590C43v22Ev");}
void  S1590C4 ::v23(){vfunc_called(this, "_ZN7S1590C43v23Ev");}
void  S1590C4 ::v24(){vfunc_called(this, "_ZN7S1590C43v24Ev");}
void  S1590C4 ::v25(){vfunc_called(this, "_ZN7S1590C43v25Ev");}
void  S1590C4 ::v26(){vfunc_called(this, "_ZN7S1590C43v26Ev");}
void  S1590C4 ::v27(){vfunc_called(this, "_ZN7S1590C43v27Ev");}
void  S1590C4 ::v28(){vfunc_called(this, "_ZN7S1590C43v28Ev");}
void  S1590C4 ::v29(){vfunc_called(this, "_ZN7S1590C43v29Ev");}
void  S1590C4 ::v30(){vfunc_called(this, "_ZN7S1590C43v30Ev");}
void  S1590C4 ::v31(){vfunc_called(this, "_ZN7S1590C43v31Ev");}
void  S1590C4 ::v32(){vfunc_called(this, "_ZN7S1590C43v32Ev");}
void  S1590C4 ::v33(){vfunc_called(this, "_ZN7S1590C43v33Ev");}
void  S1590C4 ::v34(){vfunc_called(this, "_ZN7S1590C43v34Ev");}
void  S1590C4 ::v35(){vfunc_called(this, "_ZN7S1590C43v35Ev");}
void  S1590C4 ::v36(){vfunc_called(this, "_ZN7S1590C43v36Ev");}
void  S1590C4 ::v37(){vfunc_called(this, "_ZN7S1590C43v37Ev");}
void  S1590C4 ::v38(){vfunc_called(this, "_ZN7S1590C43v38Ev");}
void  S1590C4 ::v39(){vfunc_called(this, "_ZN7S1590C43v39Ev");}
void  S1590C4 ::v40(){vfunc_called(this, "_ZN7S1590C43v40Ev");}
void  S1590C4 ::v41(){vfunc_called(this, "_ZN7S1590C43v41Ev");}
void  S1590C4 ::v42(){vfunc_called(this, "_ZN7S1590C43v42Ev");}
void  S1590C4 ::v43(){vfunc_called(this, "_ZN7S1590C43v43Ev");}
void  S1590C4 ::v44(){vfunc_called(this, "_ZN7S1590C43v44Ev");}
void  S1590C4 ::v45(){vfunc_called(this, "_ZN7S1590C43v45Ev");}
void  S1590C4 ::v46(){vfunc_called(this, "_ZN7S1590C43v46Ev");}
void  S1590C4 ::v47(){vfunc_called(this, "_ZN7S1590C43v47Ev");}
void  S1590C4 ::v48(){vfunc_called(this, "_ZN7S1590C43v48Ev");}
void  S1590C4 ::v49(){vfunc_called(this, "_ZN7S1590C43v49Ev");}
void  S1590C4 ::v50(){vfunc_called(this, "_ZN7S1590C43v50Ev");}
void  S1590C4 ::v51(){vfunc_called(this, "_ZN7S1590C43v51Ev");}
void  S1590C4 ::v52(){vfunc_called(this, "_ZN7S1590C43v52Ev");}
void  S1590C4 ::v53(){vfunc_called(this, "_ZN7S1590C43v53Ev");}
void  S1590C4 ::v54(){vfunc_called(this, "_ZN7S1590C43v54Ev");}
void  S1590C4 ::v55(){vfunc_called(this, "_ZN7S1590C43v55Ev");}
void  S1590C4 ::v56(){vfunc_called(this, "_ZN7S1590C43v56Ev");}
void  S1590C4 ::v57(){vfunc_called(this, "_ZN7S1590C43v57Ev");}
void  S1590C4 ::v58(){vfunc_called(this, "_ZN7S1590C43v58Ev");}
void  S1590C4 ::v59(){vfunc_called(this, "_ZN7S1590C43v59Ev");}
void  S1590C4 ::v60(){vfunc_called(this, "_ZN7S1590C43v60Ev");}
void  S1590C4 ::v61(){vfunc_called(this, "_ZN7S1590C43v61Ev");}
void  S1590C4 ::v62(){vfunc_called(this, "_ZN7S1590C43v62Ev");}
void  S1590C4 ::v63(){vfunc_called(this, "_ZN7S1590C43v63Ev");}
void  S1590C4 ::v64(){vfunc_called(this, "_ZN7S1590C43v64Ev");}
void  S1590C4 ::v65(){vfunc_called(this, "_ZN7S1590C43v65Ev");}
void  S1590C4 ::v66(){vfunc_called(this, "_ZN7S1590C43v66Ev");}
void  S1590C4 ::v67(){vfunc_called(this, "_ZN7S1590C43v67Ev");}
void  S1590C4 ::v68(){vfunc_called(this, "_ZN7S1590C43v68Ev");}
void  S1590C4 ::v69(){vfunc_called(this, "_ZN7S1590C43v69Ev");}
void  S1590C4 ::v70(){vfunc_called(this, "_ZN7S1590C43v70Ev");}
void  S1590C4 ::v71(){vfunc_called(this, "_ZN7S1590C43v71Ev");}
void  S1590C4 ::v72(){vfunc_called(this, "_ZN7S1590C43v72Ev");}
S1590C4 ::S1590C4(){ note_ctor("S1590C4", this);} // tgen

static void Test_S1590C4()
{
  extern Class_Descriptor cd_S1590C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S1590C4, buf);
    S1590C4 *dp, &lv = *(dp=new (buf) S1590C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S1590C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1590C4)");
    check_field_offset(lv, s1590c4f0, ABISELECT(8,4), "S1590C4.s1590c4f0");
    check_field_offset(lv, s1590c4f1, ABISELECT(16,8), "S1590C4.s1590c4f1");
    check_field_offset(lv, s1590c4f2, ABISELECT(24,16), "S1590C4.s1590c4f2");
    check_field_offset(lv, s1590c4f3, ABISELECT(56,32), "S1590C4.s1590c4f3");
    check_field_offset(lv, s1590c4f4, ABISELECT(64,40), "S1590C4.s1590c4f4");
    check_field_offset(lv, s1590c4f5, ABISELECT(72,44), "S1590C4.s1590c4f5");
    check_field_offset(lv, s1590c4f6, ABISELECT(80,52), "S1590C4.s1590c4f6");
    test_class_info(&lv, &cd_S1590C4);
    dp->~S1590C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1590C4(Test_S1590C4, "S1590C4", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S1590C4C1Ev();
extern void _ZN7S1590C4D1Ev();
Name_Map name_map_S1590C4[] = {
  NSPAIR(_ZN7S1590C4C1Ev),
  NSPAIR(_ZN7S1590C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1590C4[];
extern void _ZN7S1590C4D1Ev();
extern void _ZN7S1590C4D0Ev();
extern void _ZN7S1590C42v9Ev();
extern void _ZN7S1590C43v10Ev();
extern void _ZN7S1590C43v11Ev();
extern void _ZN7S1590C43v12Ev();
extern void _ZN7S1590C43v13Ev();
extern void _ZN7S1590C43v14Ev();
extern void _ZN7S1590C43v15Ev();
extern void _ZN7S1590C43v16Ev();
extern void _ZN7S1590C43v17Ev();
extern void _ZN7S1590C43v18Ev();
extern void _ZN7S1590C43v19Ev();
extern void _ZN7S1590C43v20Ev();
extern void _ZN7S1590C43v21Ev();
extern void _ZN7S1590C43v22Ev();
extern void _ZN7S1590C43v23Ev();
extern void _ZN7S1590C43v24Ev();
extern void _ZN7S1590C43v25Ev();
extern void _ZN7S1590C43v26Ev();
extern void _ZN7S1590C43v27Ev();
extern void _ZN7S1590C43v28Ev();
extern void _ZN7S1590C43v29Ev();
extern void _ZN7S1590C43v30Ev();
extern void _ZN7S1590C43v31Ev();
extern void _ZN7S1590C43v32Ev();
extern void _ZN7S1590C43v33Ev();
extern void _ZN7S1590C43v34Ev();
extern void _ZN7S1590C43v35Ev();
extern void _ZN7S1590C43v36Ev();
extern void _ZN7S1590C43v37Ev();
extern void _ZN7S1590C43v38Ev();
extern void _ZN7S1590C43v39Ev();
extern void _ZN7S1590C43v40Ev();
extern void _ZN7S1590C43v41Ev();
extern void _ZN7S1590C43v42Ev();
extern void _ZN7S1590C43v43Ev();
extern void _ZN7S1590C43v44Ev();
extern void _ZN7S1590C43v45Ev();
extern void _ZN7S1590C43v46Ev();
extern void _ZN7S1590C43v47Ev();
extern void _ZN7S1590C43v48Ev();
extern void _ZN7S1590C43v49Ev();
extern void _ZN7S1590C43v50Ev();
extern void _ZN7S1590C43v51Ev();
extern void _ZN7S1590C43v52Ev();
extern void _ZN7S1590C43v53Ev();
extern void _ZN7S1590C43v54Ev();
extern void _ZN7S1590C43v55Ev();
extern void _ZN7S1590C43v56Ev();
extern void _ZN7S1590C43v57Ev();
extern void _ZN7S1590C43v58Ev();
extern void _ZN7S1590C43v59Ev();
extern void _ZN7S1590C43v60Ev();
extern void _ZN7S1590C43v61Ev();
extern void _ZN7S1590C43v62Ev();
extern void _ZN7S1590C43v63Ev();
extern void _ZN7S1590C43v64Ev();
extern void _ZN7S1590C43v65Ev();
extern void _ZN7S1590C43v66Ev();
extern void _ZN7S1590C43v67Ev();
extern void _ZN7S1590C43v68Ev();
extern void _ZN7S1590C43v69Ev();
extern void _ZN7S1590C43v70Ev();
extern void _ZN7S1590C43v71Ev();
extern void _ZN7S1590C43v72Ev();
static  VTBL_ENTRY vtc_S1590C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1590C4[0]),
  (VTBL_ENTRY)&_ZN7S1590C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1590C4D0Ev,
  (VTBL_ENTRY)&_ZN7S1590C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v71Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v72Ev,
};
extern VTBL_ENTRY _ZTI7S1590C4[];
extern  VTBL_ENTRY _ZTV7S1590C4[];
Class_Descriptor cd_S1590C4 = {  "S1590C4", // class name
  0,0,//no base classes
  &(vtc_S1590C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S1590C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1590C4),68, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1590C6  {
  virtual void  v73(); // _ZN7S1590C63v73Ev
  virtual void  v74(); // _ZN7S1590C63v74Ev
  virtual void  v75(); // _ZN7S1590C63v75Ev
  virtual void  v76(); // _ZN7S1590C63v76Ev
  virtual void  v77(); // _ZN7S1590C63v77Ev
  virtual void  v78(); // _ZN7S1590C63v78Ev
  virtual void  v79(); // _ZN7S1590C63v79Ev
  virtual void  v80(); // _ZN7S1590C63v80Ev
  virtual void  v81(); // _ZN7S1590C63v81Ev
  virtual void  v82(); // _ZN7S1590C63v82Ev
  virtual void  v83(); // _ZN7S1590C63v83Ev
  virtual void  v84(); // _ZN7S1590C63v84Ev
  virtual void  v85(); // _ZN7S1590C63v85Ev
  virtual void  v86(); // _ZN7S1590C63v86Ev
  virtual void  v87(); // _ZN7S1590C63v87Ev
  virtual void  v88(); // _ZN7S1590C63v88Ev
  ~S1590C6(); // tgen
  S1590C6(); // tgen
};
//SIG(-1 S1590C6) C1{ v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16}


void  S1590C6 ::v73(){vfunc_called(this, "_ZN7S1590C63v73Ev");}
void  S1590C6 ::v74(){vfunc_called(this, "_ZN7S1590C63v74Ev");}
void  S1590C6 ::v75(){vfunc_called(this, "_ZN7S1590C63v75Ev");}
void  S1590C6 ::v76(){vfunc_called(this, "_ZN7S1590C63v76Ev");}
void  S1590C6 ::v77(){vfunc_called(this, "_ZN7S1590C63v77Ev");}
void  S1590C6 ::v78(){vfunc_called(this, "_ZN7S1590C63v78Ev");}
void  S1590C6 ::v79(){vfunc_called(this, "_ZN7S1590C63v79Ev");}
void  S1590C6 ::v80(){vfunc_called(this, "_ZN7S1590C63v80Ev");}
void  S1590C6 ::v81(){vfunc_called(this, "_ZN7S1590C63v81Ev");}
void  S1590C6 ::v82(){vfunc_called(this, "_ZN7S1590C63v82Ev");}
void  S1590C6 ::v83(){vfunc_called(this, "_ZN7S1590C63v83Ev");}
void  S1590C6 ::v84(){vfunc_called(this, "_ZN7S1590C63v84Ev");}
void  S1590C6 ::v85(){vfunc_called(this, "_ZN7S1590C63v85Ev");}
void  S1590C6 ::v86(){vfunc_called(this, "_ZN7S1590C63v86Ev");}
void  S1590C6 ::v87(){vfunc_called(this, "_ZN7S1590C63v87Ev");}
void  S1590C6 ::v88(){vfunc_called(this, "_ZN7S1590C63v88Ev");}
S1590C6 ::~S1590C6(){ note_dtor("S1590C6", this);} // tgen
S1590C6 ::S1590C6(){ note_ctor("S1590C6", this);} // tgen

static void Test_S1590C6()
{
  extern Class_Descriptor cd_S1590C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S1590C6, buf);
    S1590C6 *dp, &lv = *(dp=new (buf) S1590C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1590C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1590C6)");
    test_class_info(&lv, &cd_S1590C6);
    dp->~S1590C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1590C6(Test_S1590C6, "S1590C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S1590C6C1Ev();
extern void _ZN7S1590C6D1Ev();
Name_Map name_map_S1590C6[] = {
  NSPAIR(_ZN7S1590C6C1Ev),
  NSPAIR(_ZN7S1590C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1590C6[];
extern void _ZN7S1590C63v73Ev();
extern void _ZN7S1590C63v74Ev();
extern void _ZN7S1590C63v75Ev();
extern void _ZN7S1590C63v76Ev();
extern void _ZN7S1590C63v77Ev();
extern void _ZN7S1590C63v78Ev();
extern void _ZN7S1590C63v79Ev();
extern void _ZN7S1590C63v80Ev();
extern void _ZN7S1590C63v81Ev();
extern void _ZN7S1590C63v82Ev();
extern void _ZN7S1590C63v83Ev();
extern void _ZN7S1590C63v84Ev();
extern void _ZN7S1590C63v85Ev();
extern void _ZN7S1590C63v86Ev();
extern void _ZN7S1590C63v87Ev();
extern void _ZN7S1590C63v88Ev();
static  VTBL_ENTRY vtc_S1590C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1590C6[0]),
  (VTBL_ENTRY)&_ZN7S1590C63v73Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v74Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v75Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v76Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v77Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v78Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v79Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v80Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v81Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v82Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v83Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v84Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v85Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v86Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v87Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v88Ev,
};
extern VTBL_ENTRY _ZTI7S1590C6[];
extern  VTBL_ENTRY _ZTV7S1590C6[];
Class_Descriptor cd_S1590C6 = {  "S1590C6", // class name
  0,0,//no base classes
  &(vtc_S1590C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S1590C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1590C6),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1590C7  {
  virtual void  v89(); // _ZN7S1590C73v89Ev
  virtual void  v90(); // _ZN7S1590C73v90Ev
  virtual void  v91(); // _ZN7S1590C73v91Ev
  virtual void  v92(); // _ZN7S1590C73v92Ev
  virtual void  v93(); // _ZN7S1590C73v93Ev
  virtual void  v94(); // _ZN7S1590C73v94Ev
  virtual void  v95(); // _ZN7S1590C73v95Ev
  virtual void  v96(); // _ZN7S1590C73v96Ev
  virtual void  v97(); // _ZN7S1590C73v97Ev
  ~S1590C7(); // tgen
  S1590C7(); // tgen
};
//SIG(-1 S1590C7) C1{ v1 v2 v3 v4 v5 v6 v7 v8 v9}


void  S1590C7 ::v89(){vfunc_called(this, "_ZN7S1590C73v89Ev");}
void  S1590C7 ::v90(){vfunc_called(this, "_ZN7S1590C73v90Ev");}
void  S1590C7 ::v91(){vfunc_called(this, "_ZN7S1590C73v91Ev");}
void  S1590C7 ::v92(){vfunc_called(this, "_ZN7S1590C73v92Ev");}
void  S1590C7 ::v93(){vfunc_called(this, "_ZN7S1590C73v93Ev");}
void  S1590C7 ::v94(){vfunc_called(this, "_ZN7S1590C73v94Ev");}
void  S1590C7 ::v95(){vfunc_called(this, "_ZN7S1590C73v95Ev");}
void  S1590C7 ::v96(){vfunc_called(this, "_ZN7S1590C73v96Ev");}
void  S1590C7 ::v97(){vfunc_called(this, "_ZN7S1590C73v97Ev");}
S1590C7 ::~S1590C7(){ note_dtor("S1590C7", this);} // tgen
S1590C7 ::S1590C7(){ note_ctor("S1590C7", this);} // tgen

static void Test_S1590C7()
{
  extern Class_Descriptor cd_S1590C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S1590C7, buf);
    S1590C7 *dp, &lv = *(dp=new (buf) S1590C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1590C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1590C7)");
    test_class_info(&lv, &cd_S1590C7);
    dp->~S1590C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1590C7(Test_S1590C7, "S1590C7", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S1590C7C1Ev();
extern void _ZN7S1590C7D1Ev();
Name_Map name_map_S1590C7[] = {
  NSPAIR(_ZN7S1590C7C1Ev),
  NSPAIR(_ZN7S1590C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1590C7[];
extern void _ZN7S1590C73v89Ev();
extern void _ZN7S1590C73v90Ev();
extern void _ZN7S1590C73v91Ev();
extern void _ZN7S1590C73v92Ev();
extern void _ZN7S1590C73v93Ev();
extern void _ZN7S1590C73v94Ev();
extern void _ZN7S1590C73v95Ev();
extern void _ZN7S1590C73v96Ev();
extern void _ZN7S1590C73v97Ev();
static  VTBL_ENTRY vtc_S1590C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1590C7[0]),
  (VTBL_ENTRY)&_ZN7S1590C73v89Ev,
  (VTBL_ENTRY)&_ZN7S1590C73v90Ev,
  (VTBL_ENTRY)&_ZN7S1590C73v91Ev,
  (VTBL_ENTRY)&_ZN7S1590C73v92Ev,
  (VTBL_ENTRY)&_ZN7S1590C73v93Ev,
  (VTBL_ENTRY)&_ZN7S1590C73v94Ev,
  (VTBL_ENTRY)&_ZN7S1590C73v95Ev,
  (VTBL_ENTRY)&_ZN7S1590C73v96Ev,
  (VTBL_ENTRY)&_ZN7S1590C73v97Ev,
};
extern VTBL_ENTRY _ZTI7S1590C7[];
extern  VTBL_ENTRY _ZTV7S1590C7[];
Class_Descriptor cd_S1590C7 = {  "S1590C7", // class name
  0,0,//no base classes
  &(vtc_S1590C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S1590C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1590C7),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1590C3  : S1590C4 , S1590C6 , S1590C7 {
  void *s1590c3f0;
  ::S79C39_nt s1590c3f1;
  unsigned int s1590c3f2:1;
  unsigned int s1590c3f3:1;
  unsigned int s1590c3f4:1;
  unsigned int s1590c3f5:1;
  virtual  ~S1590C3(); // _ZN7S1590C3D1Ev
  virtual void  v98(); // _ZN7S1590C33v98Ev
  virtual void  v99(); // _ZN7S1590C33v99Ev
  virtual void  v100(); // _ZN7S1590C34v100Ev
  virtual void  v101(); // _ZN7S1590C34v101Ev
  virtual void  v102(); // _ZN7S1590C34v102Ev
  virtual void  v103(); // _ZN7S1590C34v103Ev
  virtual void  v104(); // _ZN7S1590C34v104Ev
  virtual void  v105(); // _ZN7S1590C34v105Ev
  virtual void  v106(); // _ZN7S1590C34v106Ev
  virtual void  v107(); // _ZN7S1590C34v107Ev
  virtual void  v108(); // _ZN7S1590C34v108Ev
  virtual void  v109(); // _ZN7S1590C34v109Ev
  virtual void  v110(); // _ZN7S1590C34v110Ev
  virtual void  v111(); // _ZN7S1590C34v111Ev
  virtual void  v112(); // _ZN7S1590C34v112Ev
  virtual void  v113(); // _ZN7S1590C34v113Ev
  virtual void  v114(); // _ZN7S1590C34v114Ev
  virtual void  v115(); // _ZN7S1590C34v115Ev
  virtual void  v116(); // _ZN7S1590C34v116Ev
  virtual void  v117(); // _ZN7S1590C34v117Ev
  virtual void  v118(); // _ZN7S1590C34v118Ev
  virtual void  v119(); // _ZN7S1590C34v119Ev
  virtual void  v120(); // _ZN7S1590C34v120Ev
  virtual void  v121(); // _ZN7S1590C34v121Ev
  S1590C3(); // tgen
};
//SIG(-1 S1590C3) C1{ BC2{ vd v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} BC4{ v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104} BC5{ v105 v106 v107 v108 v109 v110 v111 v112 v113} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 Fp FC6{ BC7{ BC8{ BC9{ m Fp Fi[2]}}}} Fi:1 Fi:1 Fi:1 Fi:1}


 S1590C3 ::~S1590C3(){ note_dtor("S1590C3", this);}
void  S1590C3 ::v98(){vfunc_called(this, "_ZN7S1590C33v98Ev");}
void  S1590C3 ::v99(){vfunc_called(this, "_ZN7S1590C33v99Ev");}
void  S1590C3 ::v100(){vfunc_called(this, "_ZN7S1590C34v100Ev");}
void  S1590C3 ::v101(){vfunc_called(this, "_ZN7S1590C34v101Ev");}
void  S1590C3 ::v102(){vfunc_called(this, "_ZN7S1590C34v102Ev");}
void  S1590C3 ::v103(){vfunc_called(this, "_ZN7S1590C34v103Ev");}
void  S1590C3 ::v104(){vfunc_called(this, "_ZN7S1590C34v104Ev");}
void  S1590C3 ::v105(){vfunc_called(this, "_ZN7S1590C34v105Ev");}
void  S1590C3 ::v106(){vfunc_called(this, "_ZN7S1590C34v106Ev");}
void  S1590C3 ::v107(){vfunc_called(this, "_ZN7S1590C34v107Ev");}
void  S1590C3 ::v108(){vfunc_called(this, "_ZN7S1590C34v108Ev");}
void  S1590C3 ::v109(){vfunc_called(this, "_ZN7S1590C34v109Ev");}
void  S1590C3 ::v110(){vfunc_called(this, "_ZN7S1590C34v110Ev");}
void  S1590C3 ::v111(){vfunc_called(this, "_ZN7S1590C34v111Ev");}
void  S1590C3 ::v112(){vfunc_called(this, "_ZN7S1590C34v112Ev");}
void  S1590C3 ::v113(){vfunc_called(this, "_ZN7S1590C34v113Ev");}
void  S1590C3 ::v114(){vfunc_called(this, "_ZN7S1590C34v114Ev");}
void  S1590C3 ::v115(){vfunc_called(this, "_ZN7S1590C34v115Ev");}
void  S1590C3 ::v116(){vfunc_called(this, "_ZN7S1590C34v116Ev");}
void  S1590C3 ::v117(){vfunc_called(this, "_ZN7S1590C34v117Ev");}
void  S1590C3 ::v118(){vfunc_called(this, "_ZN7S1590C34v118Ev");}
void  S1590C3 ::v119(){vfunc_called(this, "_ZN7S1590C34v119Ev");}
void  S1590C3 ::v120(){vfunc_called(this, "_ZN7S1590C34v120Ev");}
void  S1590C3 ::v121(){vfunc_called(this, "_ZN7S1590C34v121Ev");}
S1590C3 ::S1590C3(){ note_ctor("S1590C3", this);} // tgen

static void Test_S1590C3()
{
  extern Class_Descriptor cd_S1590C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,23)];
    init_test(&cd_S1590C3, buf);
    S1590C3 *dp, &lv = *(dp=new (buf) S1590C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,88), "sizeof(S1590C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1590C3)");
    check_base_class_offset(lv, (S1590C4*), 0, "S1590C3");
    check_base_class_offset(lv, (S1590C6*), ABISELECT(96,60), "S1590C3");
    check_base_class_offset(lv, (S1590C7*), ABISELECT(104,64), "S1590C3");
    check_field_offset(lv, s1590c3f0, ABISELECT(112,68), "S1590C3.s1590c3f0");
    check_field_offset(lv, s1590c3f1, ABISELECT(120,72), "S1590C3.s1590c3f1");
    set_bf_and_test(lv, s1590c3f2, ABISELECT(136,84), 0, 1, 1, "S1590C3");
    set_bf_and_test(lv, s1590c3f3, ABISELECT(136,84), 1, 1, 1, "S1590C3");
    set_bf_and_test(lv, s1590c3f4, ABISELECT(136,84), 2, 1, 1, "S1590C3");
    set_bf_and_test(lv, s1590c3f5, ABISELECT(136,84), 3, 1, 1, "S1590C3");
    test_class_info(&lv, &cd_S1590C3);
    dp->~S1590C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1590C3(Test_S1590C3, "S1590C3", ABISELECT(144,88));

#else // __cplusplus

extern void _ZN7S1590C3C1Ev();
extern void _ZN7S1590C3D1Ev();
Name_Map name_map_S1590C3[] = {
  NSPAIR(_ZN7S1590C3C1Ev),
  NSPAIR(_ZN7S1590C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1590C4;
extern VTBL_ENTRY _ZTI7S1590C4[];
extern  VTBL_ENTRY _ZTV7S1590C4[];
extern Class_Descriptor cd_S1590C6;
extern VTBL_ENTRY _ZTI7S1590C6[];
extern  VTBL_ENTRY _ZTV7S1590C6[];
extern Class_Descriptor cd_S1590C7;
extern VTBL_ENTRY _ZTI7S1590C7[];
extern  VTBL_ENTRY _ZTV7S1590C7[];
static Base_Class bases_S1590C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1590C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1590C6,    ABISELECT(96,60), //bcp->offset
    92, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1590C7,    ABISELECT(104,64), //bcp->offset
    110, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1590C3[];
extern void _ZN7S1590C3D1Ev();
extern void _ZN7S1590C3D0Ev();
extern void _ZN7S1590C42v9Ev();
extern void _ZN7S1590C43v10Ev();
extern void _ZN7S1590C43v11Ev();
extern void _ZN7S1590C43v12Ev();
extern void _ZN7S1590C43v13Ev();
extern void _ZN7S1590C43v14Ev();
extern void _ZN7S1590C43v15Ev();
extern void _ZN7S1590C43v16Ev();
extern void _ZN7S1590C43v17Ev();
extern void _ZN7S1590C43v18Ev();
extern void _ZN7S1590C43v19Ev();
extern void _ZN7S1590C43v20Ev();
extern void _ZN7S1590C43v21Ev();
extern void _ZN7S1590C43v22Ev();
extern void _ZN7S1590C43v23Ev();
extern void _ZN7S1590C43v24Ev();
extern void _ZN7S1590C43v25Ev();
extern void _ZN7S1590C43v26Ev();
extern void _ZN7S1590C43v27Ev();
extern void _ZN7S1590C43v28Ev();
extern void _ZN7S1590C43v29Ev();
extern void _ZN7S1590C43v30Ev();
extern void _ZN7S1590C43v31Ev();
extern void _ZN7S1590C43v32Ev();
extern void _ZN7S1590C43v33Ev();
extern void _ZN7S1590C43v34Ev();
extern void _ZN7S1590C43v35Ev();
extern void _ZN7S1590C43v36Ev();
extern void _ZN7S1590C43v37Ev();
extern void _ZN7S1590C43v38Ev();
extern void _ZN7S1590C43v39Ev();
extern void _ZN7S1590C43v40Ev();
extern void _ZN7S1590C43v41Ev();
extern void _ZN7S1590C43v42Ev();
extern void _ZN7S1590C43v43Ev();
extern void _ZN7S1590C43v44Ev();
extern void _ZN7S1590C43v45Ev();
extern void _ZN7S1590C43v46Ev();
extern void _ZN7S1590C43v47Ev();
extern void _ZN7S1590C43v48Ev();
extern void _ZN7S1590C43v49Ev();
extern void _ZN7S1590C43v50Ev();
extern void _ZN7S1590C43v51Ev();
extern void _ZN7S1590C43v52Ev();
extern void _ZN7S1590C43v53Ev();
extern void _ZN7S1590C43v54Ev();
extern void _ZN7S1590C43v55Ev();
extern void _ZN7S1590C43v56Ev();
extern void _ZN7S1590C43v57Ev();
extern void _ZN7S1590C43v58Ev();
extern void _ZN7S1590C43v59Ev();
extern void _ZN7S1590C43v60Ev();
extern void _ZN7S1590C43v61Ev();
extern void _ZN7S1590C43v62Ev();
extern void _ZN7S1590C43v63Ev();
extern void _ZN7S1590C43v64Ev();
extern void _ZN7S1590C43v65Ev();
extern void _ZN7S1590C43v66Ev();
extern void _ZN7S1590C43v67Ev();
extern void _ZN7S1590C43v68Ev();
extern void _ZN7S1590C43v69Ev();
extern void _ZN7S1590C43v70Ev();
extern void _ZN7S1590C43v71Ev();
extern void _ZN7S1590C43v72Ev();
extern void _ZN7S1590C33v98Ev();
extern void _ZN7S1590C33v99Ev();
extern void _ZN7S1590C34v100Ev();
extern void _ZN7S1590C34v101Ev();
extern void _ZN7S1590C34v102Ev();
extern void _ZN7S1590C34v103Ev();
extern void _ZN7S1590C34v104Ev();
extern void _ZN7S1590C34v105Ev();
extern void _ZN7S1590C34v106Ev();
extern void _ZN7S1590C34v107Ev();
extern void _ZN7S1590C34v108Ev();
extern void _ZN7S1590C34v109Ev();
extern void _ZN7S1590C34v110Ev();
extern void _ZN7S1590C34v111Ev();
extern void _ZN7S1590C34v112Ev();
extern void _ZN7S1590C34v113Ev();
extern void _ZN7S1590C34v114Ev();
extern void _ZN7S1590C34v115Ev();
extern void _ZN7S1590C34v116Ev();
extern void _ZN7S1590C34v117Ev();
extern void _ZN7S1590C34v118Ev();
extern void _ZN7S1590C34v119Ev();
extern void _ZN7S1590C34v120Ev();
extern void _ZN7S1590C34v121Ev();
extern void _ZN7S1590C63v73Ev();
extern void _ZN7S1590C63v74Ev();
extern void _ZN7S1590C63v75Ev();
extern void _ZN7S1590C63v76Ev();
extern void _ZN7S1590C63v77Ev();
extern void _ZN7S1590C63v78Ev();
extern void _ZN7S1590C63v79Ev();
extern void _ZN7S1590C63v80Ev();
extern void _ZN7S1590C63v81Ev();
extern void _ZN7S1590C63v82Ev();
extern void _ZN7S1590C63v83Ev();
extern void _ZN7S1590C63v84Ev();
extern void _ZN7S1590C63v85Ev();
extern void _ZN7S1590C63v86Ev();
extern void _ZN7S1590C63v87Ev();
extern void _ZN7S1590C63v88Ev();
extern void _ZN7S1590C73v89Ev();
extern void _ZN7S1590C73v90Ev();
extern void _ZN7S1590C73v91Ev();
extern void _ZN7S1590C73v92Ev();
extern void _ZN7S1590C73v93Ev();
extern void _ZN7S1590C73v94Ev();
extern void _ZN7S1590C73v95Ev();
extern void _ZN7S1590C73v96Ev();
extern void _ZN7S1590C73v97Ev();
static  VTBL_ENTRY vtc_S1590C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1590C3[0]),
  (VTBL_ENTRY)&_ZN7S1590C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1590C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1590C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v71Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v72Ev,
  (VTBL_ENTRY)&_ZN7S1590C33v98Ev,
  (VTBL_ENTRY)&_ZN7S1590C33v99Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v100Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v101Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v102Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v103Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v104Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v105Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v106Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v107Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v108Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v119Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v120Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v121Ev,
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S1590C3[0]),
  (VTBL_ENTRY)&_ZN7S1590C63v73Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v74Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v75Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v76Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v77Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v78Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v79Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v80Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v81Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v82Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v83Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v84Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v85Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v86Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v87Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v88Ev,
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S1590C3[0]),
  (VTBL_ENTRY)&_ZN7S1590C73v89Ev,
  (VTBL_ENTRY)&_ZN7S1590C73v90Ev,
  (VTBL_ENTRY)&_ZN7S1590C73v91Ev,
  (VTBL_ENTRY)&_ZN7S1590C73v92Ev,
  (VTBL_ENTRY)&_ZN7S1590C73v93Ev,
  (VTBL_ENTRY)&_ZN7S1590C73v94Ev,
  (VTBL_ENTRY)&_ZN7S1590C73v95Ev,
  (VTBL_ENTRY)&_ZN7S1590C73v96Ev,
  (VTBL_ENTRY)&_ZN7S1590C73v97Ev,
};
extern VTBL_ENTRY _ZTI7S1590C3[];
extern  VTBL_ENTRY _ZTV7S1590C3[];
Class_Descriptor cd_S1590C3 = {  "S1590C3", // class name
  bases_S1590C3, 3,
  &(vtc_S1590C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,88), // object size
  NSPAIRA(_ZTI7S1590C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S1590C3),121, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1590C2  : S1590C3 {
  ::S3262C11_nt s1590c2f0;
  int s1590c2f1;
  virtual  ~S1590C2(); // _ZN7S1590C2D1Ev
  virtual void  v122(); // _ZN7S1590C24v122Ev
  virtual void  v123(); // _ZN7S1590C24v123Ev
  virtual void  v124(); // _ZN7S1590C24v124Ev
  virtual void  v125(); // _ZN7S1590C24v125Ev
  virtual void  v126(); // _ZN7S1590C24v126Ev
  virtual void  v127(); // _ZN7S1590C24v127Ev
  virtual void  v128(); // _ZN7S1590C24v128Ev
  virtual void  v129(); // _ZN7S1590C24v129Ev
  virtual void  v130(); // _ZN7S1590C24v130Ev
  virtual void  v131(); // _ZN7S1590C24v131Ev
  virtual void  v132(); // _ZN7S1590C24v132Ev
  virtual void  v133(); // _ZN7S1590C24v133Ev
  virtual void  v134(); // _ZN7S1590C24v134Ev
  virtual void  v135(); // _ZN7S1590C24v135Ev
  virtual void  v136(); // _ZN7S1590C24v136Ev
  virtual void  v137(); // _ZN7S1590C24v137Ev
  virtual void  v138(); // _ZN7S1590C24v138Ev
  virtual void  v139(); // _ZN7S1590C24v139Ev
  virtual void  v140(); // _ZN7S1590C24v140Ev
  virtual void  v141(); // _ZN7S1590C24v141Ev
  virtual void  v142(); // _ZN7S1590C24v142Ev
  virtual void  v143(); // _ZN7S1590C24v143Ev
  virtual void  v144(); // _ZN7S1590C24v144Ev
  virtual void  v145(); // _ZN7S1590C24v145Ev
  virtual void  v146(); // _ZN7S1590C24v146Ev
  virtual void  v147(); // _ZN7S1590C24v147Ev
  virtual void  v148(); // _ZN7S1590C24v148Ev
  S1590C2(); // tgen
};
//SIG(-1 S1590C2) C1{ BC2{ BC3{ vd v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} BC5{ v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107} BC6{ v108 v109 v110 v111 v112 v113 v114 v115 v116} vd v117 v118 v119 v120 v121 v122 v123 v124 v125 v126 v127 v128 v129 v130 v131 v132 v133 v134 v135 v136 v137 v138 v139 v140 Fp FC7{ BC8{ BC9{ BC10{ m Fp Fi[2]}}}} Fi:1 Fi:1 Fi:1 Fi:1} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 FC11{ m FC12{ BC13{ BC10}} Fc} Fi}


 S1590C2 ::~S1590C2(){ note_dtor("S1590C2", this);}
void  S1590C2 ::v122(){vfunc_called(this, "_ZN7S1590C24v122Ev");}
void  S1590C2 ::v123(){vfunc_called(this, "_ZN7S1590C24v123Ev");}
void  S1590C2 ::v124(){vfunc_called(this, "_ZN7S1590C24v124Ev");}
void  S1590C2 ::v125(){vfunc_called(this, "_ZN7S1590C24v125Ev");}
void  S1590C2 ::v126(){vfunc_called(this, "_ZN7S1590C24v126Ev");}
void  S1590C2 ::v127(){vfunc_called(this, "_ZN7S1590C24v127Ev");}
void  S1590C2 ::v128(){vfunc_called(this, "_ZN7S1590C24v128Ev");}
void  S1590C2 ::v129(){vfunc_called(this, "_ZN7S1590C24v129Ev");}
void  S1590C2 ::v130(){vfunc_called(this, "_ZN7S1590C24v130Ev");}
void  S1590C2 ::v131(){vfunc_called(this, "_ZN7S1590C24v131Ev");}
void  S1590C2 ::v132(){vfunc_called(this, "_ZN7S1590C24v132Ev");}
void  S1590C2 ::v133(){vfunc_called(this, "_ZN7S1590C24v133Ev");}
void  S1590C2 ::v134(){vfunc_called(this, "_ZN7S1590C24v134Ev");}
void  S1590C2 ::v135(){vfunc_called(this, "_ZN7S1590C24v135Ev");}
void  S1590C2 ::v136(){vfunc_called(this, "_ZN7S1590C24v136Ev");}
void  S1590C2 ::v137(){vfunc_called(this, "_ZN7S1590C24v137Ev");}
void  S1590C2 ::v138(){vfunc_called(this, "_ZN7S1590C24v138Ev");}
void  S1590C2 ::v139(){vfunc_called(this, "_ZN7S1590C24v139Ev");}
void  S1590C2 ::v140(){vfunc_called(this, "_ZN7S1590C24v140Ev");}
void  S1590C2 ::v141(){vfunc_called(this, "_ZN7S1590C24v141Ev");}
void  S1590C2 ::v142(){vfunc_called(this, "_ZN7S1590C24v142Ev");}
void  S1590C2 ::v143(){vfunc_called(this, "_ZN7S1590C24v143Ev");}
void  S1590C2 ::v144(){vfunc_called(this, "_ZN7S1590C24v144Ev");}
void  S1590C2 ::v145(){vfunc_called(this, "_ZN7S1590C24v145Ev");}
void  S1590C2 ::v146(){vfunc_called(this, "_ZN7S1590C24v146Ev");}
void  S1590C2 ::v147(){vfunc_called(this, "_ZN7S1590C24v147Ev");}
void  S1590C2 ::v148(){vfunc_called(this, "_ZN7S1590C24v148Ev");}
S1590C2 ::S1590C2(){ note_ctor("S1590C2", this);} // tgen

static void Test_S1590C2()
{
  extern Class_Descriptor cd_S1590C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,28)];
    init_test(&cd_S1590C2, buf);
    S1590C2 *dp, &lv = *(dp=new (buf) S1590C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,108), "sizeof(S1590C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1590C2)");
    check_base_class_offset(lv, (S1590C4*)(S1590C3*), 0, "S1590C2");
    check_base_class_offset(lv, (S1590C6*)(S1590C3*), ABISELECT(96,60), "S1590C2");
    check_base_class_offset(lv, (S1590C7*)(S1590C3*), ABISELECT(104,64), "S1590C2");
    check_base_class_offset(lv, (S1590C3*), 0, "S1590C2");
    check_field_offset(lv, s1590c2f0, ABISELECT(144,88), "S1590C2.s1590c2f0");
    check_field_offset(lv, s1590c2f1, ABISELECT(168,104), "S1590C2.s1590c2f1");
    test_class_info(&lv, &cd_S1590C2);
    dp->~S1590C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1590C2(Test_S1590C2, "S1590C2", ABISELECT(176,108));

#else // __cplusplus

extern void _ZN7S1590C2C1Ev();
extern void _ZN7S1590C2D1Ev();
Name_Map name_map_S1590C2[] = {
  NSPAIR(_ZN7S1590C2C1Ev),
  NSPAIR(_ZN7S1590C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1590C4;
extern VTBL_ENTRY _ZTI7S1590C4[];
extern  VTBL_ENTRY _ZTV7S1590C4[];
extern Class_Descriptor cd_S1590C6;
extern VTBL_ENTRY _ZTI7S1590C6[];
extern  VTBL_ENTRY _ZTV7S1590C6[];
extern Class_Descriptor cd_S1590C7;
extern VTBL_ENTRY _ZTI7S1590C7[];
extern  VTBL_ENTRY _ZTV7S1590C7[];
extern Class_Descriptor cd_S1590C3;
extern VTBL_ENTRY _ZTI7S1590C3[];
extern  VTBL_ENTRY _ZTV7S1590C3[];
static Base_Class bases_S1590C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1590C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1590C6,    ABISELECT(96,60), //bcp->offset
    119, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1590C7,    ABISELECT(104,64), //bcp->offset
    137, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1590C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1590C2[];
extern void _ZN7S1590C2D1Ev();
extern void _ZN7S1590C2D0Ev();
extern void _ZN7S1590C42v9Ev();
extern void _ZN7S1590C43v10Ev();
extern void _ZN7S1590C43v11Ev();
extern void _ZN7S1590C43v12Ev();
extern void _ZN7S1590C43v13Ev();
extern void _ZN7S1590C43v14Ev();
extern void _ZN7S1590C43v15Ev();
extern void _ZN7S1590C43v16Ev();
extern void _ZN7S1590C43v17Ev();
extern void _ZN7S1590C43v18Ev();
extern void _ZN7S1590C43v19Ev();
extern void _ZN7S1590C43v20Ev();
extern void _ZN7S1590C43v21Ev();
extern void _ZN7S1590C43v22Ev();
extern void _ZN7S1590C43v23Ev();
extern void _ZN7S1590C43v24Ev();
extern void _ZN7S1590C43v25Ev();
extern void _ZN7S1590C43v26Ev();
extern void _ZN7S1590C43v27Ev();
extern void _ZN7S1590C43v28Ev();
extern void _ZN7S1590C43v29Ev();
extern void _ZN7S1590C43v30Ev();
extern void _ZN7S1590C43v31Ev();
extern void _ZN7S1590C43v32Ev();
extern void _ZN7S1590C43v33Ev();
extern void _ZN7S1590C43v34Ev();
extern void _ZN7S1590C43v35Ev();
extern void _ZN7S1590C43v36Ev();
extern void _ZN7S1590C43v37Ev();
extern void _ZN7S1590C43v38Ev();
extern void _ZN7S1590C43v39Ev();
extern void _ZN7S1590C43v40Ev();
extern void _ZN7S1590C43v41Ev();
extern void _ZN7S1590C43v42Ev();
extern void _ZN7S1590C43v43Ev();
extern void _ZN7S1590C43v44Ev();
extern void _ZN7S1590C43v45Ev();
extern void _ZN7S1590C43v46Ev();
extern void _ZN7S1590C43v47Ev();
extern void _ZN7S1590C43v48Ev();
extern void _ZN7S1590C43v49Ev();
extern void _ZN7S1590C43v50Ev();
extern void _ZN7S1590C43v51Ev();
extern void _ZN7S1590C43v52Ev();
extern void _ZN7S1590C43v53Ev();
extern void _ZN7S1590C43v54Ev();
extern void _ZN7S1590C43v55Ev();
extern void _ZN7S1590C43v56Ev();
extern void _ZN7S1590C43v57Ev();
extern void _ZN7S1590C43v58Ev();
extern void _ZN7S1590C43v59Ev();
extern void _ZN7S1590C43v60Ev();
extern void _ZN7S1590C43v61Ev();
extern void _ZN7S1590C43v62Ev();
extern void _ZN7S1590C43v63Ev();
extern void _ZN7S1590C43v64Ev();
extern void _ZN7S1590C43v65Ev();
extern void _ZN7S1590C43v66Ev();
extern void _ZN7S1590C43v67Ev();
extern void _ZN7S1590C43v68Ev();
extern void _ZN7S1590C43v69Ev();
extern void _ZN7S1590C43v70Ev();
extern void _ZN7S1590C43v71Ev();
extern void _ZN7S1590C43v72Ev();
extern void _ZN7S1590C33v98Ev();
extern void _ZN7S1590C33v99Ev();
extern void _ZN7S1590C34v100Ev();
extern void _ZN7S1590C34v101Ev();
extern void _ZN7S1590C34v102Ev();
extern void _ZN7S1590C34v103Ev();
extern void _ZN7S1590C34v104Ev();
extern void _ZN7S1590C34v105Ev();
extern void _ZN7S1590C34v106Ev();
extern void _ZN7S1590C34v107Ev();
extern void _ZN7S1590C34v108Ev();
extern void _ZN7S1590C34v109Ev();
extern void _ZN7S1590C34v110Ev();
extern void _ZN7S1590C34v111Ev();
extern void _ZN7S1590C34v112Ev();
extern void _ZN7S1590C34v113Ev();
extern void _ZN7S1590C34v114Ev();
extern void _ZN7S1590C34v115Ev();
extern void _ZN7S1590C34v116Ev();
extern void _ZN7S1590C34v117Ev();
extern void _ZN7S1590C34v118Ev();
extern void _ZN7S1590C34v119Ev();
extern void _ZN7S1590C34v120Ev();
extern void _ZN7S1590C34v121Ev();
extern void _ZN7S1590C24v122Ev();
extern void _ZN7S1590C24v123Ev();
extern void _ZN7S1590C24v124Ev();
extern void _ZN7S1590C24v125Ev();
extern void _ZN7S1590C24v126Ev();
extern void _ZN7S1590C24v127Ev();
extern void _ZN7S1590C24v128Ev();
extern void _ZN7S1590C24v129Ev();
extern void _ZN7S1590C24v130Ev();
extern void _ZN7S1590C24v131Ev();
extern void _ZN7S1590C24v132Ev();
extern void _ZN7S1590C24v133Ev();
extern void _ZN7S1590C24v134Ev();
extern void _ZN7S1590C24v135Ev();
extern void _ZN7S1590C24v136Ev();
extern void _ZN7S1590C24v137Ev();
extern void _ZN7S1590C24v138Ev();
extern void _ZN7S1590C24v139Ev();
extern void _ZN7S1590C24v140Ev();
extern void _ZN7S1590C24v141Ev();
extern void _ZN7S1590C24v142Ev();
extern void _ZN7S1590C24v143Ev();
extern void _ZN7S1590C24v144Ev();
extern void _ZN7S1590C24v145Ev();
extern void _ZN7S1590C24v146Ev();
extern void _ZN7S1590C24v147Ev();
extern void _ZN7S1590C24v148Ev();
extern void _ZN7S1590C63v73Ev();
extern void _ZN7S1590C63v74Ev();
extern void _ZN7S1590C63v75Ev();
extern void _ZN7S1590C63v76Ev();
extern void _ZN7S1590C63v77Ev();
extern void _ZN7S1590C63v78Ev();
extern void _ZN7S1590C63v79Ev();
extern void _ZN7S1590C63v80Ev();
extern void _ZN7S1590C63v81Ev();
extern void _ZN7S1590C63v82Ev();
extern void _ZN7S1590C63v83Ev();
extern void _ZN7S1590C63v84Ev();
extern void _ZN7S1590C63v85Ev();
extern void _ZN7S1590C63v86Ev();
extern void _ZN7S1590C63v87Ev();
extern void _ZN7S1590C63v88Ev();
extern void _ZN7S1590C73v89Ev();
extern void _ZN7S1590C73v90Ev();
extern void _ZN7S1590C73v91Ev();
extern void _ZN7S1590C73v92Ev();
extern void _ZN7S1590C73v93Ev();
extern void _ZN7S1590C73v94Ev();
extern void _ZN7S1590C73v95Ev();
extern void _ZN7S1590C73v96Ev();
extern void _ZN7S1590C73v97Ev();
static  VTBL_ENTRY vtc_S1590C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1590C2[0]),
  (VTBL_ENTRY)&_ZN7S1590C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1590C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1590C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v71Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v72Ev,
  (VTBL_ENTRY)&_ZN7S1590C33v98Ev,
  (VTBL_ENTRY)&_ZN7S1590C33v99Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v100Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v101Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v102Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v103Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v104Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v105Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v106Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v107Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v108Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v119Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v120Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v121Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v122Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v123Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v124Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v125Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v126Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v127Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v128Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v129Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v130Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v131Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v132Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v133Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v134Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v135Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v136Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v137Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v138Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v139Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v140Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v141Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v142Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v143Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v144Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v145Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v146Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v147Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v148Ev,
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S1590C2[0]),
  (VTBL_ENTRY)&_ZN7S1590C63v73Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v74Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v75Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v76Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v77Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v78Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v79Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v80Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v81Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v82Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v83Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v84Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v85Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v86Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v87Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v88Ev,
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S1590C2[0]),
  (VTBL_ENTRY)&_ZN7S1590C73v89Ev,
  (VTBL_ENTRY)&_ZN7S1590C73v90Ev,
  (VTBL_ENTRY)&_ZN7S1590C73v91Ev,
  (VTBL_ENTRY)&_ZN7S1590C73v92Ev,
  (VTBL_ENTRY)&_ZN7S1590C73v93Ev,
  (VTBL_ENTRY)&_ZN7S1590C73v94Ev,
  (VTBL_ENTRY)&_ZN7S1590C73v95Ev,
  (VTBL_ENTRY)&_ZN7S1590C73v96Ev,
  (VTBL_ENTRY)&_ZN7S1590C73v97Ev,
};
extern VTBL_ENTRY _ZTI7S1590C2[];
extern  VTBL_ENTRY _ZTV7S1590C2[];
Class_Descriptor cd_S1590C2 = {  "S1590C2", // class name
  bases_S1590C2, 4,
  &(vtc_S1590C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(176,108), // object size
  NSPAIRA(_ZTI7S1590C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1590C2),148, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  4, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1590C1  : S1590C2 {
  ::S79C8_nt s1590c1f0;
  virtual  ~S1590C1(); // _ZN7S1590C1D1Ev
  virtual void  v1(); // _ZN7S1590C12v1Ev
  virtual void  v2(); // _ZN7S1590C12v2Ev
  virtual void  v3(); // _ZN7S1590C12v3Ev
  virtual void  v4(); // _ZN7S1590C12v4Ev
  virtual void  v5(); // _ZN7S1590C12v5Ev
  virtual void  v6(); // _ZN7S1590C12v6Ev
  virtual void  v7(); // _ZN7S1590C12v7Ev
  virtual void  v8(); // _ZN7S1590C12v8Ev
  S1590C1(); // tgen
};
//SIG(1 S1590C1) C1{ BC2{ BC3{ BC4{ vd v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 Fi FL Fp[4] Fi[2] Fp FC5{ m Fi[2]} Fp[2]} BC6{ v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88} BC7{ v89 v90 v91 v92 v93 v94 v95 v96 v97} vd v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 v112 v113 v114 v115 v116 v117 v118 v119 v120 v121 Fp FC8{ BC9{ BC10{ BC11{ m Fp Fi[2]}}}} Fi:1 Fi:1 Fi:1 Fi:1} vd v122 v123 v124 v125 v126 v127 v128 v129 v130 v131 v132 v133 v134 v135 v136 v137 v138 v139 v140 v141 v142 v143 v144 v145 v146 v147 v148 FC12{ m FC13{ BC14{ BC11}} Fc} Fi} vd v1 v2 v3 v4 v5 v6 v7 v8 FC5}


 S1590C1 ::~S1590C1(){ note_dtor("S1590C1", this);}
void  S1590C1 ::v1(){vfunc_called(this, "_ZN7S1590C12v1Ev");}
void  S1590C1 ::v2(){vfunc_called(this, "_ZN7S1590C12v2Ev");}
void  S1590C1 ::v3(){vfunc_called(this, "_ZN7S1590C12v3Ev");}
void  S1590C1 ::v4(){vfunc_called(this, "_ZN7S1590C12v4Ev");}
void  S1590C1 ::v5(){vfunc_called(this, "_ZN7S1590C12v5Ev");}
void  S1590C1 ::v6(){vfunc_called(this, "_ZN7S1590C12v6Ev");}
void  S1590C1 ::v7(){vfunc_called(this, "_ZN7S1590C12v7Ev");}
void  S1590C1 ::v8(){vfunc_called(this, "_ZN7S1590C12v8Ev");}
S1590C1 ::S1590C1(){ note_ctor("S1590C1", this);} // tgen

static void Test_S1590C1()
{
  extern Class_Descriptor cd_S1590C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,30)];
    init_test(&cd_S1590C1, buf);
    S1590C1 *dp, &lv = *(dp=new (buf) S1590C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,116), "sizeof(S1590C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1590C1)");
    check_base_class_offset(lv, (S1590C4*)(S1590C3*)(S1590C2*), 0, "S1590C1");
    check_base_class_offset(lv, (S1590C6*)(S1590C3*)(S1590C2*), ABISELECT(96,60), "S1590C1");
    check_base_class_offset(lv, (S1590C7*)(S1590C3*)(S1590C2*), ABISELECT(104,64), "S1590C1");
    check_base_class_offset(lv, (S1590C3*)(S1590C2*), 0, "S1590C1");
    check_base_class_offset(lv, (S1590C2*), 0, "S1590C1");
    check_field_offset(lv, s1590c1f0, ABISELECT(172,108), "S1590C1.s1590c1f0");
    test_class_info(&lv, &cd_S1590C1);
    dp->~S1590C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1590C1(Test_S1590C1, "S1590C1", ABISELECT(184,116));

#else // __cplusplus

extern void _ZN7S1590C1C1Ev();
extern void _ZN7S1590C1D1Ev();
Name_Map name_map_S1590C1[] = {
  NSPAIR(_ZN7S1590C1C1Ev),
  NSPAIR(_ZN7S1590C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1590C4;
extern VTBL_ENTRY _ZTI7S1590C4[];
extern  VTBL_ENTRY _ZTV7S1590C4[];
extern Class_Descriptor cd_S1590C6;
extern VTBL_ENTRY _ZTI7S1590C6[];
extern  VTBL_ENTRY _ZTV7S1590C6[];
extern Class_Descriptor cd_S1590C7;
extern VTBL_ENTRY _ZTI7S1590C7[];
extern  VTBL_ENTRY _ZTV7S1590C7[];
extern Class_Descriptor cd_S1590C3;
extern VTBL_ENTRY _ZTI7S1590C3[];
extern  VTBL_ENTRY _ZTV7S1590C3[];
extern Class_Descriptor cd_S1590C2;
extern VTBL_ENTRY _ZTI7S1590C2[];
extern  VTBL_ENTRY _ZTV7S1590C2[];
static Base_Class bases_S1590C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1590C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1590C6,    ABISELECT(96,60), //bcp->offset
    127, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1590C7,    ABISELECT(104,64), //bcp->offset
    145, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1590C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S1590C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1590C1[];
extern void _ZN7S1590C1D1Ev();
extern void _ZN7S1590C1D0Ev();
extern void _ZN7S1590C42v9Ev();
extern void _ZN7S1590C43v10Ev();
extern void _ZN7S1590C43v11Ev();
extern void _ZN7S1590C43v12Ev();
extern void _ZN7S1590C43v13Ev();
extern void _ZN7S1590C43v14Ev();
extern void _ZN7S1590C43v15Ev();
extern void _ZN7S1590C43v16Ev();
extern void _ZN7S1590C43v17Ev();
extern void _ZN7S1590C43v18Ev();
extern void _ZN7S1590C43v19Ev();
extern void _ZN7S1590C43v20Ev();
extern void _ZN7S1590C43v21Ev();
extern void _ZN7S1590C43v22Ev();
extern void _ZN7S1590C43v23Ev();
extern void _ZN7S1590C43v24Ev();
extern void _ZN7S1590C43v25Ev();
extern void _ZN7S1590C43v26Ev();
extern void _ZN7S1590C43v27Ev();
extern void _ZN7S1590C43v28Ev();
extern void _ZN7S1590C43v29Ev();
extern void _ZN7S1590C43v30Ev();
extern void _ZN7S1590C43v31Ev();
extern void _ZN7S1590C43v32Ev();
extern void _ZN7S1590C43v33Ev();
extern void _ZN7S1590C43v34Ev();
extern void _ZN7S1590C43v35Ev();
extern void _ZN7S1590C43v36Ev();
extern void _ZN7S1590C43v37Ev();
extern void _ZN7S1590C43v38Ev();
extern void _ZN7S1590C43v39Ev();
extern void _ZN7S1590C43v40Ev();
extern void _ZN7S1590C43v41Ev();
extern void _ZN7S1590C43v42Ev();
extern void _ZN7S1590C43v43Ev();
extern void _ZN7S1590C43v44Ev();
extern void _ZN7S1590C43v45Ev();
extern void _ZN7S1590C43v46Ev();
extern void _ZN7S1590C43v47Ev();
extern void _ZN7S1590C43v48Ev();
extern void _ZN7S1590C43v49Ev();
extern void _ZN7S1590C43v50Ev();
extern void _ZN7S1590C43v51Ev();
extern void _ZN7S1590C43v52Ev();
extern void _ZN7S1590C43v53Ev();
extern void _ZN7S1590C43v54Ev();
extern void _ZN7S1590C43v55Ev();
extern void _ZN7S1590C43v56Ev();
extern void _ZN7S1590C43v57Ev();
extern void _ZN7S1590C43v58Ev();
extern void _ZN7S1590C43v59Ev();
extern void _ZN7S1590C43v60Ev();
extern void _ZN7S1590C43v61Ev();
extern void _ZN7S1590C43v62Ev();
extern void _ZN7S1590C43v63Ev();
extern void _ZN7S1590C43v64Ev();
extern void _ZN7S1590C43v65Ev();
extern void _ZN7S1590C43v66Ev();
extern void _ZN7S1590C43v67Ev();
extern void _ZN7S1590C43v68Ev();
extern void _ZN7S1590C43v69Ev();
extern void _ZN7S1590C43v70Ev();
extern void _ZN7S1590C43v71Ev();
extern void _ZN7S1590C43v72Ev();
extern void _ZN7S1590C33v98Ev();
extern void _ZN7S1590C33v99Ev();
extern void _ZN7S1590C34v100Ev();
extern void _ZN7S1590C34v101Ev();
extern void _ZN7S1590C34v102Ev();
extern void _ZN7S1590C34v103Ev();
extern void _ZN7S1590C34v104Ev();
extern void _ZN7S1590C34v105Ev();
extern void _ZN7S1590C34v106Ev();
extern void _ZN7S1590C34v107Ev();
extern void _ZN7S1590C34v108Ev();
extern void _ZN7S1590C34v109Ev();
extern void _ZN7S1590C34v110Ev();
extern void _ZN7S1590C34v111Ev();
extern void _ZN7S1590C34v112Ev();
extern void _ZN7S1590C34v113Ev();
extern void _ZN7S1590C34v114Ev();
extern void _ZN7S1590C34v115Ev();
extern void _ZN7S1590C34v116Ev();
extern void _ZN7S1590C34v117Ev();
extern void _ZN7S1590C34v118Ev();
extern void _ZN7S1590C34v119Ev();
extern void _ZN7S1590C34v120Ev();
extern void _ZN7S1590C34v121Ev();
extern void _ZN7S1590C24v122Ev();
extern void _ZN7S1590C24v123Ev();
extern void _ZN7S1590C24v124Ev();
extern void _ZN7S1590C24v125Ev();
extern void _ZN7S1590C24v126Ev();
extern void _ZN7S1590C24v127Ev();
extern void _ZN7S1590C24v128Ev();
extern void _ZN7S1590C24v129Ev();
extern void _ZN7S1590C24v130Ev();
extern void _ZN7S1590C24v131Ev();
extern void _ZN7S1590C24v132Ev();
extern void _ZN7S1590C24v133Ev();
extern void _ZN7S1590C24v134Ev();
extern void _ZN7S1590C24v135Ev();
extern void _ZN7S1590C24v136Ev();
extern void _ZN7S1590C24v137Ev();
extern void _ZN7S1590C24v138Ev();
extern void _ZN7S1590C24v139Ev();
extern void _ZN7S1590C24v140Ev();
extern void _ZN7S1590C24v141Ev();
extern void _ZN7S1590C24v142Ev();
extern void _ZN7S1590C24v143Ev();
extern void _ZN7S1590C24v144Ev();
extern void _ZN7S1590C24v145Ev();
extern void _ZN7S1590C24v146Ev();
extern void _ZN7S1590C24v147Ev();
extern void _ZN7S1590C24v148Ev();
extern void _ZN7S1590C12v1Ev();
extern void _ZN7S1590C12v2Ev();
extern void _ZN7S1590C12v3Ev();
extern void _ZN7S1590C12v4Ev();
extern void _ZN7S1590C12v5Ev();
extern void _ZN7S1590C12v6Ev();
extern void _ZN7S1590C12v7Ev();
extern void _ZN7S1590C12v8Ev();
extern void _ZN7S1590C63v73Ev();
extern void _ZN7S1590C63v74Ev();
extern void _ZN7S1590C63v75Ev();
extern void _ZN7S1590C63v76Ev();
extern void _ZN7S1590C63v77Ev();
extern void _ZN7S1590C63v78Ev();
extern void _ZN7S1590C63v79Ev();
extern void _ZN7S1590C63v80Ev();
extern void _ZN7S1590C63v81Ev();
extern void _ZN7S1590C63v82Ev();
extern void _ZN7S1590C63v83Ev();
extern void _ZN7S1590C63v84Ev();
extern void _ZN7S1590C63v85Ev();
extern void _ZN7S1590C63v86Ev();
extern void _ZN7S1590C63v87Ev();
extern void _ZN7S1590C63v88Ev();
extern void _ZN7S1590C73v89Ev();
extern void _ZN7S1590C73v90Ev();
extern void _ZN7S1590C73v91Ev();
extern void _ZN7S1590C73v92Ev();
extern void _ZN7S1590C73v93Ev();
extern void _ZN7S1590C73v94Ev();
extern void _ZN7S1590C73v95Ev();
extern void _ZN7S1590C73v96Ev();
extern void _ZN7S1590C73v97Ev();
static  VTBL_ENTRY vtc_S1590C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1590C1[0]),
  (VTBL_ENTRY)&_ZN7S1590C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1590C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1590C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v71Ev,
  (VTBL_ENTRY)&_ZN7S1590C43v72Ev,
  (VTBL_ENTRY)&_ZN7S1590C33v98Ev,
  (VTBL_ENTRY)&_ZN7S1590C33v99Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v100Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v101Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v102Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v103Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v104Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v105Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v106Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v107Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v108Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v119Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v120Ev,
  (VTBL_ENTRY)&_ZN7S1590C34v121Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v122Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v123Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v124Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v125Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v126Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v127Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v128Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v129Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v130Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v131Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v132Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v133Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v134Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v135Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v136Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v137Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v138Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v139Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v140Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v141Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v142Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v143Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v144Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v145Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v146Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v147Ev,
  (VTBL_ENTRY)&_ZN7S1590C24v148Ev,
  (VTBL_ENTRY)&_ZN7S1590C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1590C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1590C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1590C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1590C12v5Ev,
  (VTBL_ENTRY)&_ZN7S1590C12v6Ev,
  (VTBL_ENTRY)&_ZN7S1590C12v7Ev,
  (VTBL_ENTRY)&_ZN7S1590C12v8Ev,
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S1590C1[0]),
  (VTBL_ENTRY)&_ZN7S1590C63v73Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v74Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v75Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v76Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v77Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v78Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v79Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v80Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v81Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v82Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v83Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v84Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v85Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v86Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v87Ev,
  (VTBL_ENTRY)&_ZN7S1590C63v88Ev,
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S1590C1[0]),
  (VTBL_ENTRY)&_ZN7S1590C73v89Ev,
  (VTBL_ENTRY)&_ZN7S1590C73v90Ev,
  (VTBL_ENTRY)&_ZN7S1590C73v91Ev,
  (VTBL_ENTRY)&_ZN7S1590C73v92Ev,
  (VTBL_ENTRY)&_ZN7S1590C73v93Ev,
  (VTBL_ENTRY)&_ZN7S1590C73v94Ev,
  (VTBL_ENTRY)&_ZN7S1590C73v95Ev,
  (VTBL_ENTRY)&_ZN7S1590C73v96Ev,
  (VTBL_ENTRY)&_ZN7S1590C73v97Ev,
};
extern VTBL_ENTRY _ZTI7S1590C1[];
extern  VTBL_ENTRY _ZTV7S1590C1[];
Class_Descriptor cd_S1590C1 = {  "S1590C1", // class name
  bases_S1590C1, 5,
  &(vtc_S1590C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(184,116), // object size
  NSPAIRA(_ZTI7S1590C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1590C1),156, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  5, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1591C4  {
  int s1591c4f0;
  __tsi64 s1591c4f1;
  void *s1591c4f2[4];
  int s1591c4f3[2];
  void *s1591c4f4;
  ::S79C8_nt s1591c4f5;
  void *s1591c4f6[2];
  virtual  ~S1591C4(); // _ZN7S1591C4D1Ev
  virtual void  v9(); // _ZN7S1591C42v9Ev
  virtual void  v10(); // _ZN7S1591C43v10Ev
  virtual void  v11(); // _ZN7S1591C43v11Ev
  virtual void  v12(); // _ZN7S1591C43v12Ev
  virtual void  v13(); // _ZN7S1591C43v13Ev
  virtual void  v14(); // _ZN7S1591C43v14Ev
  virtual void  v15(); // _ZN7S1591C43v15Ev
  virtual void  v16(); // _ZN7S1591C43v16Ev
  virtual void  v17(); // _ZN7S1591C43v17Ev
  virtual void  v18(); // _ZN7S1591C43v18Ev
  virtual void  v19(); // _ZN7S1591C43v19Ev
  virtual void  v20(); // _ZN7S1591C43v20Ev
  virtual void  v21(); // _ZN7S1591C43v21Ev
  virtual void  v22(); // _ZN7S1591C43v22Ev
  virtual void  v23(); // _ZN7S1591C43v23Ev
  virtual void  v24(); // _ZN7S1591C43v24Ev
  virtual void  v25(); // _ZN7S1591C43v25Ev
  virtual void  v26(); // _ZN7S1591C43v26Ev
  virtual void  v27(); // _ZN7S1591C43v27Ev
  virtual void  v28(); // _ZN7S1591C43v28Ev
  virtual void  v29(); // _ZN7S1591C43v29Ev
  virtual void  v30(); // _ZN7S1591C43v30Ev
  virtual void  v31(); // _ZN7S1591C43v31Ev
  virtual void  v32(); // _ZN7S1591C43v32Ev
  virtual void  v33(); // _ZN7S1591C43v33Ev
  virtual void  v34(); // _ZN7S1591C43v34Ev
  virtual void  v35(); // _ZN7S1591C43v35Ev
  virtual void  v36(); // _ZN7S1591C43v36Ev
  virtual void  v37(); // _ZN7S1591C43v37Ev
  virtual void  v38(); // _ZN7S1591C43v38Ev
  virtual void  v39(); // _ZN7S1591C43v39Ev
  virtual void  v40(); // _ZN7S1591C43v40Ev
  virtual void  v41(); // _ZN7S1591C43v41Ev
  virtual void  v42(); // _ZN7S1591C43v42Ev
  virtual void  v43(); // _ZN7S1591C43v43Ev
  virtual void  v44(); // _ZN7S1591C43v44Ev
  virtual void  v45(); // _ZN7S1591C43v45Ev
  virtual void  v46(); // _ZN7S1591C43v46Ev
  virtual void  v47(); // _ZN7S1591C43v47Ev
  virtual void  v48(); // _ZN7S1591C43v48Ev
  virtual void  v49(); // _ZN7S1591C43v49Ev
  virtual void  v50(); // _ZN7S1591C43v50Ev
  virtual void  v51(); // _ZN7S1591C43v51Ev
  virtual void  v52(); // _ZN7S1591C43v52Ev
  virtual void  v53(); // _ZN7S1591C43v53Ev
  virtual void  v54(); // _ZN7S1591C43v54Ev
  virtual void  v55(); // _ZN7S1591C43v55Ev
  virtual void  v56(); // _ZN7S1591C43v56Ev
  virtual void  v57(); // _ZN7S1591C43v57Ev
  virtual void  v58(); // _ZN7S1591C43v58Ev
  virtual void  v59(); // _ZN7S1591C43v59Ev
  virtual void  v60(); // _ZN7S1591C43v60Ev
  virtual void  v61(); // _ZN7S1591C43v61Ev
  virtual void  v62(); // _ZN7S1591C43v62Ev
  virtual void  v63(); // _ZN7S1591C43v63Ev
  virtual void  v64(); // _ZN7S1591C43v64Ev
  virtual void  v65(); // _ZN7S1591C43v65Ev
  virtual void  v66(); // _ZN7S1591C43v66Ev
  virtual void  v67(); // _ZN7S1591C43v67Ev
  virtual void  v68(); // _ZN7S1591C43v68Ev
  virtual void  v69(); // _ZN7S1591C43v69Ev
  virtual void  v70(); // _ZN7S1591C43v70Ev
  virtual void  v71(); // _ZN7S1591C43v71Ev
  virtual void  v72(); // _ZN7S1591C43v72Ev
  S1591C4(); // tgen
};
//SIG(-1 S1591C4) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 Fi FL Fp[4] Fi[2] Fp FC2{ m Fi[2]} Fp[2]}


 S1591C4 ::~S1591C4(){ note_dtor("S1591C4", this);}
void  S1591C4 ::v9(){vfunc_called(this, "_ZN7S1591C42v9Ev");}
void  S1591C4 ::v10(){vfunc_called(this, "_ZN7S1591C43v10Ev");}
void  S1591C4 ::v11(){vfunc_called(this, "_ZN7S1591C43v11Ev");}
void  S1591C4 ::v12(){vfunc_called(this, "_ZN7S1591C43v12Ev");}
void  S1591C4 ::v13(){vfunc_called(this, "_ZN7S1591C43v13Ev");}
void  S1591C4 ::v14(){vfunc_called(this, "_ZN7S1591C43v14Ev");}
void  S1591C4 ::v15(){vfunc_called(this, "_ZN7S1591C43v15Ev");}
void  S1591C4 ::v16(){vfunc_called(this, "_ZN7S1591C43v16Ev");}
void  S1591C4 ::v17(){vfunc_called(this, "_ZN7S1591C43v17Ev");}
void  S1591C4 ::v18(){vfunc_called(this, "_ZN7S1591C43v18Ev");}
void  S1591C4 ::v19(){vfunc_called(this, "_ZN7S1591C43v19Ev");}
void  S1591C4 ::v20(){vfunc_called(this, "_ZN7S1591C43v20Ev");}
void  S1591C4 ::v21(){vfunc_called(this, "_ZN7S1591C43v21Ev");}
void  S1591C4 ::v22(){vfunc_called(this, "_ZN7S1591C43v22Ev");}
void  S1591C4 ::v23(){vfunc_called(this, "_ZN7S1591C43v23Ev");}
void  S1591C4 ::v24(){vfunc_called(this, "_ZN7S1591C43v24Ev");}
void  S1591C4 ::v25(){vfunc_called(this, "_ZN7S1591C43v25Ev");}
void  S1591C4 ::v26(){vfunc_called(this, "_ZN7S1591C43v26Ev");}
void  S1591C4 ::v27(){vfunc_called(this, "_ZN7S1591C43v27Ev");}
void  S1591C4 ::v28(){vfunc_called(this, "_ZN7S1591C43v28Ev");}
void  S1591C4 ::v29(){vfunc_called(this, "_ZN7S1591C43v29Ev");}
void  S1591C4 ::v30(){vfunc_called(this, "_ZN7S1591C43v30Ev");}
void  S1591C4 ::v31(){vfunc_called(this, "_ZN7S1591C43v31Ev");}
void  S1591C4 ::v32(){vfunc_called(this, "_ZN7S1591C43v32Ev");}
void  S1591C4 ::v33(){vfunc_called(this, "_ZN7S1591C43v33Ev");}
void  S1591C4 ::v34(){vfunc_called(this, "_ZN7S1591C43v34Ev");}
void  S1591C4 ::v35(){vfunc_called(this, "_ZN7S1591C43v35Ev");}
void  S1591C4 ::v36(){vfunc_called(this, "_ZN7S1591C43v36Ev");}
void  S1591C4 ::v37(){vfunc_called(this, "_ZN7S1591C43v37Ev");}
void  S1591C4 ::v38(){vfunc_called(this, "_ZN7S1591C43v38Ev");}
void  S1591C4 ::v39(){vfunc_called(this, "_ZN7S1591C43v39Ev");}
void  S1591C4 ::v40(){vfunc_called(this, "_ZN7S1591C43v40Ev");}
void  S1591C4 ::v41(){vfunc_called(this, "_ZN7S1591C43v41Ev");}
void  S1591C4 ::v42(){vfunc_called(this, "_ZN7S1591C43v42Ev");}
void  S1591C4 ::v43(){vfunc_called(this, "_ZN7S1591C43v43Ev");}
void  S1591C4 ::v44(){vfunc_called(this, "_ZN7S1591C43v44Ev");}
void  S1591C4 ::v45(){vfunc_called(this, "_ZN7S1591C43v45Ev");}
void  S1591C4 ::v46(){vfunc_called(this, "_ZN7S1591C43v46Ev");}
void  S1591C4 ::v47(){vfunc_called(this, "_ZN7S1591C43v47Ev");}
void  S1591C4 ::v48(){vfunc_called(this, "_ZN7S1591C43v48Ev");}
void  S1591C4 ::v49(){vfunc_called(this, "_ZN7S1591C43v49Ev");}
void  S1591C4 ::v50(){vfunc_called(this, "_ZN7S1591C43v50Ev");}
void  S1591C4 ::v51(){vfunc_called(this, "_ZN7S1591C43v51Ev");}
void  S1591C4 ::v52(){vfunc_called(this, "_ZN7S1591C43v52Ev");}
void  S1591C4 ::v53(){vfunc_called(this, "_ZN7S1591C43v53Ev");}
void  S1591C4 ::v54(){vfunc_called(this, "_ZN7S1591C43v54Ev");}
void  S1591C4 ::v55(){vfunc_called(this, "_ZN7S1591C43v55Ev");}
void  S1591C4 ::v56(){vfunc_called(this, "_ZN7S1591C43v56Ev");}
void  S1591C4 ::v57(){vfunc_called(this, "_ZN7S1591C43v57Ev");}
void  S1591C4 ::v58(){vfunc_called(this, "_ZN7S1591C43v58Ev");}
void  S1591C4 ::v59(){vfunc_called(this, "_ZN7S1591C43v59Ev");}
void  S1591C4 ::v60(){vfunc_called(this, "_ZN7S1591C43v60Ev");}
void  S1591C4 ::v61(){vfunc_called(this, "_ZN7S1591C43v61Ev");}
void  S1591C4 ::v62(){vfunc_called(this, "_ZN7S1591C43v62Ev");}
void  S1591C4 ::v63(){vfunc_called(this, "_ZN7S1591C43v63Ev");}
void  S1591C4 ::v64(){vfunc_called(this, "_ZN7S1591C43v64Ev");}
void  S1591C4 ::v65(){vfunc_called(this, "_ZN7S1591C43v65Ev");}
void  S1591C4 ::v66(){vfunc_called(this, "_ZN7S1591C43v66Ev");}
void  S1591C4 ::v67(){vfunc_called(this, "_ZN7S1591C43v67Ev");}
void  S1591C4 ::v68(){vfunc_called(this, "_ZN7S1591C43v68Ev");}
void  S1591C4 ::v69(){vfunc_called(this, "_ZN7S1591C43v69Ev");}
void  S1591C4 ::v70(){vfunc_called(this, "_ZN7S1591C43v70Ev");}
void  S1591C4 ::v71(){vfunc_called(this, "_ZN7S1591C43v71Ev");}
void  S1591C4 ::v72(){vfunc_called(this, "_ZN7S1591C43v72Ev");}
S1591C4 ::S1591C4(){ note_ctor("S1591C4", this);} // tgen

static void Test_S1591C4()
{
  extern Class_Descriptor cd_S1591C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S1591C4, buf);
    S1591C4 *dp, &lv = *(dp=new (buf) S1591C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S1591C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1591C4)");
    check_field_offset(lv, s1591c4f0, ABISELECT(8,4), "S1591C4.s1591c4f0");
    check_field_offset(lv, s1591c4f1, ABISELECT(16,8), "S1591C4.s1591c4f1");
    check_field_offset(lv, s1591c4f2, ABISELECT(24,16), "S1591C4.s1591c4f2");
    check_field_offset(lv, s1591c4f3, ABISELECT(56,32), "S1591C4.s1591c4f3");
    check_field_offset(lv, s1591c4f4, ABISELECT(64,40), "S1591C4.s1591c4f4");
    check_field_offset(lv, s1591c4f5, ABISELECT(72,44), "S1591C4.s1591c4f5");
    check_field_offset(lv, s1591c4f6, ABISELECT(80,52), "S1591C4.s1591c4f6");
    test_class_info(&lv, &cd_S1591C4);
    dp->~S1591C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1591C4(Test_S1591C4, "S1591C4", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S1591C4C1Ev();
extern void _ZN7S1591C4D1Ev();
Name_Map name_map_S1591C4[] = {
  NSPAIR(_ZN7S1591C4C1Ev),
  NSPAIR(_ZN7S1591C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1591C4[];
extern void _ZN7S1591C4D1Ev();
extern void _ZN7S1591C4D0Ev();
extern void _ZN7S1591C42v9Ev();
extern void _ZN7S1591C43v10Ev();
extern void _ZN7S1591C43v11Ev();
extern void _ZN7S1591C43v12Ev();
extern void _ZN7S1591C43v13Ev();
extern void _ZN7S1591C43v14Ev();
extern void _ZN7S1591C43v15Ev();
extern void _ZN7S1591C43v16Ev();
extern void _ZN7S1591C43v17Ev();
extern void _ZN7S1591C43v18Ev();
extern void _ZN7S1591C43v19Ev();
extern void _ZN7S1591C43v20Ev();
extern void _ZN7S1591C43v21Ev();
extern void _ZN7S1591C43v22Ev();
extern void _ZN7S1591C43v23Ev();
extern void _ZN7S1591C43v24Ev();
extern void _ZN7S1591C43v25Ev();
extern void _ZN7S1591C43v26Ev();
extern void _ZN7S1591C43v27Ev();
extern void _ZN7S1591C43v28Ev();
extern void _ZN7S1591C43v29Ev();
extern void _ZN7S1591C43v30Ev();
extern void _ZN7S1591C43v31Ev();
extern void _ZN7S1591C43v32Ev();
extern void _ZN7S1591C43v33Ev();
extern void _ZN7S1591C43v34Ev();
extern void _ZN7S1591C43v35Ev();
extern void _ZN7S1591C43v36Ev();
extern void _ZN7S1591C43v37Ev();
extern void _ZN7S1591C43v38Ev();
extern void _ZN7S1591C43v39Ev();
extern void _ZN7S1591C43v40Ev();
extern void _ZN7S1591C43v41Ev();
extern void _ZN7S1591C43v42Ev();
extern void _ZN7S1591C43v43Ev();
extern void _ZN7S1591C43v44Ev();
extern void _ZN7S1591C43v45Ev();
extern void _ZN7S1591C43v46Ev();
extern void _ZN7S1591C43v47Ev();
extern void _ZN7S1591C43v48Ev();
extern void _ZN7S1591C43v49Ev();
extern void _ZN7S1591C43v50Ev();
extern void _ZN7S1591C43v51Ev();
extern void _ZN7S1591C43v52Ev();
extern void _ZN7S1591C43v53Ev();
extern void _ZN7S1591C43v54Ev();
extern void _ZN7S1591C43v55Ev();
extern void _ZN7S1591C43v56Ev();
extern void _ZN7S1591C43v57Ev();
extern void _ZN7S1591C43v58Ev();
extern void _ZN7S1591C43v59Ev();
extern void _ZN7S1591C43v60Ev();
extern void _ZN7S1591C43v61Ev();
extern void _ZN7S1591C43v62Ev();
extern void _ZN7S1591C43v63Ev();
extern void _ZN7S1591C43v64Ev();
extern void _ZN7S1591C43v65Ev();
extern void _ZN7S1591C43v66Ev();
extern void _ZN7S1591C43v67Ev();
extern void _ZN7S1591C43v68Ev();
extern void _ZN7S1591C43v69Ev();
extern void _ZN7S1591C43v70Ev();
extern void _ZN7S1591C43v71Ev();
extern void _ZN7S1591C43v72Ev();
static  VTBL_ENTRY vtc_S1591C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1591C4[0]),
  (VTBL_ENTRY)&_ZN7S1591C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1591C4D0Ev,
  (VTBL_ENTRY)&_ZN7S1591C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v71Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v72Ev,
};
extern VTBL_ENTRY _ZTI7S1591C4[];
extern  VTBL_ENTRY _ZTV7S1591C4[];
Class_Descriptor cd_S1591C4 = {  "S1591C4", // class name
  0,0,//no base classes
  &(vtc_S1591C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S1591C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1591C4),68, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1591C6  {
  virtual void  v73(); // _ZN7S1591C63v73Ev
  virtual void  v74(); // _ZN7S1591C63v74Ev
  virtual void  v75(); // _ZN7S1591C63v75Ev
  virtual void  v76(); // _ZN7S1591C63v76Ev
  virtual void  v77(); // _ZN7S1591C63v77Ev
  virtual void  v78(); // _ZN7S1591C63v78Ev
  virtual void  v79(); // _ZN7S1591C63v79Ev
  virtual void  v80(); // _ZN7S1591C63v80Ev
  virtual void  v81(); // _ZN7S1591C63v81Ev
  virtual void  v82(); // _ZN7S1591C63v82Ev
  virtual void  v83(); // _ZN7S1591C63v83Ev
  virtual void  v84(); // _ZN7S1591C63v84Ev
  virtual void  v85(); // _ZN7S1591C63v85Ev
  virtual void  v86(); // _ZN7S1591C63v86Ev
  virtual void  v87(); // _ZN7S1591C63v87Ev
  virtual void  v88(); // _ZN7S1591C63v88Ev
  ~S1591C6(); // tgen
  S1591C6(); // tgen
};
//SIG(-1 S1591C6) C1{ v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16}


void  S1591C6 ::v73(){vfunc_called(this, "_ZN7S1591C63v73Ev");}
void  S1591C6 ::v74(){vfunc_called(this, "_ZN7S1591C63v74Ev");}
void  S1591C6 ::v75(){vfunc_called(this, "_ZN7S1591C63v75Ev");}
void  S1591C6 ::v76(){vfunc_called(this, "_ZN7S1591C63v76Ev");}
void  S1591C6 ::v77(){vfunc_called(this, "_ZN7S1591C63v77Ev");}
void  S1591C6 ::v78(){vfunc_called(this, "_ZN7S1591C63v78Ev");}
void  S1591C6 ::v79(){vfunc_called(this, "_ZN7S1591C63v79Ev");}
void  S1591C6 ::v80(){vfunc_called(this, "_ZN7S1591C63v80Ev");}
void  S1591C6 ::v81(){vfunc_called(this, "_ZN7S1591C63v81Ev");}
void  S1591C6 ::v82(){vfunc_called(this, "_ZN7S1591C63v82Ev");}
void  S1591C6 ::v83(){vfunc_called(this, "_ZN7S1591C63v83Ev");}
void  S1591C6 ::v84(){vfunc_called(this, "_ZN7S1591C63v84Ev");}
void  S1591C6 ::v85(){vfunc_called(this, "_ZN7S1591C63v85Ev");}
void  S1591C6 ::v86(){vfunc_called(this, "_ZN7S1591C63v86Ev");}
void  S1591C6 ::v87(){vfunc_called(this, "_ZN7S1591C63v87Ev");}
void  S1591C6 ::v88(){vfunc_called(this, "_ZN7S1591C63v88Ev");}
S1591C6 ::~S1591C6(){ note_dtor("S1591C6", this);} // tgen
S1591C6 ::S1591C6(){ note_ctor("S1591C6", this);} // tgen

static void Test_S1591C6()
{
  extern Class_Descriptor cd_S1591C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S1591C6, buf);
    S1591C6 *dp, &lv = *(dp=new (buf) S1591C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1591C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1591C6)");
    test_class_info(&lv, &cd_S1591C6);
    dp->~S1591C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1591C6(Test_S1591C6, "S1591C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S1591C6C1Ev();
extern void _ZN7S1591C6D1Ev();
Name_Map name_map_S1591C6[] = {
  NSPAIR(_ZN7S1591C6C1Ev),
  NSPAIR(_ZN7S1591C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1591C6[];
extern void _ZN7S1591C63v73Ev();
extern void _ZN7S1591C63v74Ev();
extern void _ZN7S1591C63v75Ev();
extern void _ZN7S1591C63v76Ev();
extern void _ZN7S1591C63v77Ev();
extern void _ZN7S1591C63v78Ev();
extern void _ZN7S1591C63v79Ev();
extern void _ZN7S1591C63v80Ev();
extern void _ZN7S1591C63v81Ev();
extern void _ZN7S1591C63v82Ev();
extern void _ZN7S1591C63v83Ev();
extern void _ZN7S1591C63v84Ev();
extern void _ZN7S1591C63v85Ev();
extern void _ZN7S1591C63v86Ev();
extern void _ZN7S1591C63v87Ev();
extern void _ZN7S1591C63v88Ev();
static  VTBL_ENTRY vtc_S1591C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1591C6[0]),
  (VTBL_ENTRY)&_ZN7S1591C63v73Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v74Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v75Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v76Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v77Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v78Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v79Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v80Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v81Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v82Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v83Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v84Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v85Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v86Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v87Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v88Ev,
};
extern VTBL_ENTRY _ZTI7S1591C6[];
extern  VTBL_ENTRY _ZTV7S1591C6[];
Class_Descriptor cd_S1591C6 = {  "S1591C6", // class name
  0,0,//no base classes
  &(vtc_S1591C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S1591C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1591C6),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1591C7  {
  virtual void  v89(); // _ZN7S1591C73v89Ev
  virtual void  v90(); // _ZN7S1591C73v90Ev
  virtual void  v91(); // _ZN7S1591C73v91Ev
  virtual void  v92(); // _ZN7S1591C73v92Ev
  virtual void  v93(); // _ZN7S1591C73v93Ev
  virtual void  v94(); // _ZN7S1591C73v94Ev
  virtual void  v95(); // _ZN7S1591C73v95Ev
  virtual void  v96(); // _ZN7S1591C73v96Ev
  virtual void  v97(); // _ZN7S1591C73v97Ev
  ~S1591C7(); // tgen
  S1591C7(); // tgen
};
//SIG(-1 S1591C7) C1{ v1 v2 v3 v4 v5 v6 v7 v8 v9}


void  S1591C7 ::v89(){vfunc_called(this, "_ZN7S1591C73v89Ev");}
void  S1591C7 ::v90(){vfunc_called(this, "_ZN7S1591C73v90Ev");}
void  S1591C7 ::v91(){vfunc_called(this, "_ZN7S1591C73v91Ev");}
void  S1591C7 ::v92(){vfunc_called(this, "_ZN7S1591C73v92Ev");}
void  S1591C7 ::v93(){vfunc_called(this, "_ZN7S1591C73v93Ev");}
void  S1591C7 ::v94(){vfunc_called(this, "_ZN7S1591C73v94Ev");}
void  S1591C7 ::v95(){vfunc_called(this, "_ZN7S1591C73v95Ev");}
void  S1591C7 ::v96(){vfunc_called(this, "_ZN7S1591C73v96Ev");}
void  S1591C7 ::v97(){vfunc_called(this, "_ZN7S1591C73v97Ev");}
S1591C7 ::~S1591C7(){ note_dtor("S1591C7", this);} // tgen
S1591C7 ::S1591C7(){ note_ctor("S1591C7", this);} // tgen

static void Test_S1591C7()
{
  extern Class_Descriptor cd_S1591C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S1591C7, buf);
    S1591C7 *dp, &lv = *(dp=new (buf) S1591C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1591C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1591C7)");
    test_class_info(&lv, &cd_S1591C7);
    dp->~S1591C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1591C7(Test_S1591C7, "S1591C7", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S1591C7C1Ev();
extern void _ZN7S1591C7D1Ev();
Name_Map name_map_S1591C7[] = {
  NSPAIR(_ZN7S1591C7C1Ev),
  NSPAIR(_ZN7S1591C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1591C7[];
extern void _ZN7S1591C73v89Ev();
extern void _ZN7S1591C73v90Ev();
extern void _ZN7S1591C73v91Ev();
extern void _ZN7S1591C73v92Ev();
extern void _ZN7S1591C73v93Ev();
extern void _ZN7S1591C73v94Ev();
extern void _ZN7S1591C73v95Ev();
extern void _ZN7S1591C73v96Ev();
extern void _ZN7S1591C73v97Ev();
static  VTBL_ENTRY vtc_S1591C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1591C7[0]),
  (VTBL_ENTRY)&_ZN7S1591C73v89Ev,
  (VTBL_ENTRY)&_ZN7S1591C73v90Ev,
  (VTBL_ENTRY)&_ZN7S1591C73v91Ev,
  (VTBL_ENTRY)&_ZN7S1591C73v92Ev,
  (VTBL_ENTRY)&_ZN7S1591C73v93Ev,
  (VTBL_ENTRY)&_ZN7S1591C73v94Ev,
  (VTBL_ENTRY)&_ZN7S1591C73v95Ev,
  (VTBL_ENTRY)&_ZN7S1591C73v96Ev,
  (VTBL_ENTRY)&_ZN7S1591C73v97Ev,
};
extern VTBL_ENTRY _ZTI7S1591C7[];
extern  VTBL_ENTRY _ZTV7S1591C7[];
Class_Descriptor cd_S1591C7 = {  "S1591C7", // class name
  0,0,//no base classes
  &(vtc_S1591C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S1591C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1591C7),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1591C3  : S1591C4 , S1591C6 , S1591C7 {
  void *s1591c3f0;
  ::S79C39_nt s1591c3f1;
  unsigned int s1591c3f2:1;
  unsigned int s1591c3f3:1;
  unsigned int s1591c3f4:1;
  unsigned int s1591c3f5:1;
  virtual  ~S1591C3(); // _ZN7S1591C3D1Ev
  virtual void  v98(); // _ZN7S1591C33v98Ev
  virtual void  v99(); // _ZN7S1591C33v99Ev
  virtual void  v100(); // _ZN7S1591C34v100Ev
  virtual void  v101(); // _ZN7S1591C34v101Ev
  virtual void  v102(); // _ZN7S1591C34v102Ev
  virtual void  v103(); // _ZN7S1591C34v103Ev
  virtual void  v104(); // _ZN7S1591C34v104Ev
  virtual void  v105(); // _ZN7S1591C34v105Ev
  virtual void  v106(); // _ZN7S1591C34v106Ev
  virtual void  v107(); // _ZN7S1591C34v107Ev
  virtual void  v108(); // _ZN7S1591C34v108Ev
  virtual void  v109(); // _ZN7S1591C34v109Ev
  virtual void  v110(); // _ZN7S1591C34v110Ev
  virtual void  v111(); // _ZN7S1591C34v111Ev
  virtual void  v112(); // _ZN7S1591C34v112Ev
  virtual void  v113(); // _ZN7S1591C34v113Ev
  virtual void  v114(); // _ZN7S1591C34v114Ev
  virtual void  v115(); // _ZN7S1591C34v115Ev
  virtual void  v116(); // _ZN7S1591C34v116Ev
  virtual void  v117(); // _ZN7S1591C34v117Ev
  virtual void  v118(); // _ZN7S1591C34v118Ev
  virtual void  v119(); // _ZN7S1591C34v119Ev
  virtual void  v120(); // _ZN7S1591C34v120Ev
  virtual void  v121(); // _ZN7S1591C34v121Ev
  S1591C3(); // tgen
};
//SIG(-1 S1591C3) C1{ BC2{ vd v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} BC4{ v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104} BC5{ v105 v106 v107 v108 v109 v110 v111 v112 v113} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 Fp FC6{ BC7{ BC8{ BC9{ m Fp Fi[2]}}}} Fi:1 Fi:1 Fi:1 Fi:1}


 S1591C3 ::~S1591C3(){ note_dtor("S1591C3", this);}
void  S1591C3 ::v98(){vfunc_called(this, "_ZN7S1591C33v98Ev");}
void  S1591C3 ::v99(){vfunc_called(this, "_ZN7S1591C33v99Ev");}
void  S1591C3 ::v100(){vfunc_called(this, "_ZN7S1591C34v100Ev");}
void  S1591C3 ::v101(){vfunc_called(this, "_ZN7S1591C34v101Ev");}
void  S1591C3 ::v102(){vfunc_called(this, "_ZN7S1591C34v102Ev");}
void  S1591C3 ::v103(){vfunc_called(this, "_ZN7S1591C34v103Ev");}
void  S1591C3 ::v104(){vfunc_called(this, "_ZN7S1591C34v104Ev");}
void  S1591C3 ::v105(){vfunc_called(this, "_ZN7S1591C34v105Ev");}
void  S1591C3 ::v106(){vfunc_called(this, "_ZN7S1591C34v106Ev");}
void  S1591C3 ::v107(){vfunc_called(this, "_ZN7S1591C34v107Ev");}
void  S1591C3 ::v108(){vfunc_called(this, "_ZN7S1591C34v108Ev");}
void  S1591C3 ::v109(){vfunc_called(this, "_ZN7S1591C34v109Ev");}
void  S1591C3 ::v110(){vfunc_called(this, "_ZN7S1591C34v110Ev");}
void  S1591C3 ::v111(){vfunc_called(this, "_ZN7S1591C34v111Ev");}
void  S1591C3 ::v112(){vfunc_called(this, "_ZN7S1591C34v112Ev");}
void  S1591C3 ::v113(){vfunc_called(this, "_ZN7S1591C34v113Ev");}
void  S1591C3 ::v114(){vfunc_called(this, "_ZN7S1591C34v114Ev");}
void  S1591C3 ::v115(){vfunc_called(this, "_ZN7S1591C34v115Ev");}
void  S1591C3 ::v116(){vfunc_called(this, "_ZN7S1591C34v116Ev");}
void  S1591C3 ::v117(){vfunc_called(this, "_ZN7S1591C34v117Ev");}
void  S1591C3 ::v118(){vfunc_called(this, "_ZN7S1591C34v118Ev");}
void  S1591C3 ::v119(){vfunc_called(this, "_ZN7S1591C34v119Ev");}
void  S1591C3 ::v120(){vfunc_called(this, "_ZN7S1591C34v120Ev");}
void  S1591C3 ::v121(){vfunc_called(this, "_ZN7S1591C34v121Ev");}
S1591C3 ::S1591C3(){ note_ctor("S1591C3", this);} // tgen

static void Test_S1591C3()
{
  extern Class_Descriptor cd_S1591C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,23)];
    init_test(&cd_S1591C3, buf);
    S1591C3 *dp, &lv = *(dp=new (buf) S1591C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,88), "sizeof(S1591C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1591C3)");
    check_base_class_offset(lv, (S1591C4*), 0, "S1591C3");
    check_base_class_offset(lv, (S1591C6*), ABISELECT(96,60), "S1591C3");
    check_base_class_offset(lv, (S1591C7*), ABISELECT(104,64), "S1591C3");
    check_field_offset(lv, s1591c3f0, ABISELECT(112,68), "S1591C3.s1591c3f0");
    check_field_offset(lv, s1591c3f1, ABISELECT(120,72), "S1591C3.s1591c3f1");
    set_bf_and_test(lv, s1591c3f2, ABISELECT(136,84), 0, 1, 1, "S1591C3");
    set_bf_and_test(lv, s1591c3f3, ABISELECT(136,84), 1, 1, 1, "S1591C3");
    set_bf_and_test(lv, s1591c3f4, ABISELECT(136,84), 2, 1, 1, "S1591C3");
    set_bf_and_test(lv, s1591c3f5, ABISELECT(136,84), 3, 1, 1, "S1591C3");
    test_class_info(&lv, &cd_S1591C3);
    dp->~S1591C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1591C3(Test_S1591C3, "S1591C3", ABISELECT(144,88));

#else // __cplusplus

extern void _ZN7S1591C3C1Ev();
extern void _ZN7S1591C3D1Ev();
Name_Map name_map_S1591C3[] = {
  NSPAIR(_ZN7S1591C3C1Ev),
  NSPAIR(_ZN7S1591C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1591C4;
extern VTBL_ENTRY _ZTI7S1591C4[];
extern  VTBL_ENTRY _ZTV7S1591C4[];
extern Class_Descriptor cd_S1591C6;
extern VTBL_ENTRY _ZTI7S1591C6[];
extern  VTBL_ENTRY _ZTV7S1591C6[];
extern Class_Descriptor cd_S1591C7;
extern VTBL_ENTRY _ZTI7S1591C7[];
extern  VTBL_ENTRY _ZTV7S1591C7[];
static Base_Class bases_S1591C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1591C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1591C6,    ABISELECT(96,60), //bcp->offset
    92, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1591C7,    ABISELECT(104,64), //bcp->offset
    110, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1591C3[];
extern void _ZN7S1591C3D1Ev();
extern void _ZN7S1591C3D0Ev();
extern void _ZN7S1591C42v9Ev();
extern void _ZN7S1591C43v10Ev();
extern void _ZN7S1591C43v11Ev();
extern void _ZN7S1591C43v12Ev();
extern void _ZN7S1591C43v13Ev();
extern void _ZN7S1591C43v14Ev();
extern void _ZN7S1591C43v15Ev();
extern void _ZN7S1591C43v16Ev();
extern void _ZN7S1591C43v17Ev();
extern void _ZN7S1591C43v18Ev();
extern void _ZN7S1591C43v19Ev();
extern void _ZN7S1591C43v20Ev();
extern void _ZN7S1591C43v21Ev();
extern void _ZN7S1591C43v22Ev();
extern void _ZN7S1591C43v23Ev();
extern void _ZN7S1591C43v24Ev();
extern void _ZN7S1591C43v25Ev();
extern void _ZN7S1591C43v26Ev();
extern void _ZN7S1591C43v27Ev();
extern void _ZN7S1591C43v28Ev();
extern void _ZN7S1591C43v29Ev();
extern void _ZN7S1591C43v30Ev();
extern void _ZN7S1591C43v31Ev();
extern void _ZN7S1591C43v32Ev();
extern void _ZN7S1591C43v33Ev();
extern void _ZN7S1591C43v34Ev();
extern void _ZN7S1591C43v35Ev();
extern void _ZN7S1591C43v36Ev();
extern void _ZN7S1591C43v37Ev();
extern void _ZN7S1591C43v38Ev();
extern void _ZN7S1591C43v39Ev();
extern void _ZN7S1591C43v40Ev();
extern void _ZN7S1591C43v41Ev();
extern void _ZN7S1591C43v42Ev();
extern void _ZN7S1591C43v43Ev();
extern void _ZN7S1591C43v44Ev();
extern void _ZN7S1591C43v45Ev();
extern void _ZN7S1591C43v46Ev();
extern void _ZN7S1591C43v47Ev();
extern void _ZN7S1591C43v48Ev();
extern void _ZN7S1591C43v49Ev();
extern void _ZN7S1591C43v50Ev();
extern void _ZN7S1591C43v51Ev();
extern void _ZN7S1591C43v52Ev();
extern void _ZN7S1591C43v53Ev();
extern void _ZN7S1591C43v54Ev();
extern void _ZN7S1591C43v55Ev();
extern void _ZN7S1591C43v56Ev();
extern void _ZN7S1591C43v57Ev();
extern void _ZN7S1591C43v58Ev();
extern void _ZN7S1591C43v59Ev();
extern void _ZN7S1591C43v60Ev();
extern void _ZN7S1591C43v61Ev();
extern void _ZN7S1591C43v62Ev();
extern void _ZN7S1591C43v63Ev();
extern void _ZN7S1591C43v64Ev();
extern void _ZN7S1591C43v65Ev();
extern void _ZN7S1591C43v66Ev();
extern void _ZN7S1591C43v67Ev();
extern void _ZN7S1591C43v68Ev();
extern void _ZN7S1591C43v69Ev();
extern void _ZN7S1591C43v70Ev();
extern void _ZN7S1591C43v71Ev();
extern void _ZN7S1591C43v72Ev();
extern void _ZN7S1591C33v98Ev();
extern void _ZN7S1591C33v99Ev();
extern void _ZN7S1591C34v100Ev();
extern void _ZN7S1591C34v101Ev();
extern void _ZN7S1591C34v102Ev();
extern void _ZN7S1591C34v103Ev();
extern void _ZN7S1591C34v104Ev();
extern void _ZN7S1591C34v105Ev();
extern void _ZN7S1591C34v106Ev();
extern void _ZN7S1591C34v107Ev();
extern void _ZN7S1591C34v108Ev();
extern void _ZN7S1591C34v109Ev();
extern void _ZN7S1591C34v110Ev();
extern void _ZN7S1591C34v111Ev();
extern void _ZN7S1591C34v112Ev();
extern void _ZN7S1591C34v113Ev();
extern void _ZN7S1591C34v114Ev();
extern void _ZN7S1591C34v115Ev();
extern void _ZN7S1591C34v116Ev();
extern void _ZN7S1591C34v117Ev();
extern void _ZN7S1591C34v118Ev();
extern void _ZN7S1591C34v119Ev();
extern void _ZN7S1591C34v120Ev();
extern void _ZN7S1591C34v121Ev();
extern void _ZN7S1591C63v73Ev();
extern void _ZN7S1591C63v74Ev();
extern void _ZN7S1591C63v75Ev();
extern void _ZN7S1591C63v76Ev();
extern void _ZN7S1591C63v77Ev();
extern void _ZN7S1591C63v78Ev();
extern void _ZN7S1591C63v79Ev();
extern void _ZN7S1591C63v80Ev();
extern void _ZN7S1591C63v81Ev();
extern void _ZN7S1591C63v82Ev();
extern void _ZN7S1591C63v83Ev();
extern void _ZN7S1591C63v84Ev();
extern void _ZN7S1591C63v85Ev();
extern void _ZN7S1591C63v86Ev();
extern void _ZN7S1591C63v87Ev();
extern void _ZN7S1591C63v88Ev();
extern void _ZN7S1591C73v89Ev();
extern void _ZN7S1591C73v90Ev();
extern void _ZN7S1591C73v91Ev();
extern void _ZN7S1591C73v92Ev();
extern void _ZN7S1591C73v93Ev();
extern void _ZN7S1591C73v94Ev();
extern void _ZN7S1591C73v95Ev();
extern void _ZN7S1591C73v96Ev();
extern void _ZN7S1591C73v97Ev();
static  VTBL_ENTRY vtc_S1591C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1591C3[0]),
  (VTBL_ENTRY)&_ZN7S1591C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1591C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1591C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v71Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v72Ev,
  (VTBL_ENTRY)&_ZN7S1591C33v98Ev,
  (VTBL_ENTRY)&_ZN7S1591C33v99Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v100Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v101Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v102Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v103Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v104Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v105Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v106Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v107Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v108Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v119Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v120Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v121Ev,
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S1591C3[0]),
  (VTBL_ENTRY)&_ZN7S1591C63v73Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v74Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v75Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v76Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v77Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v78Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v79Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v80Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v81Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v82Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v83Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v84Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v85Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v86Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v87Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v88Ev,
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S1591C3[0]),
  (VTBL_ENTRY)&_ZN7S1591C73v89Ev,
  (VTBL_ENTRY)&_ZN7S1591C73v90Ev,
  (VTBL_ENTRY)&_ZN7S1591C73v91Ev,
  (VTBL_ENTRY)&_ZN7S1591C73v92Ev,
  (VTBL_ENTRY)&_ZN7S1591C73v93Ev,
  (VTBL_ENTRY)&_ZN7S1591C73v94Ev,
  (VTBL_ENTRY)&_ZN7S1591C73v95Ev,
  (VTBL_ENTRY)&_ZN7S1591C73v96Ev,
  (VTBL_ENTRY)&_ZN7S1591C73v97Ev,
};
extern VTBL_ENTRY _ZTI7S1591C3[];
extern  VTBL_ENTRY _ZTV7S1591C3[];
Class_Descriptor cd_S1591C3 = {  "S1591C3", // class name
  bases_S1591C3, 3,
  &(vtc_S1591C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,88), // object size
  NSPAIRA(_ZTI7S1591C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S1591C3),121, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1591C2  : S1591C3 {
  ::S3262C11_nt s1591c2f0;
  int s1591c2f1;
  virtual  ~S1591C2(); // _ZN7S1591C2D1Ev
  virtual void  v122(); // _ZN7S1591C24v122Ev
  virtual void  v123(); // _ZN7S1591C24v123Ev
  virtual void  v124(); // _ZN7S1591C24v124Ev
  virtual void  v125(); // _ZN7S1591C24v125Ev
  virtual void  v126(); // _ZN7S1591C24v126Ev
  virtual void  v127(); // _ZN7S1591C24v127Ev
  virtual void  v128(); // _ZN7S1591C24v128Ev
  virtual void  v129(); // _ZN7S1591C24v129Ev
  virtual void  v130(); // _ZN7S1591C24v130Ev
  virtual void  v131(); // _ZN7S1591C24v131Ev
  virtual void  v132(); // _ZN7S1591C24v132Ev
  virtual void  v133(); // _ZN7S1591C24v133Ev
  virtual void  v134(); // _ZN7S1591C24v134Ev
  virtual void  v135(); // _ZN7S1591C24v135Ev
  virtual void  v136(); // _ZN7S1591C24v136Ev
  virtual void  v137(); // _ZN7S1591C24v137Ev
  virtual void  v138(); // _ZN7S1591C24v138Ev
  virtual void  v139(); // _ZN7S1591C24v139Ev
  virtual void  v140(); // _ZN7S1591C24v140Ev
  virtual void  v141(); // _ZN7S1591C24v141Ev
  virtual void  v142(); // _ZN7S1591C24v142Ev
  virtual void  v143(); // _ZN7S1591C24v143Ev
  virtual void  v144(); // _ZN7S1591C24v144Ev
  virtual void  v145(); // _ZN7S1591C24v145Ev
  virtual void  v146(); // _ZN7S1591C24v146Ev
  virtual void  v147(); // _ZN7S1591C24v147Ev
  virtual void  v148(); // _ZN7S1591C24v148Ev
  S1591C2(); // tgen
};
//SIG(-1 S1591C2) C1{ BC2{ BC3{ vd v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} BC5{ v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107} BC6{ v108 v109 v110 v111 v112 v113 v114 v115 v116} vd v117 v118 v119 v120 v121 v122 v123 v124 v125 v126 v127 v128 v129 v130 v131 v132 v133 v134 v135 v136 v137 v138 v139 v140 Fp FC7{ BC8{ BC9{ BC10{ m Fp Fi[2]}}}} Fi:1 Fi:1 Fi:1 Fi:1} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 FC11{ m FC12{ BC13{ BC10}} Fc} Fi}


 S1591C2 ::~S1591C2(){ note_dtor("S1591C2", this);}
void  S1591C2 ::v122(){vfunc_called(this, "_ZN7S1591C24v122Ev");}
void  S1591C2 ::v123(){vfunc_called(this, "_ZN7S1591C24v123Ev");}
void  S1591C2 ::v124(){vfunc_called(this, "_ZN7S1591C24v124Ev");}
void  S1591C2 ::v125(){vfunc_called(this, "_ZN7S1591C24v125Ev");}
void  S1591C2 ::v126(){vfunc_called(this, "_ZN7S1591C24v126Ev");}
void  S1591C2 ::v127(){vfunc_called(this, "_ZN7S1591C24v127Ev");}
void  S1591C2 ::v128(){vfunc_called(this, "_ZN7S1591C24v128Ev");}
void  S1591C2 ::v129(){vfunc_called(this, "_ZN7S1591C24v129Ev");}
void  S1591C2 ::v130(){vfunc_called(this, "_ZN7S1591C24v130Ev");}
void  S1591C2 ::v131(){vfunc_called(this, "_ZN7S1591C24v131Ev");}
void  S1591C2 ::v132(){vfunc_called(this, "_ZN7S1591C24v132Ev");}
void  S1591C2 ::v133(){vfunc_called(this, "_ZN7S1591C24v133Ev");}
void  S1591C2 ::v134(){vfunc_called(this, "_ZN7S1591C24v134Ev");}
void  S1591C2 ::v135(){vfunc_called(this, "_ZN7S1591C24v135Ev");}
void  S1591C2 ::v136(){vfunc_called(this, "_ZN7S1591C24v136Ev");}
void  S1591C2 ::v137(){vfunc_called(this, "_ZN7S1591C24v137Ev");}
void  S1591C2 ::v138(){vfunc_called(this, "_ZN7S1591C24v138Ev");}
void  S1591C2 ::v139(){vfunc_called(this, "_ZN7S1591C24v139Ev");}
void  S1591C2 ::v140(){vfunc_called(this, "_ZN7S1591C24v140Ev");}
void  S1591C2 ::v141(){vfunc_called(this, "_ZN7S1591C24v141Ev");}
void  S1591C2 ::v142(){vfunc_called(this, "_ZN7S1591C24v142Ev");}
void  S1591C2 ::v143(){vfunc_called(this, "_ZN7S1591C24v143Ev");}
void  S1591C2 ::v144(){vfunc_called(this, "_ZN7S1591C24v144Ev");}
void  S1591C2 ::v145(){vfunc_called(this, "_ZN7S1591C24v145Ev");}
void  S1591C2 ::v146(){vfunc_called(this, "_ZN7S1591C24v146Ev");}
void  S1591C2 ::v147(){vfunc_called(this, "_ZN7S1591C24v147Ev");}
void  S1591C2 ::v148(){vfunc_called(this, "_ZN7S1591C24v148Ev");}
S1591C2 ::S1591C2(){ note_ctor("S1591C2", this);} // tgen

static void Test_S1591C2()
{
  extern Class_Descriptor cd_S1591C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,28)];
    init_test(&cd_S1591C2, buf);
    S1591C2 *dp, &lv = *(dp=new (buf) S1591C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,108), "sizeof(S1591C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1591C2)");
    check_base_class_offset(lv, (S1591C4*)(S1591C3*), 0, "S1591C2");
    check_base_class_offset(lv, (S1591C6*)(S1591C3*), ABISELECT(96,60), "S1591C2");
    check_base_class_offset(lv, (S1591C7*)(S1591C3*), ABISELECT(104,64), "S1591C2");
    check_base_class_offset(lv, (S1591C3*), 0, "S1591C2");
    check_field_offset(lv, s1591c2f0, ABISELECT(144,88), "S1591C2.s1591c2f0");
    check_field_offset(lv, s1591c2f1, ABISELECT(168,104), "S1591C2.s1591c2f1");
    test_class_info(&lv, &cd_S1591C2);
    dp->~S1591C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1591C2(Test_S1591C2, "S1591C2", ABISELECT(176,108));

#else // __cplusplus

extern void _ZN7S1591C2C1Ev();
extern void _ZN7S1591C2D1Ev();
Name_Map name_map_S1591C2[] = {
  NSPAIR(_ZN7S1591C2C1Ev),
  NSPAIR(_ZN7S1591C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1591C4;
extern VTBL_ENTRY _ZTI7S1591C4[];
extern  VTBL_ENTRY _ZTV7S1591C4[];
extern Class_Descriptor cd_S1591C6;
extern VTBL_ENTRY _ZTI7S1591C6[];
extern  VTBL_ENTRY _ZTV7S1591C6[];
extern Class_Descriptor cd_S1591C7;
extern VTBL_ENTRY _ZTI7S1591C7[];
extern  VTBL_ENTRY _ZTV7S1591C7[];
extern Class_Descriptor cd_S1591C3;
extern VTBL_ENTRY _ZTI7S1591C3[];
extern  VTBL_ENTRY _ZTV7S1591C3[];
static Base_Class bases_S1591C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1591C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1591C6,    ABISELECT(96,60), //bcp->offset
    119, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1591C7,    ABISELECT(104,64), //bcp->offset
    137, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1591C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1591C2[];
extern void _ZN7S1591C2D1Ev();
extern void _ZN7S1591C2D0Ev();
extern void _ZN7S1591C42v9Ev();
extern void _ZN7S1591C43v10Ev();
extern void _ZN7S1591C43v11Ev();
extern void _ZN7S1591C43v12Ev();
extern void _ZN7S1591C43v13Ev();
extern void _ZN7S1591C43v14Ev();
extern void _ZN7S1591C43v15Ev();
extern void _ZN7S1591C43v16Ev();
extern void _ZN7S1591C43v17Ev();
extern void _ZN7S1591C43v18Ev();
extern void _ZN7S1591C43v19Ev();
extern void _ZN7S1591C43v20Ev();
extern void _ZN7S1591C43v21Ev();
extern void _ZN7S1591C43v22Ev();
extern void _ZN7S1591C43v23Ev();
extern void _ZN7S1591C43v24Ev();
extern void _ZN7S1591C43v25Ev();
extern void _ZN7S1591C43v26Ev();
extern void _ZN7S1591C43v27Ev();
extern void _ZN7S1591C43v28Ev();
extern void _ZN7S1591C43v29Ev();
extern void _ZN7S1591C43v30Ev();
extern void _ZN7S1591C43v31Ev();
extern void _ZN7S1591C43v32Ev();
extern void _ZN7S1591C43v33Ev();
extern void _ZN7S1591C43v34Ev();
extern void _ZN7S1591C43v35Ev();
extern void _ZN7S1591C43v36Ev();
extern void _ZN7S1591C43v37Ev();
extern void _ZN7S1591C43v38Ev();
extern void _ZN7S1591C43v39Ev();
extern void _ZN7S1591C43v40Ev();
extern void _ZN7S1591C43v41Ev();
extern void _ZN7S1591C43v42Ev();
extern void _ZN7S1591C43v43Ev();
extern void _ZN7S1591C43v44Ev();
extern void _ZN7S1591C43v45Ev();
extern void _ZN7S1591C43v46Ev();
extern void _ZN7S1591C43v47Ev();
extern void _ZN7S1591C43v48Ev();
extern void _ZN7S1591C43v49Ev();
extern void _ZN7S1591C43v50Ev();
extern void _ZN7S1591C43v51Ev();
extern void _ZN7S1591C43v52Ev();
extern void _ZN7S1591C43v53Ev();
extern void _ZN7S1591C43v54Ev();
extern void _ZN7S1591C43v55Ev();
extern void _ZN7S1591C43v56Ev();
extern void _ZN7S1591C43v57Ev();
extern void _ZN7S1591C43v58Ev();
extern void _ZN7S1591C43v59Ev();
extern void _ZN7S1591C43v60Ev();
extern void _ZN7S1591C43v61Ev();
extern void _ZN7S1591C43v62Ev();
extern void _ZN7S1591C43v63Ev();
extern void _ZN7S1591C43v64Ev();
extern void _ZN7S1591C43v65Ev();
extern void _ZN7S1591C43v66Ev();
extern void _ZN7S1591C43v67Ev();
extern void _ZN7S1591C43v68Ev();
extern void _ZN7S1591C43v69Ev();
extern void _ZN7S1591C43v70Ev();
extern void _ZN7S1591C43v71Ev();
extern void _ZN7S1591C43v72Ev();
extern void _ZN7S1591C33v98Ev();
extern void _ZN7S1591C33v99Ev();
extern void _ZN7S1591C34v100Ev();
extern void _ZN7S1591C34v101Ev();
extern void _ZN7S1591C34v102Ev();
extern void _ZN7S1591C34v103Ev();
extern void _ZN7S1591C34v104Ev();
extern void _ZN7S1591C34v105Ev();
extern void _ZN7S1591C34v106Ev();
extern void _ZN7S1591C34v107Ev();
extern void _ZN7S1591C34v108Ev();
extern void _ZN7S1591C34v109Ev();
extern void _ZN7S1591C34v110Ev();
extern void _ZN7S1591C34v111Ev();
extern void _ZN7S1591C34v112Ev();
extern void _ZN7S1591C34v113Ev();
extern void _ZN7S1591C34v114Ev();
extern void _ZN7S1591C34v115Ev();
extern void _ZN7S1591C34v116Ev();
extern void _ZN7S1591C34v117Ev();
extern void _ZN7S1591C34v118Ev();
extern void _ZN7S1591C34v119Ev();
extern void _ZN7S1591C34v120Ev();
extern void _ZN7S1591C34v121Ev();
extern void _ZN7S1591C24v122Ev();
extern void _ZN7S1591C24v123Ev();
extern void _ZN7S1591C24v124Ev();
extern void _ZN7S1591C24v125Ev();
extern void _ZN7S1591C24v126Ev();
extern void _ZN7S1591C24v127Ev();
extern void _ZN7S1591C24v128Ev();
extern void _ZN7S1591C24v129Ev();
extern void _ZN7S1591C24v130Ev();
extern void _ZN7S1591C24v131Ev();
extern void _ZN7S1591C24v132Ev();
extern void _ZN7S1591C24v133Ev();
extern void _ZN7S1591C24v134Ev();
extern void _ZN7S1591C24v135Ev();
extern void _ZN7S1591C24v136Ev();
extern void _ZN7S1591C24v137Ev();
extern void _ZN7S1591C24v138Ev();
extern void _ZN7S1591C24v139Ev();
extern void _ZN7S1591C24v140Ev();
extern void _ZN7S1591C24v141Ev();
extern void _ZN7S1591C24v142Ev();
extern void _ZN7S1591C24v143Ev();
extern void _ZN7S1591C24v144Ev();
extern void _ZN7S1591C24v145Ev();
extern void _ZN7S1591C24v146Ev();
extern void _ZN7S1591C24v147Ev();
extern void _ZN7S1591C24v148Ev();
extern void _ZN7S1591C63v73Ev();
extern void _ZN7S1591C63v74Ev();
extern void _ZN7S1591C63v75Ev();
extern void _ZN7S1591C63v76Ev();
extern void _ZN7S1591C63v77Ev();
extern void _ZN7S1591C63v78Ev();
extern void _ZN7S1591C63v79Ev();
extern void _ZN7S1591C63v80Ev();
extern void _ZN7S1591C63v81Ev();
extern void _ZN7S1591C63v82Ev();
extern void _ZN7S1591C63v83Ev();
extern void _ZN7S1591C63v84Ev();
extern void _ZN7S1591C63v85Ev();
extern void _ZN7S1591C63v86Ev();
extern void _ZN7S1591C63v87Ev();
extern void _ZN7S1591C63v88Ev();
extern void _ZN7S1591C73v89Ev();
extern void _ZN7S1591C73v90Ev();
extern void _ZN7S1591C73v91Ev();
extern void _ZN7S1591C73v92Ev();
extern void _ZN7S1591C73v93Ev();
extern void _ZN7S1591C73v94Ev();
extern void _ZN7S1591C73v95Ev();
extern void _ZN7S1591C73v96Ev();
extern void _ZN7S1591C73v97Ev();
static  VTBL_ENTRY vtc_S1591C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1591C2[0]),
  (VTBL_ENTRY)&_ZN7S1591C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1591C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1591C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v71Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v72Ev,
  (VTBL_ENTRY)&_ZN7S1591C33v98Ev,
  (VTBL_ENTRY)&_ZN7S1591C33v99Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v100Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v101Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v102Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v103Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v104Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v105Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v106Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v107Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v108Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v119Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v120Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v121Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v122Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v123Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v124Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v125Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v126Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v127Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v128Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v129Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v130Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v131Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v132Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v133Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v134Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v135Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v136Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v137Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v138Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v139Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v140Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v141Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v142Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v143Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v144Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v145Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v146Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v147Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v148Ev,
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S1591C2[0]),
  (VTBL_ENTRY)&_ZN7S1591C63v73Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v74Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v75Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v76Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v77Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v78Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v79Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v80Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v81Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v82Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v83Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v84Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v85Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v86Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v87Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v88Ev,
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S1591C2[0]),
  (VTBL_ENTRY)&_ZN7S1591C73v89Ev,
  (VTBL_ENTRY)&_ZN7S1591C73v90Ev,
  (VTBL_ENTRY)&_ZN7S1591C73v91Ev,
  (VTBL_ENTRY)&_ZN7S1591C73v92Ev,
  (VTBL_ENTRY)&_ZN7S1591C73v93Ev,
  (VTBL_ENTRY)&_ZN7S1591C73v94Ev,
  (VTBL_ENTRY)&_ZN7S1591C73v95Ev,
  (VTBL_ENTRY)&_ZN7S1591C73v96Ev,
  (VTBL_ENTRY)&_ZN7S1591C73v97Ev,
};
extern VTBL_ENTRY _ZTI7S1591C2[];
extern  VTBL_ENTRY _ZTV7S1591C2[];
Class_Descriptor cd_S1591C2 = {  "S1591C2", // class name
  bases_S1591C2, 4,
  &(vtc_S1591C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(176,108), // object size
  NSPAIRA(_ZTI7S1591C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1591C2),148, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  4, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1591C1  : S1591C2 {
  virtual  ~S1591C1(); // _ZN7S1591C1D1Ev
  virtual void  v1(); // _ZN7S1591C12v1Ev
  virtual void  v2(); // _ZN7S1591C12v2Ev
  virtual void  v3(); // _ZN7S1591C12v3Ev
  virtual void  v4(); // _ZN7S1591C12v4Ev
  virtual void  v5(); // _ZN7S1591C12v5Ev
  virtual void  v6(); // _ZN7S1591C12v6Ev
  virtual void  v7(); // _ZN7S1591C12v7Ev
  virtual void  v8(); // _ZN7S1591C12v8Ev
  S1591C1(); // tgen
};
//SIG(1 S1591C1) C1{ BC2{ BC3{ BC4{ vd v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 Fi FL Fp[4] Fi[2] Fp FC5{ m Fi[2]} Fp[2]} BC6{ v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88} BC7{ v89 v90 v91 v92 v93 v94 v95 v96 v97} vd v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 v112 v113 v114 v115 v116 v117 v118 v119 v120 v121 Fp FC8{ BC9{ BC10{ BC11{ m Fp Fi[2]}}}} Fi:1 Fi:1 Fi:1 Fi:1} vd v122 v123 v124 v125 v126 v127 v128 v129 v130 v131 v132 v133 v134 v135 v136 v137 v138 v139 v140 v141 v142 v143 v144 v145 v146 v147 v148 FC12{ m FC13{ BC14{ BC11}} Fc} Fi} vd v1 v2 v3 v4 v5 v6 v7 v8}


 S1591C1 ::~S1591C1(){ note_dtor("S1591C1", this);}
void  S1591C1 ::v1(){vfunc_called(this, "_ZN7S1591C12v1Ev");}
void  S1591C1 ::v2(){vfunc_called(this, "_ZN7S1591C12v2Ev");}
void  S1591C1 ::v3(){vfunc_called(this, "_ZN7S1591C12v3Ev");}
void  S1591C1 ::v4(){vfunc_called(this, "_ZN7S1591C12v4Ev");}
void  S1591C1 ::v5(){vfunc_called(this, "_ZN7S1591C12v5Ev");}
void  S1591C1 ::v6(){vfunc_called(this, "_ZN7S1591C12v6Ev");}
void  S1591C1 ::v7(){vfunc_called(this, "_ZN7S1591C12v7Ev");}
void  S1591C1 ::v8(){vfunc_called(this, "_ZN7S1591C12v8Ev");}
S1591C1 ::S1591C1(){ note_ctor("S1591C1", this);} // tgen

static void Test_S1591C1()
{
  extern Class_Descriptor cd_S1591C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,28)];
    init_test(&cd_S1591C1, buf);
    S1591C1 *dp, &lv = *(dp=new (buf) S1591C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,108), "sizeof(S1591C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1591C1)");
    check_base_class_offset(lv, (S1591C4*)(S1591C3*)(S1591C2*), 0, "S1591C1");
    check_base_class_offset(lv, (S1591C6*)(S1591C3*)(S1591C2*), ABISELECT(96,60), "S1591C1");
    check_base_class_offset(lv, (S1591C7*)(S1591C3*)(S1591C2*), ABISELECT(104,64), "S1591C1");
    check_base_class_offset(lv, (S1591C3*)(S1591C2*), 0, "S1591C1");
    check_base_class_offset(lv, (S1591C2*), 0, "S1591C1");
    test_class_info(&lv, &cd_S1591C1);
    dp->~S1591C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1591C1(Test_S1591C1, "S1591C1", ABISELECT(176,108));

#else // __cplusplus

extern void _ZN7S1591C1C1Ev();
extern void _ZN7S1591C1D1Ev();
Name_Map name_map_S1591C1[] = {
  NSPAIR(_ZN7S1591C1C1Ev),
  NSPAIR(_ZN7S1591C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1591C4;
extern VTBL_ENTRY _ZTI7S1591C4[];
extern  VTBL_ENTRY _ZTV7S1591C4[];
extern Class_Descriptor cd_S1591C6;
extern VTBL_ENTRY _ZTI7S1591C6[];
extern  VTBL_ENTRY _ZTV7S1591C6[];
extern Class_Descriptor cd_S1591C7;
extern VTBL_ENTRY _ZTI7S1591C7[];
extern  VTBL_ENTRY _ZTV7S1591C7[];
extern Class_Descriptor cd_S1591C3;
extern VTBL_ENTRY _ZTI7S1591C3[];
extern  VTBL_ENTRY _ZTV7S1591C3[];
extern Class_Descriptor cd_S1591C2;
extern VTBL_ENTRY _ZTI7S1591C2[];
extern  VTBL_ENTRY _ZTV7S1591C2[];
static Base_Class bases_S1591C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1591C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1591C6,    ABISELECT(96,60), //bcp->offset
    127, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1591C7,    ABISELECT(104,64), //bcp->offset
    145, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1591C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S1591C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1591C1[];
extern void _ZN7S1591C1D1Ev();
extern void _ZN7S1591C1D0Ev();
extern void _ZN7S1591C42v9Ev();
extern void _ZN7S1591C43v10Ev();
extern void _ZN7S1591C43v11Ev();
extern void _ZN7S1591C43v12Ev();
extern void _ZN7S1591C43v13Ev();
extern void _ZN7S1591C43v14Ev();
extern void _ZN7S1591C43v15Ev();
extern void _ZN7S1591C43v16Ev();
extern void _ZN7S1591C43v17Ev();
extern void _ZN7S1591C43v18Ev();
extern void _ZN7S1591C43v19Ev();
extern void _ZN7S1591C43v20Ev();
extern void _ZN7S1591C43v21Ev();
extern void _ZN7S1591C43v22Ev();
extern void _ZN7S1591C43v23Ev();
extern void _ZN7S1591C43v24Ev();
extern void _ZN7S1591C43v25Ev();
extern void _ZN7S1591C43v26Ev();
extern void _ZN7S1591C43v27Ev();
extern void _ZN7S1591C43v28Ev();
extern void _ZN7S1591C43v29Ev();
extern void _ZN7S1591C43v30Ev();
extern void _ZN7S1591C43v31Ev();
extern void _ZN7S1591C43v32Ev();
extern void _ZN7S1591C43v33Ev();
extern void _ZN7S1591C43v34Ev();
extern void _ZN7S1591C43v35Ev();
extern void _ZN7S1591C43v36Ev();
extern void _ZN7S1591C43v37Ev();
extern void _ZN7S1591C43v38Ev();
extern void _ZN7S1591C43v39Ev();
extern void _ZN7S1591C43v40Ev();
extern void _ZN7S1591C43v41Ev();
extern void _ZN7S1591C43v42Ev();
extern void _ZN7S1591C43v43Ev();
extern void _ZN7S1591C43v44Ev();
extern void _ZN7S1591C43v45Ev();
extern void _ZN7S1591C43v46Ev();
extern void _ZN7S1591C43v47Ev();
extern void _ZN7S1591C43v48Ev();
extern void _ZN7S1591C43v49Ev();
extern void _ZN7S1591C43v50Ev();
extern void _ZN7S1591C43v51Ev();
extern void _ZN7S1591C43v52Ev();
extern void _ZN7S1591C43v53Ev();
extern void _ZN7S1591C43v54Ev();
extern void _ZN7S1591C43v55Ev();
extern void _ZN7S1591C43v56Ev();
extern void _ZN7S1591C43v57Ev();
extern void _ZN7S1591C43v58Ev();
extern void _ZN7S1591C43v59Ev();
extern void _ZN7S1591C43v60Ev();
extern void _ZN7S1591C43v61Ev();
extern void _ZN7S1591C43v62Ev();
extern void _ZN7S1591C43v63Ev();
extern void _ZN7S1591C43v64Ev();
extern void _ZN7S1591C43v65Ev();
extern void _ZN7S1591C43v66Ev();
extern void _ZN7S1591C43v67Ev();
extern void _ZN7S1591C43v68Ev();
extern void _ZN7S1591C43v69Ev();
extern void _ZN7S1591C43v70Ev();
extern void _ZN7S1591C43v71Ev();
extern void _ZN7S1591C43v72Ev();
extern void _ZN7S1591C33v98Ev();
extern void _ZN7S1591C33v99Ev();
extern void _ZN7S1591C34v100Ev();
extern void _ZN7S1591C34v101Ev();
extern void _ZN7S1591C34v102Ev();
extern void _ZN7S1591C34v103Ev();
extern void _ZN7S1591C34v104Ev();
extern void _ZN7S1591C34v105Ev();
extern void _ZN7S1591C34v106Ev();
extern void _ZN7S1591C34v107Ev();
extern void _ZN7S1591C34v108Ev();
extern void _ZN7S1591C34v109Ev();
extern void _ZN7S1591C34v110Ev();
extern void _ZN7S1591C34v111Ev();
extern void _ZN7S1591C34v112Ev();
extern void _ZN7S1591C34v113Ev();
extern void _ZN7S1591C34v114Ev();
extern void _ZN7S1591C34v115Ev();
extern void _ZN7S1591C34v116Ev();
extern void _ZN7S1591C34v117Ev();
extern void _ZN7S1591C34v118Ev();
extern void _ZN7S1591C34v119Ev();
extern void _ZN7S1591C34v120Ev();
extern void _ZN7S1591C34v121Ev();
extern void _ZN7S1591C24v122Ev();
extern void _ZN7S1591C24v123Ev();
extern void _ZN7S1591C24v124Ev();
extern void _ZN7S1591C24v125Ev();
extern void _ZN7S1591C24v126Ev();
extern void _ZN7S1591C24v127Ev();
extern void _ZN7S1591C24v128Ev();
extern void _ZN7S1591C24v129Ev();
extern void _ZN7S1591C24v130Ev();
extern void _ZN7S1591C24v131Ev();
extern void _ZN7S1591C24v132Ev();
extern void _ZN7S1591C24v133Ev();
extern void _ZN7S1591C24v134Ev();
extern void _ZN7S1591C24v135Ev();
extern void _ZN7S1591C24v136Ev();
extern void _ZN7S1591C24v137Ev();
extern void _ZN7S1591C24v138Ev();
extern void _ZN7S1591C24v139Ev();
extern void _ZN7S1591C24v140Ev();
extern void _ZN7S1591C24v141Ev();
extern void _ZN7S1591C24v142Ev();
extern void _ZN7S1591C24v143Ev();
extern void _ZN7S1591C24v144Ev();
extern void _ZN7S1591C24v145Ev();
extern void _ZN7S1591C24v146Ev();
extern void _ZN7S1591C24v147Ev();
extern void _ZN7S1591C24v148Ev();
extern void _ZN7S1591C12v1Ev();
extern void _ZN7S1591C12v2Ev();
extern void _ZN7S1591C12v3Ev();
extern void _ZN7S1591C12v4Ev();
extern void _ZN7S1591C12v5Ev();
extern void _ZN7S1591C12v6Ev();
extern void _ZN7S1591C12v7Ev();
extern void _ZN7S1591C12v8Ev();
extern void _ZN7S1591C63v73Ev();
extern void _ZN7S1591C63v74Ev();
extern void _ZN7S1591C63v75Ev();
extern void _ZN7S1591C63v76Ev();
extern void _ZN7S1591C63v77Ev();
extern void _ZN7S1591C63v78Ev();
extern void _ZN7S1591C63v79Ev();
extern void _ZN7S1591C63v80Ev();
extern void _ZN7S1591C63v81Ev();
extern void _ZN7S1591C63v82Ev();
extern void _ZN7S1591C63v83Ev();
extern void _ZN7S1591C63v84Ev();
extern void _ZN7S1591C63v85Ev();
extern void _ZN7S1591C63v86Ev();
extern void _ZN7S1591C63v87Ev();
extern void _ZN7S1591C63v88Ev();
extern void _ZN7S1591C73v89Ev();
extern void _ZN7S1591C73v90Ev();
extern void _ZN7S1591C73v91Ev();
extern void _ZN7S1591C73v92Ev();
extern void _ZN7S1591C73v93Ev();
extern void _ZN7S1591C73v94Ev();
extern void _ZN7S1591C73v95Ev();
extern void _ZN7S1591C73v96Ev();
extern void _ZN7S1591C73v97Ev();
static  VTBL_ENTRY vtc_S1591C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1591C1[0]),
  (VTBL_ENTRY)&_ZN7S1591C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1591C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1591C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v71Ev,
  (VTBL_ENTRY)&_ZN7S1591C43v72Ev,
  (VTBL_ENTRY)&_ZN7S1591C33v98Ev,
  (VTBL_ENTRY)&_ZN7S1591C33v99Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v100Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v101Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v102Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v103Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v104Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v105Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v106Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v107Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v108Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v119Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v120Ev,
  (VTBL_ENTRY)&_ZN7S1591C34v121Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v122Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v123Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v124Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v125Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v126Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v127Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v128Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v129Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v130Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v131Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v132Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v133Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v134Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v135Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v136Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v137Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v138Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v139Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v140Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v141Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v142Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v143Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v144Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v145Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v146Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v147Ev,
  (VTBL_ENTRY)&_ZN7S1591C24v148Ev,
  (VTBL_ENTRY)&_ZN7S1591C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1591C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1591C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1591C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1591C12v5Ev,
  (VTBL_ENTRY)&_ZN7S1591C12v6Ev,
  (VTBL_ENTRY)&_ZN7S1591C12v7Ev,
  (VTBL_ENTRY)&_ZN7S1591C12v8Ev,
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S1591C1[0]),
  (VTBL_ENTRY)&_ZN7S1591C63v73Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v74Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v75Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v76Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v77Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v78Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v79Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v80Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v81Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v82Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v83Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v84Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v85Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v86Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v87Ev,
  (VTBL_ENTRY)&_ZN7S1591C63v88Ev,
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S1591C1[0]),
  (VTBL_ENTRY)&_ZN7S1591C73v89Ev,
  (VTBL_ENTRY)&_ZN7S1591C73v90Ev,
  (VTBL_ENTRY)&_ZN7S1591C73v91Ev,
  (VTBL_ENTRY)&_ZN7S1591C73v92Ev,
  (VTBL_ENTRY)&_ZN7S1591C73v93Ev,
  (VTBL_ENTRY)&_ZN7S1591C73v94Ev,
  (VTBL_ENTRY)&_ZN7S1591C73v95Ev,
  (VTBL_ENTRY)&_ZN7S1591C73v96Ev,
  (VTBL_ENTRY)&_ZN7S1591C73v97Ev,
};
extern VTBL_ENTRY _ZTI7S1591C1[];
extern  VTBL_ENTRY _ZTV7S1591C1[];
Class_Descriptor cd_S1591C1 = {  "S1591C1", // class name
  bases_S1591C1, 5,
  &(vtc_S1591C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(176,108), // object size
  NSPAIRA(_ZTI7S1591C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1591C1),156, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  5, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1588C4  {
  int s1588c4f0;
  __tsi64 s1588c4f1;
  void *s1588c4f2[4];
  int s1588c4f3[2];
  void *s1588c4f4;
  ::S79C8_nt s1588c4f5;
  void *s1588c4f6[2];
  virtual  ~S1588C4(); // _ZN7S1588C4D1Ev
  virtual void  v9(); // _ZN7S1588C42v9Ev
  virtual void  v10(); // _ZN7S1588C43v10Ev
  virtual void  v11(); // _ZN7S1588C43v11Ev
  virtual void  v12(); // _ZN7S1588C43v12Ev
  virtual void  v13(); // _ZN7S1588C43v13Ev
  virtual void  v14(); // _ZN7S1588C43v14Ev
  virtual void  v15(); // _ZN7S1588C43v15Ev
  virtual void  v16(); // _ZN7S1588C43v16Ev
  virtual void  v17(); // _ZN7S1588C43v17Ev
  virtual void  v18(); // _ZN7S1588C43v18Ev
  virtual void  v19(); // _ZN7S1588C43v19Ev
  virtual void  v20(); // _ZN7S1588C43v20Ev
  virtual void  v21(); // _ZN7S1588C43v21Ev
  virtual void  v22(); // _ZN7S1588C43v22Ev
  virtual void  v23(); // _ZN7S1588C43v23Ev
  virtual void  v24(); // _ZN7S1588C43v24Ev
  virtual void  v25(); // _ZN7S1588C43v25Ev
  virtual void  v26(); // _ZN7S1588C43v26Ev
  virtual void  v27(); // _ZN7S1588C43v27Ev
  virtual void  v28(); // _ZN7S1588C43v28Ev
  virtual void  v29(); // _ZN7S1588C43v29Ev
  virtual void  v30(); // _ZN7S1588C43v30Ev
  virtual void  v31(); // _ZN7S1588C43v31Ev
  virtual void  v32(); // _ZN7S1588C43v32Ev
  virtual void  v33(); // _ZN7S1588C43v33Ev
  virtual void  v34(); // _ZN7S1588C43v34Ev
  virtual void  v35(); // _ZN7S1588C43v35Ev
  virtual void  v36(); // _ZN7S1588C43v36Ev
  virtual void  v37(); // _ZN7S1588C43v37Ev
  virtual void  v38(); // _ZN7S1588C43v38Ev
  virtual void  v39(); // _ZN7S1588C43v39Ev
  virtual void  v40(); // _ZN7S1588C43v40Ev
  virtual void  v41(); // _ZN7S1588C43v41Ev
  virtual void  v42(); // _ZN7S1588C43v42Ev
  virtual void  v43(); // _ZN7S1588C43v43Ev
  virtual void  v44(); // _ZN7S1588C43v44Ev
  virtual void  v45(); // _ZN7S1588C43v45Ev
  virtual void  v46(); // _ZN7S1588C43v46Ev
  virtual void  v47(); // _ZN7S1588C43v47Ev
  virtual void  v48(); // _ZN7S1588C43v48Ev
  virtual void  v49(); // _ZN7S1588C43v49Ev
  virtual void  v50(); // _ZN7S1588C43v50Ev
  virtual void  v51(); // _ZN7S1588C43v51Ev
  virtual void  v52(); // _ZN7S1588C43v52Ev
  virtual void  v53(); // _ZN7S1588C43v53Ev
  virtual void  v54(); // _ZN7S1588C43v54Ev
  virtual void  v55(); // _ZN7S1588C43v55Ev
  virtual void  v56(); // _ZN7S1588C43v56Ev
  virtual void  v57(); // _ZN7S1588C43v57Ev
  virtual void  v58(); // _ZN7S1588C43v58Ev
  virtual void  v59(); // _ZN7S1588C43v59Ev
  virtual void  v60(); // _ZN7S1588C43v60Ev
  virtual void  v61(); // _ZN7S1588C43v61Ev
  virtual void  v62(); // _ZN7S1588C43v62Ev
  virtual void  v63(); // _ZN7S1588C43v63Ev
  virtual void  v64(); // _ZN7S1588C43v64Ev
  virtual void  v65(); // _ZN7S1588C43v65Ev
  virtual void  v66(); // _ZN7S1588C43v66Ev
  virtual void  v67(); // _ZN7S1588C43v67Ev
  virtual void  v68(); // _ZN7S1588C43v68Ev
  virtual void  v69(); // _ZN7S1588C43v69Ev
  virtual void  v70(); // _ZN7S1588C43v70Ev
  virtual void  v71(); // _ZN7S1588C43v71Ev
  virtual void  v72(); // _ZN7S1588C43v72Ev
  S1588C4(); // tgen
};
//SIG(-1 S1588C4) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 Fi FL Fp[4] Fi[2] Fp FC2{ m Fi[2]} Fp[2]}


 S1588C4 ::~S1588C4(){ note_dtor("S1588C4", this);}
void  S1588C4 ::v9(){vfunc_called(this, "_ZN7S1588C42v9Ev");}
void  S1588C4 ::v10(){vfunc_called(this, "_ZN7S1588C43v10Ev");}
void  S1588C4 ::v11(){vfunc_called(this, "_ZN7S1588C43v11Ev");}
void  S1588C4 ::v12(){vfunc_called(this, "_ZN7S1588C43v12Ev");}
void  S1588C4 ::v13(){vfunc_called(this, "_ZN7S1588C43v13Ev");}
void  S1588C4 ::v14(){vfunc_called(this, "_ZN7S1588C43v14Ev");}
void  S1588C4 ::v15(){vfunc_called(this, "_ZN7S1588C43v15Ev");}
void  S1588C4 ::v16(){vfunc_called(this, "_ZN7S1588C43v16Ev");}
void  S1588C4 ::v17(){vfunc_called(this, "_ZN7S1588C43v17Ev");}
void  S1588C4 ::v18(){vfunc_called(this, "_ZN7S1588C43v18Ev");}
void  S1588C4 ::v19(){vfunc_called(this, "_ZN7S1588C43v19Ev");}
void  S1588C4 ::v20(){vfunc_called(this, "_ZN7S1588C43v20Ev");}
void  S1588C4 ::v21(){vfunc_called(this, "_ZN7S1588C43v21Ev");}
void  S1588C4 ::v22(){vfunc_called(this, "_ZN7S1588C43v22Ev");}
void  S1588C4 ::v23(){vfunc_called(this, "_ZN7S1588C43v23Ev");}
void  S1588C4 ::v24(){vfunc_called(this, "_ZN7S1588C43v24Ev");}
void  S1588C4 ::v25(){vfunc_called(this, "_ZN7S1588C43v25Ev");}
void  S1588C4 ::v26(){vfunc_called(this, "_ZN7S1588C43v26Ev");}
void  S1588C4 ::v27(){vfunc_called(this, "_ZN7S1588C43v27Ev");}
void  S1588C4 ::v28(){vfunc_called(this, "_ZN7S1588C43v28Ev");}
void  S1588C4 ::v29(){vfunc_called(this, "_ZN7S1588C43v29Ev");}
void  S1588C4 ::v30(){vfunc_called(this, "_ZN7S1588C43v30Ev");}
void  S1588C4 ::v31(){vfunc_called(this, "_ZN7S1588C43v31Ev");}
void  S1588C4 ::v32(){vfunc_called(this, "_ZN7S1588C43v32Ev");}
void  S1588C4 ::v33(){vfunc_called(this, "_ZN7S1588C43v33Ev");}
void  S1588C4 ::v34(){vfunc_called(this, "_ZN7S1588C43v34Ev");}
void  S1588C4 ::v35(){vfunc_called(this, "_ZN7S1588C43v35Ev");}
void  S1588C4 ::v36(){vfunc_called(this, "_ZN7S1588C43v36Ev");}
void  S1588C4 ::v37(){vfunc_called(this, "_ZN7S1588C43v37Ev");}
void  S1588C4 ::v38(){vfunc_called(this, "_ZN7S1588C43v38Ev");}
void  S1588C4 ::v39(){vfunc_called(this, "_ZN7S1588C43v39Ev");}
void  S1588C4 ::v40(){vfunc_called(this, "_ZN7S1588C43v40Ev");}
void  S1588C4 ::v41(){vfunc_called(this, "_ZN7S1588C43v41Ev");}
void  S1588C4 ::v42(){vfunc_called(this, "_ZN7S1588C43v42Ev");}
void  S1588C4 ::v43(){vfunc_called(this, "_ZN7S1588C43v43Ev");}
void  S1588C4 ::v44(){vfunc_called(this, "_ZN7S1588C43v44Ev");}
void  S1588C4 ::v45(){vfunc_called(this, "_ZN7S1588C43v45Ev");}
void  S1588C4 ::v46(){vfunc_called(this, "_ZN7S1588C43v46Ev");}
void  S1588C4 ::v47(){vfunc_called(this, "_ZN7S1588C43v47Ev");}
void  S1588C4 ::v48(){vfunc_called(this, "_ZN7S1588C43v48Ev");}
void  S1588C4 ::v49(){vfunc_called(this, "_ZN7S1588C43v49Ev");}
void  S1588C4 ::v50(){vfunc_called(this, "_ZN7S1588C43v50Ev");}
void  S1588C4 ::v51(){vfunc_called(this, "_ZN7S1588C43v51Ev");}
void  S1588C4 ::v52(){vfunc_called(this, "_ZN7S1588C43v52Ev");}
void  S1588C4 ::v53(){vfunc_called(this, "_ZN7S1588C43v53Ev");}
void  S1588C4 ::v54(){vfunc_called(this, "_ZN7S1588C43v54Ev");}
void  S1588C4 ::v55(){vfunc_called(this, "_ZN7S1588C43v55Ev");}
void  S1588C4 ::v56(){vfunc_called(this, "_ZN7S1588C43v56Ev");}
void  S1588C4 ::v57(){vfunc_called(this, "_ZN7S1588C43v57Ev");}
void  S1588C4 ::v58(){vfunc_called(this, "_ZN7S1588C43v58Ev");}
void  S1588C4 ::v59(){vfunc_called(this, "_ZN7S1588C43v59Ev");}
void  S1588C4 ::v60(){vfunc_called(this, "_ZN7S1588C43v60Ev");}
void  S1588C4 ::v61(){vfunc_called(this, "_ZN7S1588C43v61Ev");}
void  S1588C4 ::v62(){vfunc_called(this, "_ZN7S1588C43v62Ev");}
void  S1588C4 ::v63(){vfunc_called(this, "_ZN7S1588C43v63Ev");}
void  S1588C4 ::v64(){vfunc_called(this, "_ZN7S1588C43v64Ev");}
void  S1588C4 ::v65(){vfunc_called(this, "_ZN7S1588C43v65Ev");}
void  S1588C4 ::v66(){vfunc_called(this, "_ZN7S1588C43v66Ev");}
void  S1588C4 ::v67(){vfunc_called(this, "_ZN7S1588C43v67Ev");}
void  S1588C4 ::v68(){vfunc_called(this, "_ZN7S1588C43v68Ev");}
void  S1588C4 ::v69(){vfunc_called(this, "_ZN7S1588C43v69Ev");}
void  S1588C4 ::v70(){vfunc_called(this, "_ZN7S1588C43v70Ev");}
void  S1588C4 ::v71(){vfunc_called(this, "_ZN7S1588C43v71Ev");}
void  S1588C4 ::v72(){vfunc_called(this, "_ZN7S1588C43v72Ev");}
S1588C4 ::S1588C4(){ note_ctor("S1588C4", this);} // tgen

static void Test_S1588C4()
{
  extern Class_Descriptor cd_S1588C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S1588C4, buf);
    S1588C4 *dp, &lv = *(dp=new (buf) S1588C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S1588C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1588C4)");
    check_field_offset(lv, s1588c4f0, ABISELECT(8,4), "S1588C4.s1588c4f0");
    check_field_offset(lv, s1588c4f1, ABISELECT(16,8), "S1588C4.s1588c4f1");
    check_field_offset(lv, s1588c4f2, ABISELECT(24,16), "S1588C4.s1588c4f2");
    check_field_offset(lv, s1588c4f3, ABISELECT(56,32), "S1588C4.s1588c4f3");
    check_field_offset(lv, s1588c4f4, ABISELECT(64,40), "S1588C4.s1588c4f4");
    check_field_offset(lv, s1588c4f5, ABISELECT(72,44), "S1588C4.s1588c4f5");
    check_field_offset(lv, s1588c4f6, ABISELECT(80,52), "S1588C4.s1588c4f6");
    test_class_info(&lv, &cd_S1588C4);
    dp->~S1588C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1588C4(Test_S1588C4, "S1588C4", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S1588C4C1Ev();
extern void _ZN7S1588C4D1Ev();
Name_Map name_map_S1588C4[] = {
  NSPAIR(_ZN7S1588C4C1Ev),
  NSPAIR(_ZN7S1588C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1588C4[];
extern void _ZN7S1588C4D1Ev();
extern void _ZN7S1588C4D0Ev();
extern void _ZN7S1588C42v9Ev();
extern void _ZN7S1588C43v10Ev();
extern void _ZN7S1588C43v11Ev();
extern void _ZN7S1588C43v12Ev();
extern void _ZN7S1588C43v13Ev();
extern void _ZN7S1588C43v14Ev();
extern void _ZN7S1588C43v15Ev();
extern void _ZN7S1588C43v16Ev();
extern void _ZN7S1588C43v17Ev();
extern void _ZN7S1588C43v18Ev();
extern void _ZN7S1588C43v19Ev();
extern void _ZN7S1588C43v20Ev();
extern void _ZN7S1588C43v21Ev();
extern void _ZN7S1588C43v22Ev();
extern void _ZN7S1588C43v23Ev();
extern void _ZN7S1588C43v24Ev();
extern void _ZN7S1588C43v25Ev();
extern void _ZN7S1588C43v26Ev();
extern void _ZN7S1588C43v27Ev();
extern void _ZN7S1588C43v28Ev();
extern void _ZN7S1588C43v29Ev();
extern void _ZN7S1588C43v30Ev();
extern void _ZN7S1588C43v31Ev();
extern void _ZN7S1588C43v32Ev();
extern void _ZN7S1588C43v33Ev();
extern void _ZN7S1588C43v34Ev();
extern void _ZN7S1588C43v35Ev();
extern void _ZN7S1588C43v36Ev();
extern void _ZN7S1588C43v37Ev();
extern void _ZN7S1588C43v38Ev();
extern void _ZN7S1588C43v39Ev();
extern void _ZN7S1588C43v40Ev();
extern void _ZN7S1588C43v41Ev();
extern void _ZN7S1588C43v42Ev();
extern void _ZN7S1588C43v43Ev();
extern void _ZN7S1588C43v44Ev();
extern void _ZN7S1588C43v45Ev();
extern void _ZN7S1588C43v46Ev();
extern void _ZN7S1588C43v47Ev();
extern void _ZN7S1588C43v48Ev();
extern void _ZN7S1588C43v49Ev();
extern void _ZN7S1588C43v50Ev();
extern void _ZN7S1588C43v51Ev();
extern void _ZN7S1588C43v52Ev();
extern void _ZN7S1588C43v53Ev();
extern void _ZN7S1588C43v54Ev();
extern void _ZN7S1588C43v55Ev();
extern void _ZN7S1588C43v56Ev();
extern void _ZN7S1588C43v57Ev();
extern void _ZN7S1588C43v58Ev();
extern void _ZN7S1588C43v59Ev();
extern void _ZN7S1588C43v60Ev();
extern void _ZN7S1588C43v61Ev();
extern void _ZN7S1588C43v62Ev();
extern void _ZN7S1588C43v63Ev();
extern void _ZN7S1588C43v64Ev();
extern void _ZN7S1588C43v65Ev();
extern void _ZN7S1588C43v66Ev();
extern void _ZN7S1588C43v67Ev();
extern void _ZN7S1588C43v68Ev();
extern void _ZN7S1588C43v69Ev();
extern void _ZN7S1588C43v70Ev();
extern void _ZN7S1588C43v71Ev();
extern void _ZN7S1588C43v72Ev();
static  VTBL_ENTRY vtc_S1588C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1588C4[0]),
  (VTBL_ENTRY)&_ZN7S1588C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1588C4D0Ev,
  (VTBL_ENTRY)&_ZN7S1588C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v71Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v72Ev,
};
extern VTBL_ENTRY _ZTI7S1588C4[];
extern  VTBL_ENTRY _ZTV7S1588C4[];
Class_Descriptor cd_S1588C4 = {  "S1588C4", // class name
  0,0,//no base classes
  &(vtc_S1588C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S1588C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1588C4),68, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1588C6  {
  virtual void  v73(); // _ZN7S1588C63v73Ev
  virtual void  v74(); // _ZN7S1588C63v74Ev
  virtual void  v75(); // _ZN7S1588C63v75Ev
  virtual void  v76(); // _ZN7S1588C63v76Ev
  virtual void  v77(); // _ZN7S1588C63v77Ev
  virtual void  v78(); // _ZN7S1588C63v78Ev
  virtual void  v79(); // _ZN7S1588C63v79Ev
  virtual void  v80(); // _ZN7S1588C63v80Ev
  virtual void  v81(); // _ZN7S1588C63v81Ev
  virtual void  v82(); // _ZN7S1588C63v82Ev
  virtual void  v83(); // _ZN7S1588C63v83Ev
  virtual void  v84(); // _ZN7S1588C63v84Ev
  virtual void  v85(); // _ZN7S1588C63v85Ev
  virtual void  v86(); // _ZN7S1588C63v86Ev
  virtual void  v87(); // _ZN7S1588C63v87Ev
  virtual void  v88(); // _ZN7S1588C63v88Ev
  ~S1588C6(); // tgen
  S1588C6(); // tgen
};
//SIG(-1 S1588C6) C1{ v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16}


void  S1588C6 ::v73(){vfunc_called(this, "_ZN7S1588C63v73Ev");}
void  S1588C6 ::v74(){vfunc_called(this, "_ZN7S1588C63v74Ev");}
void  S1588C6 ::v75(){vfunc_called(this, "_ZN7S1588C63v75Ev");}
void  S1588C6 ::v76(){vfunc_called(this, "_ZN7S1588C63v76Ev");}
void  S1588C6 ::v77(){vfunc_called(this, "_ZN7S1588C63v77Ev");}
void  S1588C6 ::v78(){vfunc_called(this, "_ZN7S1588C63v78Ev");}
void  S1588C6 ::v79(){vfunc_called(this, "_ZN7S1588C63v79Ev");}
void  S1588C6 ::v80(){vfunc_called(this, "_ZN7S1588C63v80Ev");}
void  S1588C6 ::v81(){vfunc_called(this, "_ZN7S1588C63v81Ev");}
void  S1588C6 ::v82(){vfunc_called(this, "_ZN7S1588C63v82Ev");}
void  S1588C6 ::v83(){vfunc_called(this, "_ZN7S1588C63v83Ev");}
void  S1588C6 ::v84(){vfunc_called(this, "_ZN7S1588C63v84Ev");}
void  S1588C6 ::v85(){vfunc_called(this, "_ZN7S1588C63v85Ev");}
void  S1588C6 ::v86(){vfunc_called(this, "_ZN7S1588C63v86Ev");}
void  S1588C6 ::v87(){vfunc_called(this, "_ZN7S1588C63v87Ev");}
void  S1588C6 ::v88(){vfunc_called(this, "_ZN7S1588C63v88Ev");}
S1588C6 ::~S1588C6(){ note_dtor("S1588C6", this);} // tgen
S1588C6 ::S1588C6(){ note_ctor("S1588C6", this);} // tgen

static void Test_S1588C6()
{
  extern Class_Descriptor cd_S1588C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S1588C6, buf);
    S1588C6 *dp, &lv = *(dp=new (buf) S1588C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1588C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1588C6)");
    test_class_info(&lv, &cd_S1588C6);
    dp->~S1588C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1588C6(Test_S1588C6, "S1588C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S1588C6C1Ev();
extern void _ZN7S1588C6D1Ev();
Name_Map name_map_S1588C6[] = {
  NSPAIR(_ZN7S1588C6C1Ev),
  NSPAIR(_ZN7S1588C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1588C6[];
extern void _ZN7S1588C63v73Ev();
extern void _ZN7S1588C63v74Ev();
extern void _ZN7S1588C63v75Ev();
extern void _ZN7S1588C63v76Ev();
extern void _ZN7S1588C63v77Ev();
extern void _ZN7S1588C63v78Ev();
extern void _ZN7S1588C63v79Ev();
extern void _ZN7S1588C63v80Ev();
extern void _ZN7S1588C63v81Ev();
extern void _ZN7S1588C63v82Ev();
extern void _ZN7S1588C63v83Ev();
extern void _ZN7S1588C63v84Ev();
extern void _ZN7S1588C63v85Ev();
extern void _ZN7S1588C63v86Ev();
extern void _ZN7S1588C63v87Ev();
extern void _ZN7S1588C63v88Ev();
static  VTBL_ENTRY vtc_S1588C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1588C6[0]),
  (VTBL_ENTRY)&_ZN7S1588C63v73Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v74Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v75Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v76Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v77Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v78Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v79Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v80Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v81Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v82Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v83Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v84Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v85Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v86Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v87Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v88Ev,
};
extern VTBL_ENTRY _ZTI7S1588C6[];
extern  VTBL_ENTRY _ZTV7S1588C6[];
Class_Descriptor cd_S1588C6 = {  "S1588C6", // class name
  0,0,//no base classes
  &(vtc_S1588C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S1588C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1588C6),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1588C7  {
  virtual void  v89(); // _ZN7S1588C73v89Ev
  virtual void  v90(); // _ZN7S1588C73v90Ev
  virtual void  v91(); // _ZN7S1588C73v91Ev
  virtual void  v92(); // _ZN7S1588C73v92Ev
  virtual void  v93(); // _ZN7S1588C73v93Ev
  virtual void  v94(); // _ZN7S1588C73v94Ev
  virtual void  v95(); // _ZN7S1588C73v95Ev
  virtual void  v96(); // _ZN7S1588C73v96Ev
  virtual void  v97(); // _ZN7S1588C73v97Ev
  ~S1588C7(); // tgen
  S1588C7(); // tgen
};
//SIG(-1 S1588C7) C1{ v1 v2 v3 v4 v5 v6 v7 v8 v9}


void  S1588C7 ::v89(){vfunc_called(this, "_ZN7S1588C73v89Ev");}
void  S1588C7 ::v90(){vfunc_called(this, "_ZN7S1588C73v90Ev");}
void  S1588C7 ::v91(){vfunc_called(this, "_ZN7S1588C73v91Ev");}
void  S1588C7 ::v92(){vfunc_called(this, "_ZN7S1588C73v92Ev");}
void  S1588C7 ::v93(){vfunc_called(this, "_ZN7S1588C73v93Ev");}
void  S1588C7 ::v94(){vfunc_called(this, "_ZN7S1588C73v94Ev");}
void  S1588C7 ::v95(){vfunc_called(this, "_ZN7S1588C73v95Ev");}
void  S1588C7 ::v96(){vfunc_called(this, "_ZN7S1588C73v96Ev");}
void  S1588C7 ::v97(){vfunc_called(this, "_ZN7S1588C73v97Ev");}
S1588C7 ::~S1588C7(){ note_dtor("S1588C7", this);} // tgen
S1588C7 ::S1588C7(){ note_ctor("S1588C7", this);} // tgen

static void Test_S1588C7()
{
  extern Class_Descriptor cd_S1588C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S1588C7, buf);
    S1588C7 *dp, &lv = *(dp=new (buf) S1588C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1588C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1588C7)");
    test_class_info(&lv, &cd_S1588C7);
    dp->~S1588C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1588C7(Test_S1588C7, "S1588C7", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S1588C7C1Ev();
extern void _ZN7S1588C7D1Ev();
Name_Map name_map_S1588C7[] = {
  NSPAIR(_ZN7S1588C7C1Ev),
  NSPAIR(_ZN7S1588C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1588C7[];
extern void _ZN7S1588C73v89Ev();
extern void _ZN7S1588C73v90Ev();
extern void _ZN7S1588C73v91Ev();
extern void _ZN7S1588C73v92Ev();
extern void _ZN7S1588C73v93Ev();
extern void _ZN7S1588C73v94Ev();
extern void _ZN7S1588C73v95Ev();
extern void _ZN7S1588C73v96Ev();
extern void _ZN7S1588C73v97Ev();
static  VTBL_ENTRY vtc_S1588C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1588C7[0]),
  (VTBL_ENTRY)&_ZN7S1588C73v89Ev,
  (VTBL_ENTRY)&_ZN7S1588C73v90Ev,
  (VTBL_ENTRY)&_ZN7S1588C73v91Ev,
  (VTBL_ENTRY)&_ZN7S1588C73v92Ev,
  (VTBL_ENTRY)&_ZN7S1588C73v93Ev,
  (VTBL_ENTRY)&_ZN7S1588C73v94Ev,
  (VTBL_ENTRY)&_ZN7S1588C73v95Ev,
  (VTBL_ENTRY)&_ZN7S1588C73v96Ev,
  (VTBL_ENTRY)&_ZN7S1588C73v97Ev,
};
extern VTBL_ENTRY _ZTI7S1588C7[];
extern  VTBL_ENTRY _ZTV7S1588C7[];
Class_Descriptor cd_S1588C7 = {  "S1588C7", // class name
  0,0,//no base classes
  &(vtc_S1588C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S1588C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1588C7),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1588C3  : S1588C4 , S1588C6 , S1588C7 {
  void *s1588c3f0;
  ::S79C39_nt s1588c3f1;
  unsigned int s1588c3f2:1;
  unsigned int s1588c3f3:1;
  unsigned int s1588c3f4:1;
  unsigned int s1588c3f5:1;
  virtual  ~S1588C3(); // _ZN7S1588C3D1Ev
  virtual void  v98(); // _ZN7S1588C33v98Ev
  virtual void  v99(); // _ZN7S1588C33v99Ev
  virtual void  v100(); // _ZN7S1588C34v100Ev
  virtual void  v101(); // _ZN7S1588C34v101Ev
  virtual void  v102(); // _ZN7S1588C34v102Ev
  virtual void  v103(); // _ZN7S1588C34v103Ev
  virtual void  v104(); // _ZN7S1588C34v104Ev
  virtual void  v105(); // _ZN7S1588C34v105Ev
  virtual void  v106(); // _ZN7S1588C34v106Ev
  virtual void  v107(); // _ZN7S1588C34v107Ev
  virtual void  v108(); // _ZN7S1588C34v108Ev
  virtual void  v109(); // _ZN7S1588C34v109Ev
  virtual void  v110(); // _ZN7S1588C34v110Ev
  virtual void  v111(); // _ZN7S1588C34v111Ev
  virtual void  v112(); // _ZN7S1588C34v112Ev
  virtual void  v113(); // _ZN7S1588C34v113Ev
  virtual void  v114(); // _ZN7S1588C34v114Ev
  virtual void  v115(); // _ZN7S1588C34v115Ev
  virtual void  v116(); // _ZN7S1588C34v116Ev
  virtual void  v117(); // _ZN7S1588C34v117Ev
  virtual void  v118(); // _ZN7S1588C34v118Ev
  virtual void  v119(); // _ZN7S1588C34v119Ev
  virtual void  v120(); // _ZN7S1588C34v120Ev
  virtual void  v121(); // _ZN7S1588C34v121Ev
  S1588C3(); // tgen
};
//SIG(-1 S1588C3) C1{ BC2{ vd v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} BC4{ v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104} BC5{ v105 v106 v107 v108 v109 v110 v111 v112 v113} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 Fp FC6{ BC7{ BC8{ BC9{ m Fp Fi[2]}}}} Fi:1 Fi:1 Fi:1 Fi:1}


 S1588C3 ::~S1588C3(){ note_dtor("S1588C3", this);}
void  S1588C3 ::v98(){vfunc_called(this, "_ZN7S1588C33v98Ev");}
void  S1588C3 ::v99(){vfunc_called(this, "_ZN7S1588C33v99Ev");}
void  S1588C3 ::v100(){vfunc_called(this, "_ZN7S1588C34v100Ev");}
void  S1588C3 ::v101(){vfunc_called(this, "_ZN7S1588C34v101Ev");}
void  S1588C3 ::v102(){vfunc_called(this, "_ZN7S1588C34v102Ev");}
void  S1588C3 ::v103(){vfunc_called(this, "_ZN7S1588C34v103Ev");}
void  S1588C3 ::v104(){vfunc_called(this, "_ZN7S1588C34v104Ev");}
void  S1588C3 ::v105(){vfunc_called(this, "_ZN7S1588C34v105Ev");}
void  S1588C3 ::v106(){vfunc_called(this, "_ZN7S1588C34v106Ev");}
void  S1588C3 ::v107(){vfunc_called(this, "_ZN7S1588C34v107Ev");}
void  S1588C3 ::v108(){vfunc_called(this, "_ZN7S1588C34v108Ev");}
void  S1588C3 ::v109(){vfunc_called(this, "_ZN7S1588C34v109Ev");}
void  S1588C3 ::v110(){vfunc_called(this, "_ZN7S1588C34v110Ev");}
void  S1588C3 ::v111(){vfunc_called(this, "_ZN7S1588C34v111Ev");}
void  S1588C3 ::v112(){vfunc_called(this, "_ZN7S1588C34v112Ev");}
void  S1588C3 ::v113(){vfunc_called(this, "_ZN7S1588C34v113Ev");}
void  S1588C3 ::v114(){vfunc_called(this, "_ZN7S1588C34v114Ev");}
void  S1588C3 ::v115(){vfunc_called(this, "_ZN7S1588C34v115Ev");}
void  S1588C3 ::v116(){vfunc_called(this, "_ZN7S1588C34v116Ev");}
void  S1588C3 ::v117(){vfunc_called(this, "_ZN7S1588C34v117Ev");}
void  S1588C3 ::v118(){vfunc_called(this, "_ZN7S1588C34v118Ev");}
void  S1588C3 ::v119(){vfunc_called(this, "_ZN7S1588C34v119Ev");}
void  S1588C3 ::v120(){vfunc_called(this, "_ZN7S1588C34v120Ev");}
void  S1588C3 ::v121(){vfunc_called(this, "_ZN7S1588C34v121Ev");}
S1588C3 ::S1588C3(){ note_ctor("S1588C3", this);} // tgen

static void Test_S1588C3()
{
  extern Class_Descriptor cd_S1588C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,23)];
    init_test(&cd_S1588C3, buf);
    S1588C3 *dp, &lv = *(dp=new (buf) S1588C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,88), "sizeof(S1588C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1588C3)");
    check_base_class_offset(lv, (S1588C4*), 0, "S1588C3");
    check_base_class_offset(lv, (S1588C6*), ABISELECT(96,60), "S1588C3");
    check_base_class_offset(lv, (S1588C7*), ABISELECT(104,64), "S1588C3");
    check_field_offset(lv, s1588c3f0, ABISELECT(112,68), "S1588C3.s1588c3f0");
    check_field_offset(lv, s1588c3f1, ABISELECT(120,72), "S1588C3.s1588c3f1");
    set_bf_and_test(lv, s1588c3f2, ABISELECT(136,84), 0, 1, 1, "S1588C3");
    set_bf_and_test(lv, s1588c3f3, ABISELECT(136,84), 1, 1, 1, "S1588C3");
    set_bf_and_test(lv, s1588c3f4, ABISELECT(136,84), 2, 1, 1, "S1588C3");
    set_bf_and_test(lv, s1588c3f5, ABISELECT(136,84), 3, 1, 1, "S1588C3");
    test_class_info(&lv, &cd_S1588C3);
    dp->~S1588C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1588C3(Test_S1588C3, "S1588C3", ABISELECT(144,88));

#else // __cplusplus

extern void _ZN7S1588C3C1Ev();
extern void _ZN7S1588C3D1Ev();
Name_Map name_map_S1588C3[] = {
  NSPAIR(_ZN7S1588C3C1Ev),
  NSPAIR(_ZN7S1588C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1588C4;
extern VTBL_ENTRY _ZTI7S1588C4[];
extern  VTBL_ENTRY _ZTV7S1588C4[];
extern Class_Descriptor cd_S1588C6;
extern VTBL_ENTRY _ZTI7S1588C6[];
extern  VTBL_ENTRY _ZTV7S1588C6[];
extern Class_Descriptor cd_S1588C7;
extern VTBL_ENTRY _ZTI7S1588C7[];
extern  VTBL_ENTRY _ZTV7S1588C7[];
static Base_Class bases_S1588C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1588C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1588C6,    ABISELECT(96,60), //bcp->offset
    92, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1588C7,    ABISELECT(104,64), //bcp->offset
    110, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1588C3[];
extern void _ZN7S1588C3D1Ev();
extern void _ZN7S1588C3D0Ev();
extern void _ZN7S1588C42v9Ev();
extern void _ZN7S1588C43v10Ev();
extern void _ZN7S1588C43v11Ev();
extern void _ZN7S1588C43v12Ev();
extern void _ZN7S1588C43v13Ev();
extern void _ZN7S1588C43v14Ev();
extern void _ZN7S1588C43v15Ev();
extern void _ZN7S1588C43v16Ev();
extern void _ZN7S1588C43v17Ev();
extern void _ZN7S1588C43v18Ev();
extern void _ZN7S1588C43v19Ev();
extern void _ZN7S1588C43v20Ev();
extern void _ZN7S1588C43v21Ev();
extern void _ZN7S1588C43v22Ev();
extern void _ZN7S1588C43v23Ev();
extern void _ZN7S1588C43v24Ev();
extern void _ZN7S1588C43v25Ev();
extern void _ZN7S1588C43v26Ev();
extern void _ZN7S1588C43v27Ev();
extern void _ZN7S1588C43v28Ev();
extern void _ZN7S1588C43v29Ev();
extern void _ZN7S1588C43v30Ev();
extern void _ZN7S1588C43v31Ev();
extern void _ZN7S1588C43v32Ev();
extern void _ZN7S1588C43v33Ev();
extern void _ZN7S1588C43v34Ev();
extern void _ZN7S1588C43v35Ev();
extern void _ZN7S1588C43v36Ev();
extern void _ZN7S1588C43v37Ev();
extern void _ZN7S1588C43v38Ev();
extern void _ZN7S1588C43v39Ev();
extern void _ZN7S1588C43v40Ev();
extern void _ZN7S1588C43v41Ev();
extern void _ZN7S1588C43v42Ev();
extern void _ZN7S1588C43v43Ev();
extern void _ZN7S1588C43v44Ev();
extern void _ZN7S1588C43v45Ev();
extern void _ZN7S1588C43v46Ev();
extern void _ZN7S1588C43v47Ev();
extern void _ZN7S1588C43v48Ev();
extern void _ZN7S1588C43v49Ev();
extern void _ZN7S1588C43v50Ev();
extern void _ZN7S1588C43v51Ev();
extern void _ZN7S1588C43v52Ev();
extern void _ZN7S1588C43v53Ev();
extern void _ZN7S1588C43v54Ev();
extern void _ZN7S1588C43v55Ev();
extern void _ZN7S1588C43v56Ev();
extern void _ZN7S1588C43v57Ev();
extern void _ZN7S1588C43v58Ev();
extern void _ZN7S1588C43v59Ev();
extern void _ZN7S1588C43v60Ev();
extern void _ZN7S1588C43v61Ev();
extern void _ZN7S1588C43v62Ev();
extern void _ZN7S1588C43v63Ev();
extern void _ZN7S1588C43v64Ev();
extern void _ZN7S1588C43v65Ev();
extern void _ZN7S1588C43v66Ev();
extern void _ZN7S1588C43v67Ev();
extern void _ZN7S1588C43v68Ev();
extern void _ZN7S1588C43v69Ev();
extern void _ZN7S1588C43v70Ev();
extern void _ZN7S1588C43v71Ev();
extern void _ZN7S1588C43v72Ev();
extern void _ZN7S1588C33v98Ev();
extern void _ZN7S1588C33v99Ev();
extern void _ZN7S1588C34v100Ev();
extern void _ZN7S1588C34v101Ev();
extern void _ZN7S1588C34v102Ev();
extern void _ZN7S1588C34v103Ev();
extern void _ZN7S1588C34v104Ev();
extern void _ZN7S1588C34v105Ev();
extern void _ZN7S1588C34v106Ev();
extern void _ZN7S1588C34v107Ev();
extern void _ZN7S1588C34v108Ev();
extern void _ZN7S1588C34v109Ev();
extern void _ZN7S1588C34v110Ev();
extern void _ZN7S1588C34v111Ev();
extern void _ZN7S1588C34v112Ev();
extern void _ZN7S1588C34v113Ev();
extern void _ZN7S1588C34v114Ev();
extern void _ZN7S1588C34v115Ev();
extern void _ZN7S1588C34v116Ev();
extern void _ZN7S1588C34v117Ev();
extern void _ZN7S1588C34v118Ev();
extern void _ZN7S1588C34v119Ev();
extern void _ZN7S1588C34v120Ev();
extern void _ZN7S1588C34v121Ev();
extern void _ZN7S1588C63v73Ev();
extern void _ZN7S1588C63v74Ev();
extern void _ZN7S1588C63v75Ev();
extern void _ZN7S1588C63v76Ev();
extern void _ZN7S1588C63v77Ev();
extern void _ZN7S1588C63v78Ev();
extern void _ZN7S1588C63v79Ev();
extern void _ZN7S1588C63v80Ev();
extern void _ZN7S1588C63v81Ev();
extern void _ZN7S1588C63v82Ev();
extern void _ZN7S1588C63v83Ev();
extern void _ZN7S1588C63v84Ev();
extern void _ZN7S1588C63v85Ev();
extern void _ZN7S1588C63v86Ev();
extern void _ZN7S1588C63v87Ev();
extern void _ZN7S1588C63v88Ev();
extern void _ZN7S1588C73v89Ev();
extern void _ZN7S1588C73v90Ev();
extern void _ZN7S1588C73v91Ev();
extern void _ZN7S1588C73v92Ev();
extern void _ZN7S1588C73v93Ev();
extern void _ZN7S1588C73v94Ev();
extern void _ZN7S1588C73v95Ev();
extern void _ZN7S1588C73v96Ev();
extern void _ZN7S1588C73v97Ev();
static  VTBL_ENTRY vtc_S1588C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1588C3[0]),
  (VTBL_ENTRY)&_ZN7S1588C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1588C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1588C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v71Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v72Ev,
  (VTBL_ENTRY)&_ZN7S1588C33v98Ev,
  (VTBL_ENTRY)&_ZN7S1588C33v99Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v100Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v101Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v102Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v103Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v104Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v105Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v106Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v107Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v108Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v119Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v120Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v121Ev,
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S1588C3[0]),
  (VTBL_ENTRY)&_ZN7S1588C63v73Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v74Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v75Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v76Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v77Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v78Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v79Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v80Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v81Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v82Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v83Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v84Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v85Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v86Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v87Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v88Ev,
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S1588C3[0]),
  (VTBL_ENTRY)&_ZN7S1588C73v89Ev,
  (VTBL_ENTRY)&_ZN7S1588C73v90Ev,
  (VTBL_ENTRY)&_ZN7S1588C73v91Ev,
  (VTBL_ENTRY)&_ZN7S1588C73v92Ev,
  (VTBL_ENTRY)&_ZN7S1588C73v93Ev,
  (VTBL_ENTRY)&_ZN7S1588C73v94Ev,
  (VTBL_ENTRY)&_ZN7S1588C73v95Ev,
  (VTBL_ENTRY)&_ZN7S1588C73v96Ev,
  (VTBL_ENTRY)&_ZN7S1588C73v97Ev,
};
extern VTBL_ENTRY _ZTI7S1588C3[];
extern  VTBL_ENTRY _ZTV7S1588C3[];
Class_Descriptor cd_S1588C3 = {  "S1588C3", // class name
  bases_S1588C3, 3,
  &(vtc_S1588C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,88), // object size
  NSPAIRA(_ZTI7S1588C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S1588C3),121, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1588C2  : S1588C3 {
  ::S3262C11_nt s1588c2f0;
  int s1588c2f1;
  virtual  ~S1588C2(); // _ZN7S1588C2D1Ev
  virtual void  v122(); // _ZN7S1588C24v122Ev
  virtual void  v123(); // _ZN7S1588C24v123Ev
  virtual void  v124(); // _ZN7S1588C24v124Ev
  virtual void  v125(); // _ZN7S1588C24v125Ev
  virtual void  v126(); // _ZN7S1588C24v126Ev
  virtual void  v127(); // _ZN7S1588C24v127Ev
  virtual void  v128(); // _ZN7S1588C24v128Ev
  virtual void  v129(); // _ZN7S1588C24v129Ev
  virtual void  v130(); // _ZN7S1588C24v130Ev
  virtual void  v131(); // _ZN7S1588C24v131Ev
  virtual void  v132(); // _ZN7S1588C24v132Ev
  virtual void  v133(); // _ZN7S1588C24v133Ev
  virtual void  v134(); // _ZN7S1588C24v134Ev
  virtual void  v135(); // _ZN7S1588C24v135Ev
  virtual void  v136(); // _ZN7S1588C24v136Ev
  virtual void  v137(); // _ZN7S1588C24v137Ev
  virtual void  v138(); // _ZN7S1588C24v138Ev
  virtual void  v139(); // _ZN7S1588C24v139Ev
  virtual void  v140(); // _ZN7S1588C24v140Ev
  virtual void  v141(); // _ZN7S1588C24v141Ev
  virtual void  v142(); // _ZN7S1588C24v142Ev
  virtual void  v143(); // _ZN7S1588C24v143Ev
  virtual void  v144(); // _ZN7S1588C24v144Ev
  virtual void  v145(); // _ZN7S1588C24v145Ev
  virtual void  v146(); // _ZN7S1588C24v146Ev
  virtual void  v147(); // _ZN7S1588C24v147Ev
  S1588C2(); // tgen
};
//SIG(-1 S1588C2) C1{ BC2{ BC3{ vd v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} BC5{ v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106} BC6{ v107 v108 v109 v110 v111 v112 v113 v114 v115} vd v116 v117 v118 v119 v120 v121 v122 v123 v124 v125 v126 v127 v128 v129 v130 v131 v132 v133 v134 v135 v136 v137 v138 v139 Fp FC7{ BC8{ BC9{ BC10{ m Fp Fi[2]}}}} Fi:1 Fi:1 Fi:1 Fi:1} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 FC11{ m FC12{ BC13{ BC10}} Fc} Fi}


 S1588C2 ::~S1588C2(){ note_dtor("S1588C2", this);}
void  S1588C2 ::v122(){vfunc_called(this, "_ZN7S1588C24v122Ev");}
void  S1588C2 ::v123(){vfunc_called(this, "_ZN7S1588C24v123Ev");}
void  S1588C2 ::v124(){vfunc_called(this, "_ZN7S1588C24v124Ev");}
void  S1588C2 ::v125(){vfunc_called(this, "_ZN7S1588C24v125Ev");}
void  S1588C2 ::v126(){vfunc_called(this, "_ZN7S1588C24v126Ev");}
void  S1588C2 ::v127(){vfunc_called(this, "_ZN7S1588C24v127Ev");}
void  S1588C2 ::v128(){vfunc_called(this, "_ZN7S1588C24v128Ev");}
void  S1588C2 ::v129(){vfunc_called(this, "_ZN7S1588C24v129Ev");}
void  S1588C2 ::v130(){vfunc_called(this, "_ZN7S1588C24v130Ev");}
void  S1588C2 ::v131(){vfunc_called(this, "_ZN7S1588C24v131Ev");}
void  S1588C2 ::v132(){vfunc_called(this, "_ZN7S1588C24v132Ev");}
void  S1588C2 ::v133(){vfunc_called(this, "_ZN7S1588C24v133Ev");}
void  S1588C2 ::v134(){vfunc_called(this, "_ZN7S1588C24v134Ev");}
void  S1588C2 ::v135(){vfunc_called(this, "_ZN7S1588C24v135Ev");}
void  S1588C2 ::v136(){vfunc_called(this, "_ZN7S1588C24v136Ev");}
void  S1588C2 ::v137(){vfunc_called(this, "_ZN7S1588C24v137Ev");}
void  S1588C2 ::v138(){vfunc_called(this, "_ZN7S1588C24v138Ev");}
void  S1588C2 ::v139(){vfunc_called(this, "_ZN7S1588C24v139Ev");}
void  S1588C2 ::v140(){vfunc_called(this, "_ZN7S1588C24v140Ev");}
void  S1588C2 ::v141(){vfunc_called(this, "_ZN7S1588C24v141Ev");}
void  S1588C2 ::v142(){vfunc_called(this, "_ZN7S1588C24v142Ev");}
void  S1588C2 ::v143(){vfunc_called(this, "_ZN7S1588C24v143Ev");}
void  S1588C2 ::v144(){vfunc_called(this, "_ZN7S1588C24v144Ev");}
void  S1588C2 ::v145(){vfunc_called(this, "_ZN7S1588C24v145Ev");}
void  S1588C2 ::v146(){vfunc_called(this, "_ZN7S1588C24v146Ev");}
void  S1588C2 ::v147(){vfunc_called(this, "_ZN7S1588C24v147Ev");}
S1588C2 ::S1588C2(){ note_ctor("S1588C2", this);} // tgen

static void Test_S1588C2()
{
  extern Class_Descriptor cd_S1588C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,28)];
    init_test(&cd_S1588C2, buf);
    S1588C2 *dp, &lv = *(dp=new (buf) S1588C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,108), "sizeof(S1588C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1588C2)");
    check_base_class_offset(lv, (S1588C4*)(S1588C3*), 0, "S1588C2");
    check_base_class_offset(lv, (S1588C6*)(S1588C3*), ABISELECT(96,60), "S1588C2");
    check_base_class_offset(lv, (S1588C7*)(S1588C3*), ABISELECT(104,64), "S1588C2");
    check_base_class_offset(lv, (S1588C3*), 0, "S1588C2");
    check_field_offset(lv, s1588c2f0, ABISELECT(144,88), "S1588C2.s1588c2f0");
    check_field_offset(lv, s1588c2f1, ABISELECT(168,104), "S1588C2.s1588c2f1");
    test_class_info(&lv, &cd_S1588C2);
    dp->~S1588C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1588C2(Test_S1588C2, "S1588C2", ABISELECT(176,108));

#else // __cplusplus

extern void _ZN7S1588C2C1Ev();
extern void _ZN7S1588C2D1Ev();
Name_Map name_map_S1588C2[] = {
  NSPAIR(_ZN7S1588C2C1Ev),
  NSPAIR(_ZN7S1588C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1588C4;
extern VTBL_ENTRY _ZTI7S1588C4[];
extern  VTBL_ENTRY _ZTV7S1588C4[];
extern Class_Descriptor cd_S1588C6;
extern VTBL_ENTRY _ZTI7S1588C6[];
extern  VTBL_ENTRY _ZTV7S1588C6[];
extern Class_Descriptor cd_S1588C7;
extern VTBL_ENTRY _ZTI7S1588C7[];
extern  VTBL_ENTRY _ZTV7S1588C7[];
extern Class_Descriptor cd_S1588C3;
extern VTBL_ENTRY _ZTI7S1588C3[];
extern  VTBL_ENTRY _ZTV7S1588C3[];
static Base_Class bases_S1588C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1588C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1588C6,    ABISELECT(96,60), //bcp->offset
    118, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1588C7,    ABISELECT(104,64), //bcp->offset
    136, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1588C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1588C2[];
extern void _ZN7S1588C2D1Ev();
extern void _ZN7S1588C2D0Ev();
extern void _ZN7S1588C42v9Ev();
extern void _ZN7S1588C43v10Ev();
extern void _ZN7S1588C43v11Ev();
extern void _ZN7S1588C43v12Ev();
extern void _ZN7S1588C43v13Ev();
extern void _ZN7S1588C43v14Ev();
extern void _ZN7S1588C43v15Ev();
extern void _ZN7S1588C43v16Ev();
extern void _ZN7S1588C43v17Ev();
extern void _ZN7S1588C43v18Ev();
extern void _ZN7S1588C43v19Ev();
extern void _ZN7S1588C43v20Ev();
extern void _ZN7S1588C43v21Ev();
extern void _ZN7S1588C43v22Ev();
extern void _ZN7S1588C43v23Ev();
extern void _ZN7S1588C43v24Ev();
extern void _ZN7S1588C43v25Ev();
extern void _ZN7S1588C43v26Ev();
extern void _ZN7S1588C43v27Ev();
extern void _ZN7S1588C43v28Ev();
extern void _ZN7S1588C43v29Ev();
extern void _ZN7S1588C43v30Ev();
extern void _ZN7S1588C43v31Ev();
extern void _ZN7S1588C43v32Ev();
extern void _ZN7S1588C43v33Ev();
extern void _ZN7S1588C43v34Ev();
extern void _ZN7S1588C43v35Ev();
extern void _ZN7S1588C43v36Ev();
extern void _ZN7S1588C43v37Ev();
extern void _ZN7S1588C43v38Ev();
extern void _ZN7S1588C43v39Ev();
extern void _ZN7S1588C43v40Ev();
extern void _ZN7S1588C43v41Ev();
extern void _ZN7S1588C43v42Ev();
extern void _ZN7S1588C43v43Ev();
extern void _ZN7S1588C43v44Ev();
extern void _ZN7S1588C43v45Ev();
extern void _ZN7S1588C43v46Ev();
extern void _ZN7S1588C43v47Ev();
extern void _ZN7S1588C43v48Ev();
extern void _ZN7S1588C43v49Ev();
extern void _ZN7S1588C43v50Ev();
extern void _ZN7S1588C43v51Ev();
extern void _ZN7S1588C43v52Ev();
extern void _ZN7S1588C43v53Ev();
extern void _ZN7S1588C43v54Ev();
extern void _ZN7S1588C43v55Ev();
extern void _ZN7S1588C43v56Ev();
extern void _ZN7S1588C43v57Ev();
extern void _ZN7S1588C43v58Ev();
extern void _ZN7S1588C43v59Ev();
extern void _ZN7S1588C43v60Ev();
extern void _ZN7S1588C43v61Ev();
extern void _ZN7S1588C43v62Ev();
extern void _ZN7S1588C43v63Ev();
extern void _ZN7S1588C43v64Ev();
extern void _ZN7S1588C43v65Ev();
extern void _ZN7S1588C43v66Ev();
extern void _ZN7S1588C43v67Ev();
extern void _ZN7S1588C43v68Ev();
extern void _ZN7S1588C43v69Ev();
extern void _ZN7S1588C43v70Ev();
extern void _ZN7S1588C43v71Ev();
extern void _ZN7S1588C43v72Ev();
extern void _ZN7S1588C33v98Ev();
extern void _ZN7S1588C33v99Ev();
extern void _ZN7S1588C34v100Ev();
extern void _ZN7S1588C34v101Ev();
extern void _ZN7S1588C34v102Ev();
extern void _ZN7S1588C34v103Ev();
extern void _ZN7S1588C34v104Ev();
extern void _ZN7S1588C34v105Ev();
extern void _ZN7S1588C34v106Ev();
extern void _ZN7S1588C34v107Ev();
extern void _ZN7S1588C34v108Ev();
extern void _ZN7S1588C34v109Ev();
extern void _ZN7S1588C34v110Ev();
extern void _ZN7S1588C34v111Ev();
extern void _ZN7S1588C34v112Ev();
extern void _ZN7S1588C34v113Ev();
extern void _ZN7S1588C34v114Ev();
extern void _ZN7S1588C34v115Ev();
extern void _ZN7S1588C34v116Ev();
extern void _ZN7S1588C34v117Ev();
extern void _ZN7S1588C34v118Ev();
extern void _ZN7S1588C34v119Ev();
extern void _ZN7S1588C34v120Ev();
extern void _ZN7S1588C34v121Ev();
extern void _ZN7S1588C24v122Ev();
extern void _ZN7S1588C24v123Ev();
extern void _ZN7S1588C24v124Ev();
extern void _ZN7S1588C24v125Ev();
extern void _ZN7S1588C24v126Ev();
extern void _ZN7S1588C24v127Ev();
extern void _ZN7S1588C24v128Ev();
extern void _ZN7S1588C24v129Ev();
extern void _ZN7S1588C24v130Ev();
extern void _ZN7S1588C24v131Ev();
extern void _ZN7S1588C24v132Ev();
extern void _ZN7S1588C24v133Ev();
extern void _ZN7S1588C24v134Ev();
extern void _ZN7S1588C24v135Ev();
extern void _ZN7S1588C24v136Ev();
extern void _ZN7S1588C24v137Ev();
extern void _ZN7S1588C24v138Ev();
extern void _ZN7S1588C24v139Ev();
extern void _ZN7S1588C24v140Ev();
extern void _ZN7S1588C24v141Ev();
extern void _ZN7S1588C24v142Ev();
extern void _ZN7S1588C24v143Ev();
extern void _ZN7S1588C24v144Ev();
extern void _ZN7S1588C24v145Ev();
extern void _ZN7S1588C24v146Ev();
extern void _ZN7S1588C24v147Ev();
extern void _ZN7S1588C63v73Ev();
extern void _ZN7S1588C63v74Ev();
extern void _ZN7S1588C63v75Ev();
extern void _ZN7S1588C63v76Ev();
extern void _ZN7S1588C63v77Ev();
extern void _ZN7S1588C63v78Ev();
extern void _ZN7S1588C63v79Ev();
extern void _ZN7S1588C63v80Ev();
extern void _ZN7S1588C63v81Ev();
extern void _ZN7S1588C63v82Ev();
extern void _ZN7S1588C63v83Ev();
extern void _ZN7S1588C63v84Ev();
extern void _ZN7S1588C63v85Ev();
extern void _ZN7S1588C63v86Ev();
extern void _ZN7S1588C63v87Ev();
extern void _ZN7S1588C63v88Ev();
extern void _ZN7S1588C73v89Ev();
extern void _ZN7S1588C73v90Ev();
extern void _ZN7S1588C73v91Ev();
extern void _ZN7S1588C73v92Ev();
extern void _ZN7S1588C73v93Ev();
extern void _ZN7S1588C73v94Ev();
extern void _ZN7S1588C73v95Ev();
extern void _ZN7S1588C73v96Ev();
extern void _ZN7S1588C73v97Ev();
static  VTBL_ENTRY vtc_S1588C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1588C2[0]),
  (VTBL_ENTRY)&_ZN7S1588C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1588C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1588C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v71Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v72Ev,
  (VTBL_ENTRY)&_ZN7S1588C33v98Ev,
  (VTBL_ENTRY)&_ZN7S1588C33v99Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v100Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v101Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v102Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v103Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v104Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v105Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v106Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v107Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v108Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v119Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v120Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v121Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v122Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v123Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v124Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v125Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v126Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v127Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v128Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v129Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v130Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v131Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v132Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v133Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v134Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v135Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v136Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v137Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v138Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v139Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v140Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v141Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v142Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v143Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v144Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v145Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v146Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v147Ev,
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S1588C2[0]),
  (VTBL_ENTRY)&_ZN7S1588C63v73Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v74Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v75Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v76Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v77Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v78Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v79Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v80Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v81Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v82Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v83Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v84Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v85Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v86Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v87Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v88Ev,
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S1588C2[0]),
  (VTBL_ENTRY)&_ZN7S1588C73v89Ev,
  (VTBL_ENTRY)&_ZN7S1588C73v90Ev,
  (VTBL_ENTRY)&_ZN7S1588C73v91Ev,
  (VTBL_ENTRY)&_ZN7S1588C73v92Ev,
  (VTBL_ENTRY)&_ZN7S1588C73v93Ev,
  (VTBL_ENTRY)&_ZN7S1588C73v94Ev,
  (VTBL_ENTRY)&_ZN7S1588C73v95Ev,
  (VTBL_ENTRY)&_ZN7S1588C73v96Ev,
  (VTBL_ENTRY)&_ZN7S1588C73v97Ev,
};
extern VTBL_ENTRY _ZTI7S1588C2[];
extern  VTBL_ENTRY _ZTV7S1588C2[];
Class_Descriptor cd_S1588C2 = {  "S1588C2", // class name
  bases_S1588C2, 4,
  &(vtc_S1588C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(176,108), // object size
  NSPAIRA(_ZTI7S1588C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1588C2),147, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  4, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1588C1  : S1588C2 {
  ::S79C8_nt s1588c1f0;
  virtual  ~S1588C1(); // _ZN7S1588C1D1Ev
  virtual void  v1(); // _ZN7S1588C12v1Ev
  virtual void  v2(); // _ZN7S1588C12v2Ev
  virtual void  v3(); // _ZN7S1588C12v3Ev
  virtual void  v4(); // _ZN7S1588C12v4Ev
  virtual void  v5(); // _ZN7S1588C12v5Ev
  virtual void  v6(); // _ZN7S1588C12v6Ev
  virtual void  v7(); // _ZN7S1588C12v7Ev
  virtual void  v8(); // _ZN7S1588C12v8Ev
  S1588C1(); // tgen
};
//SIG(1 S1588C1) C1{ BC2{ BC3{ BC4{ vd v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 Fi FL Fp[4] Fi[2] Fp FC5{ m Fi[2]} Fp[2]} BC6{ v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88} BC7{ v89 v90 v91 v92 v93 v94 v95 v96 v97} vd v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 v112 v113 v114 v115 v116 v117 v118 v119 v120 v121 Fp FC8{ BC9{ BC10{ BC11{ m Fp Fi[2]}}}} Fi:1 Fi:1 Fi:1 Fi:1} vd v122 v123 v124 v125 v126 v127 v128 v129 v130 v131 v132 v133 v134 v135 v136 v137 v138 v139 v140 v141 v142 v143 v144 v145 v146 v147 FC12{ m FC13{ BC14{ BC11}} Fc} Fi} vd v1 v2 v3 v4 v5 v6 v7 v8 FC5}


 S1588C1 ::~S1588C1(){ note_dtor("S1588C1", this);}
void  S1588C1 ::v1(){vfunc_called(this, "_ZN7S1588C12v1Ev");}
void  S1588C1 ::v2(){vfunc_called(this, "_ZN7S1588C12v2Ev");}
void  S1588C1 ::v3(){vfunc_called(this, "_ZN7S1588C12v3Ev");}
void  S1588C1 ::v4(){vfunc_called(this, "_ZN7S1588C12v4Ev");}
void  S1588C1 ::v5(){vfunc_called(this, "_ZN7S1588C12v5Ev");}
void  S1588C1 ::v6(){vfunc_called(this, "_ZN7S1588C12v6Ev");}
void  S1588C1 ::v7(){vfunc_called(this, "_ZN7S1588C12v7Ev");}
void  S1588C1 ::v8(){vfunc_called(this, "_ZN7S1588C12v8Ev");}
S1588C1 ::S1588C1(){ note_ctor("S1588C1", this);} // tgen

static void Test_S1588C1()
{
  extern Class_Descriptor cd_S1588C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,30)];
    init_test(&cd_S1588C1, buf);
    S1588C1 *dp, &lv = *(dp=new (buf) S1588C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,116), "sizeof(S1588C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1588C1)");
    check_base_class_offset(lv, (S1588C4*)(S1588C3*)(S1588C2*), 0, "S1588C1");
    check_base_class_offset(lv, (S1588C6*)(S1588C3*)(S1588C2*), ABISELECT(96,60), "S1588C1");
    check_base_class_offset(lv, (S1588C7*)(S1588C3*)(S1588C2*), ABISELECT(104,64), "S1588C1");
    check_base_class_offset(lv, (S1588C3*)(S1588C2*), 0, "S1588C1");
    check_base_class_offset(lv, (S1588C2*), 0, "S1588C1");
    check_field_offset(lv, s1588c1f0, ABISELECT(172,108), "S1588C1.s1588c1f0");
    test_class_info(&lv, &cd_S1588C1);
    dp->~S1588C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1588C1(Test_S1588C1, "S1588C1", ABISELECT(184,116));

#else // __cplusplus

extern void _ZN7S1588C1C1Ev();
extern void _ZN7S1588C1D1Ev();
Name_Map name_map_S1588C1[] = {
  NSPAIR(_ZN7S1588C1C1Ev),
  NSPAIR(_ZN7S1588C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1588C4;
extern VTBL_ENTRY _ZTI7S1588C4[];
extern  VTBL_ENTRY _ZTV7S1588C4[];
extern Class_Descriptor cd_S1588C6;
extern VTBL_ENTRY _ZTI7S1588C6[];
extern  VTBL_ENTRY _ZTV7S1588C6[];
extern Class_Descriptor cd_S1588C7;
extern VTBL_ENTRY _ZTI7S1588C7[];
extern  VTBL_ENTRY _ZTV7S1588C7[];
extern Class_Descriptor cd_S1588C3;
extern VTBL_ENTRY _ZTI7S1588C3[];
extern  VTBL_ENTRY _ZTV7S1588C3[];
extern Class_Descriptor cd_S1588C2;
extern VTBL_ENTRY _ZTI7S1588C2[];
extern  VTBL_ENTRY _ZTV7S1588C2[];
static Base_Class bases_S1588C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1588C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1588C6,    ABISELECT(96,60), //bcp->offset
    126, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1588C7,    ABISELECT(104,64), //bcp->offset
    144, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1588C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S1588C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1588C1[];
extern void _ZN7S1588C1D1Ev();
extern void _ZN7S1588C1D0Ev();
extern void _ZN7S1588C42v9Ev();
extern void _ZN7S1588C43v10Ev();
extern void _ZN7S1588C43v11Ev();
extern void _ZN7S1588C43v12Ev();
extern void _ZN7S1588C43v13Ev();
extern void _ZN7S1588C43v14Ev();
extern void _ZN7S1588C43v15Ev();
extern void _ZN7S1588C43v16Ev();
extern void _ZN7S1588C43v17Ev();
extern void _ZN7S1588C43v18Ev();
extern void _ZN7S1588C43v19Ev();
extern void _ZN7S1588C43v20Ev();
extern void _ZN7S1588C43v21Ev();
extern void _ZN7S1588C43v22Ev();
extern void _ZN7S1588C43v23Ev();
extern void _ZN7S1588C43v24Ev();
extern void _ZN7S1588C43v25Ev();
extern void _ZN7S1588C43v26Ev();
extern void _ZN7S1588C43v27Ev();
extern void _ZN7S1588C43v28Ev();
extern void _ZN7S1588C43v29Ev();
extern void _ZN7S1588C43v30Ev();
extern void _ZN7S1588C43v31Ev();
extern void _ZN7S1588C43v32Ev();
extern void _ZN7S1588C43v33Ev();
extern void _ZN7S1588C43v34Ev();
extern void _ZN7S1588C43v35Ev();
extern void _ZN7S1588C43v36Ev();
extern void _ZN7S1588C43v37Ev();
extern void _ZN7S1588C43v38Ev();
extern void _ZN7S1588C43v39Ev();
extern void _ZN7S1588C43v40Ev();
extern void _ZN7S1588C43v41Ev();
extern void _ZN7S1588C43v42Ev();
extern void _ZN7S1588C43v43Ev();
extern void _ZN7S1588C43v44Ev();
extern void _ZN7S1588C43v45Ev();
extern void _ZN7S1588C43v46Ev();
extern void _ZN7S1588C43v47Ev();
extern void _ZN7S1588C43v48Ev();
extern void _ZN7S1588C43v49Ev();
extern void _ZN7S1588C43v50Ev();
extern void _ZN7S1588C43v51Ev();
extern void _ZN7S1588C43v52Ev();
extern void _ZN7S1588C43v53Ev();
extern void _ZN7S1588C43v54Ev();
extern void _ZN7S1588C43v55Ev();
extern void _ZN7S1588C43v56Ev();
extern void _ZN7S1588C43v57Ev();
extern void _ZN7S1588C43v58Ev();
extern void _ZN7S1588C43v59Ev();
extern void _ZN7S1588C43v60Ev();
extern void _ZN7S1588C43v61Ev();
extern void _ZN7S1588C43v62Ev();
extern void _ZN7S1588C43v63Ev();
extern void _ZN7S1588C43v64Ev();
extern void _ZN7S1588C43v65Ev();
extern void _ZN7S1588C43v66Ev();
extern void _ZN7S1588C43v67Ev();
extern void _ZN7S1588C43v68Ev();
extern void _ZN7S1588C43v69Ev();
extern void _ZN7S1588C43v70Ev();
extern void _ZN7S1588C43v71Ev();
extern void _ZN7S1588C43v72Ev();
extern void _ZN7S1588C33v98Ev();
extern void _ZN7S1588C33v99Ev();
extern void _ZN7S1588C34v100Ev();
extern void _ZN7S1588C34v101Ev();
extern void _ZN7S1588C34v102Ev();
extern void _ZN7S1588C34v103Ev();
extern void _ZN7S1588C34v104Ev();
extern void _ZN7S1588C34v105Ev();
extern void _ZN7S1588C34v106Ev();
extern void _ZN7S1588C34v107Ev();
extern void _ZN7S1588C34v108Ev();
extern void _ZN7S1588C34v109Ev();
extern void _ZN7S1588C34v110Ev();
extern void _ZN7S1588C34v111Ev();
extern void _ZN7S1588C34v112Ev();
extern void _ZN7S1588C34v113Ev();
extern void _ZN7S1588C34v114Ev();
extern void _ZN7S1588C34v115Ev();
extern void _ZN7S1588C34v116Ev();
extern void _ZN7S1588C34v117Ev();
extern void _ZN7S1588C34v118Ev();
extern void _ZN7S1588C34v119Ev();
extern void _ZN7S1588C34v120Ev();
extern void _ZN7S1588C34v121Ev();
extern void _ZN7S1588C24v122Ev();
extern void _ZN7S1588C24v123Ev();
extern void _ZN7S1588C24v124Ev();
extern void _ZN7S1588C24v125Ev();
extern void _ZN7S1588C24v126Ev();
extern void _ZN7S1588C24v127Ev();
extern void _ZN7S1588C24v128Ev();
extern void _ZN7S1588C24v129Ev();
extern void _ZN7S1588C24v130Ev();
extern void _ZN7S1588C24v131Ev();
extern void _ZN7S1588C24v132Ev();
extern void _ZN7S1588C24v133Ev();
extern void _ZN7S1588C24v134Ev();
extern void _ZN7S1588C24v135Ev();
extern void _ZN7S1588C24v136Ev();
extern void _ZN7S1588C24v137Ev();
extern void _ZN7S1588C24v138Ev();
extern void _ZN7S1588C24v139Ev();
extern void _ZN7S1588C24v140Ev();
extern void _ZN7S1588C24v141Ev();
extern void _ZN7S1588C24v142Ev();
extern void _ZN7S1588C24v143Ev();
extern void _ZN7S1588C24v144Ev();
extern void _ZN7S1588C24v145Ev();
extern void _ZN7S1588C24v146Ev();
extern void _ZN7S1588C24v147Ev();
extern void _ZN7S1588C12v1Ev();
extern void _ZN7S1588C12v2Ev();
extern void _ZN7S1588C12v3Ev();
extern void _ZN7S1588C12v4Ev();
extern void _ZN7S1588C12v5Ev();
extern void _ZN7S1588C12v6Ev();
extern void _ZN7S1588C12v7Ev();
extern void _ZN7S1588C12v8Ev();
extern void _ZN7S1588C63v73Ev();
extern void _ZN7S1588C63v74Ev();
extern void _ZN7S1588C63v75Ev();
extern void _ZN7S1588C63v76Ev();
extern void _ZN7S1588C63v77Ev();
extern void _ZN7S1588C63v78Ev();
extern void _ZN7S1588C63v79Ev();
extern void _ZN7S1588C63v80Ev();
extern void _ZN7S1588C63v81Ev();
extern void _ZN7S1588C63v82Ev();
extern void _ZN7S1588C63v83Ev();
extern void _ZN7S1588C63v84Ev();
extern void _ZN7S1588C63v85Ev();
extern void _ZN7S1588C63v86Ev();
extern void _ZN7S1588C63v87Ev();
extern void _ZN7S1588C63v88Ev();
extern void _ZN7S1588C73v89Ev();
extern void _ZN7S1588C73v90Ev();
extern void _ZN7S1588C73v91Ev();
extern void _ZN7S1588C73v92Ev();
extern void _ZN7S1588C73v93Ev();
extern void _ZN7S1588C73v94Ev();
extern void _ZN7S1588C73v95Ev();
extern void _ZN7S1588C73v96Ev();
extern void _ZN7S1588C73v97Ev();
static  VTBL_ENTRY vtc_S1588C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1588C1[0]),
  (VTBL_ENTRY)&_ZN7S1588C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1588C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1588C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v71Ev,
  (VTBL_ENTRY)&_ZN7S1588C43v72Ev,
  (VTBL_ENTRY)&_ZN7S1588C33v98Ev,
  (VTBL_ENTRY)&_ZN7S1588C33v99Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v100Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v101Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v102Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v103Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v104Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v105Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v106Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v107Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v108Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v119Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v120Ev,
  (VTBL_ENTRY)&_ZN7S1588C34v121Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v122Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v123Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v124Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v125Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v126Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v127Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v128Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v129Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v130Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v131Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v132Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v133Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v134Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v135Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v136Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v137Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v138Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v139Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v140Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v141Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v142Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v143Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v144Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v145Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v146Ev,
  (VTBL_ENTRY)&_ZN7S1588C24v147Ev,
  (VTBL_ENTRY)&_ZN7S1588C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1588C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1588C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1588C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1588C12v5Ev,
  (VTBL_ENTRY)&_ZN7S1588C12v6Ev,
  (VTBL_ENTRY)&_ZN7S1588C12v7Ev,
  (VTBL_ENTRY)&_ZN7S1588C12v8Ev,
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S1588C1[0]),
  (VTBL_ENTRY)&_ZN7S1588C63v73Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v74Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v75Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v76Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v77Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v78Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v79Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v80Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v81Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v82Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v83Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v84Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v85Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v86Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v87Ev,
  (VTBL_ENTRY)&_ZN7S1588C63v88Ev,
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S1588C1[0]),
  (VTBL_ENTRY)&_ZN7S1588C73v89Ev,
  (VTBL_ENTRY)&_ZN7S1588C73v90Ev,
  (VTBL_ENTRY)&_ZN7S1588C73v91Ev,
  (VTBL_ENTRY)&_ZN7S1588C73v92Ev,
  (VTBL_ENTRY)&_ZN7S1588C73v93Ev,
  (VTBL_ENTRY)&_ZN7S1588C73v94Ev,
  (VTBL_ENTRY)&_ZN7S1588C73v95Ev,
  (VTBL_ENTRY)&_ZN7S1588C73v96Ev,
  (VTBL_ENTRY)&_ZN7S1588C73v97Ev,
};
extern VTBL_ENTRY _ZTI7S1588C1[];
extern  VTBL_ENTRY _ZTV7S1588C1[];
Class_Descriptor cd_S1588C1 = {  "S1588C1", // class name
  bases_S1588C1, 5,
  &(vtc_S1588C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(184,116), // object size
  NSPAIRA(_ZTI7S1588C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1588C1),155, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  5, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1589C4  {
  int s1589c4f0;
  __tsi64 s1589c4f1;
  void *s1589c4f2[4];
  int s1589c4f3[2];
  void *s1589c4f4;
  ::S79C8_nt s1589c4f5;
  void *s1589c4f6[2];
  virtual  ~S1589C4(); // _ZN7S1589C4D1Ev
  virtual void  v9(); // _ZN7S1589C42v9Ev
  virtual void  v10(); // _ZN7S1589C43v10Ev
  virtual void  v11(); // _ZN7S1589C43v11Ev
  virtual void  v12(); // _ZN7S1589C43v12Ev
  virtual void  v13(); // _ZN7S1589C43v13Ev
  virtual void  v14(); // _ZN7S1589C43v14Ev
  virtual void  v15(); // _ZN7S1589C43v15Ev
  virtual void  v16(); // _ZN7S1589C43v16Ev
  virtual void  v17(); // _ZN7S1589C43v17Ev
  virtual void  v18(); // _ZN7S1589C43v18Ev
  virtual void  v19(); // _ZN7S1589C43v19Ev
  virtual void  v20(); // _ZN7S1589C43v20Ev
  virtual void  v21(); // _ZN7S1589C43v21Ev
  virtual void  v22(); // _ZN7S1589C43v22Ev
  virtual void  v23(); // _ZN7S1589C43v23Ev
  virtual void  v24(); // _ZN7S1589C43v24Ev
  virtual void  v25(); // _ZN7S1589C43v25Ev
  virtual void  v26(); // _ZN7S1589C43v26Ev
  virtual void  v27(); // _ZN7S1589C43v27Ev
  virtual void  v28(); // _ZN7S1589C43v28Ev
  virtual void  v29(); // _ZN7S1589C43v29Ev
  virtual void  v30(); // _ZN7S1589C43v30Ev
  virtual void  v31(); // _ZN7S1589C43v31Ev
  virtual void  v32(); // _ZN7S1589C43v32Ev
  virtual void  v33(); // _ZN7S1589C43v33Ev
  virtual void  v34(); // _ZN7S1589C43v34Ev
  virtual void  v35(); // _ZN7S1589C43v35Ev
  virtual void  v36(); // _ZN7S1589C43v36Ev
  virtual void  v37(); // _ZN7S1589C43v37Ev
  virtual void  v38(); // _ZN7S1589C43v38Ev
  virtual void  v39(); // _ZN7S1589C43v39Ev
  virtual void  v40(); // _ZN7S1589C43v40Ev
  virtual void  v41(); // _ZN7S1589C43v41Ev
  virtual void  v42(); // _ZN7S1589C43v42Ev
  virtual void  v43(); // _ZN7S1589C43v43Ev
  virtual void  v44(); // _ZN7S1589C43v44Ev
  virtual void  v45(); // _ZN7S1589C43v45Ev
  virtual void  v46(); // _ZN7S1589C43v46Ev
  virtual void  v47(); // _ZN7S1589C43v47Ev
  virtual void  v48(); // _ZN7S1589C43v48Ev
  virtual void  v49(); // _ZN7S1589C43v49Ev
  virtual void  v50(); // _ZN7S1589C43v50Ev
  virtual void  v51(); // _ZN7S1589C43v51Ev
  virtual void  v52(); // _ZN7S1589C43v52Ev
  virtual void  v53(); // _ZN7S1589C43v53Ev
  virtual void  v54(); // _ZN7S1589C43v54Ev
  virtual void  v55(); // _ZN7S1589C43v55Ev
  virtual void  v56(); // _ZN7S1589C43v56Ev
  virtual void  v57(); // _ZN7S1589C43v57Ev
  virtual void  v58(); // _ZN7S1589C43v58Ev
  virtual void  v59(); // _ZN7S1589C43v59Ev
  virtual void  v60(); // _ZN7S1589C43v60Ev
  virtual void  v61(); // _ZN7S1589C43v61Ev
  virtual void  v62(); // _ZN7S1589C43v62Ev
  virtual void  v63(); // _ZN7S1589C43v63Ev
  virtual void  v64(); // _ZN7S1589C43v64Ev
  virtual void  v65(); // _ZN7S1589C43v65Ev
  virtual void  v66(); // _ZN7S1589C43v66Ev
  virtual void  v67(); // _ZN7S1589C43v67Ev
  virtual void  v68(); // _ZN7S1589C43v68Ev
  virtual void  v69(); // _ZN7S1589C43v69Ev
  virtual void  v70(); // _ZN7S1589C43v70Ev
  virtual void  v71(); // _ZN7S1589C43v71Ev
  virtual void  v72(); // _ZN7S1589C43v72Ev
  S1589C4(); // tgen
};
//SIG(-1 S1589C4) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 Fi FL Fp[4] Fi[2] Fp FC2{ m Fi[2]} Fp[2]}


 S1589C4 ::~S1589C4(){ note_dtor("S1589C4", this);}
void  S1589C4 ::v9(){vfunc_called(this, "_ZN7S1589C42v9Ev");}
void  S1589C4 ::v10(){vfunc_called(this, "_ZN7S1589C43v10Ev");}
void  S1589C4 ::v11(){vfunc_called(this, "_ZN7S1589C43v11Ev");}
void  S1589C4 ::v12(){vfunc_called(this, "_ZN7S1589C43v12Ev");}
void  S1589C4 ::v13(){vfunc_called(this, "_ZN7S1589C43v13Ev");}
void  S1589C4 ::v14(){vfunc_called(this, "_ZN7S1589C43v14Ev");}
void  S1589C4 ::v15(){vfunc_called(this, "_ZN7S1589C43v15Ev");}
void  S1589C4 ::v16(){vfunc_called(this, "_ZN7S1589C43v16Ev");}
void  S1589C4 ::v17(){vfunc_called(this, "_ZN7S1589C43v17Ev");}
void  S1589C4 ::v18(){vfunc_called(this, "_ZN7S1589C43v18Ev");}
void  S1589C4 ::v19(){vfunc_called(this, "_ZN7S1589C43v19Ev");}
void  S1589C4 ::v20(){vfunc_called(this, "_ZN7S1589C43v20Ev");}
void  S1589C4 ::v21(){vfunc_called(this, "_ZN7S1589C43v21Ev");}
void  S1589C4 ::v22(){vfunc_called(this, "_ZN7S1589C43v22Ev");}
void  S1589C4 ::v23(){vfunc_called(this, "_ZN7S1589C43v23Ev");}
void  S1589C4 ::v24(){vfunc_called(this, "_ZN7S1589C43v24Ev");}
void  S1589C4 ::v25(){vfunc_called(this, "_ZN7S1589C43v25Ev");}
void  S1589C4 ::v26(){vfunc_called(this, "_ZN7S1589C43v26Ev");}
void  S1589C4 ::v27(){vfunc_called(this, "_ZN7S1589C43v27Ev");}
void  S1589C4 ::v28(){vfunc_called(this, "_ZN7S1589C43v28Ev");}
void  S1589C4 ::v29(){vfunc_called(this, "_ZN7S1589C43v29Ev");}
void  S1589C4 ::v30(){vfunc_called(this, "_ZN7S1589C43v30Ev");}
void  S1589C4 ::v31(){vfunc_called(this, "_ZN7S1589C43v31Ev");}
void  S1589C4 ::v32(){vfunc_called(this, "_ZN7S1589C43v32Ev");}
void  S1589C4 ::v33(){vfunc_called(this, "_ZN7S1589C43v33Ev");}
void  S1589C4 ::v34(){vfunc_called(this, "_ZN7S1589C43v34Ev");}
void  S1589C4 ::v35(){vfunc_called(this, "_ZN7S1589C43v35Ev");}
void  S1589C4 ::v36(){vfunc_called(this, "_ZN7S1589C43v36Ev");}
void  S1589C4 ::v37(){vfunc_called(this, "_ZN7S1589C43v37Ev");}
void  S1589C4 ::v38(){vfunc_called(this, "_ZN7S1589C43v38Ev");}
void  S1589C4 ::v39(){vfunc_called(this, "_ZN7S1589C43v39Ev");}
void  S1589C4 ::v40(){vfunc_called(this, "_ZN7S1589C43v40Ev");}
void  S1589C4 ::v41(){vfunc_called(this, "_ZN7S1589C43v41Ev");}
void  S1589C4 ::v42(){vfunc_called(this, "_ZN7S1589C43v42Ev");}
void  S1589C4 ::v43(){vfunc_called(this, "_ZN7S1589C43v43Ev");}
void  S1589C4 ::v44(){vfunc_called(this, "_ZN7S1589C43v44Ev");}
void  S1589C4 ::v45(){vfunc_called(this, "_ZN7S1589C43v45Ev");}
void  S1589C4 ::v46(){vfunc_called(this, "_ZN7S1589C43v46Ev");}
void  S1589C4 ::v47(){vfunc_called(this, "_ZN7S1589C43v47Ev");}
void  S1589C4 ::v48(){vfunc_called(this, "_ZN7S1589C43v48Ev");}
void  S1589C4 ::v49(){vfunc_called(this, "_ZN7S1589C43v49Ev");}
void  S1589C4 ::v50(){vfunc_called(this, "_ZN7S1589C43v50Ev");}
void  S1589C4 ::v51(){vfunc_called(this, "_ZN7S1589C43v51Ev");}
void  S1589C4 ::v52(){vfunc_called(this, "_ZN7S1589C43v52Ev");}
void  S1589C4 ::v53(){vfunc_called(this, "_ZN7S1589C43v53Ev");}
void  S1589C4 ::v54(){vfunc_called(this, "_ZN7S1589C43v54Ev");}
void  S1589C4 ::v55(){vfunc_called(this, "_ZN7S1589C43v55Ev");}
void  S1589C4 ::v56(){vfunc_called(this, "_ZN7S1589C43v56Ev");}
void  S1589C4 ::v57(){vfunc_called(this, "_ZN7S1589C43v57Ev");}
void  S1589C4 ::v58(){vfunc_called(this, "_ZN7S1589C43v58Ev");}
void  S1589C4 ::v59(){vfunc_called(this, "_ZN7S1589C43v59Ev");}
void  S1589C4 ::v60(){vfunc_called(this, "_ZN7S1589C43v60Ev");}
void  S1589C4 ::v61(){vfunc_called(this, "_ZN7S1589C43v61Ev");}
void  S1589C4 ::v62(){vfunc_called(this, "_ZN7S1589C43v62Ev");}
void  S1589C4 ::v63(){vfunc_called(this, "_ZN7S1589C43v63Ev");}
void  S1589C4 ::v64(){vfunc_called(this, "_ZN7S1589C43v64Ev");}
void  S1589C4 ::v65(){vfunc_called(this, "_ZN7S1589C43v65Ev");}
void  S1589C4 ::v66(){vfunc_called(this, "_ZN7S1589C43v66Ev");}
void  S1589C4 ::v67(){vfunc_called(this, "_ZN7S1589C43v67Ev");}
void  S1589C4 ::v68(){vfunc_called(this, "_ZN7S1589C43v68Ev");}
void  S1589C4 ::v69(){vfunc_called(this, "_ZN7S1589C43v69Ev");}
void  S1589C4 ::v70(){vfunc_called(this, "_ZN7S1589C43v70Ev");}
void  S1589C4 ::v71(){vfunc_called(this, "_ZN7S1589C43v71Ev");}
void  S1589C4 ::v72(){vfunc_called(this, "_ZN7S1589C43v72Ev");}
S1589C4 ::S1589C4(){ note_ctor("S1589C4", this);} // tgen

static void Test_S1589C4()
{
  extern Class_Descriptor cd_S1589C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S1589C4, buf);
    S1589C4 *dp, &lv = *(dp=new (buf) S1589C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S1589C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1589C4)");
    check_field_offset(lv, s1589c4f0, ABISELECT(8,4), "S1589C4.s1589c4f0");
    check_field_offset(lv, s1589c4f1, ABISELECT(16,8), "S1589C4.s1589c4f1");
    check_field_offset(lv, s1589c4f2, ABISELECT(24,16), "S1589C4.s1589c4f2");
    check_field_offset(lv, s1589c4f3, ABISELECT(56,32), "S1589C4.s1589c4f3");
    check_field_offset(lv, s1589c4f4, ABISELECT(64,40), "S1589C4.s1589c4f4");
    check_field_offset(lv, s1589c4f5, ABISELECT(72,44), "S1589C4.s1589c4f5");
    check_field_offset(lv, s1589c4f6, ABISELECT(80,52), "S1589C4.s1589c4f6");
    test_class_info(&lv, &cd_S1589C4);
    dp->~S1589C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1589C4(Test_S1589C4, "S1589C4", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S1589C4C1Ev();
extern void _ZN7S1589C4D1Ev();
Name_Map name_map_S1589C4[] = {
  NSPAIR(_ZN7S1589C4C1Ev),
  NSPAIR(_ZN7S1589C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1589C4[];
extern void _ZN7S1589C4D1Ev();
extern void _ZN7S1589C4D0Ev();
extern void _ZN7S1589C42v9Ev();
extern void _ZN7S1589C43v10Ev();
extern void _ZN7S1589C43v11Ev();
extern void _ZN7S1589C43v12Ev();
extern void _ZN7S1589C43v13Ev();
extern void _ZN7S1589C43v14Ev();
extern void _ZN7S1589C43v15Ev();
extern void _ZN7S1589C43v16Ev();
extern void _ZN7S1589C43v17Ev();
extern void _ZN7S1589C43v18Ev();
extern void _ZN7S1589C43v19Ev();
extern void _ZN7S1589C43v20Ev();
extern void _ZN7S1589C43v21Ev();
extern void _ZN7S1589C43v22Ev();
extern void _ZN7S1589C43v23Ev();
extern void _ZN7S1589C43v24Ev();
extern void _ZN7S1589C43v25Ev();
extern void _ZN7S1589C43v26Ev();
extern void _ZN7S1589C43v27Ev();
extern void _ZN7S1589C43v28Ev();
extern void _ZN7S1589C43v29Ev();
extern void _ZN7S1589C43v30Ev();
extern void _ZN7S1589C43v31Ev();
extern void _ZN7S1589C43v32Ev();
extern void _ZN7S1589C43v33Ev();
extern void _ZN7S1589C43v34Ev();
extern void _ZN7S1589C43v35Ev();
extern void _ZN7S1589C43v36Ev();
extern void _ZN7S1589C43v37Ev();
extern void _ZN7S1589C43v38Ev();
extern void _ZN7S1589C43v39Ev();
extern void _ZN7S1589C43v40Ev();
extern void _ZN7S1589C43v41Ev();
extern void _ZN7S1589C43v42Ev();
extern void _ZN7S1589C43v43Ev();
extern void _ZN7S1589C43v44Ev();
extern void _ZN7S1589C43v45Ev();
extern void _ZN7S1589C43v46Ev();
extern void _ZN7S1589C43v47Ev();
extern void _ZN7S1589C43v48Ev();
extern void _ZN7S1589C43v49Ev();
extern void _ZN7S1589C43v50Ev();
extern void _ZN7S1589C43v51Ev();
extern void _ZN7S1589C43v52Ev();
extern void _ZN7S1589C43v53Ev();
extern void _ZN7S1589C43v54Ev();
extern void _ZN7S1589C43v55Ev();
extern void _ZN7S1589C43v56Ev();
extern void _ZN7S1589C43v57Ev();
extern void _ZN7S1589C43v58Ev();
extern void _ZN7S1589C43v59Ev();
extern void _ZN7S1589C43v60Ev();
extern void _ZN7S1589C43v61Ev();
extern void _ZN7S1589C43v62Ev();
extern void _ZN7S1589C43v63Ev();
extern void _ZN7S1589C43v64Ev();
extern void _ZN7S1589C43v65Ev();
extern void _ZN7S1589C43v66Ev();
extern void _ZN7S1589C43v67Ev();
extern void _ZN7S1589C43v68Ev();
extern void _ZN7S1589C43v69Ev();
extern void _ZN7S1589C43v70Ev();
extern void _ZN7S1589C43v71Ev();
extern void _ZN7S1589C43v72Ev();
static  VTBL_ENTRY vtc_S1589C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1589C4[0]),
  (VTBL_ENTRY)&_ZN7S1589C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1589C4D0Ev,
  (VTBL_ENTRY)&_ZN7S1589C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v71Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v72Ev,
};
extern VTBL_ENTRY _ZTI7S1589C4[];
extern  VTBL_ENTRY _ZTV7S1589C4[];
Class_Descriptor cd_S1589C4 = {  "S1589C4", // class name
  0,0,//no base classes
  &(vtc_S1589C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S1589C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1589C4),68, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1589C6  {
  virtual void  v73(); // _ZN7S1589C63v73Ev
  virtual void  v74(); // _ZN7S1589C63v74Ev
  virtual void  v75(); // _ZN7S1589C63v75Ev
  virtual void  v76(); // _ZN7S1589C63v76Ev
  virtual void  v77(); // _ZN7S1589C63v77Ev
  virtual void  v78(); // _ZN7S1589C63v78Ev
  virtual void  v79(); // _ZN7S1589C63v79Ev
  virtual void  v80(); // _ZN7S1589C63v80Ev
  virtual void  v81(); // _ZN7S1589C63v81Ev
  virtual void  v82(); // _ZN7S1589C63v82Ev
  virtual void  v83(); // _ZN7S1589C63v83Ev
  virtual void  v84(); // _ZN7S1589C63v84Ev
  virtual void  v85(); // _ZN7S1589C63v85Ev
  virtual void  v86(); // _ZN7S1589C63v86Ev
  virtual void  v87(); // _ZN7S1589C63v87Ev
  virtual void  v88(); // _ZN7S1589C63v88Ev
  ~S1589C6(); // tgen
  S1589C6(); // tgen
};
//SIG(-1 S1589C6) C1{ v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16}


void  S1589C6 ::v73(){vfunc_called(this, "_ZN7S1589C63v73Ev");}
void  S1589C6 ::v74(){vfunc_called(this, "_ZN7S1589C63v74Ev");}
void  S1589C6 ::v75(){vfunc_called(this, "_ZN7S1589C63v75Ev");}
void  S1589C6 ::v76(){vfunc_called(this, "_ZN7S1589C63v76Ev");}
void  S1589C6 ::v77(){vfunc_called(this, "_ZN7S1589C63v77Ev");}
void  S1589C6 ::v78(){vfunc_called(this, "_ZN7S1589C63v78Ev");}
void  S1589C6 ::v79(){vfunc_called(this, "_ZN7S1589C63v79Ev");}
void  S1589C6 ::v80(){vfunc_called(this, "_ZN7S1589C63v80Ev");}
void  S1589C6 ::v81(){vfunc_called(this, "_ZN7S1589C63v81Ev");}
void  S1589C6 ::v82(){vfunc_called(this, "_ZN7S1589C63v82Ev");}
void  S1589C6 ::v83(){vfunc_called(this, "_ZN7S1589C63v83Ev");}
void  S1589C6 ::v84(){vfunc_called(this, "_ZN7S1589C63v84Ev");}
void  S1589C6 ::v85(){vfunc_called(this, "_ZN7S1589C63v85Ev");}
void  S1589C6 ::v86(){vfunc_called(this, "_ZN7S1589C63v86Ev");}
void  S1589C6 ::v87(){vfunc_called(this, "_ZN7S1589C63v87Ev");}
void  S1589C6 ::v88(){vfunc_called(this, "_ZN7S1589C63v88Ev");}
S1589C6 ::~S1589C6(){ note_dtor("S1589C6", this);} // tgen
S1589C6 ::S1589C6(){ note_ctor("S1589C6", this);} // tgen

static void Test_S1589C6()
{
  extern Class_Descriptor cd_S1589C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S1589C6, buf);
    S1589C6 *dp, &lv = *(dp=new (buf) S1589C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1589C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1589C6)");
    test_class_info(&lv, &cd_S1589C6);
    dp->~S1589C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1589C6(Test_S1589C6, "S1589C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S1589C6C1Ev();
extern void _ZN7S1589C6D1Ev();
Name_Map name_map_S1589C6[] = {
  NSPAIR(_ZN7S1589C6C1Ev),
  NSPAIR(_ZN7S1589C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1589C6[];
extern void _ZN7S1589C63v73Ev();
extern void _ZN7S1589C63v74Ev();
extern void _ZN7S1589C63v75Ev();
extern void _ZN7S1589C63v76Ev();
extern void _ZN7S1589C63v77Ev();
extern void _ZN7S1589C63v78Ev();
extern void _ZN7S1589C63v79Ev();
extern void _ZN7S1589C63v80Ev();
extern void _ZN7S1589C63v81Ev();
extern void _ZN7S1589C63v82Ev();
extern void _ZN7S1589C63v83Ev();
extern void _ZN7S1589C63v84Ev();
extern void _ZN7S1589C63v85Ev();
extern void _ZN7S1589C63v86Ev();
extern void _ZN7S1589C63v87Ev();
extern void _ZN7S1589C63v88Ev();
static  VTBL_ENTRY vtc_S1589C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1589C6[0]),
  (VTBL_ENTRY)&_ZN7S1589C63v73Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v74Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v75Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v76Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v77Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v78Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v79Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v80Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v81Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v82Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v83Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v84Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v85Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v86Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v87Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v88Ev,
};
extern VTBL_ENTRY _ZTI7S1589C6[];
extern  VTBL_ENTRY _ZTV7S1589C6[];
Class_Descriptor cd_S1589C6 = {  "S1589C6", // class name
  0,0,//no base classes
  &(vtc_S1589C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S1589C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1589C6),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1589C7  {
  virtual void  v89(); // _ZN7S1589C73v89Ev
  virtual void  v90(); // _ZN7S1589C73v90Ev
  virtual void  v91(); // _ZN7S1589C73v91Ev
  virtual void  v92(); // _ZN7S1589C73v92Ev
  virtual void  v93(); // _ZN7S1589C73v93Ev
  virtual void  v94(); // _ZN7S1589C73v94Ev
  virtual void  v95(); // _ZN7S1589C73v95Ev
  virtual void  v96(); // _ZN7S1589C73v96Ev
  virtual void  v97(); // _ZN7S1589C73v97Ev
  ~S1589C7(); // tgen
  S1589C7(); // tgen
};
//SIG(-1 S1589C7) C1{ v1 v2 v3 v4 v5 v6 v7 v8 v9}


void  S1589C7 ::v89(){vfunc_called(this, "_ZN7S1589C73v89Ev");}
void  S1589C7 ::v90(){vfunc_called(this, "_ZN7S1589C73v90Ev");}
void  S1589C7 ::v91(){vfunc_called(this, "_ZN7S1589C73v91Ev");}
void  S1589C7 ::v92(){vfunc_called(this, "_ZN7S1589C73v92Ev");}
void  S1589C7 ::v93(){vfunc_called(this, "_ZN7S1589C73v93Ev");}
void  S1589C7 ::v94(){vfunc_called(this, "_ZN7S1589C73v94Ev");}
void  S1589C7 ::v95(){vfunc_called(this, "_ZN7S1589C73v95Ev");}
void  S1589C7 ::v96(){vfunc_called(this, "_ZN7S1589C73v96Ev");}
void  S1589C7 ::v97(){vfunc_called(this, "_ZN7S1589C73v97Ev");}
S1589C7 ::~S1589C7(){ note_dtor("S1589C7", this);} // tgen
S1589C7 ::S1589C7(){ note_ctor("S1589C7", this);} // tgen

static void Test_S1589C7()
{
  extern Class_Descriptor cd_S1589C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S1589C7, buf);
    S1589C7 *dp, &lv = *(dp=new (buf) S1589C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1589C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1589C7)");
    test_class_info(&lv, &cd_S1589C7);
    dp->~S1589C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1589C7(Test_S1589C7, "S1589C7", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S1589C7C1Ev();
extern void _ZN7S1589C7D1Ev();
Name_Map name_map_S1589C7[] = {
  NSPAIR(_ZN7S1589C7C1Ev),
  NSPAIR(_ZN7S1589C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1589C7[];
extern void _ZN7S1589C73v89Ev();
extern void _ZN7S1589C73v90Ev();
extern void _ZN7S1589C73v91Ev();
extern void _ZN7S1589C73v92Ev();
extern void _ZN7S1589C73v93Ev();
extern void _ZN7S1589C73v94Ev();
extern void _ZN7S1589C73v95Ev();
extern void _ZN7S1589C73v96Ev();
extern void _ZN7S1589C73v97Ev();
static  VTBL_ENTRY vtc_S1589C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1589C7[0]),
  (VTBL_ENTRY)&_ZN7S1589C73v89Ev,
  (VTBL_ENTRY)&_ZN7S1589C73v90Ev,
  (VTBL_ENTRY)&_ZN7S1589C73v91Ev,
  (VTBL_ENTRY)&_ZN7S1589C73v92Ev,
  (VTBL_ENTRY)&_ZN7S1589C73v93Ev,
  (VTBL_ENTRY)&_ZN7S1589C73v94Ev,
  (VTBL_ENTRY)&_ZN7S1589C73v95Ev,
  (VTBL_ENTRY)&_ZN7S1589C73v96Ev,
  (VTBL_ENTRY)&_ZN7S1589C73v97Ev,
};
extern VTBL_ENTRY _ZTI7S1589C7[];
extern  VTBL_ENTRY _ZTV7S1589C7[];
Class_Descriptor cd_S1589C7 = {  "S1589C7", // class name
  0,0,//no base classes
  &(vtc_S1589C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S1589C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1589C7),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1589C3  : S1589C4 , S1589C6 , S1589C7 {
  void *s1589c3f0;
  ::S79C39_nt s1589c3f1;
  unsigned int s1589c3f2:1;
  unsigned int s1589c3f3:1;
  unsigned int s1589c3f4:1;
  unsigned int s1589c3f5:1;
  virtual  ~S1589C3(); // _ZN7S1589C3D1Ev
  virtual void  v98(); // _ZN7S1589C33v98Ev
  virtual void  v99(); // _ZN7S1589C33v99Ev
  virtual void  v100(); // _ZN7S1589C34v100Ev
  virtual void  v101(); // _ZN7S1589C34v101Ev
  virtual void  v102(); // _ZN7S1589C34v102Ev
  virtual void  v103(); // _ZN7S1589C34v103Ev
  virtual void  v104(); // _ZN7S1589C34v104Ev
  virtual void  v105(); // _ZN7S1589C34v105Ev
  virtual void  v106(); // _ZN7S1589C34v106Ev
  virtual void  v107(); // _ZN7S1589C34v107Ev
  virtual void  v108(); // _ZN7S1589C34v108Ev
  virtual void  v109(); // _ZN7S1589C34v109Ev
  virtual void  v110(); // _ZN7S1589C34v110Ev
  virtual void  v111(); // _ZN7S1589C34v111Ev
  virtual void  v112(); // _ZN7S1589C34v112Ev
  virtual void  v113(); // _ZN7S1589C34v113Ev
  virtual void  v114(); // _ZN7S1589C34v114Ev
  virtual void  v115(); // _ZN7S1589C34v115Ev
  virtual void  v116(); // _ZN7S1589C34v116Ev
  virtual void  v117(); // _ZN7S1589C34v117Ev
  virtual void  v118(); // _ZN7S1589C34v118Ev
  virtual void  v119(); // _ZN7S1589C34v119Ev
  virtual void  v120(); // _ZN7S1589C34v120Ev
  virtual void  v121(); // _ZN7S1589C34v121Ev
  S1589C3(); // tgen
};
//SIG(-1 S1589C3) C1{ BC2{ vd v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} BC4{ v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104} BC5{ v105 v106 v107 v108 v109 v110 v111 v112 v113} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 Fp FC6{ BC7{ BC8{ BC9{ m Fp Fi[2]}}}} Fi:1 Fi:1 Fi:1 Fi:1}


 S1589C3 ::~S1589C3(){ note_dtor("S1589C3", this);}
void  S1589C3 ::v98(){vfunc_called(this, "_ZN7S1589C33v98Ev");}
void  S1589C3 ::v99(){vfunc_called(this, "_ZN7S1589C33v99Ev");}
void  S1589C3 ::v100(){vfunc_called(this, "_ZN7S1589C34v100Ev");}
void  S1589C3 ::v101(){vfunc_called(this, "_ZN7S1589C34v101Ev");}
void  S1589C3 ::v102(){vfunc_called(this, "_ZN7S1589C34v102Ev");}
void  S1589C3 ::v103(){vfunc_called(this, "_ZN7S1589C34v103Ev");}
void  S1589C3 ::v104(){vfunc_called(this, "_ZN7S1589C34v104Ev");}
void  S1589C3 ::v105(){vfunc_called(this, "_ZN7S1589C34v105Ev");}
void  S1589C3 ::v106(){vfunc_called(this, "_ZN7S1589C34v106Ev");}
void  S1589C3 ::v107(){vfunc_called(this, "_ZN7S1589C34v107Ev");}
void  S1589C3 ::v108(){vfunc_called(this, "_ZN7S1589C34v108Ev");}
void  S1589C3 ::v109(){vfunc_called(this, "_ZN7S1589C34v109Ev");}
void  S1589C3 ::v110(){vfunc_called(this, "_ZN7S1589C34v110Ev");}
void  S1589C3 ::v111(){vfunc_called(this, "_ZN7S1589C34v111Ev");}
void  S1589C3 ::v112(){vfunc_called(this, "_ZN7S1589C34v112Ev");}
void  S1589C3 ::v113(){vfunc_called(this, "_ZN7S1589C34v113Ev");}
void  S1589C3 ::v114(){vfunc_called(this, "_ZN7S1589C34v114Ev");}
void  S1589C3 ::v115(){vfunc_called(this, "_ZN7S1589C34v115Ev");}
void  S1589C3 ::v116(){vfunc_called(this, "_ZN7S1589C34v116Ev");}
void  S1589C3 ::v117(){vfunc_called(this, "_ZN7S1589C34v117Ev");}
void  S1589C3 ::v118(){vfunc_called(this, "_ZN7S1589C34v118Ev");}
void  S1589C3 ::v119(){vfunc_called(this, "_ZN7S1589C34v119Ev");}
void  S1589C3 ::v120(){vfunc_called(this, "_ZN7S1589C34v120Ev");}
void  S1589C3 ::v121(){vfunc_called(this, "_ZN7S1589C34v121Ev");}
S1589C3 ::S1589C3(){ note_ctor("S1589C3", this);} // tgen

static void Test_S1589C3()
{
  extern Class_Descriptor cd_S1589C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,23)];
    init_test(&cd_S1589C3, buf);
    S1589C3 *dp, &lv = *(dp=new (buf) S1589C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,88), "sizeof(S1589C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1589C3)");
    check_base_class_offset(lv, (S1589C4*), 0, "S1589C3");
    check_base_class_offset(lv, (S1589C6*), ABISELECT(96,60), "S1589C3");
    check_base_class_offset(lv, (S1589C7*), ABISELECT(104,64), "S1589C3");
    check_field_offset(lv, s1589c3f0, ABISELECT(112,68), "S1589C3.s1589c3f0");
    check_field_offset(lv, s1589c3f1, ABISELECT(120,72), "S1589C3.s1589c3f1");
    set_bf_and_test(lv, s1589c3f2, ABISELECT(136,84), 0, 1, 1, "S1589C3");
    set_bf_and_test(lv, s1589c3f3, ABISELECT(136,84), 1, 1, 1, "S1589C3");
    set_bf_and_test(lv, s1589c3f4, ABISELECT(136,84), 2, 1, 1, "S1589C3");
    set_bf_and_test(lv, s1589c3f5, ABISELECT(136,84), 3, 1, 1, "S1589C3");
    test_class_info(&lv, &cd_S1589C3);
    dp->~S1589C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1589C3(Test_S1589C3, "S1589C3", ABISELECT(144,88));

#else // __cplusplus

extern void _ZN7S1589C3C1Ev();
extern void _ZN7S1589C3D1Ev();
Name_Map name_map_S1589C3[] = {
  NSPAIR(_ZN7S1589C3C1Ev),
  NSPAIR(_ZN7S1589C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1589C4;
extern VTBL_ENTRY _ZTI7S1589C4[];
extern  VTBL_ENTRY _ZTV7S1589C4[];
extern Class_Descriptor cd_S1589C6;
extern VTBL_ENTRY _ZTI7S1589C6[];
extern  VTBL_ENTRY _ZTV7S1589C6[];
extern Class_Descriptor cd_S1589C7;
extern VTBL_ENTRY _ZTI7S1589C7[];
extern  VTBL_ENTRY _ZTV7S1589C7[];
static Base_Class bases_S1589C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1589C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1589C6,    ABISELECT(96,60), //bcp->offset
    92, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1589C7,    ABISELECT(104,64), //bcp->offset
    110, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1589C3[];
extern void _ZN7S1589C3D1Ev();
extern void _ZN7S1589C3D0Ev();
extern void _ZN7S1589C42v9Ev();
extern void _ZN7S1589C43v10Ev();
extern void _ZN7S1589C43v11Ev();
extern void _ZN7S1589C43v12Ev();
extern void _ZN7S1589C43v13Ev();
extern void _ZN7S1589C43v14Ev();
extern void _ZN7S1589C43v15Ev();
extern void _ZN7S1589C43v16Ev();
extern void _ZN7S1589C43v17Ev();
extern void _ZN7S1589C43v18Ev();
extern void _ZN7S1589C43v19Ev();
extern void _ZN7S1589C43v20Ev();
extern void _ZN7S1589C43v21Ev();
extern void _ZN7S1589C43v22Ev();
extern void _ZN7S1589C43v23Ev();
extern void _ZN7S1589C43v24Ev();
extern void _ZN7S1589C43v25Ev();
extern void _ZN7S1589C43v26Ev();
extern void _ZN7S1589C43v27Ev();
extern void _ZN7S1589C43v28Ev();
extern void _ZN7S1589C43v29Ev();
extern void _ZN7S1589C43v30Ev();
extern void _ZN7S1589C43v31Ev();
extern void _ZN7S1589C43v32Ev();
extern void _ZN7S1589C43v33Ev();
extern void _ZN7S1589C43v34Ev();
extern void _ZN7S1589C43v35Ev();
extern void _ZN7S1589C43v36Ev();
extern void _ZN7S1589C43v37Ev();
extern void _ZN7S1589C43v38Ev();
extern void _ZN7S1589C43v39Ev();
extern void _ZN7S1589C43v40Ev();
extern void _ZN7S1589C43v41Ev();
extern void _ZN7S1589C43v42Ev();
extern void _ZN7S1589C43v43Ev();
extern void _ZN7S1589C43v44Ev();
extern void _ZN7S1589C43v45Ev();
extern void _ZN7S1589C43v46Ev();
extern void _ZN7S1589C43v47Ev();
extern void _ZN7S1589C43v48Ev();
extern void _ZN7S1589C43v49Ev();
extern void _ZN7S1589C43v50Ev();
extern void _ZN7S1589C43v51Ev();
extern void _ZN7S1589C43v52Ev();
extern void _ZN7S1589C43v53Ev();
extern void _ZN7S1589C43v54Ev();
extern void _ZN7S1589C43v55Ev();
extern void _ZN7S1589C43v56Ev();
extern void _ZN7S1589C43v57Ev();
extern void _ZN7S1589C43v58Ev();
extern void _ZN7S1589C43v59Ev();
extern void _ZN7S1589C43v60Ev();
extern void _ZN7S1589C43v61Ev();
extern void _ZN7S1589C43v62Ev();
extern void _ZN7S1589C43v63Ev();
extern void _ZN7S1589C43v64Ev();
extern void _ZN7S1589C43v65Ev();
extern void _ZN7S1589C43v66Ev();
extern void _ZN7S1589C43v67Ev();
extern void _ZN7S1589C43v68Ev();
extern void _ZN7S1589C43v69Ev();
extern void _ZN7S1589C43v70Ev();
extern void _ZN7S1589C43v71Ev();
extern void _ZN7S1589C43v72Ev();
extern void _ZN7S1589C33v98Ev();
extern void _ZN7S1589C33v99Ev();
extern void _ZN7S1589C34v100Ev();
extern void _ZN7S1589C34v101Ev();
extern void _ZN7S1589C34v102Ev();
extern void _ZN7S1589C34v103Ev();
extern void _ZN7S1589C34v104Ev();
extern void _ZN7S1589C34v105Ev();
extern void _ZN7S1589C34v106Ev();
extern void _ZN7S1589C34v107Ev();
extern void _ZN7S1589C34v108Ev();
extern void _ZN7S1589C34v109Ev();
extern void _ZN7S1589C34v110Ev();
extern void _ZN7S1589C34v111Ev();
extern void _ZN7S1589C34v112Ev();
extern void _ZN7S1589C34v113Ev();
extern void _ZN7S1589C34v114Ev();
extern void _ZN7S1589C34v115Ev();
extern void _ZN7S1589C34v116Ev();
extern void _ZN7S1589C34v117Ev();
extern void _ZN7S1589C34v118Ev();
extern void _ZN7S1589C34v119Ev();
extern void _ZN7S1589C34v120Ev();
extern void _ZN7S1589C34v121Ev();
extern void _ZN7S1589C63v73Ev();
extern void _ZN7S1589C63v74Ev();
extern void _ZN7S1589C63v75Ev();
extern void _ZN7S1589C63v76Ev();
extern void _ZN7S1589C63v77Ev();
extern void _ZN7S1589C63v78Ev();
extern void _ZN7S1589C63v79Ev();
extern void _ZN7S1589C63v80Ev();
extern void _ZN7S1589C63v81Ev();
extern void _ZN7S1589C63v82Ev();
extern void _ZN7S1589C63v83Ev();
extern void _ZN7S1589C63v84Ev();
extern void _ZN7S1589C63v85Ev();
extern void _ZN7S1589C63v86Ev();
extern void _ZN7S1589C63v87Ev();
extern void _ZN7S1589C63v88Ev();
extern void _ZN7S1589C73v89Ev();
extern void _ZN7S1589C73v90Ev();
extern void _ZN7S1589C73v91Ev();
extern void _ZN7S1589C73v92Ev();
extern void _ZN7S1589C73v93Ev();
extern void _ZN7S1589C73v94Ev();
extern void _ZN7S1589C73v95Ev();
extern void _ZN7S1589C73v96Ev();
extern void _ZN7S1589C73v97Ev();
static  VTBL_ENTRY vtc_S1589C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1589C3[0]),
  (VTBL_ENTRY)&_ZN7S1589C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1589C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1589C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v71Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v72Ev,
  (VTBL_ENTRY)&_ZN7S1589C33v98Ev,
  (VTBL_ENTRY)&_ZN7S1589C33v99Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v100Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v101Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v102Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v103Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v104Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v105Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v106Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v107Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v108Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v119Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v120Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v121Ev,
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S1589C3[0]),
  (VTBL_ENTRY)&_ZN7S1589C63v73Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v74Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v75Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v76Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v77Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v78Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v79Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v80Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v81Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v82Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v83Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v84Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v85Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v86Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v87Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v88Ev,
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S1589C3[0]),
  (VTBL_ENTRY)&_ZN7S1589C73v89Ev,
  (VTBL_ENTRY)&_ZN7S1589C73v90Ev,
  (VTBL_ENTRY)&_ZN7S1589C73v91Ev,
  (VTBL_ENTRY)&_ZN7S1589C73v92Ev,
  (VTBL_ENTRY)&_ZN7S1589C73v93Ev,
  (VTBL_ENTRY)&_ZN7S1589C73v94Ev,
  (VTBL_ENTRY)&_ZN7S1589C73v95Ev,
  (VTBL_ENTRY)&_ZN7S1589C73v96Ev,
  (VTBL_ENTRY)&_ZN7S1589C73v97Ev,
};
extern VTBL_ENTRY _ZTI7S1589C3[];
extern  VTBL_ENTRY _ZTV7S1589C3[];
Class_Descriptor cd_S1589C3 = {  "S1589C3", // class name
  bases_S1589C3, 3,
  &(vtc_S1589C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,88), // object size
  NSPAIRA(_ZTI7S1589C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S1589C3),121, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1589C2  : S1589C3 {
  ::S3262C11_nt s1589c2f0;
  int s1589c2f1;
  virtual  ~S1589C2(); // _ZN7S1589C2D1Ev
  virtual void  v122(); // _ZN7S1589C24v122Ev
  virtual void  v123(); // _ZN7S1589C24v123Ev
  virtual void  v124(); // _ZN7S1589C24v124Ev
  virtual void  v125(); // _ZN7S1589C24v125Ev
  virtual void  v126(); // _ZN7S1589C24v126Ev
  virtual void  v127(); // _ZN7S1589C24v127Ev
  virtual void  v128(); // _ZN7S1589C24v128Ev
  virtual void  v129(); // _ZN7S1589C24v129Ev
  virtual void  v130(); // _ZN7S1589C24v130Ev
  virtual void  v131(); // _ZN7S1589C24v131Ev
  virtual void  v132(); // _ZN7S1589C24v132Ev
  virtual void  v133(); // _ZN7S1589C24v133Ev
  virtual void  v134(); // _ZN7S1589C24v134Ev
  virtual void  v135(); // _ZN7S1589C24v135Ev
  virtual void  v136(); // _ZN7S1589C24v136Ev
  virtual void  v137(); // _ZN7S1589C24v137Ev
  virtual void  v138(); // _ZN7S1589C24v138Ev
  virtual void  v139(); // _ZN7S1589C24v139Ev
  virtual void  v140(); // _ZN7S1589C24v140Ev
  virtual void  v141(); // _ZN7S1589C24v141Ev
  virtual void  v142(); // _ZN7S1589C24v142Ev
  virtual void  v143(); // _ZN7S1589C24v143Ev
  virtual void  v144(); // _ZN7S1589C24v144Ev
  virtual void  v145(); // _ZN7S1589C24v145Ev
  virtual void  v146(); // _ZN7S1589C24v146Ev
  virtual void  v147(); // _ZN7S1589C24v147Ev
  S1589C2(); // tgen
};
//SIG(-1 S1589C2) C1{ BC2{ BC3{ vd v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} BC5{ v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106} BC6{ v107 v108 v109 v110 v111 v112 v113 v114 v115} vd v116 v117 v118 v119 v120 v121 v122 v123 v124 v125 v126 v127 v128 v129 v130 v131 v132 v133 v134 v135 v136 v137 v138 v139 Fp FC7{ BC8{ BC9{ BC10{ m Fp Fi[2]}}}} Fi:1 Fi:1 Fi:1 Fi:1} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 FC11{ m FC12{ BC13{ BC10}} Fc} Fi}


 S1589C2 ::~S1589C2(){ note_dtor("S1589C2", this);}
void  S1589C2 ::v122(){vfunc_called(this, "_ZN7S1589C24v122Ev");}
void  S1589C2 ::v123(){vfunc_called(this, "_ZN7S1589C24v123Ev");}
void  S1589C2 ::v124(){vfunc_called(this, "_ZN7S1589C24v124Ev");}
void  S1589C2 ::v125(){vfunc_called(this, "_ZN7S1589C24v125Ev");}
void  S1589C2 ::v126(){vfunc_called(this, "_ZN7S1589C24v126Ev");}
void  S1589C2 ::v127(){vfunc_called(this, "_ZN7S1589C24v127Ev");}
void  S1589C2 ::v128(){vfunc_called(this, "_ZN7S1589C24v128Ev");}
void  S1589C2 ::v129(){vfunc_called(this, "_ZN7S1589C24v129Ev");}
void  S1589C2 ::v130(){vfunc_called(this, "_ZN7S1589C24v130Ev");}
void  S1589C2 ::v131(){vfunc_called(this, "_ZN7S1589C24v131Ev");}
void  S1589C2 ::v132(){vfunc_called(this, "_ZN7S1589C24v132Ev");}
void  S1589C2 ::v133(){vfunc_called(this, "_ZN7S1589C24v133Ev");}
void  S1589C2 ::v134(){vfunc_called(this, "_ZN7S1589C24v134Ev");}
void  S1589C2 ::v135(){vfunc_called(this, "_ZN7S1589C24v135Ev");}
void  S1589C2 ::v136(){vfunc_called(this, "_ZN7S1589C24v136Ev");}
void  S1589C2 ::v137(){vfunc_called(this, "_ZN7S1589C24v137Ev");}
void  S1589C2 ::v138(){vfunc_called(this, "_ZN7S1589C24v138Ev");}
void  S1589C2 ::v139(){vfunc_called(this, "_ZN7S1589C24v139Ev");}
void  S1589C2 ::v140(){vfunc_called(this, "_ZN7S1589C24v140Ev");}
void  S1589C2 ::v141(){vfunc_called(this, "_ZN7S1589C24v141Ev");}
void  S1589C2 ::v142(){vfunc_called(this, "_ZN7S1589C24v142Ev");}
void  S1589C2 ::v143(){vfunc_called(this, "_ZN7S1589C24v143Ev");}
void  S1589C2 ::v144(){vfunc_called(this, "_ZN7S1589C24v144Ev");}
void  S1589C2 ::v145(){vfunc_called(this, "_ZN7S1589C24v145Ev");}
void  S1589C2 ::v146(){vfunc_called(this, "_ZN7S1589C24v146Ev");}
void  S1589C2 ::v147(){vfunc_called(this, "_ZN7S1589C24v147Ev");}
S1589C2 ::S1589C2(){ note_ctor("S1589C2", this);} // tgen

static void Test_S1589C2()
{
  extern Class_Descriptor cd_S1589C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,28)];
    init_test(&cd_S1589C2, buf);
    S1589C2 *dp, &lv = *(dp=new (buf) S1589C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,108), "sizeof(S1589C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1589C2)");
    check_base_class_offset(lv, (S1589C4*)(S1589C3*), 0, "S1589C2");
    check_base_class_offset(lv, (S1589C6*)(S1589C3*), ABISELECT(96,60), "S1589C2");
    check_base_class_offset(lv, (S1589C7*)(S1589C3*), ABISELECT(104,64), "S1589C2");
    check_base_class_offset(lv, (S1589C3*), 0, "S1589C2");
    check_field_offset(lv, s1589c2f0, ABISELECT(144,88), "S1589C2.s1589c2f0");
    check_field_offset(lv, s1589c2f1, ABISELECT(168,104), "S1589C2.s1589c2f1");
    test_class_info(&lv, &cd_S1589C2);
    dp->~S1589C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1589C2(Test_S1589C2, "S1589C2", ABISELECT(176,108));

#else // __cplusplus

extern void _ZN7S1589C2C1Ev();
extern void _ZN7S1589C2D1Ev();
Name_Map name_map_S1589C2[] = {
  NSPAIR(_ZN7S1589C2C1Ev),
  NSPAIR(_ZN7S1589C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1589C4;
extern VTBL_ENTRY _ZTI7S1589C4[];
extern  VTBL_ENTRY _ZTV7S1589C4[];
extern Class_Descriptor cd_S1589C6;
extern VTBL_ENTRY _ZTI7S1589C6[];
extern  VTBL_ENTRY _ZTV7S1589C6[];
extern Class_Descriptor cd_S1589C7;
extern VTBL_ENTRY _ZTI7S1589C7[];
extern  VTBL_ENTRY _ZTV7S1589C7[];
extern Class_Descriptor cd_S1589C3;
extern VTBL_ENTRY _ZTI7S1589C3[];
extern  VTBL_ENTRY _ZTV7S1589C3[];
static Base_Class bases_S1589C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1589C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1589C6,    ABISELECT(96,60), //bcp->offset
    118, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1589C7,    ABISELECT(104,64), //bcp->offset
    136, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1589C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1589C2[];
extern void _ZN7S1589C2D1Ev();
extern void _ZN7S1589C2D0Ev();
extern void _ZN7S1589C42v9Ev();
extern void _ZN7S1589C43v10Ev();
extern void _ZN7S1589C43v11Ev();
extern void _ZN7S1589C43v12Ev();
extern void _ZN7S1589C43v13Ev();
extern void _ZN7S1589C43v14Ev();
extern void _ZN7S1589C43v15Ev();
extern void _ZN7S1589C43v16Ev();
extern void _ZN7S1589C43v17Ev();
extern void _ZN7S1589C43v18Ev();
extern void _ZN7S1589C43v19Ev();
extern void _ZN7S1589C43v20Ev();
extern void _ZN7S1589C43v21Ev();
extern void _ZN7S1589C43v22Ev();
extern void _ZN7S1589C43v23Ev();
extern void _ZN7S1589C43v24Ev();
extern void _ZN7S1589C43v25Ev();
extern void _ZN7S1589C43v26Ev();
extern void _ZN7S1589C43v27Ev();
extern void _ZN7S1589C43v28Ev();
extern void _ZN7S1589C43v29Ev();
extern void _ZN7S1589C43v30Ev();
extern void _ZN7S1589C43v31Ev();
extern void _ZN7S1589C43v32Ev();
extern void _ZN7S1589C43v33Ev();
extern void _ZN7S1589C43v34Ev();
extern void _ZN7S1589C43v35Ev();
extern void _ZN7S1589C43v36Ev();
extern void _ZN7S1589C43v37Ev();
extern void _ZN7S1589C43v38Ev();
extern void _ZN7S1589C43v39Ev();
extern void _ZN7S1589C43v40Ev();
extern void _ZN7S1589C43v41Ev();
extern void _ZN7S1589C43v42Ev();
extern void _ZN7S1589C43v43Ev();
extern void _ZN7S1589C43v44Ev();
extern void _ZN7S1589C43v45Ev();
extern void _ZN7S1589C43v46Ev();
extern void _ZN7S1589C43v47Ev();
extern void _ZN7S1589C43v48Ev();
extern void _ZN7S1589C43v49Ev();
extern void _ZN7S1589C43v50Ev();
extern void _ZN7S1589C43v51Ev();
extern void _ZN7S1589C43v52Ev();
extern void _ZN7S1589C43v53Ev();
extern void _ZN7S1589C43v54Ev();
extern void _ZN7S1589C43v55Ev();
extern void _ZN7S1589C43v56Ev();
extern void _ZN7S1589C43v57Ev();
extern void _ZN7S1589C43v58Ev();
extern void _ZN7S1589C43v59Ev();
extern void _ZN7S1589C43v60Ev();
extern void _ZN7S1589C43v61Ev();
extern void _ZN7S1589C43v62Ev();
extern void _ZN7S1589C43v63Ev();
extern void _ZN7S1589C43v64Ev();
extern void _ZN7S1589C43v65Ev();
extern void _ZN7S1589C43v66Ev();
extern void _ZN7S1589C43v67Ev();
extern void _ZN7S1589C43v68Ev();
extern void _ZN7S1589C43v69Ev();
extern void _ZN7S1589C43v70Ev();
extern void _ZN7S1589C43v71Ev();
extern void _ZN7S1589C43v72Ev();
extern void _ZN7S1589C33v98Ev();
extern void _ZN7S1589C33v99Ev();
extern void _ZN7S1589C34v100Ev();
extern void _ZN7S1589C34v101Ev();
extern void _ZN7S1589C34v102Ev();
extern void _ZN7S1589C34v103Ev();
extern void _ZN7S1589C34v104Ev();
extern void _ZN7S1589C34v105Ev();
extern void _ZN7S1589C34v106Ev();
extern void _ZN7S1589C34v107Ev();
extern void _ZN7S1589C34v108Ev();
extern void _ZN7S1589C34v109Ev();
extern void _ZN7S1589C34v110Ev();
extern void _ZN7S1589C34v111Ev();
extern void _ZN7S1589C34v112Ev();
extern void _ZN7S1589C34v113Ev();
extern void _ZN7S1589C34v114Ev();
extern void _ZN7S1589C34v115Ev();
extern void _ZN7S1589C34v116Ev();
extern void _ZN7S1589C34v117Ev();
extern void _ZN7S1589C34v118Ev();
extern void _ZN7S1589C34v119Ev();
extern void _ZN7S1589C34v120Ev();
extern void _ZN7S1589C34v121Ev();
extern void _ZN7S1589C24v122Ev();
extern void _ZN7S1589C24v123Ev();
extern void _ZN7S1589C24v124Ev();
extern void _ZN7S1589C24v125Ev();
extern void _ZN7S1589C24v126Ev();
extern void _ZN7S1589C24v127Ev();
extern void _ZN7S1589C24v128Ev();
extern void _ZN7S1589C24v129Ev();
extern void _ZN7S1589C24v130Ev();
extern void _ZN7S1589C24v131Ev();
extern void _ZN7S1589C24v132Ev();
extern void _ZN7S1589C24v133Ev();
extern void _ZN7S1589C24v134Ev();
extern void _ZN7S1589C24v135Ev();
extern void _ZN7S1589C24v136Ev();
extern void _ZN7S1589C24v137Ev();
extern void _ZN7S1589C24v138Ev();
extern void _ZN7S1589C24v139Ev();
extern void _ZN7S1589C24v140Ev();
extern void _ZN7S1589C24v141Ev();
extern void _ZN7S1589C24v142Ev();
extern void _ZN7S1589C24v143Ev();
extern void _ZN7S1589C24v144Ev();
extern void _ZN7S1589C24v145Ev();
extern void _ZN7S1589C24v146Ev();
extern void _ZN7S1589C24v147Ev();
extern void _ZN7S1589C63v73Ev();
extern void _ZN7S1589C63v74Ev();
extern void _ZN7S1589C63v75Ev();
extern void _ZN7S1589C63v76Ev();
extern void _ZN7S1589C63v77Ev();
extern void _ZN7S1589C63v78Ev();
extern void _ZN7S1589C63v79Ev();
extern void _ZN7S1589C63v80Ev();
extern void _ZN7S1589C63v81Ev();
extern void _ZN7S1589C63v82Ev();
extern void _ZN7S1589C63v83Ev();
extern void _ZN7S1589C63v84Ev();
extern void _ZN7S1589C63v85Ev();
extern void _ZN7S1589C63v86Ev();
extern void _ZN7S1589C63v87Ev();
extern void _ZN7S1589C63v88Ev();
extern void _ZN7S1589C73v89Ev();
extern void _ZN7S1589C73v90Ev();
extern void _ZN7S1589C73v91Ev();
extern void _ZN7S1589C73v92Ev();
extern void _ZN7S1589C73v93Ev();
extern void _ZN7S1589C73v94Ev();
extern void _ZN7S1589C73v95Ev();
extern void _ZN7S1589C73v96Ev();
extern void _ZN7S1589C73v97Ev();
static  VTBL_ENTRY vtc_S1589C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1589C2[0]),
  (VTBL_ENTRY)&_ZN7S1589C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1589C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1589C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v71Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v72Ev,
  (VTBL_ENTRY)&_ZN7S1589C33v98Ev,
  (VTBL_ENTRY)&_ZN7S1589C33v99Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v100Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v101Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v102Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v103Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v104Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v105Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v106Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v107Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v108Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v119Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v120Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v121Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v122Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v123Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v124Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v125Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v126Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v127Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v128Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v129Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v130Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v131Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v132Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v133Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v134Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v135Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v136Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v137Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v138Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v139Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v140Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v141Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v142Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v143Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v144Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v145Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v146Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v147Ev,
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S1589C2[0]),
  (VTBL_ENTRY)&_ZN7S1589C63v73Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v74Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v75Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v76Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v77Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v78Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v79Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v80Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v81Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v82Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v83Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v84Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v85Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v86Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v87Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v88Ev,
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S1589C2[0]),
  (VTBL_ENTRY)&_ZN7S1589C73v89Ev,
  (VTBL_ENTRY)&_ZN7S1589C73v90Ev,
  (VTBL_ENTRY)&_ZN7S1589C73v91Ev,
  (VTBL_ENTRY)&_ZN7S1589C73v92Ev,
  (VTBL_ENTRY)&_ZN7S1589C73v93Ev,
  (VTBL_ENTRY)&_ZN7S1589C73v94Ev,
  (VTBL_ENTRY)&_ZN7S1589C73v95Ev,
  (VTBL_ENTRY)&_ZN7S1589C73v96Ev,
  (VTBL_ENTRY)&_ZN7S1589C73v97Ev,
};
extern VTBL_ENTRY _ZTI7S1589C2[];
extern  VTBL_ENTRY _ZTV7S1589C2[];
Class_Descriptor cd_S1589C2 = {  "S1589C2", // class name
  bases_S1589C2, 4,
  &(vtc_S1589C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(176,108), // object size
  NSPAIRA(_ZTI7S1589C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1589C2),147, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  4, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1589C1  : S1589C2 {
  virtual  ~S1589C1(); // _ZN7S1589C1D1Ev
  virtual void  v1(); // _ZN7S1589C12v1Ev
  virtual void  v2(); // _ZN7S1589C12v2Ev
  virtual void  v3(); // _ZN7S1589C12v3Ev
  virtual void  v4(); // _ZN7S1589C12v4Ev
  virtual void  v5(); // _ZN7S1589C12v5Ev
  virtual void  v6(); // _ZN7S1589C12v6Ev
  virtual void  v7(); // _ZN7S1589C12v7Ev
  virtual void  v8(); // _ZN7S1589C12v8Ev
  S1589C1(); // tgen
};
//SIG(1 S1589C1) C1{ BC2{ BC3{ BC4{ vd v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 Fi FL Fp[4] Fi[2] Fp FC5{ m Fi[2]} Fp[2]} BC6{ v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88} BC7{ v89 v90 v91 v92 v93 v94 v95 v96 v97} vd v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 v112 v113 v114 v115 v116 v117 v118 v119 v120 v121 Fp FC8{ BC9{ BC10{ BC11{ m Fp Fi[2]}}}} Fi:1 Fi:1 Fi:1 Fi:1} vd v122 v123 v124 v125 v126 v127 v128 v129 v130 v131 v132 v133 v134 v135 v136 v137 v138 v139 v140 v141 v142 v143 v144 v145 v146 v147 FC12{ m FC13{ BC14{ BC11}} Fc} Fi} vd v1 v2 v3 v4 v5 v6 v7 v8}


 S1589C1 ::~S1589C1(){ note_dtor("S1589C1", this);}
void  S1589C1 ::v1(){vfunc_called(this, "_ZN7S1589C12v1Ev");}
void  S1589C1 ::v2(){vfunc_called(this, "_ZN7S1589C12v2Ev");}
void  S1589C1 ::v3(){vfunc_called(this, "_ZN7S1589C12v3Ev");}
void  S1589C1 ::v4(){vfunc_called(this, "_ZN7S1589C12v4Ev");}
void  S1589C1 ::v5(){vfunc_called(this, "_ZN7S1589C12v5Ev");}
void  S1589C1 ::v6(){vfunc_called(this, "_ZN7S1589C12v6Ev");}
void  S1589C1 ::v7(){vfunc_called(this, "_ZN7S1589C12v7Ev");}
void  S1589C1 ::v8(){vfunc_called(this, "_ZN7S1589C12v8Ev");}
S1589C1 ::S1589C1(){ note_ctor("S1589C1", this);} // tgen

static void Test_S1589C1()
{
  extern Class_Descriptor cd_S1589C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,28)];
    init_test(&cd_S1589C1, buf);
    S1589C1 *dp, &lv = *(dp=new (buf) S1589C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,108), "sizeof(S1589C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1589C1)");
    check_base_class_offset(lv, (S1589C4*)(S1589C3*)(S1589C2*), 0, "S1589C1");
    check_base_class_offset(lv, (S1589C6*)(S1589C3*)(S1589C2*), ABISELECT(96,60), "S1589C1");
    check_base_class_offset(lv, (S1589C7*)(S1589C3*)(S1589C2*), ABISELECT(104,64), "S1589C1");
    check_base_class_offset(lv, (S1589C3*)(S1589C2*), 0, "S1589C1");
    check_base_class_offset(lv, (S1589C2*), 0, "S1589C1");
    test_class_info(&lv, &cd_S1589C1);
    dp->~S1589C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1589C1(Test_S1589C1, "S1589C1", ABISELECT(176,108));

#else // __cplusplus

extern void _ZN7S1589C1C1Ev();
extern void _ZN7S1589C1D1Ev();
Name_Map name_map_S1589C1[] = {
  NSPAIR(_ZN7S1589C1C1Ev),
  NSPAIR(_ZN7S1589C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1589C4;
extern VTBL_ENTRY _ZTI7S1589C4[];
extern  VTBL_ENTRY _ZTV7S1589C4[];
extern Class_Descriptor cd_S1589C6;
extern VTBL_ENTRY _ZTI7S1589C6[];
extern  VTBL_ENTRY _ZTV7S1589C6[];
extern Class_Descriptor cd_S1589C7;
extern VTBL_ENTRY _ZTI7S1589C7[];
extern  VTBL_ENTRY _ZTV7S1589C7[];
extern Class_Descriptor cd_S1589C3;
extern VTBL_ENTRY _ZTI7S1589C3[];
extern  VTBL_ENTRY _ZTV7S1589C3[];
extern Class_Descriptor cd_S1589C2;
extern VTBL_ENTRY _ZTI7S1589C2[];
extern  VTBL_ENTRY _ZTV7S1589C2[];
static Base_Class bases_S1589C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1589C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1589C6,    ABISELECT(96,60), //bcp->offset
    126, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1589C7,    ABISELECT(104,64), //bcp->offset
    144, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1589C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S1589C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1589C1[];
extern void _ZN7S1589C1D1Ev();
extern void _ZN7S1589C1D0Ev();
extern void _ZN7S1589C42v9Ev();
extern void _ZN7S1589C43v10Ev();
extern void _ZN7S1589C43v11Ev();
extern void _ZN7S1589C43v12Ev();
extern void _ZN7S1589C43v13Ev();
extern void _ZN7S1589C43v14Ev();
extern void _ZN7S1589C43v15Ev();
extern void _ZN7S1589C43v16Ev();
extern void _ZN7S1589C43v17Ev();
extern void _ZN7S1589C43v18Ev();
extern void _ZN7S1589C43v19Ev();
extern void _ZN7S1589C43v20Ev();
extern void _ZN7S1589C43v21Ev();
extern void _ZN7S1589C43v22Ev();
extern void _ZN7S1589C43v23Ev();
extern void _ZN7S1589C43v24Ev();
extern void _ZN7S1589C43v25Ev();
extern void _ZN7S1589C43v26Ev();
extern void _ZN7S1589C43v27Ev();
extern void _ZN7S1589C43v28Ev();
extern void _ZN7S1589C43v29Ev();
extern void _ZN7S1589C43v30Ev();
extern void _ZN7S1589C43v31Ev();
extern void _ZN7S1589C43v32Ev();
extern void _ZN7S1589C43v33Ev();
extern void _ZN7S1589C43v34Ev();
extern void _ZN7S1589C43v35Ev();
extern void _ZN7S1589C43v36Ev();
extern void _ZN7S1589C43v37Ev();
extern void _ZN7S1589C43v38Ev();
extern void _ZN7S1589C43v39Ev();
extern void _ZN7S1589C43v40Ev();
extern void _ZN7S1589C43v41Ev();
extern void _ZN7S1589C43v42Ev();
extern void _ZN7S1589C43v43Ev();
extern void _ZN7S1589C43v44Ev();
extern void _ZN7S1589C43v45Ev();
extern void _ZN7S1589C43v46Ev();
extern void _ZN7S1589C43v47Ev();
extern void _ZN7S1589C43v48Ev();
extern void _ZN7S1589C43v49Ev();
extern void _ZN7S1589C43v50Ev();
extern void _ZN7S1589C43v51Ev();
extern void _ZN7S1589C43v52Ev();
extern void _ZN7S1589C43v53Ev();
extern void _ZN7S1589C43v54Ev();
extern void _ZN7S1589C43v55Ev();
extern void _ZN7S1589C43v56Ev();
extern void _ZN7S1589C43v57Ev();
extern void _ZN7S1589C43v58Ev();
extern void _ZN7S1589C43v59Ev();
extern void _ZN7S1589C43v60Ev();
extern void _ZN7S1589C43v61Ev();
extern void _ZN7S1589C43v62Ev();
extern void _ZN7S1589C43v63Ev();
extern void _ZN7S1589C43v64Ev();
extern void _ZN7S1589C43v65Ev();
extern void _ZN7S1589C43v66Ev();
extern void _ZN7S1589C43v67Ev();
extern void _ZN7S1589C43v68Ev();
extern void _ZN7S1589C43v69Ev();
extern void _ZN7S1589C43v70Ev();
extern void _ZN7S1589C43v71Ev();
extern void _ZN7S1589C43v72Ev();
extern void _ZN7S1589C33v98Ev();
extern void _ZN7S1589C33v99Ev();
extern void _ZN7S1589C34v100Ev();
extern void _ZN7S1589C34v101Ev();
extern void _ZN7S1589C34v102Ev();
extern void _ZN7S1589C34v103Ev();
extern void _ZN7S1589C34v104Ev();
extern void _ZN7S1589C34v105Ev();
extern void _ZN7S1589C34v106Ev();
extern void _ZN7S1589C34v107Ev();
extern void _ZN7S1589C34v108Ev();
extern void _ZN7S1589C34v109Ev();
extern void _ZN7S1589C34v110Ev();
extern void _ZN7S1589C34v111Ev();
extern void _ZN7S1589C34v112Ev();
extern void _ZN7S1589C34v113Ev();
extern void _ZN7S1589C34v114Ev();
extern void _ZN7S1589C34v115Ev();
extern void _ZN7S1589C34v116Ev();
extern void _ZN7S1589C34v117Ev();
extern void _ZN7S1589C34v118Ev();
extern void _ZN7S1589C34v119Ev();
extern void _ZN7S1589C34v120Ev();
extern void _ZN7S1589C34v121Ev();
extern void _ZN7S1589C24v122Ev();
extern void _ZN7S1589C24v123Ev();
extern void _ZN7S1589C24v124Ev();
extern void _ZN7S1589C24v125Ev();
extern void _ZN7S1589C24v126Ev();
extern void _ZN7S1589C24v127Ev();
extern void _ZN7S1589C24v128Ev();
extern void _ZN7S1589C24v129Ev();
extern void _ZN7S1589C24v130Ev();
extern void _ZN7S1589C24v131Ev();
extern void _ZN7S1589C24v132Ev();
extern void _ZN7S1589C24v133Ev();
extern void _ZN7S1589C24v134Ev();
extern void _ZN7S1589C24v135Ev();
extern void _ZN7S1589C24v136Ev();
extern void _ZN7S1589C24v137Ev();
extern void _ZN7S1589C24v138Ev();
extern void _ZN7S1589C24v139Ev();
extern void _ZN7S1589C24v140Ev();
extern void _ZN7S1589C24v141Ev();
extern void _ZN7S1589C24v142Ev();
extern void _ZN7S1589C24v143Ev();
extern void _ZN7S1589C24v144Ev();
extern void _ZN7S1589C24v145Ev();
extern void _ZN7S1589C24v146Ev();
extern void _ZN7S1589C24v147Ev();
extern void _ZN7S1589C12v1Ev();
extern void _ZN7S1589C12v2Ev();
extern void _ZN7S1589C12v3Ev();
extern void _ZN7S1589C12v4Ev();
extern void _ZN7S1589C12v5Ev();
extern void _ZN7S1589C12v6Ev();
extern void _ZN7S1589C12v7Ev();
extern void _ZN7S1589C12v8Ev();
extern void _ZN7S1589C63v73Ev();
extern void _ZN7S1589C63v74Ev();
extern void _ZN7S1589C63v75Ev();
extern void _ZN7S1589C63v76Ev();
extern void _ZN7S1589C63v77Ev();
extern void _ZN7S1589C63v78Ev();
extern void _ZN7S1589C63v79Ev();
extern void _ZN7S1589C63v80Ev();
extern void _ZN7S1589C63v81Ev();
extern void _ZN7S1589C63v82Ev();
extern void _ZN7S1589C63v83Ev();
extern void _ZN7S1589C63v84Ev();
extern void _ZN7S1589C63v85Ev();
extern void _ZN7S1589C63v86Ev();
extern void _ZN7S1589C63v87Ev();
extern void _ZN7S1589C63v88Ev();
extern void _ZN7S1589C73v89Ev();
extern void _ZN7S1589C73v90Ev();
extern void _ZN7S1589C73v91Ev();
extern void _ZN7S1589C73v92Ev();
extern void _ZN7S1589C73v93Ev();
extern void _ZN7S1589C73v94Ev();
extern void _ZN7S1589C73v95Ev();
extern void _ZN7S1589C73v96Ev();
extern void _ZN7S1589C73v97Ev();
static  VTBL_ENTRY vtc_S1589C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1589C1[0]),
  (VTBL_ENTRY)&_ZN7S1589C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1589C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1589C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v71Ev,
  (VTBL_ENTRY)&_ZN7S1589C43v72Ev,
  (VTBL_ENTRY)&_ZN7S1589C33v98Ev,
  (VTBL_ENTRY)&_ZN7S1589C33v99Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v100Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v101Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v102Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v103Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v104Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v105Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v106Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v107Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v108Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v119Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v120Ev,
  (VTBL_ENTRY)&_ZN7S1589C34v121Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v122Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v123Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v124Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v125Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v126Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v127Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v128Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v129Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v130Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v131Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v132Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v133Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v134Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v135Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v136Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v137Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v138Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v139Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v140Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v141Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v142Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v143Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v144Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v145Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v146Ev,
  (VTBL_ENTRY)&_ZN7S1589C24v147Ev,
  (VTBL_ENTRY)&_ZN7S1589C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1589C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1589C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1589C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1589C12v5Ev,
  (VTBL_ENTRY)&_ZN7S1589C12v6Ev,
  (VTBL_ENTRY)&_ZN7S1589C12v7Ev,
  (VTBL_ENTRY)&_ZN7S1589C12v8Ev,
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S1589C1[0]),
  (VTBL_ENTRY)&_ZN7S1589C63v73Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v74Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v75Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v76Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v77Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v78Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v79Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v80Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v81Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v82Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v83Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v84Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v85Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v86Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v87Ev,
  (VTBL_ENTRY)&_ZN7S1589C63v88Ev,
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S1589C1[0]),
  (VTBL_ENTRY)&_ZN7S1589C73v89Ev,
  (VTBL_ENTRY)&_ZN7S1589C73v90Ev,
  (VTBL_ENTRY)&_ZN7S1589C73v91Ev,
  (VTBL_ENTRY)&_ZN7S1589C73v92Ev,
  (VTBL_ENTRY)&_ZN7S1589C73v93Ev,
  (VTBL_ENTRY)&_ZN7S1589C73v94Ev,
  (VTBL_ENTRY)&_ZN7S1589C73v95Ev,
  (VTBL_ENTRY)&_ZN7S1589C73v96Ev,
  (VTBL_ENTRY)&_ZN7S1589C73v97Ev,
};
extern VTBL_ENTRY _ZTI7S1589C1[];
extern  VTBL_ENTRY _ZTV7S1589C1[];
Class_Descriptor cd_S1589C1 = {  "S1589C1", // class name
  bases_S1589C1, 5,
  &(vtc_S1589C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(176,108), // object size
  NSPAIRA(_ZTI7S1589C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1589C1),155, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  5, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1565C4  {
  int s1565c4f0;
  __tsi64 s1565c4f1;
  void *s1565c4f2[4];
  int s1565c4f3[2];
  void *s1565c4f4;
  ::S79C8_nt s1565c4f5;
  void *s1565c4f6[2];
  virtual  ~S1565C4(); // _ZN7S1565C4D1Ev
  virtual void  v8(); // _ZN7S1565C42v8Ev
  virtual void  v9(); // _ZN7S1565C42v9Ev
  virtual void  v10(); // _ZN7S1565C43v10Ev
  virtual void  v11(); // _ZN7S1565C43v11Ev
  virtual void  v12(); // _ZN7S1565C43v12Ev
  virtual void  v13(); // _ZN7S1565C43v13Ev
  virtual void  v14(); // _ZN7S1565C43v14Ev
  virtual void  v15(); // _ZN7S1565C43v15Ev
  virtual void  v16(); // _ZN7S1565C43v16Ev
  virtual void  v17(); // _ZN7S1565C43v17Ev
  virtual void  v18(); // _ZN7S1565C43v18Ev
  virtual void  v19(); // _ZN7S1565C43v19Ev
  virtual void  v20(); // _ZN7S1565C43v20Ev
  virtual void  v21(); // _ZN7S1565C43v21Ev
  virtual void  v22(); // _ZN7S1565C43v22Ev
  virtual void  v23(); // _ZN7S1565C43v23Ev
  virtual void  v24(); // _ZN7S1565C43v24Ev
  virtual void  v25(); // _ZN7S1565C43v25Ev
  virtual void  v26(); // _ZN7S1565C43v26Ev
  virtual void  v27(); // _ZN7S1565C43v27Ev
  virtual void  v28(); // _ZN7S1565C43v28Ev
  virtual void  v29(); // _ZN7S1565C43v29Ev
  virtual void  v30(); // _ZN7S1565C43v30Ev
  virtual void  v31(); // _ZN7S1565C43v31Ev
  virtual void  v32(); // _ZN7S1565C43v32Ev
  virtual void  v33(); // _ZN7S1565C43v33Ev
  virtual void  v34(); // _ZN7S1565C43v34Ev
  virtual void  v35(); // _ZN7S1565C43v35Ev
  virtual void  v36(); // _ZN7S1565C43v36Ev
  virtual void  v37(); // _ZN7S1565C43v37Ev
  virtual void  v38(); // _ZN7S1565C43v38Ev
  virtual void  v39(); // _ZN7S1565C43v39Ev
  virtual void  v40(); // _ZN7S1565C43v40Ev
  virtual void  v41(); // _ZN7S1565C43v41Ev
  virtual void  v42(); // _ZN7S1565C43v42Ev
  virtual void  v43(); // _ZN7S1565C43v43Ev
  virtual void  v44(); // _ZN7S1565C43v44Ev
  virtual void  v45(); // _ZN7S1565C43v45Ev
  virtual void  v46(); // _ZN7S1565C43v46Ev
  virtual void  v47(); // _ZN7S1565C43v47Ev
  virtual void  v48(); // _ZN7S1565C43v48Ev
  virtual void  v49(); // _ZN7S1565C43v49Ev
  virtual void  v50(); // _ZN7S1565C43v50Ev
  virtual void  v51(); // _ZN7S1565C43v51Ev
  virtual void  v52(); // _ZN7S1565C43v52Ev
  virtual void  v53(); // _ZN7S1565C43v53Ev
  virtual void  v54(); // _ZN7S1565C43v54Ev
  virtual void  v55(); // _ZN7S1565C43v55Ev
  virtual void  v56(); // _ZN7S1565C43v56Ev
  virtual void  v57(); // _ZN7S1565C43v57Ev
  virtual void  v58(); // _ZN7S1565C43v58Ev
  virtual void  v59(); // _ZN7S1565C43v59Ev
  virtual void  v60(); // _ZN7S1565C43v60Ev
  virtual void  v61(); // _ZN7S1565C43v61Ev
  virtual void  v62(); // _ZN7S1565C43v62Ev
  virtual void  v63(); // _ZN7S1565C43v63Ev
  virtual void  v64(); // _ZN7S1565C43v64Ev
  virtual void  v65(); // _ZN7S1565C43v65Ev
  virtual void  v66(); // _ZN7S1565C43v66Ev
  virtual void  v67(); // _ZN7S1565C43v67Ev
  virtual void  v68(); // _ZN7S1565C43v68Ev
  virtual void  v69(); // _ZN7S1565C43v69Ev
  virtual void  v70(); // _ZN7S1565C43v70Ev
  virtual void  v71(); // _ZN7S1565C43v71Ev
  S1565C4(); // tgen
};
//SIG(-1 S1565C4) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 Fi FL Fp[4] Fi[2] Fp FC2{ m Fi[2]} Fp[2]}


 S1565C4 ::~S1565C4(){ note_dtor("S1565C4", this);}
void  S1565C4 ::v8(){vfunc_called(this, "_ZN7S1565C42v8Ev");}
void  S1565C4 ::v9(){vfunc_called(this, "_ZN7S1565C42v9Ev");}
void  S1565C4 ::v10(){vfunc_called(this, "_ZN7S1565C43v10Ev");}
void  S1565C4 ::v11(){vfunc_called(this, "_ZN7S1565C43v11Ev");}
void  S1565C4 ::v12(){vfunc_called(this, "_ZN7S1565C43v12Ev");}
void  S1565C4 ::v13(){vfunc_called(this, "_ZN7S1565C43v13Ev");}
void  S1565C4 ::v14(){vfunc_called(this, "_ZN7S1565C43v14Ev");}
void  S1565C4 ::v15(){vfunc_called(this, "_ZN7S1565C43v15Ev");}
void  S1565C4 ::v16(){vfunc_called(this, "_ZN7S1565C43v16Ev");}
void  S1565C4 ::v17(){vfunc_called(this, "_ZN7S1565C43v17Ev");}
void  S1565C4 ::v18(){vfunc_called(this, "_ZN7S1565C43v18Ev");}
void  S1565C4 ::v19(){vfunc_called(this, "_ZN7S1565C43v19Ev");}
void  S1565C4 ::v20(){vfunc_called(this, "_ZN7S1565C43v20Ev");}
void  S1565C4 ::v21(){vfunc_called(this, "_ZN7S1565C43v21Ev");}
void  S1565C4 ::v22(){vfunc_called(this, "_ZN7S1565C43v22Ev");}
void  S1565C4 ::v23(){vfunc_called(this, "_ZN7S1565C43v23Ev");}
void  S1565C4 ::v24(){vfunc_called(this, "_ZN7S1565C43v24Ev");}
void  S1565C4 ::v25(){vfunc_called(this, "_ZN7S1565C43v25Ev");}
void  S1565C4 ::v26(){vfunc_called(this, "_ZN7S1565C43v26Ev");}
void  S1565C4 ::v27(){vfunc_called(this, "_ZN7S1565C43v27Ev");}
void  S1565C4 ::v28(){vfunc_called(this, "_ZN7S1565C43v28Ev");}
void  S1565C4 ::v29(){vfunc_called(this, "_ZN7S1565C43v29Ev");}
void  S1565C4 ::v30(){vfunc_called(this, "_ZN7S1565C43v30Ev");}
void  S1565C4 ::v31(){vfunc_called(this, "_ZN7S1565C43v31Ev");}
void  S1565C4 ::v32(){vfunc_called(this, "_ZN7S1565C43v32Ev");}
void  S1565C4 ::v33(){vfunc_called(this, "_ZN7S1565C43v33Ev");}
void  S1565C4 ::v34(){vfunc_called(this, "_ZN7S1565C43v34Ev");}
void  S1565C4 ::v35(){vfunc_called(this, "_ZN7S1565C43v35Ev");}
void  S1565C4 ::v36(){vfunc_called(this, "_ZN7S1565C43v36Ev");}
void  S1565C4 ::v37(){vfunc_called(this, "_ZN7S1565C43v37Ev");}
void  S1565C4 ::v38(){vfunc_called(this, "_ZN7S1565C43v38Ev");}
void  S1565C4 ::v39(){vfunc_called(this, "_ZN7S1565C43v39Ev");}
void  S1565C4 ::v40(){vfunc_called(this, "_ZN7S1565C43v40Ev");}
void  S1565C4 ::v41(){vfunc_called(this, "_ZN7S1565C43v41Ev");}
void  S1565C4 ::v42(){vfunc_called(this, "_ZN7S1565C43v42Ev");}
void  S1565C4 ::v43(){vfunc_called(this, "_ZN7S1565C43v43Ev");}
void  S1565C4 ::v44(){vfunc_called(this, "_ZN7S1565C43v44Ev");}
void  S1565C4 ::v45(){vfunc_called(this, "_ZN7S1565C43v45Ev");}
void  S1565C4 ::v46(){vfunc_called(this, "_ZN7S1565C43v46Ev");}
void  S1565C4 ::v47(){vfunc_called(this, "_ZN7S1565C43v47Ev");}
void  S1565C4 ::v48(){vfunc_called(this, "_ZN7S1565C43v48Ev");}
void  S1565C4 ::v49(){vfunc_called(this, "_ZN7S1565C43v49Ev");}
void  S1565C4 ::v50(){vfunc_called(this, "_ZN7S1565C43v50Ev");}
void  S1565C4 ::v51(){vfunc_called(this, "_ZN7S1565C43v51Ev");}
void  S1565C4 ::v52(){vfunc_called(this, "_ZN7S1565C43v52Ev");}
void  S1565C4 ::v53(){vfunc_called(this, "_ZN7S1565C43v53Ev");}
void  S1565C4 ::v54(){vfunc_called(this, "_ZN7S1565C43v54Ev");}
void  S1565C4 ::v55(){vfunc_called(this, "_ZN7S1565C43v55Ev");}
void  S1565C4 ::v56(){vfunc_called(this, "_ZN7S1565C43v56Ev");}
void  S1565C4 ::v57(){vfunc_called(this, "_ZN7S1565C43v57Ev");}
void  S1565C4 ::v58(){vfunc_called(this, "_ZN7S1565C43v58Ev");}
void  S1565C4 ::v59(){vfunc_called(this, "_ZN7S1565C43v59Ev");}
void  S1565C4 ::v60(){vfunc_called(this, "_ZN7S1565C43v60Ev");}
void  S1565C4 ::v61(){vfunc_called(this, "_ZN7S1565C43v61Ev");}
void  S1565C4 ::v62(){vfunc_called(this, "_ZN7S1565C43v62Ev");}
void  S1565C4 ::v63(){vfunc_called(this, "_ZN7S1565C43v63Ev");}
void  S1565C4 ::v64(){vfunc_called(this, "_ZN7S1565C43v64Ev");}
void  S1565C4 ::v65(){vfunc_called(this, "_ZN7S1565C43v65Ev");}
void  S1565C4 ::v66(){vfunc_called(this, "_ZN7S1565C43v66Ev");}
void  S1565C4 ::v67(){vfunc_called(this, "_ZN7S1565C43v67Ev");}
void  S1565C4 ::v68(){vfunc_called(this, "_ZN7S1565C43v68Ev");}
void  S1565C4 ::v69(){vfunc_called(this, "_ZN7S1565C43v69Ev");}
void  S1565C4 ::v70(){vfunc_called(this, "_ZN7S1565C43v70Ev");}
void  S1565C4 ::v71(){vfunc_called(this, "_ZN7S1565C43v71Ev");}
S1565C4 ::S1565C4(){ note_ctor("S1565C4", this);} // tgen

static void Test_S1565C4()
{
  extern Class_Descriptor cd_S1565C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S1565C4, buf);
    S1565C4 *dp, &lv = *(dp=new (buf) S1565C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S1565C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1565C4)");
    check_field_offset(lv, s1565c4f0, ABISELECT(8,4), "S1565C4.s1565c4f0");
    check_field_offset(lv, s1565c4f1, ABISELECT(16,8), "S1565C4.s1565c4f1");
    check_field_offset(lv, s1565c4f2, ABISELECT(24,16), "S1565C4.s1565c4f2");
    check_field_offset(lv, s1565c4f3, ABISELECT(56,32), "S1565C4.s1565c4f3");
    check_field_offset(lv, s1565c4f4, ABISELECT(64,40), "S1565C4.s1565c4f4");
    check_field_offset(lv, s1565c4f5, ABISELECT(72,44), "S1565C4.s1565c4f5");
    check_field_offset(lv, s1565c4f6, ABISELECT(80,52), "S1565C4.s1565c4f6");
    test_class_info(&lv, &cd_S1565C4);
    dp->~S1565C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1565C4(Test_S1565C4, "S1565C4", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S1565C4C1Ev();
extern void _ZN7S1565C4D1Ev();
Name_Map name_map_S1565C4[] = {
  NSPAIR(_ZN7S1565C4C1Ev),
  NSPAIR(_ZN7S1565C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1565C4[];
extern void _ZN7S1565C4D1Ev();
extern void _ZN7S1565C4D0Ev();
extern void _ZN7S1565C42v8Ev();
extern void _ZN7S1565C42v9Ev();
extern void _ZN7S1565C43v10Ev();
extern void _ZN7S1565C43v11Ev();
extern void _ZN7S1565C43v12Ev();
extern void _ZN7S1565C43v13Ev();
extern void _ZN7S1565C43v14Ev();
extern void _ZN7S1565C43v15Ev();
extern void _ZN7S1565C43v16Ev();
extern void _ZN7S1565C43v17Ev();
extern void _ZN7S1565C43v18Ev();
extern void _ZN7S1565C43v19Ev();
extern void _ZN7S1565C43v20Ev();
extern void _ZN7S1565C43v21Ev();
extern void _ZN7S1565C43v22Ev();
extern void _ZN7S1565C43v23Ev();
extern void _ZN7S1565C43v24Ev();
extern void _ZN7S1565C43v25Ev();
extern void _ZN7S1565C43v26Ev();
extern void _ZN7S1565C43v27Ev();
extern void _ZN7S1565C43v28Ev();
extern void _ZN7S1565C43v29Ev();
extern void _ZN7S1565C43v30Ev();
extern void _ZN7S1565C43v31Ev();
extern void _ZN7S1565C43v32Ev();
extern void _ZN7S1565C43v33Ev();
extern void _ZN7S1565C43v34Ev();
extern void _ZN7S1565C43v35Ev();
extern void _ZN7S1565C43v36Ev();
extern void _ZN7S1565C43v37Ev();
extern void _ZN7S1565C43v38Ev();
extern void _ZN7S1565C43v39Ev();
extern void _ZN7S1565C43v40Ev();
extern void _ZN7S1565C43v41Ev();
extern void _ZN7S1565C43v42Ev();
extern void _ZN7S1565C43v43Ev();
extern void _ZN7S1565C43v44Ev();
extern void _ZN7S1565C43v45Ev();
extern void _ZN7S1565C43v46Ev();
extern void _ZN7S1565C43v47Ev();
extern void _ZN7S1565C43v48Ev();
extern void _ZN7S1565C43v49Ev();
extern void _ZN7S1565C43v50Ev();
extern void _ZN7S1565C43v51Ev();
extern void _ZN7S1565C43v52Ev();
extern void _ZN7S1565C43v53Ev();
extern void _ZN7S1565C43v54Ev();
extern void _ZN7S1565C43v55Ev();
extern void _ZN7S1565C43v56Ev();
extern void _ZN7S1565C43v57Ev();
extern void _ZN7S1565C43v58Ev();
extern void _ZN7S1565C43v59Ev();
extern void _ZN7S1565C43v60Ev();
extern void _ZN7S1565C43v61Ev();
extern void _ZN7S1565C43v62Ev();
extern void _ZN7S1565C43v63Ev();
extern void _ZN7S1565C43v64Ev();
extern void _ZN7S1565C43v65Ev();
extern void _ZN7S1565C43v66Ev();
extern void _ZN7S1565C43v67Ev();
extern void _ZN7S1565C43v68Ev();
extern void _ZN7S1565C43v69Ev();
extern void _ZN7S1565C43v70Ev();
extern void _ZN7S1565C43v71Ev();
static  VTBL_ENTRY vtc_S1565C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1565C4[0]),
  (VTBL_ENTRY)&_ZN7S1565C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1565C4D0Ev,
  (VTBL_ENTRY)&_ZN7S1565C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1565C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v71Ev,
};
extern VTBL_ENTRY _ZTI7S1565C4[];
extern  VTBL_ENTRY _ZTV7S1565C4[];
Class_Descriptor cd_S1565C4 = {  "S1565C4", // class name
  0,0,//no base classes
  &(vtc_S1565C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S1565C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1565C4),68, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1565C6  {
  virtual void  v72(); // _ZN7S1565C63v72Ev
  virtual void  v73(); // _ZN7S1565C63v73Ev
  virtual void  v74(); // _ZN7S1565C63v74Ev
  virtual void  v75(); // _ZN7S1565C63v75Ev
  virtual void  v76(); // _ZN7S1565C63v76Ev
  virtual void  v77(); // _ZN7S1565C63v77Ev
  virtual void  v78(); // _ZN7S1565C63v78Ev
  virtual void  v79(); // _ZN7S1565C63v79Ev
  virtual void  v80(); // _ZN7S1565C63v80Ev
  virtual void  v81(); // _ZN7S1565C63v81Ev
  virtual void  v82(); // _ZN7S1565C63v82Ev
  virtual void  v83(); // _ZN7S1565C63v83Ev
  virtual void  v84(); // _ZN7S1565C63v84Ev
  virtual void  v85(); // _ZN7S1565C63v85Ev
  virtual void  v86(); // _ZN7S1565C63v86Ev
  virtual void  v87(); // _ZN7S1565C63v87Ev
  ~S1565C6(); // tgen
  S1565C6(); // tgen
};
//SIG(-1 S1565C6) C1{ v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16}


void  S1565C6 ::v72(){vfunc_called(this, "_ZN7S1565C63v72Ev");}
void  S1565C6 ::v73(){vfunc_called(this, "_ZN7S1565C63v73Ev");}
void  S1565C6 ::v74(){vfunc_called(this, "_ZN7S1565C63v74Ev");}
void  S1565C6 ::v75(){vfunc_called(this, "_ZN7S1565C63v75Ev");}
void  S1565C6 ::v76(){vfunc_called(this, "_ZN7S1565C63v76Ev");}
void  S1565C6 ::v77(){vfunc_called(this, "_ZN7S1565C63v77Ev");}
void  S1565C6 ::v78(){vfunc_called(this, "_ZN7S1565C63v78Ev");}
void  S1565C6 ::v79(){vfunc_called(this, "_ZN7S1565C63v79Ev");}
void  S1565C6 ::v80(){vfunc_called(this, "_ZN7S1565C63v80Ev");}
void  S1565C6 ::v81(){vfunc_called(this, "_ZN7S1565C63v81Ev");}
void  S1565C6 ::v82(){vfunc_called(this, "_ZN7S1565C63v82Ev");}
void  S1565C6 ::v83(){vfunc_called(this, "_ZN7S1565C63v83Ev");}
void  S1565C6 ::v84(){vfunc_called(this, "_ZN7S1565C63v84Ev");}
void  S1565C6 ::v85(){vfunc_called(this, "_ZN7S1565C63v85Ev");}
void  S1565C6 ::v86(){vfunc_called(this, "_ZN7S1565C63v86Ev");}
void  S1565C6 ::v87(){vfunc_called(this, "_ZN7S1565C63v87Ev");}
S1565C6 ::~S1565C6(){ note_dtor("S1565C6", this);} // tgen
S1565C6 ::S1565C6(){ note_ctor("S1565C6", this);} // tgen

static void Test_S1565C6()
{
  extern Class_Descriptor cd_S1565C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S1565C6, buf);
    S1565C6 *dp, &lv = *(dp=new (buf) S1565C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1565C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1565C6)");
    test_class_info(&lv, &cd_S1565C6);
    dp->~S1565C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1565C6(Test_S1565C6, "S1565C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S1565C6C1Ev();
extern void _ZN7S1565C6D1Ev();
Name_Map name_map_S1565C6[] = {
  NSPAIR(_ZN7S1565C6C1Ev),
  NSPAIR(_ZN7S1565C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1565C6[];
extern void _ZN7S1565C63v72Ev();
extern void _ZN7S1565C63v73Ev();
extern void _ZN7S1565C63v74Ev();
extern void _ZN7S1565C63v75Ev();
extern void _ZN7S1565C63v76Ev();
extern void _ZN7S1565C63v77Ev();
extern void _ZN7S1565C63v78Ev();
extern void _ZN7S1565C63v79Ev();
extern void _ZN7S1565C63v80Ev();
extern void _ZN7S1565C63v81Ev();
extern void _ZN7S1565C63v82Ev();
extern void _ZN7S1565C63v83Ev();
extern void _ZN7S1565C63v84Ev();
extern void _ZN7S1565C63v85Ev();
extern void _ZN7S1565C63v86Ev();
extern void _ZN7S1565C63v87Ev();
static  VTBL_ENTRY vtc_S1565C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1565C6[0]),
  (VTBL_ENTRY)&_ZN7S1565C63v72Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v73Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v74Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v75Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v76Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v77Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v78Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v79Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v80Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v81Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v82Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v83Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v84Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v85Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v86Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v87Ev,
};
extern VTBL_ENTRY _ZTI7S1565C6[];
extern  VTBL_ENTRY _ZTV7S1565C6[];
Class_Descriptor cd_S1565C6 = {  "S1565C6", // class name
  0,0,//no base classes
  &(vtc_S1565C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S1565C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1565C6),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1565C7  {
  virtual void  v88(); // _ZN7S1565C73v88Ev
  virtual void  v89(); // _ZN7S1565C73v89Ev
  virtual void  v90(); // _ZN7S1565C73v90Ev
  virtual void  v91(); // _ZN7S1565C73v91Ev
  virtual void  v92(); // _ZN7S1565C73v92Ev
  virtual void  v93(); // _ZN7S1565C73v93Ev
  virtual void  v94(); // _ZN7S1565C73v94Ev
  virtual void  v95(); // _ZN7S1565C73v95Ev
  virtual void  v96(); // _ZN7S1565C73v96Ev
  ~S1565C7(); // tgen
  S1565C7(); // tgen
};
//SIG(-1 S1565C7) C1{ v1 v2 v3 v4 v5 v6 v7 v8 v9}


void  S1565C7 ::v88(){vfunc_called(this, "_ZN7S1565C73v88Ev");}
void  S1565C7 ::v89(){vfunc_called(this, "_ZN7S1565C73v89Ev");}
void  S1565C7 ::v90(){vfunc_called(this, "_ZN7S1565C73v90Ev");}
void  S1565C7 ::v91(){vfunc_called(this, "_ZN7S1565C73v91Ev");}
void  S1565C7 ::v92(){vfunc_called(this, "_ZN7S1565C73v92Ev");}
void  S1565C7 ::v93(){vfunc_called(this, "_ZN7S1565C73v93Ev");}
void  S1565C7 ::v94(){vfunc_called(this, "_ZN7S1565C73v94Ev");}
void  S1565C7 ::v95(){vfunc_called(this, "_ZN7S1565C73v95Ev");}
void  S1565C7 ::v96(){vfunc_called(this, "_ZN7S1565C73v96Ev");}
S1565C7 ::~S1565C7(){ note_dtor("S1565C7", this);} // tgen
S1565C7 ::S1565C7(){ note_ctor("S1565C7", this);} // tgen

static void Test_S1565C7()
{
  extern Class_Descriptor cd_S1565C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S1565C7, buf);
    S1565C7 *dp, &lv = *(dp=new (buf) S1565C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1565C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1565C7)");
    test_class_info(&lv, &cd_S1565C7);
    dp->~S1565C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1565C7(Test_S1565C7, "S1565C7", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S1565C7C1Ev();
extern void _ZN7S1565C7D1Ev();
Name_Map name_map_S1565C7[] = {
  NSPAIR(_ZN7S1565C7C1Ev),
  NSPAIR(_ZN7S1565C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1565C7[];
extern void _ZN7S1565C73v88Ev();
extern void _ZN7S1565C73v89Ev();
extern void _ZN7S1565C73v90Ev();
extern void _ZN7S1565C73v91Ev();
extern void _ZN7S1565C73v92Ev();
extern void _ZN7S1565C73v93Ev();
extern void _ZN7S1565C73v94Ev();
extern void _ZN7S1565C73v95Ev();
extern void _ZN7S1565C73v96Ev();
static  VTBL_ENTRY vtc_S1565C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1565C7[0]),
  (VTBL_ENTRY)&_ZN7S1565C73v88Ev,
  (VTBL_ENTRY)&_ZN7S1565C73v89Ev,
  (VTBL_ENTRY)&_ZN7S1565C73v90Ev,
  (VTBL_ENTRY)&_ZN7S1565C73v91Ev,
  (VTBL_ENTRY)&_ZN7S1565C73v92Ev,
  (VTBL_ENTRY)&_ZN7S1565C73v93Ev,
  (VTBL_ENTRY)&_ZN7S1565C73v94Ev,
  (VTBL_ENTRY)&_ZN7S1565C73v95Ev,
  (VTBL_ENTRY)&_ZN7S1565C73v96Ev,
};
extern VTBL_ENTRY _ZTI7S1565C7[];
extern  VTBL_ENTRY _ZTV7S1565C7[];
Class_Descriptor cd_S1565C7 = {  "S1565C7", // class name
  0,0,//no base classes
  &(vtc_S1565C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S1565C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1565C7),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1565C3  : S1565C4 , S1565C6 , S1565C7 {
  void *s1565c3f0;
  ::S79C39_nt s1565c3f1;
  unsigned int s1565c3f2:1;
  unsigned int s1565c3f3:1;
  unsigned int s1565c3f4:1;
  unsigned int s1565c3f5:1;
  virtual  ~S1565C3(); // _ZN7S1565C3D1Ev
  virtual void  v97(); // _ZN7S1565C33v97Ev
  virtual void  v98(); // _ZN7S1565C33v98Ev
  virtual void  v99(); // _ZN7S1565C33v99Ev
  virtual void  v100(); // _ZN7S1565C34v100Ev
  virtual void  v101(); // _ZN7S1565C34v101Ev
  virtual void  v102(); // _ZN7S1565C34v102Ev
  virtual void  v103(); // _ZN7S1565C34v103Ev
  virtual void  v104(); // _ZN7S1565C34v104Ev
  virtual void  v105(); // _ZN7S1565C34v105Ev
  virtual void  v106(); // _ZN7S1565C34v106Ev
  virtual void  v107(); // _ZN7S1565C34v107Ev
  virtual void  v108(); // _ZN7S1565C34v108Ev
  virtual void  v109(); // _ZN7S1565C34v109Ev
  virtual void  v110(); // _ZN7S1565C34v110Ev
  virtual void  v111(); // _ZN7S1565C34v111Ev
  virtual void  v112(); // _ZN7S1565C34v112Ev
  virtual void  v113(); // _ZN7S1565C34v113Ev
  virtual void  v114(); // _ZN7S1565C34v114Ev
  virtual void  v115(); // _ZN7S1565C34v115Ev
  virtual void  v116(); // _ZN7S1565C34v116Ev
  virtual void  v117(); // _ZN7S1565C34v117Ev
  virtual void  v118(); // _ZN7S1565C34v118Ev
  virtual void  v119(); // _ZN7S1565C34v119Ev
  virtual void  v120(); // _ZN7S1565C34v120Ev
  S1565C3(); // tgen
};
//SIG(-1 S1565C3) C1{ BC2{ vd v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} BC4{ v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104} BC5{ v105 v106 v107 v108 v109 v110 v111 v112 v113} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 Fp FC6{ BC7{ BC8{ BC9{ m Fp Fi[2]}}}} Fi:1 Fi:1 Fi:1 Fi:1}


 S1565C3 ::~S1565C3(){ note_dtor("S1565C3", this);}
void  S1565C3 ::v97(){vfunc_called(this, "_ZN7S1565C33v97Ev");}
void  S1565C3 ::v98(){vfunc_called(this, "_ZN7S1565C33v98Ev");}
void  S1565C3 ::v99(){vfunc_called(this, "_ZN7S1565C33v99Ev");}
void  S1565C3 ::v100(){vfunc_called(this, "_ZN7S1565C34v100Ev");}
void  S1565C3 ::v101(){vfunc_called(this, "_ZN7S1565C34v101Ev");}
void  S1565C3 ::v102(){vfunc_called(this, "_ZN7S1565C34v102Ev");}
void  S1565C3 ::v103(){vfunc_called(this, "_ZN7S1565C34v103Ev");}
void  S1565C3 ::v104(){vfunc_called(this, "_ZN7S1565C34v104Ev");}
void  S1565C3 ::v105(){vfunc_called(this, "_ZN7S1565C34v105Ev");}
void  S1565C3 ::v106(){vfunc_called(this, "_ZN7S1565C34v106Ev");}
void  S1565C3 ::v107(){vfunc_called(this, "_ZN7S1565C34v107Ev");}
void  S1565C3 ::v108(){vfunc_called(this, "_ZN7S1565C34v108Ev");}
void  S1565C3 ::v109(){vfunc_called(this, "_ZN7S1565C34v109Ev");}
void  S1565C3 ::v110(){vfunc_called(this, "_ZN7S1565C34v110Ev");}
void  S1565C3 ::v111(){vfunc_called(this, "_ZN7S1565C34v111Ev");}
void  S1565C3 ::v112(){vfunc_called(this, "_ZN7S1565C34v112Ev");}
void  S1565C3 ::v113(){vfunc_called(this, "_ZN7S1565C34v113Ev");}
void  S1565C3 ::v114(){vfunc_called(this, "_ZN7S1565C34v114Ev");}
void  S1565C3 ::v115(){vfunc_called(this, "_ZN7S1565C34v115Ev");}
void  S1565C3 ::v116(){vfunc_called(this, "_ZN7S1565C34v116Ev");}
void  S1565C3 ::v117(){vfunc_called(this, "_ZN7S1565C34v117Ev");}
void  S1565C3 ::v118(){vfunc_called(this, "_ZN7S1565C34v118Ev");}
void  S1565C3 ::v119(){vfunc_called(this, "_ZN7S1565C34v119Ev");}
void  S1565C3 ::v120(){vfunc_called(this, "_ZN7S1565C34v120Ev");}
S1565C3 ::S1565C3(){ note_ctor("S1565C3", this);} // tgen

static void Test_S1565C3()
{
  extern Class_Descriptor cd_S1565C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,23)];
    init_test(&cd_S1565C3, buf);
    S1565C3 *dp, &lv = *(dp=new (buf) S1565C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,88), "sizeof(S1565C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1565C3)");
    check_base_class_offset(lv, (S1565C4*), 0, "S1565C3");
    check_base_class_offset(lv, (S1565C6*), ABISELECT(96,60), "S1565C3");
    check_base_class_offset(lv, (S1565C7*), ABISELECT(104,64), "S1565C3");
    check_field_offset(lv, s1565c3f0, ABISELECT(112,68), "S1565C3.s1565c3f0");
    check_field_offset(lv, s1565c3f1, ABISELECT(120,72), "S1565C3.s1565c3f1");
    set_bf_and_test(lv, s1565c3f2, ABISELECT(136,84), 0, 1, 1, "S1565C3");
    set_bf_and_test(lv, s1565c3f3, ABISELECT(136,84), 1, 1, 1, "S1565C3");
    set_bf_and_test(lv, s1565c3f4, ABISELECT(136,84), 2, 1, 1, "S1565C3");
    set_bf_and_test(lv, s1565c3f5, ABISELECT(136,84), 3, 1, 1, "S1565C3");
    test_class_info(&lv, &cd_S1565C3);
    dp->~S1565C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1565C3(Test_S1565C3, "S1565C3", ABISELECT(144,88));

#else // __cplusplus

extern void _ZN7S1565C3C1Ev();
extern void _ZN7S1565C3D1Ev();
Name_Map name_map_S1565C3[] = {
  NSPAIR(_ZN7S1565C3C1Ev),
  NSPAIR(_ZN7S1565C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1565C4;
extern VTBL_ENTRY _ZTI7S1565C4[];
extern  VTBL_ENTRY _ZTV7S1565C4[];
extern Class_Descriptor cd_S1565C6;
extern VTBL_ENTRY _ZTI7S1565C6[];
extern  VTBL_ENTRY _ZTV7S1565C6[];
extern Class_Descriptor cd_S1565C7;
extern VTBL_ENTRY _ZTI7S1565C7[];
extern  VTBL_ENTRY _ZTV7S1565C7[];
static Base_Class bases_S1565C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1565C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1565C6,    ABISELECT(96,60), //bcp->offset
    92, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1565C7,    ABISELECT(104,64), //bcp->offset
    110, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1565C3[];
extern void _ZN7S1565C3D1Ev();
extern void _ZN7S1565C3D0Ev();
extern void _ZN7S1565C42v8Ev();
extern void _ZN7S1565C42v9Ev();
extern void _ZN7S1565C43v10Ev();
extern void _ZN7S1565C43v11Ev();
extern void _ZN7S1565C43v12Ev();
extern void _ZN7S1565C43v13Ev();
extern void _ZN7S1565C43v14Ev();
extern void _ZN7S1565C43v15Ev();
extern void _ZN7S1565C43v16Ev();
extern void _ZN7S1565C43v17Ev();
extern void _ZN7S1565C43v18Ev();
extern void _ZN7S1565C43v19Ev();
extern void _ZN7S1565C43v20Ev();
extern void _ZN7S1565C43v21Ev();
extern void _ZN7S1565C43v22Ev();
extern void _ZN7S1565C43v23Ev();
extern void _ZN7S1565C43v24Ev();
extern void _ZN7S1565C43v25Ev();
extern void _ZN7S1565C43v26Ev();
extern void _ZN7S1565C43v27Ev();
extern void _ZN7S1565C43v28Ev();
extern void _ZN7S1565C43v29Ev();
extern void _ZN7S1565C43v30Ev();
extern void _ZN7S1565C43v31Ev();
extern void _ZN7S1565C43v32Ev();
extern void _ZN7S1565C43v33Ev();
extern void _ZN7S1565C43v34Ev();
extern void _ZN7S1565C43v35Ev();
extern void _ZN7S1565C43v36Ev();
extern void _ZN7S1565C43v37Ev();
extern void _ZN7S1565C43v38Ev();
extern void _ZN7S1565C43v39Ev();
extern void _ZN7S1565C43v40Ev();
extern void _ZN7S1565C43v41Ev();
extern void _ZN7S1565C43v42Ev();
extern void _ZN7S1565C43v43Ev();
extern void _ZN7S1565C43v44Ev();
extern void _ZN7S1565C43v45Ev();
extern void _ZN7S1565C43v46Ev();
extern void _ZN7S1565C43v47Ev();
extern void _ZN7S1565C43v48Ev();
extern void _ZN7S1565C43v49Ev();
extern void _ZN7S1565C43v50Ev();
extern void _ZN7S1565C43v51Ev();
extern void _ZN7S1565C43v52Ev();
extern void _ZN7S1565C43v53Ev();
extern void _ZN7S1565C43v54Ev();
extern void _ZN7S1565C43v55Ev();
extern void _ZN7S1565C43v56Ev();
extern void _ZN7S1565C43v57Ev();
extern void _ZN7S1565C43v58Ev();
extern void _ZN7S1565C43v59Ev();
extern void _ZN7S1565C43v60Ev();
extern void _ZN7S1565C43v61Ev();
extern void _ZN7S1565C43v62Ev();
extern void _ZN7S1565C43v63Ev();
extern void _ZN7S1565C43v64Ev();
extern void _ZN7S1565C43v65Ev();
extern void _ZN7S1565C43v66Ev();
extern void _ZN7S1565C43v67Ev();
extern void _ZN7S1565C43v68Ev();
extern void _ZN7S1565C43v69Ev();
extern void _ZN7S1565C43v70Ev();
extern void _ZN7S1565C43v71Ev();
extern void _ZN7S1565C33v97Ev();
extern void _ZN7S1565C33v98Ev();
extern void _ZN7S1565C33v99Ev();
extern void _ZN7S1565C34v100Ev();
extern void _ZN7S1565C34v101Ev();
extern void _ZN7S1565C34v102Ev();
extern void _ZN7S1565C34v103Ev();
extern void _ZN7S1565C34v104Ev();
extern void _ZN7S1565C34v105Ev();
extern void _ZN7S1565C34v106Ev();
extern void _ZN7S1565C34v107Ev();
extern void _ZN7S1565C34v108Ev();
extern void _ZN7S1565C34v109Ev();
extern void _ZN7S1565C34v110Ev();
extern void _ZN7S1565C34v111Ev();
extern void _ZN7S1565C34v112Ev();
extern void _ZN7S1565C34v113Ev();
extern void _ZN7S1565C34v114Ev();
extern void _ZN7S1565C34v115Ev();
extern void _ZN7S1565C34v116Ev();
extern void _ZN7S1565C34v117Ev();
extern void _ZN7S1565C34v118Ev();
extern void _ZN7S1565C34v119Ev();
extern void _ZN7S1565C34v120Ev();
extern void _ZN7S1565C63v72Ev();
extern void _ZN7S1565C63v73Ev();
extern void _ZN7S1565C63v74Ev();
extern void _ZN7S1565C63v75Ev();
extern void _ZN7S1565C63v76Ev();
extern void _ZN7S1565C63v77Ev();
extern void _ZN7S1565C63v78Ev();
extern void _ZN7S1565C63v79Ev();
extern void _ZN7S1565C63v80Ev();
extern void _ZN7S1565C63v81Ev();
extern void _ZN7S1565C63v82Ev();
extern void _ZN7S1565C63v83Ev();
extern void _ZN7S1565C63v84Ev();
extern void _ZN7S1565C63v85Ev();
extern void _ZN7S1565C63v86Ev();
extern void _ZN7S1565C63v87Ev();
extern void _ZN7S1565C73v88Ev();
extern void _ZN7S1565C73v89Ev();
extern void _ZN7S1565C73v90Ev();
extern void _ZN7S1565C73v91Ev();
extern void _ZN7S1565C73v92Ev();
extern void _ZN7S1565C73v93Ev();
extern void _ZN7S1565C73v94Ev();
extern void _ZN7S1565C73v95Ev();
extern void _ZN7S1565C73v96Ev();
static  VTBL_ENTRY vtc_S1565C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1565C3[0]),
  (VTBL_ENTRY)&_ZN7S1565C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1565C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1565C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1565C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v71Ev,
  (VTBL_ENTRY)&_ZN7S1565C33v97Ev,
  (VTBL_ENTRY)&_ZN7S1565C33v98Ev,
  (VTBL_ENTRY)&_ZN7S1565C33v99Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v100Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v101Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v102Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v103Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v104Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v105Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v106Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v107Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v108Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v119Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v120Ev,
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S1565C3[0]),
  (VTBL_ENTRY)&_ZN7S1565C63v72Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v73Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v74Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v75Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v76Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v77Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v78Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v79Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v80Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v81Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v82Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v83Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v84Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v85Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v86Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v87Ev,
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S1565C3[0]),
  (VTBL_ENTRY)&_ZN7S1565C73v88Ev,
  (VTBL_ENTRY)&_ZN7S1565C73v89Ev,
  (VTBL_ENTRY)&_ZN7S1565C73v90Ev,
  (VTBL_ENTRY)&_ZN7S1565C73v91Ev,
  (VTBL_ENTRY)&_ZN7S1565C73v92Ev,
  (VTBL_ENTRY)&_ZN7S1565C73v93Ev,
  (VTBL_ENTRY)&_ZN7S1565C73v94Ev,
  (VTBL_ENTRY)&_ZN7S1565C73v95Ev,
  (VTBL_ENTRY)&_ZN7S1565C73v96Ev,
};
extern VTBL_ENTRY _ZTI7S1565C3[];
extern  VTBL_ENTRY _ZTV7S1565C3[];
Class_Descriptor cd_S1565C3 = {  "S1565C3", // class name
  bases_S1565C3, 3,
  &(vtc_S1565C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,88), // object size
  NSPAIRA(_ZTI7S1565C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S1565C3),121, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1565C2  : S1565C3 {
  ::S3262C11_nt s1565c2f0;
  int s1565c2f1;
  virtual  ~S1565C2(); // _ZN7S1565C2D1Ev
  virtual void  v121(); // _ZN7S1565C24v121Ev
  virtual void  v122(); // _ZN7S1565C24v122Ev
  virtual void  v123(); // _ZN7S1565C24v123Ev
  virtual void  v124(); // _ZN7S1565C24v124Ev
  virtual void  v125(); // _ZN7S1565C24v125Ev
  virtual void  v126(); // _ZN7S1565C24v126Ev
  virtual void  v127(); // _ZN7S1565C24v127Ev
  virtual void  v128(); // _ZN7S1565C24v128Ev
  virtual void  v129(); // _ZN7S1565C24v129Ev
  virtual void  v130(); // _ZN7S1565C24v130Ev
  virtual void  v131(); // _ZN7S1565C24v131Ev
  virtual void  v132(); // _ZN7S1565C24v132Ev
  virtual void  v133(); // _ZN7S1565C24v133Ev
  virtual void  v134(); // _ZN7S1565C24v134Ev
  virtual void  v135(); // _ZN7S1565C24v135Ev
  virtual void  v136(); // _ZN7S1565C24v136Ev
  virtual void  v137(); // _ZN7S1565C24v137Ev
  virtual void  v138(); // _ZN7S1565C24v138Ev
  virtual void  v139(); // _ZN7S1565C24v139Ev
  virtual void  v140(); // _ZN7S1565C24v140Ev
  virtual void  v141(); // _ZN7S1565C24v141Ev
  virtual void  v142(); // _ZN7S1565C24v142Ev
  virtual void  v143(); // _ZN7S1565C24v143Ev
  virtual void  v144(); // _ZN7S1565C24v144Ev
  virtual void  v145(); // _ZN7S1565C24v145Ev
  virtual void  v146(); // _ZN7S1565C24v146Ev
  S1565C2(); // tgen
};
//SIG(-1 S1565C2) C1{ BC2{ BC3{ vd v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} BC5{ v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106} BC6{ v107 v108 v109 v110 v111 v112 v113 v114 v115} vd v116 v117 v118 v119 v120 v121 v122 v123 v124 v125 v126 v127 v128 v129 v130 v131 v132 v133 v134 v135 v136 v137 v138 v139 Fp FC7{ BC8{ BC9{ BC10{ m Fp Fi[2]}}}} Fi:1 Fi:1 Fi:1 Fi:1} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 FC11{ m FC12{ BC13{ BC10}} Fc} Fi}


 S1565C2 ::~S1565C2(){ note_dtor("S1565C2", this);}
void  S1565C2 ::v121(){vfunc_called(this, "_ZN7S1565C24v121Ev");}
void  S1565C2 ::v122(){vfunc_called(this, "_ZN7S1565C24v122Ev");}
void  S1565C2 ::v123(){vfunc_called(this, "_ZN7S1565C24v123Ev");}
void  S1565C2 ::v124(){vfunc_called(this, "_ZN7S1565C24v124Ev");}
void  S1565C2 ::v125(){vfunc_called(this, "_ZN7S1565C24v125Ev");}
void  S1565C2 ::v126(){vfunc_called(this, "_ZN7S1565C24v126Ev");}
void  S1565C2 ::v127(){vfunc_called(this, "_ZN7S1565C24v127Ev");}
void  S1565C2 ::v128(){vfunc_called(this, "_ZN7S1565C24v128Ev");}
void  S1565C2 ::v129(){vfunc_called(this, "_ZN7S1565C24v129Ev");}
void  S1565C2 ::v130(){vfunc_called(this, "_ZN7S1565C24v130Ev");}
void  S1565C2 ::v131(){vfunc_called(this, "_ZN7S1565C24v131Ev");}
void  S1565C2 ::v132(){vfunc_called(this, "_ZN7S1565C24v132Ev");}
void  S1565C2 ::v133(){vfunc_called(this, "_ZN7S1565C24v133Ev");}
void  S1565C2 ::v134(){vfunc_called(this, "_ZN7S1565C24v134Ev");}
void  S1565C2 ::v135(){vfunc_called(this, "_ZN7S1565C24v135Ev");}
void  S1565C2 ::v136(){vfunc_called(this, "_ZN7S1565C24v136Ev");}
void  S1565C2 ::v137(){vfunc_called(this, "_ZN7S1565C24v137Ev");}
void  S1565C2 ::v138(){vfunc_called(this, "_ZN7S1565C24v138Ev");}
void  S1565C2 ::v139(){vfunc_called(this, "_ZN7S1565C24v139Ev");}
void  S1565C2 ::v140(){vfunc_called(this, "_ZN7S1565C24v140Ev");}
void  S1565C2 ::v141(){vfunc_called(this, "_ZN7S1565C24v141Ev");}
void  S1565C2 ::v142(){vfunc_called(this, "_ZN7S1565C24v142Ev");}
void  S1565C2 ::v143(){vfunc_called(this, "_ZN7S1565C24v143Ev");}
void  S1565C2 ::v144(){vfunc_called(this, "_ZN7S1565C24v144Ev");}
void  S1565C2 ::v145(){vfunc_called(this, "_ZN7S1565C24v145Ev");}
void  S1565C2 ::v146(){vfunc_called(this, "_ZN7S1565C24v146Ev");}
S1565C2 ::S1565C2(){ note_ctor("S1565C2", this);} // tgen

static void Test_S1565C2()
{
  extern Class_Descriptor cd_S1565C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,28)];
    init_test(&cd_S1565C2, buf);
    S1565C2 *dp, &lv = *(dp=new (buf) S1565C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,108), "sizeof(S1565C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1565C2)");
    check_base_class_offset(lv, (S1565C4*)(S1565C3*), 0, "S1565C2");
    check_base_class_offset(lv, (S1565C6*)(S1565C3*), ABISELECT(96,60), "S1565C2");
    check_base_class_offset(lv, (S1565C7*)(S1565C3*), ABISELECT(104,64), "S1565C2");
    check_base_class_offset(lv, (S1565C3*), 0, "S1565C2");
    check_field_offset(lv, s1565c2f0, ABISELECT(144,88), "S1565C2.s1565c2f0");
    check_field_offset(lv, s1565c2f1, ABISELECT(168,104), "S1565C2.s1565c2f1");
    test_class_info(&lv, &cd_S1565C2);
    dp->~S1565C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1565C2(Test_S1565C2, "S1565C2", ABISELECT(176,108));

#else // __cplusplus

extern void _ZN7S1565C2C1Ev();
extern void _ZN7S1565C2D1Ev();
Name_Map name_map_S1565C2[] = {
  NSPAIR(_ZN7S1565C2C1Ev),
  NSPAIR(_ZN7S1565C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1565C4;
extern VTBL_ENTRY _ZTI7S1565C4[];
extern  VTBL_ENTRY _ZTV7S1565C4[];
extern Class_Descriptor cd_S1565C6;
extern VTBL_ENTRY _ZTI7S1565C6[];
extern  VTBL_ENTRY _ZTV7S1565C6[];
extern Class_Descriptor cd_S1565C7;
extern VTBL_ENTRY _ZTI7S1565C7[];
extern  VTBL_ENTRY _ZTV7S1565C7[];
extern Class_Descriptor cd_S1565C3;
extern VTBL_ENTRY _ZTI7S1565C3[];
extern  VTBL_ENTRY _ZTV7S1565C3[];
static Base_Class bases_S1565C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1565C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1565C6,    ABISELECT(96,60), //bcp->offset
    118, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1565C7,    ABISELECT(104,64), //bcp->offset
    136, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1565C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1565C2[];
extern void _ZN7S1565C2D1Ev();
extern void _ZN7S1565C2D0Ev();
extern void _ZN7S1565C42v8Ev();
extern void _ZN7S1565C42v9Ev();
extern void _ZN7S1565C43v10Ev();
extern void _ZN7S1565C43v11Ev();
extern void _ZN7S1565C43v12Ev();
extern void _ZN7S1565C43v13Ev();
extern void _ZN7S1565C43v14Ev();
extern void _ZN7S1565C43v15Ev();
extern void _ZN7S1565C43v16Ev();
extern void _ZN7S1565C43v17Ev();
extern void _ZN7S1565C43v18Ev();
extern void _ZN7S1565C43v19Ev();
extern void _ZN7S1565C43v20Ev();
extern void _ZN7S1565C43v21Ev();
extern void _ZN7S1565C43v22Ev();
extern void _ZN7S1565C43v23Ev();
extern void _ZN7S1565C43v24Ev();
extern void _ZN7S1565C43v25Ev();
extern void _ZN7S1565C43v26Ev();
extern void _ZN7S1565C43v27Ev();
extern void _ZN7S1565C43v28Ev();
extern void _ZN7S1565C43v29Ev();
extern void _ZN7S1565C43v30Ev();
extern void _ZN7S1565C43v31Ev();
extern void _ZN7S1565C43v32Ev();
extern void _ZN7S1565C43v33Ev();
extern void _ZN7S1565C43v34Ev();
extern void _ZN7S1565C43v35Ev();
extern void _ZN7S1565C43v36Ev();
extern void _ZN7S1565C43v37Ev();
extern void _ZN7S1565C43v38Ev();
extern void _ZN7S1565C43v39Ev();
extern void _ZN7S1565C43v40Ev();
extern void _ZN7S1565C43v41Ev();
extern void _ZN7S1565C43v42Ev();
extern void _ZN7S1565C43v43Ev();
extern void _ZN7S1565C43v44Ev();
extern void _ZN7S1565C43v45Ev();
extern void _ZN7S1565C43v46Ev();
extern void _ZN7S1565C43v47Ev();
extern void _ZN7S1565C43v48Ev();
extern void _ZN7S1565C43v49Ev();
extern void _ZN7S1565C43v50Ev();
extern void _ZN7S1565C43v51Ev();
extern void _ZN7S1565C43v52Ev();
extern void _ZN7S1565C43v53Ev();
extern void _ZN7S1565C43v54Ev();
extern void _ZN7S1565C43v55Ev();
extern void _ZN7S1565C43v56Ev();
extern void _ZN7S1565C43v57Ev();
extern void _ZN7S1565C43v58Ev();
extern void _ZN7S1565C43v59Ev();
extern void _ZN7S1565C43v60Ev();
extern void _ZN7S1565C43v61Ev();
extern void _ZN7S1565C43v62Ev();
extern void _ZN7S1565C43v63Ev();
extern void _ZN7S1565C43v64Ev();
extern void _ZN7S1565C43v65Ev();
extern void _ZN7S1565C43v66Ev();
extern void _ZN7S1565C43v67Ev();
extern void _ZN7S1565C43v68Ev();
extern void _ZN7S1565C43v69Ev();
extern void _ZN7S1565C43v70Ev();
extern void _ZN7S1565C43v71Ev();
extern void _ZN7S1565C33v97Ev();
extern void _ZN7S1565C33v98Ev();
extern void _ZN7S1565C33v99Ev();
extern void _ZN7S1565C34v100Ev();
extern void _ZN7S1565C34v101Ev();
extern void _ZN7S1565C34v102Ev();
extern void _ZN7S1565C34v103Ev();
extern void _ZN7S1565C34v104Ev();
extern void _ZN7S1565C34v105Ev();
extern void _ZN7S1565C34v106Ev();
extern void _ZN7S1565C34v107Ev();
extern void _ZN7S1565C34v108Ev();
extern void _ZN7S1565C34v109Ev();
extern void _ZN7S1565C34v110Ev();
extern void _ZN7S1565C34v111Ev();
extern void _ZN7S1565C34v112Ev();
extern void _ZN7S1565C34v113Ev();
extern void _ZN7S1565C34v114Ev();
extern void _ZN7S1565C34v115Ev();
extern void _ZN7S1565C34v116Ev();
extern void _ZN7S1565C34v117Ev();
extern void _ZN7S1565C34v118Ev();
extern void _ZN7S1565C34v119Ev();
extern void _ZN7S1565C34v120Ev();
extern void _ZN7S1565C24v121Ev();
extern void _ZN7S1565C24v122Ev();
extern void _ZN7S1565C24v123Ev();
extern void _ZN7S1565C24v124Ev();
extern void _ZN7S1565C24v125Ev();
extern void _ZN7S1565C24v126Ev();
extern void _ZN7S1565C24v127Ev();
extern void _ZN7S1565C24v128Ev();
extern void _ZN7S1565C24v129Ev();
extern void _ZN7S1565C24v130Ev();
extern void _ZN7S1565C24v131Ev();
extern void _ZN7S1565C24v132Ev();
extern void _ZN7S1565C24v133Ev();
extern void _ZN7S1565C24v134Ev();
extern void _ZN7S1565C24v135Ev();
extern void _ZN7S1565C24v136Ev();
extern void _ZN7S1565C24v137Ev();
extern void _ZN7S1565C24v138Ev();
extern void _ZN7S1565C24v139Ev();
extern void _ZN7S1565C24v140Ev();
extern void _ZN7S1565C24v141Ev();
extern void _ZN7S1565C24v142Ev();
extern void _ZN7S1565C24v143Ev();
extern void _ZN7S1565C24v144Ev();
extern void _ZN7S1565C24v145Ev();
extern void _ZN7S1565C24v146Ev();
extern void _ZN7S1565C63v72Ev();
extern void _ZN7S1565C63v73Ev();
extern void _ZN7S1565C63v74Ev();
extern void _ZN7S1565C63v75Ev();
extern void _ZN7S1565C63v76Ev();
extern void _ZN7S1565C63v77Ev();
extern void _ZN7S1565C63v78Ev();
extern void _ZN7S1565C63v79Ev();
extern void _ZN7S1565C63v80Ev();
extern void _ZN7S1565C63v81Ev();
extern void _ZN7S1565C63v82Ev();
extern void _ZN7S1565C63v83Ev();
extern void _ZN7S1565C63v84Ev();
extern void _ZN7S1565C63v85Ev();
extern void _ZN7S1565C63v86Ev();
extern void _ZN7S1565C63v87Ev();
extern void _ZN7S1565C73v88Ev();
extern void _ZN7S1565C73v89Ev();
extern void _ZN7S1565C73v90Ev();
extern void _ZN7S1565C73v91Ev();
extern void _ZN7S1565C73v92Ev();
extern void _ZN7S1565C73v93Ev();
extern void _ZN7S1565C73v94Ev();
extern void _ZN7S1565C73v95Ev();
extern void _ZN7S1565C73v96Ev();
static  VTBL_ENTRY vtc_S1565C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1565C2[0]),
  (VTBL_ENTRY)&_ZN7S1565C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1565C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1565C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1565C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v71Ev,
  (VTBL_ENTRY)&_ZN7S1565C33v97Ev,
  (VTBL_ENTRY)&_ZN7S1565C33v98Ev,
  (VTBL_ENTRY)&_ZN7S1565C33v99Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v100Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v101Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v102Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v103Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v104Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v105Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v106Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v107Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v108Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v119Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v120Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v121Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v122Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v123Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v124Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v125Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v126Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v127Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v128Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v129Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v130Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v131Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v132Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v133Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v134Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v135Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v136Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v137Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v138Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v139Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v140Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v141Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v142Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v143Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v144Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v145Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v146Ev,
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S1565C2[0]),
  (VTBL_ENTRY)&_ZN7S1565C63v72Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v73Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v74Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v75Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v76Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v77Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v78Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v79Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v80Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v81Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v82Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v83Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v84Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v85Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v86Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v87Ev,
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S1565C2[0]),
  (VTBL_ENTRY)&_ZN7S1565C73v88Ev,
  (VTBL_ENTRY)&_ZN7S1565C73v89Ev,
  (VTBL_ENTRY)&_ZN7S1565C73v90Ev,
  (VTBL_ENTRY)&_ZN7S1565C73v91Ev,
  (VTBL_ENTRY)&_ZN7S1565C73v92Ev,
  (VTBL_ENTRY)&_ZN7S1565C73v93Ev,
  (VTBL_ENTRY)&_ZN7S1565C73v94Ev,
  (VTBL_ENTRY)&_ZN7S1565C73v95Ev,
  (VTBL_ENTRY)&_ZN7S1565C73v96Ev,
};
extern VTBL_ENTRY _ZTI7S1565C2[];
extern  VTBL_ENTRY _ZTV7S1565C2[];
Class_Descriptor cd_S1565C2 = {  "S1565C2", // class name
  bases_S1565C2, 4,
  &(vtc_S1565C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(176,108), // object size
  NSPAIRA(_ZTI7S1565C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1565C2),147, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  4, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1565C1  : S1565C2 {
  virtual  ~S1565C1(); // _ZN7S1565C1D1Ev
  virtual void  v1(); // _ZN7S1565C12v1Ev
  virtual void  v2(); // _ZN7S1565C12v2Ev
  virtual void  v3(); // _ZN7S1565C12v3Ev
  virtual void  v4(); // _ZN7S1565C12v4Ev
  virtual void  v5(); // _ZN7S1565C12v5Ev
  virtual void  v6(); // _ZN7S1565C12v6Ev
  virtual void  v7(); // _ZN7S1565C12v7Ev
  S1565C1(); // tgen
};
//SIG(1 S1565C1) C1{ BC2{ BC3{ BC4{ vd v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 Fi FL Fp[4] Fi[2] Fp FC5{ m Fi[2]} Fp[2]} BC6{ v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87} BC7{ v88 v89 v90 v91 v92 v93 v94 v95 v96} vd v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 v112 v113 v114 v115 v116 v117 v118 v119 v120 Fp FC8{ BC9{ BC10{ BC11{ m Fp Fi[2]}}}} Fi:1 Fi:1 Fi:1 Fi:1} vd v121 v122 v123 v124 v125 v126 v127 v128 v129 v130 v131 v132 v133 v134 v135 v136 v137 v138 v139 v140 v141 v142 v143 v144 v145 v146 FC12{ m FC13{ BC14{ BC11}} Fc} Fi} vd v1 v2 v3 v4 v5 v6 v7}


 S1565C1 ::~S1565C1(){ note_dtor("S1565C1", this);}
void  S1565C1 ::v1(){vfunc_called(this, "_ZN7S1565C12v1Ev");}
void  S1565C1 ::v2(){vfunc_called(this, "_ZN7S1565C12v2Ev");}
void  S1565C1 ::v3(){vfunc_called(this, "_ZN7S1565C12v3Ev");}
void  S1565C1 ::v4(){vfunc_called(this, "_ZN7S1565C12v4Ev");}
void  S1565C1 ::v5(){vfunc_called(this, "_ZN7S1565C12v5Ev");}
void  S1565C1 ::v6(){vfunc_called(this, "_ZN7S1565C12v6Ev");}
void  S1565C1 ::v7(){vfunc_called(this, "_ZN7S1565C12v7Ev");}
S1565C1 ::S1565C1(){ note_ctor("S1565C1", this);} // tgen

static void Test_S1565C1()
{
  extern Class_Descriptor cd_S1565C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,28)];
    init_test(&cd_S1565C1, buf);
    S1565C1 *dp, &lv = *(dp=new (buf) S1565C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,108), "sizeof(S1565C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1565C1)");
    check_base_class_offset(lv, (S1565C4*)(S1565C3*)(S1565C2*), 0, "S1565C1");
    check_base_class_offset(lv, (S1565C6*)(S1565C3*)(S1565C2*), ABISELECT(96,60), "S1565C1");
    check_base_class_offset(lv, (S1565C7*)(S1565C3*)(S1565C2*), ABISELECT(104,64), "S1565C1");
    check_base_class_offset(lv, (S1565C3*)(S1565C2*), 0, "S1565C1");
    check_base_class_offset(lv, (S1565C2*), 0, "S1565C1");
    test_class_info(&lv, &cd_S1565C1);
    dp->~S1565C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1565C1(Test_S1565C1, "S1565C1", ABISELECT(176,108));

#else // __cplusplus

extern void _ZN7S1565C1C1Ev();
extern void _ZN7S1565C1D1Ev();
Name_Map name_map_S1565C1[] = {
  NSPAIR(_ZN7S1565C1C1Ev),
  NSPAIR(_ZN7S1565C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1565C4;
extern VTBL_ENTRY _ZTI7S1565C4[];
extern  VTBL_ENTRY _ZTV7S1565C4[];
extern Class_Descriptor cd_S1565C6;
extern VTBL_ENTRY _ZTI7S1565C6[];
extern  VTBL_ENTRY _ZTV7S1565C6[];
extern Class_Descriptor cd_S1565C7;
extern VTBL_ENTRY _ZTI7S1565C7[];
extern  VTBL_ENTRY _ZTV7S1565C7[];
extern Class_Descriptor cd_S1565C3;
extern VTBL_ENTRY _ZTI7S1565C3[];
extern  VTBL_ENTRY _ZTV7S1565C3[];
extern Class_Descriptor cd_S1565C2;
extern VTBL_ENTRY _ZTI7S1565C2[];
extern  VTBL_ENTRY _ZTV7S1565C2[];
static Base_Class bases_S1565C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1565C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1565C6,    ABISELECT(96,60), //bcp->offset
    125, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1565C7,    ABISELECT(104,64), //bcp->offset
    143, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1565C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S1565C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1565C1[];
extern void _ZN7S1565C1D1Ev();
extern void _ZN7S1565C1D0Ev();
extern void _ZN7S1565C42v8Ev();
extern void _ZN7S1565C42v9Ev();
extern void _ZN7S1565C43v10Ev();
extern void _ZN7S1565C43v11Ev();
extern void _ZN7S1565C43v12Ev();
extern void _ZN7S1565C43v13Ev();
extern void _ZN7S1565C43v14Ev();
extern void _ZN7S1565C43v15Ev();
extern void _ZN7S1565C43v16Ev();
extern void _ZN7S1565C43v17Ev();
extern void _ZN7S1565C43v18Ev();
extern void _ZN7S1565C43v19Ev();
extern void _ZN7S1565C43v20Ev();
extern void _ZN7S1565C43v21Ev();
extern void _ZN7S1565C43v22Ev();
extern void _ZN7S1565C43v23Ev();
extern void _ZN7S1565C43v24Ev();
extern void _ZN7S1565C43v25Ev();
extern void _ZN7S1565C43v26Ev();
extern void _ZN7S1565C43v27Ev();
extern void _ZN7S1565C43v28Ev();
extern void _ZN7S1565C43v29Ev();
extern void _ZN7S1565C43v30Ev();
extern void _ZN7S1565C43v31Ev();
extern void _ZN7S1565C43v32Ev();
extern void _ZN7S1565C43v33Ev();
extern void _ZN7S1565C43v34Ev();
extern void _ZN7S1565C43v35Ev();
extern void _ZN7S1565C43v36Ev();
extern void _ZN7S1565C43v37Ev();
extern void _ZN7S1565C43v38Ev();
extern void _ZN7S1565C43v39Ev();
extern void _ZN7S1565C43v40Ev();
extern void _ZN7S1565C43v41Ev();
extern void _ZN7S1565C43v42Ev();
extern void _ZN7S1565C43v43Ev();
extern void _ZN7S1565C43v44Ev();
extern void _ZN7S1565C43v45Ev();
extern void _ZN7S1565C43v46Ev();
extern void _ZN7S1565C43v47Ev();
extern void _ZN7S1565C43v48Ev();
extern void _ZN7S1565C43v49Ev();
extern void _ZN7S1565C43v50Ev();
extern void _ZN7S1565C43v51Ev();
extern void _ZN7S1565C43v52Ev();
extern void _ZN7S1565C43v53Ev();
extern void _ZN7S1565C43v54Ev();
extern void _ZN7S1565C43v55Ev();
extern void _ZN7S1565C43v56Ev();
extern void _ZN7S1565C43v57Ev();
extern void _ZN7S1565C43v58Ev();
extern void _ZN7S1565C43v59Ev();
extern void _ZN7S1565C43v60Ev();
extern void _ZN7S1565C43v61Ev();
extern void _ZN7S1565C43v62Ev();
extern void _ZN7S1565C43v63Ev();
extern void _ZN7S1565C43v64Ev();
extern void _ZN7S1565C43v65Ev();
extern void _ZN7S1565C43v66Ev();
extern void _ZN7S1565C43v67Ev();
extern void _ZN7S1565C43v68Ev();
extern void _ZN7S1565C43v69Ev();
extern void _ZN7S1565C43v70Ev();
extern void _ZN7S1565C43v71Ev();
extern void _ZN7S1565C33v97Ev();
extern void _ZN7S1565C33v98Ev();
extern void _ZN7S1565C33v99Ev();
extern void _ZN7S1565C34v100Ev();
extern void _ZN7S1565C34v101Ev();
extern void _ZN7S1565C34v102Ev();
extern void _ZN7S1565C34v103Ev();
extern void _ZN7S1565C34v104Ev();
extern void _ZN7S1565C34v105Ev();
extern void _ZN7S1565C34v106Ev();
extern void _ZN7S1565C34v107Ev();
extern void _ZN7S1565C34v108Ev();
extern void _ZN7S1565C34v109Ev();
extern void _ZN7S1565C34v110Ev();
extern void _ZN7S1565C34v111Ev();
extern void _ZN7S1565C34v112Ev();
extern void _ZN7S1565C34v113Ev();
extern void _ZN7S1565C34v114Ev();
extern void _ZN7S1565C34v115Ev();
extern void _ZN7S1565C34v116Ev();
extern void _ZN7S1565C34v117Ev();
extern void _ZN7S1565C34v118Ev();
extern void _ZN7S1565C34v119Ev();
extern void _ZN7S1565C34v120Ev();
extern void _ZN7S1565C24v121Ev();
extern void _ZN7S1565C24v122Ev();
extern void _ZN7S1565C24v123Ev();
extern void _ZN7S1565C24v124Ev();
extern void _ZN7S1565C24v125Ev();
extern void _ZN7S1565C24v126Ev();
extern void _ZN7S1565C24v127Ev();
extern void _ZN7S1565C24v128Ev();
extern void _ZN7S1565C24v129Ev();
extern void _ZN7S1565C24v130Ev();
extern void _ZN7S1565C24v131Ev();
extern void _ZN7S1565C24v132Ev();
extern void _ZN7S1565C24v133Ev();
extern void _ZN7S1565C24v134Ev();
extern void _ZN7S1565C24v135Ev();
extern void _ZN7S1565C24v136Ev();
extern void _ZN7S1565C24v137Ev();
extern void _ZN7S1565C24v138Ev();
extern void _ZN7S1565C24v139Ev();
extern void _ZN7S1565C24v140Ev();
extern void _ZN7S1565C24v141Ev();
extern void _ZN7S1565C24v142Ev();
extern void _ZN7S1565C24v143Ev();
extern void _ZN7S1565C24v144Ev();
extern void _ZN7S1565C24v145Ev();
extern void _ZN7S1565C24v146Ev();
extern void _ZN7S1565C12v1Ev();
extern void _ZN7S1565C12v2Ev();
extern void _ZN7S1565C12v3Ev();
extern void _ZN7S1565C12v4Ev();
extern void _ZN7S1565C12v5Ev();
extern void _ZN7S1565C12v6Ev();
extern void _ZN7S1565C12v7Ev();
extern void _ZN7S1565C63v72Ev();
extern void _ZN7S1565C63v73Ev();
extern void _ZN7S1565C63v74Ev();
extern void _ZN7S1565C63v75Ev();
extern void _ZN7S1565C63v76Ev();
extern void _ZN7S1565C63v77Ev();
extern void _ZN7S1565C63v78Ev();
extern void _ZN7S1565C63v79Ev();
extern void _ZN7S1565C63v80Ev();
extern void _ZN7S1565C63v81Ev();
extern void _ZN7S1565C63v82Ev();
extern void _ZN7S1565C63v83Ev();
extern void _ZN7S1565C63v84Ev();
extern void _ZN7S1565C63v85Ev();
extern void _ZN7S1565C63v86Ev();
extern void _ZN7S1565C63v87Ev();
extern void _ZN7S1565C73v88Ev();
extern void _ZN7S1565C73v89Ev();
extern void _ZN7S1565C73v90Ev();
extern void _ZN7S1565C73v91Ev();
extern void _ZN7S1565C73v92Ev();
extern void _ZN7S1565C73v93Ev();
extern void _ZN7S1565C73v94Ev();
extern void _ZN7S1565C73v95Ev();
extern void _ZN7S1565C73v96Ev();
static  VTBL_ENTRY vtc_S1565C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1565C1[0]),
  (VTBL_ENTRY)&_ZN7S1565C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1565C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1565C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1565C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1565C43v71Ev,
  (VTBL_ENTRY)&_ZN7S1565C33v97Ev,
  (VTBL_ENTRY)&_ZN7S1565C33v98Ev,
  (VTBL_ENTRY)&_ZN7S1565C33v99Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v100Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v101Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v102Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v103Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v104Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v105Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v106Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v107Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v108Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v119Ev,
  (VTBL_ENTRY)&_ZN7S1565C34v120Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v121Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v122Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v123Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v124Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v125Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v126Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v127Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v128Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v129Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v130Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v131Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v132Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v133Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v134Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v135Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v136Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v137Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v138Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v139Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v140Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v141Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v142Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v143Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v144Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v145Ev,
  (VTBL_ENTRY)&_ZN7S1565C24v146Ev,
  (VTBL_ENTRY)&_ZN7S1565C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1565C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1565C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1565C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1565C12v5Ev,
  (VTBL_ENTRY)&_ZN7S1565C12v6Ev,
  (VTBL_ENTRY)&_ZN7S1565C12v7Ev,
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S1565C1[0]),
  (VTBL_ENTRY)&_ZN7S1565C63v72Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v73Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v74Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v75Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v76Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v77Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v78Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v79Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v80Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v81Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v82Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v83Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v84Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v85Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v86Ev,
  (VTBL_ENTRY)&_ZN7S1565C63v87Ev,
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S1565C1[0]),
  (VTBL_ENTRY)&_ZN7S1565C73v88Ev,
  (VTBL_ENTRY)&_ZN7S1565C73v89Ev,
  (VTBL_ENTRY)&_ZN7S1565C73v90Ev,
  (VTBL_ENTRY)&_ZN7S1565C73v91Ev,
  (VTBL_ENTRY)&_ZN7S1565C73v92Ev,
  (VTBL_ENTRY)&_ZN7S1565C73v93Ev,
  (VTBL_ENTRY)&_ZN7S1565C73v94Ev,
  (VTBL_ENTRY)&_ZN7S1565C73v95Ev,
  (VTBL_ENTRY)&_ZN7S1565C73v96Ev,
};
extern VTBL_ENTRY _ZTI7S1565C1[];
extern  VTBL_ENTRY _ZTV7S1565C1[];
Class_Descriptor cd_S1565C1 = {  "S1565C1", // class name
  bases_S1565C1, 5,
  &(vtc_S1565C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(176,108), // object size
  NSPAIRA(_ZTI7S1565C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1565C1),154, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  5, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1501C4  {
  int s1501c4f0;
  __tsi64 s1501c4f1;
  void *s1501c4f2[4];
  int s1501c4f3[2];
  void *s1501c4f4;
  ::S79C8_nt s1501c4f5;
  void *s1501c4f6[2];
  virtual  ~S1501C4(); // _ZN7S1501C4D1Ev
  virtual void  v6(); // _ZN7S1501C42v6Ev
  virtual void  v7(); // _ZN7S1501C42v7Ev
  virtual void  v8(); // _ZN7S1501C42v8Ev
  virtual void  v9(); // _ZN7S1501C42v9Ev
  virtual void  v10(); // _ZN7S1501C43v10Ev
  virtual void  v11(); // _ZN7S1501C43v11Ev
  virtual void  v12(); // _ZN7S1501C43v12Ev
  virtual void  v13(); // _ZN7S1501C43v13Ev
  virtual void  v14(); // _ZN7S1501C43v14Ev
  virtual void  v15(); // _ZN7S1501C43v15Ev
  virtual void  v16(); // _ZN7S1501C43v16Ev
  virtual void  v17(); // _ZN7S1501C43v17Ev
  virtual void  v18(); // _ZN7S1501C43v18Ev
  virtual void  v19(); // _ZN7S1501C43v19Ev
  virtual void  v20(); // _ZN7S1501C43v20Ev
  virtual void  v21(); // _ZN7S1501C43v21Ev
  virtual void  v22(); // _ZN7S1501C43v22Ev
  virtual void  v23(); // _ZN7S1501C43v23Ev
  virtual void  v24(); // _ZN7S1501C43v24Ev
  virtual void  v25(); // _ZN7S1501C43v25Ev
  virtual void  v26(); // _ZN7S1501C43v26Ev
  virtual void  v27(); // _ZN7S1501C43v27Ev
  virtual void  v28(); // _ZN7S1501C43v28Ev
  virtual void  v29(); // _ZN7S1501C43v29Ev
  virtual void  v30(); // _ZN7S1501C43v30Ev
  virtual void  v31(); // _ZN7S1501C43v31Ev
  virtual void  v32(); // _ZN7S1501C43v32Ev
  virtual void  v33(); // _ZN7S1501C43v33Ev
  virtual void  v34(); // _ZN7S1501C43v34Ev
  virtual void  v35(); // _ZN7S1501C43v35Ev
  virtual void  v36(); // _ZN7S1501C43v36Ev
  virtual void  v37(); // _ZN7S1501C43v37Ev
  virtual void  v38(); // _ZN7S1501C43v38Ev
  virtual void  v39(); // _ZN7S1501C43v39Ev
  virtual void  v40(); // _ZN7S1501C43v40Ev
  virtual void  v41(); // _ZN7S1501C43v41Ev
  virtual void  v42(); // _ZN7S1501C43v42Ev
  virtual void  v43(); // _ZN7S1501C43v43Ev
  virtual void  v44(); // _ZN7S1501C43v44Ev
  virtual void  v45(); // _ZN7S1501C43v45Ev
  virtual void  v46(); // _ZN7S1501C43v46Ev
  virtual void  v47(); // _ZN7S1501C43v47Ev
  virtual void  v48(); // _ZN7S1501C43v48Ev
  virtual void  v49(); // _ZN7S1501C43v49Ev
  virtual void  v50(); // _ZN7S1501C43v50Ev
  virtual void  v51(); // _ZN7S1501C43v51Ev
  virtual void  v52(); // _ZN7S1501C43v52Ev
  virtual void  v53(); // _ZN7S1501C43v53Ev
  virtual void  v54(); // _ZN7S1501C43v54Ev
  virtual void  v55(); // _ZN7S1501C43v55Ev
  virtual void  v56(); // _ZN7S1501C43v56Ev
  virtual void  v57(); // _ZN7S1501C43v57Ev
  virtual void  v58(); // _ZN7S1501C43v58Ev
  virtual void  v59(); // _ZN7S1501C43v59Ev
  virtual void  v60(); // _ZN7S1501C43v60Ev
  virtual void  v61(); // _ZN7S1501C43v61Ev
  virtual void  v62(); // _ZN7S1501C43v62Ev
  virtual void  v63(); // _ZN7S1501C43v63Ev
  virtual void  v64(); // _ZN7S1501C43v64Ev
  virtual void  v65(); // _ZN7S1501C43v65Ev
  virtual void  v66(); // _ZN7S1501C43v66Ev
  virtual void  v67(); // _ZN7S1501C43v67Ev
  virtual void  v68(); // _ZN7S1501C43v68Ev
  virtual void  v69(); // _ZN7S1501C43v69Ev
  S1501C4(); // tgen
};
//SIG(-1 S1501C4) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 Fi FL Fp[4] Fi[2] Fp FC2{ m Fi[2]} Fp[2]}


 S1501C4 ::~S1501C4(){ note_dtor("S1501C4", this);}
void  S1501C4 ::v6(){vfunc_called(this, "_ZN7S1501C42v6Ev");}
void  S1501C4 ::v7(){vfunc_called(this, "_ZN7S1501C42v7Ev");}
void  S1501C4 ::v8(){vfunc_called(this, "_ZN7S1501C42v8Ev");}
void  S1501C4 ::v9(){vfunc_called(this, "_ZN7S1501C42v9Ev");}
void  S1501C4 ::v10(){vfunc_called(this, "_ZN7S1501C43v10Ev");}
void  S1501C4 ::v11(){vfunc_called(this, "_ZN7S1501C43v11Ev");}
void  S1501C4 ::v12(){vfunc_called(this, "_ZN7S1501C43v12Ev");}
void  S1501C4 ::v13(){vfunc_called(this, "_ZN7S1501C43v13Ev");}
void  S1501C4 ::v14(){vfunc_called(this, "_ZN7S1501C43v14Ev");}
void  S1501C4 ::v15(){vfunc_called(this, "_ZN7S1501C43v15Ev");}
void  S1501C4 ::v16(){vfunc_called(this, "_ZN7S1501C43v16Ev");}
void  S1501C4 ::v17(){vfunc_called(this, "_ZN7S1501C43v17Ev");}
void  S1501C4 ::v18(){vfunc_called(this, "_ZN7S1501C43v18Ev");}
void  S1501C4 ::v19(){vfunc_called(this, "_ZN7S1501C43v19Ev");}
void  S1501C4 ::v20(){vfunc_called(this, "_ZN7S1501C43v20Ev");}
void  S1501C4 ::v21(){vfunc_called(this, "_ZN7S1501C43v21Ev");}
void  S1501C4 ::v22(){vfunc_called(this, "_ZN7S1501C43v22Ev");}
void  S1501C4 ::v23(){vfunc_called(this, "_ZN7S1501C43v23Ev");}
void  S1501C4 ::v24(){vfunc_called(this, "_ZN7S1501C43v24Ev");}
void  S1501C4 ::v25(){vfunc_called(this, "_ZN7S1501C43v25Ev");}
void  S1501C4 ::v26(){vfunc_called(this, "_ZN7S1501C43v26Ev");}
void  S1501C4 ::v27(){vfunc_called(this, "_ZN7S1501C43v27Ev");}
void  S1501C4 ::v28(){vfunc_called(this, "_ZN7S1501C43v28Ev");}
void  S1501C4 ::v29(){vfunc_called(this, "_ZN7S1501C43v29Ev");}
void  S1501C4 ::v30(){vfunc_called(this, "_ZN7S1501C43v30Ev");}
void  S1501C4 ::v31(){vfunc_called(this, "_ZN7S1501C43v31Ev");}
void  S1501C4 ::v32(){vfunc_called(this, "_ZN7S1501C43v32Ev");}
void  S1501C4 ::v33(){vfunc_called(this, "_ZN7S1501C43v33Ev");}
void  S1501C4 ::v34(){vfunc_called(this, "_ZN7S1501C43v34Ev");}
void  S1501C4 ::v35(){vfunc_called(this, "_ZN7S1501C43v35Ev");}
void  S1501C4 ::v36(){vfunc_called(this, "_ZN7S1501C43v36Ev");}
void  S1501C4 ::v37(){vfunc_called(this, "_ZN7S1501C43v37Ev");}
void  S1501C4 ::v38(){vfunc_called(this, "_ZN7S1501C43v38Ev");}
void  S1501C4 ::v39(){vfunc_called(this, "_ZN7S1501C43v39Ev");}
void  S1501C4 ::v40(){vfunc_called(this, "_ZN7S1501C43v40Ev");}
void  S1501C4 ::v41(){vfunc_called(this, "_ZN7S1501C43v41Ev");}
void  S1501C4 ::v42(){vfunc_called(this, "_ZN7S1501C43v42Ev");}
void  S1501C4 ::v43(){vfunc_called(this, "_ZN7S1501C43v43Ev");}
void  S1501C4 ::v44(){vfunc_called(this, "_ZN7S1501C43v44Ev");}
void  S1501C4 ::v45(){vfunc_called(this, "_ZN7S1501C43v45Ev");}
void  S1501C4 ::v46(){vfunc_called(this, "_ZN7S1501C43v46Ev");}
void  S1501C4 ::v47(){vfunc_called(this, "_ZN7S1501C43v47Ev");}
void  S1501C4 ::v48(){vfunc_called(this, "_ZN7S1501C43v48Ev");}
void  S1501C4 ::v49(){vfunc_called(this, "_ZN7S1501C43v49Ev");}
void  S1501C4 ::v50(){vfunc_called(this, "_ZN7S1501C43v50Ev");}
void  S1501C4 ::v51(){vfunc_called(this, "_ZN7S1501C43v51Ev");}
void  S1501C4 ::v52(){vfunc_called(this, "_ZN7S1501C43v52Ev");}
void  S1501C4 ::v53(){vfunc_called(this, "_ZN7S1501C43v53Ev");}
void  S1501C4 ::v54(){vfunc_called(this, "_ZN7S1501C43v54Ev");}
void  S1501C4 ::v55(){vfunc_called(this, "_ZN7S1501C43v55Ev");}
void  S1501C4 ::v56(){vfunc_called(this, "_ZN7S1501C43v56Ev");}
void  S1501C4 ::v57(){vfunc_called(this, "_ZN7S1501C43v57Ev");}
void  S1501C4 ::v58(){vfunc_called(this, "_ZN7S1501C43v58Ev");}
void  S1501C4 ::v59(){vfunc_called(this, "_ZN7S1501C43v59Ev");}
void  S1501C4 ::v60(){vfunc_called(this, "_ZN7S1501C43v60Ev");}
void  S1501C4 ::v61(){vfunc_called(this, "_ZN7S1501C43v61Ev");}
void  S1501C4 ::v62(){vfunc_called(this, "_ZN7S1501C43v62Ev");}
void  S1501C4 ::v63(){vfunc_called(this, "_ZN7S1501C43v63Ev");}
void  S1501C4 ::v64(){vfunc_called(this, "_ZN7S1501C43v64Ev");}
void  S1501C4 ::v65(){vfunc_called(this, "_ZN7S1501C43v65Ev");}
void  S1501C4 ::v66(){vfunc_called(this, "_ZN7S1501C43v66Ev");}
void  S1501C4 ::v67(){vfunc_called(this, "_ZN7S1501C43v67Ev");}
void  S1501C4 ::v68(){vfunc_called(this, "_ZN7S1501C43v68Ev");}
void  S1501C4 ::v69(){vfunc_called(this, "_ZN7S1501C43v69Ev");}
S1501C4 ::S1501C4(){ note_ctor("S1501C4", this);} // tgen

static void Test_S1501C4()
{
  extern Class_Descriptor cd_S1501C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S1501C4, buf);
    S1501C4 *dp, &lv = *(dp=new (buf) S1501C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S1501C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1501C4)");
    check_field_offset(lv, s1501c4f0, ABISELECT(8,4), "S1501C4.s1501c4f0");
    check_field_offset(lv, s1501c4f1, ABISELECT(16,8), "S1501C4.s1501c4f1");
    check_field_offset(lv, s1501c4f2, ABISELECT(24,16), "S1501C4.s1501c4f2");
    check_field_offset(lv, s1501c4f3, ABISELECT(56,32), "S1501C4.s1501c4f3");
    check_field_offset(lv, s1501c4f4, ABISELECT(64,40), "S1501C4.s1501c4f4");
    check_field_offset(lv, s1501c4f5, ABISELECT(72,44), "S1501C4.s1501c4f5");
    check_field_offset(lv, s1501c4f6, ABISELECT(80,52), "S1501C4.s1501c4f6");
    test_class_info(&lv, &cd_S1501C4);
    dp->~S1501C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1501C4(Test_S1501C4, "S1501C4", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S1501C4C1Ev();
extern void _ZN7S1501C4D1Ev();
Name_Map name_map_S1501C4[] = {
  NSPAIR(_ZN7S1501C4C1Ev),
  NSPAIR(_ZN7S1501C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1501C4[];
extern void _ZN7S1501C4D1Ev();
extern void _ZN7S1501C4D0Ev();
extern void _ZN7S1501C42v6Ev();
extern void _ZN7S1501C42v7Ev();
extern void _ZN7S1501C42v8Ev();
extern void _ZN7S1501C42v9Ev();
extern void _ZN7S1501C43v10Ev();
extern void _ZN7S1501C43v11Ev();
extern void _ZN7S1501C43v12Ev();
extern void _ZN7S1501C43v13Ev();
extern void _ZN7S1501C43v14Ev();
extern void _ZN7S1501C43v15Ev();
extern void _ZN7S1501C43v16Ev();
extern void _ZN7S1501C43v17Ev();
extern void _ZN7S1501C43v18Ev();
extern void _ZN7S1501C43v19Ev();
extern void _ZN7S1501C43v20Ev();
extern void _ZN7S1501C43v21Ev();
extern void _ZN7S1501C43v22Ev();
extern void _ZN7S1501C43v23Ev();
extern void _ZN7S1501C43v24Ev();
extern void _ZN7S1501C43v25Ev();
extern void _ZN7S1501C43v26Ev();
extern void _ZN7S1501C43v27Ev();
extern void _ZN7S1501C43v28Ev();
extern void _ZN7S1501C43v29Ev();
extern void _ZN7S1501C43v30Ev();
extern void _ZN7S1501C43v31Ev();
extern void _ZN7S1501C43v32Ev();
extern void _ZN7S1501C43v33Ev();
extern void _ZN7S1501C43v34Ev();
extern void _ZN7S1501C43v35Ev();
extern void _ZN7S1501C43v36Ev();
extern void _ZN7S1501C43v37Ev();
extern void _ZN7S1501C43v38Ev();
extern void _ZN7S1501C43v39Ev();
extern void _ZN7S1501C43v40Ev();
extern void _ZN7S1501C43v41Ev();
extern void _ZN7S1501C43v42Ev();
extern void _ZN7S1501C43v43Ev();
extern void _ZN7S1501C43v44Ev();
extern void _ZN7S1501C43v45Ev();
extern void _ZN7S1501C43v46Ev();
extern void _ZN7S1501C43v47Ev();
extern void _ZN7S1501C43v48Ev();
extern void _ZN7S1501C43v49Ev();
extern void _ZN7S1501C43v50Ev();
extern void _ZN7S1501C43v51Ev();
extern void _ZN7S1501C43v52Ev();
extern void _ZN7S1501C43v53Ev();
extern void _ZN7S1501C43v54Ev();
extern void _ZN7S1501C43v55Ev();
extern void _ZN7S1501C43v56Ev();
extern void _ZN7S1501C43v57Ev();
extern void _ZN7S1501C43v58Ev();
extern void _ZN7S1501C43v59Ev();
extern void _ZN7S1501C43v60Ev();
extern void _ZN7S1501C43v61Ev();
extern void _ZN7S1501C43v62Ev();
extern void _ZN7S1501C43v63Ev();
extern void _ZN7S1501C43v64Ev();
extern void _ZN7S1501C43v65Ev();
extern void _ZN7S1501C43v66Ev();
extern void _ZN7S1501C43v67Ev();
extern void _ZN7S1501C43v68Ev();
extern void _ZN7S1501C43v69Ev();
static  VTBL_ENTRY vtc_S1501C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1501C4[0]),
  (VTBL_ENTRY)&_ZN7S1501C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1501C4D0Ev,
  (VTBL_ENTRY)&_ZN7S1501C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1501C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1501C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1501C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v69Ev,
};
extern VTBL_ENTRY _ZTI7S1501C4[];
extern  VTBL_ENTRY _ZTV7S1501C4[];
Class_Descriptor cd_S1501C4 = {  "S1501C4", // class name
  0,0,//no base classes
  &(vtc_S1501C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S1501C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1501C4),68, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1501C6  {
  virtual void  v70(); // _ZN7S1501C63v70Ev
  virtual void  v71(); // _ZN7S1501C63v71Ev
  virtual void  v72(); // _ZN7S1501C63v72Ev
  virtual void  v73(); // _ZN7S1501C63v73Ev
  virtual void  v74(); // _ZN7S1501C63v74Ev
  virtual void  v75(); // _ZN7S1501C63v75Ev
  virtual void  v76(); // _ZN7S1501C63v76Ev
  virtual void  v77(); // _ZN7S1501C63v77Ev
  virtual void  v78(); // _ZN7S1501C63v78Ev
  virtual void  v79(); // _ZN7S1501C63v79Ev
  virtual void  v80(); // _ZN7S1501C63v80Ev
  virtual void  v81(); // _ZN7S1501C63v81Ev
  virtual void  v82(); // _ZN7S1501C63v82Ev
  virtual void  v83(); // _ZN7S1501C63v83Ev
  virtual void  v84(); // _ZN7S1501C63v84Ev
  virtual void  v85(); // _ZN7S1501C63v85Ev
  ~S1501C6(); // tgen
  S1501C6(); // tgen
};
//SIG(-1 S1501C6) C1{ v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16}


void  S1501C6 ::v70(){vfunc_called(this, "_ZN7S1501C63v70Ev");}
void  S1501C6 ::v71(){vfunc_called(this, "_ZN7S1501C63v71Ev");}
void  S1501C6 ::v72(){vfunc_called(this, "_ZN7S1501C63v72Ev");}
void  S1501C6 ::v73(){vfunc_called(this, "_ZN7S1501C63v73Ev");}
void  S1501C6 ::v74(){vfunc_called(this, "_ZN7S1501C63v74Ev");}
void  S1501C6 ::v75(){vfunc_called(this, "_ZN7S1501C63v75Ev");}
void  S1501C6 ::v76(){vfunc_called(this, "_ZN7S1501C63v76Ev");}
void  S1501C6 ::v77(){vfunc_called(this, "_ZN7S1501C63v77Ev");}
void  S1501C6 ::v78(){vfunc_called(this, "_ZN7S1501C63v78Ev");}
void  S1501C6 ::v79(){vfunc_called(this, "_ZN7S1501C63v79Ev");}
void  S1501C6 ::v80(){vfunc_called(this, "_ZN7S1501C63v80Ev");}
void  S1501C6 ::v81(){vfunc_called(this, "_ZN7S1501C63v81Ev");}
void  S1501C6 ::v82(){vfunc_called(this, "_ZN7S1501C63v82Ev");}
void  S1501C6 ::v83(){vfunc_called(this, "_ZN7S1501C63v83Ev");}
void  S1501C6 ::v84(){vfunc_called(this, "_ZN7S1501C63v84Ev");}
void  S1501C6 ::v85(){vfunc_called(this, "_ZN7S1501C63v85Ev");}
S1501C6 ::~S1501C6(){ note_dtor("S1501C6", this);} // tgen
S1501C6 ::S1501C6(){ note_ctor("S1501C6", this);} // tgen

static void Test_S1501C6()
{
  extern Class_Descriptor cd_S1501C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S1501C6, buf);
    S1501C6 *dp, &lv = *(dp=new (buf) S1501C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1501C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1501C6)");
    test_class_info(&lv, &cd_S1501C6);
    dp->~S1501C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1501C6(Test_S1501C6, "S1501C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S1501C6C1Ev();
extern void _ZN7S1501C6D1Ev();
Name_Map name_map_S1501C6[] = {
  NSPAIR(_ZN7S1501C6C1Ev),
  NSPAIR(_ZN7S1501C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1501C6[];
extern void _ZN7S1501C63v70Ev();
extern void _ZN7S1501C63v71Ev();
extern void _ZN7S1501C63v72Ev();
extern void _ZN7S1501C63v73Ev();
extern void _ZN7S1501C63v74Ev();
extern void _ZN7S1501C63v75Ev();
extern void _ZN7S1501C63v76Ev();
extern void _ZN7S1501C63v77Ev();
extern void _ZN7S1501C63v78Ev();
extern void _ZN7S1501C63v79Ev();
extern void _ZN7S1501C63v80Ev();
extern void _ZN7S1501C63v81Ev();
extern void _ZN7S1501C63v82Ev();
extern void _ZN7S1501C63v83Ev();
extern void _ZN7S1501C63v84Ev();
extern void _ZN7S1501C63v85Ev();
static  VTBL_ENTRY vtc_S1501C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1501C6[0]),
  (VTBL_ENTRY)&_ZN7S1501C63v70Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v71Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v72Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v73Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v74Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v75Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v76Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v77Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v78Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v79Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v80Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v81Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v82Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v83Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v84Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v85Ev,
};
extern VTBL_ENTRY _ZTI7S1501C6[];
extern  VTBL_ENTRY _ZTV7S1501C6[];
Class_Descriptor cd_S1501C6 = {  "S1501C6", // class name
  0,0,//no base classes
  &(vtc_S1501C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S1501C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1501C6),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1501C7  {
  virtual void  v86(); // _ZN7S1501C73v86Ev
  virtual void  v87(); // _ZN7S1501C73v87Ev
  virtual void  v88(); // _ZN7S1501C73v88Ev
  virtual void  v89(); // _ZN7S1501C73v89Ev
  virtual void  v90(); // _ZN7S1501C73v90Ev
  virtual void  v91(); // _ZN7S1501C73v91Ev
  virtual void  v92(); // _ZN7S1501C73v92Ev
  virtual void  v93(); // _ZN7S1501C73v93Ev
  virtual void  v94(); // _ZN7S1501C73v94Ev
  ~S1501C7(); // tgen
  S1501C7(); // tgen
};
//SIG(-1 S1501C7) C1{ v1 v2 v3 v4 v5 v6 v7 v8 v9}


void  S1501C7 ::v86(){vfunc_called(this, "_ZN7S1501C73v86Ev");}
void  S1501C7 ::v87(){vfunc_called(this, "_ZN7S1501C73v87Ev");}
void  S1501C7 ::v88(){vfunc_called(this, "_ZN7S1501C73v88Ev");}
void  S1501C7 ::v89(){vfunc_called(this, "_ZN7S1501C73v89Ev");}
void  S1501C7 ::v90(){vfunc_called(this, "_ZN7S1501C73v90Ev");}
void  S1501C7 ::v91(){vfunc_called(this, "_ZN7S1501C73v91Ev");}
void  S1501C7 ::v92(){vfunc_called(this, "_ZN7S1501C73v92Ev");}
void  S1501C7 ::v93(){vfunc_called(this, "_ZN7S1501C73v93Ev");}
void  S1501C7 ::v94(){vfunc_called(this, "_ZN7S1501C73v94Ev");}
S1501C7 ::~S1501C7(){ note_dtor("S1501C7", this);} // tgen
S1501C7 ::S1501C7(){ note_ctor("S1501C7", this);} // tgen

static void Test_S1501C7()
{
  extern Class_Descriptor cd_S1501C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S1501C7, buf);
    S1501C7 *dp, &lv = *(dp=new (buf) S1501C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1501C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1501C7)");
    test_class_info(&lv, &cd_S1501C7);
    dp->~S1501C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1501C7(Test_S1501C7, "S1501C7", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S1501C7C1Ev();
extern void _ZN7S1501C7D1Ev();
Name_Map name_map_S1501C7[] = {
  NSPAIR(_ZN7S1501C7C1Ev),
  NSPAIR(_ZN7S1501C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1501C7[];
extern void _ZN7S1501C73v86Ev();
extern void _ZN7S1501C73v87Ev();
extern void _ZN7S1501C73v88Ev();
extern void _ZN7S1501C73v89Ev();
extern void _ZN7S1501C73v90Ev();
extern void _ZN7S1501C73v91Ev();
extern void _ZN7S1501C73v92Ev();
extern void _ZN7S1501C73v93Ev();
extern void _ZN7S1501C73v94Ev();
static  VTBL_ENTRY vtc_S1501C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1501C7[0]),
  (VTBL_ENTRY)&_ZN7S1501C73v86Ev,
  (VTBL_ENTRY)&_ZN7S1501C73v87Ev,
  (VTBL_ENTRY)&_ZN7S1501C73v88Ev,
  (VTBL_ENTRY)&_ZN7S1501C73v89Ev,
  (VTBL_ENTRY)&_ZN7S1501C73v90Ev,
  (VTBL_ENTRY)&_ZN7S1501C73v91Ev,
  (VTBL_ENTRY)&_ZN7S1501C73v92Ev,
  (VTBL_ENTRY)&_ZN7S1501C73v93Ev,
  (VTBL_ENTRY)&_ZN7S1501C73v94Ev,
};
extern VTBL_ENTRY _ZTI7S1501C7[];
extern  VTBL_ENTRY _ZTV7S1501C7[];
Class_Descriptor cd_S1501C7 = {  "S1501C7", // class name
  0,0,//no base classes
  &(vtc_S1501C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S1501C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1501C7),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1501C3  : S1501C4 , S1501C6 , S1501C7 {
  void *s1501c3f0;
  ::S79C39_nt s1501c3f1;
  unsigned int s1501c3f2:1;
  unsigned int s1501c3f3:1;
  unsigned int s1501c3f4:1;
  unsigned int s1501c3f5:1;
  virtual  ~S1501C3(); // _ZN7S1501C3D1Ev
  virtual void  v95(); // _ZN7S1501C33v95Ev
  virtual void  v96(); // _ZN7S1501C33v96Ev
  virtual void  v97(); // _ZN7S1501C33v97Ev
  virtual void  v98(); // _ZN7S1501C33v98Ev
  virtual void  v99(); // _ZN7S1501C33v99Ev
  virtual void  v100(); // _ZN7S1501C34v100Ev
  virtual void  v101(); // _ZN7S1501C34v101Ev
  virtual void  v102(); // _ZN7S1501C34v102Ev
  virtual void  v103(); // _ZN7S1501C34v103Ev
  virtual void  v104(); // _ZN7S1501C34v104Ev
  virtual void  v105(); // _ZN7S1501C34v105Ev
  virtual void  v106(); // _ZN7S1501C34v106Ev
  virtual void  v107(); // _ZN7S1501C34v107Ev
  virtual void  v108(); // _ZN7S1501C34v108Ev
  virtual void  v109(); // _ZN7S1501C34v109Ev
  virtual void  v110(); // _ZN7S1501C34v110Ev
  virtual void  v111(); // _ZN7S1501C34v111Ev
  virtual void  v112(); // _ZN7S1501C34v112Ev
  virtual void  v113(); // _ZN7S1501C34v113Ev
  virtual void  v114(); // _ZN7S1501C34v114Ev
  virtual void  v115(); // _ZN7S1501C34v115Ev
  virtual void  v116(); // _ZN7S1501C34v116Ev
  virtual void  v117(); // _ZN7S1501C34v117Ev
  virtual void  v118(); // _ZN7S1501C34v118Ev
  S1501C3(); // tgen
};
//SIG(-1 S1501C3) C1{ BC2{ vd v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} BC4{ v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104} BC5{ v105 v106 v107 v108 v109 v110 v111 v112 v113} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 Fp FC6{ BC7{ BC8{ BC9{ m Fp Fi[2]}}}} Fi:1 Fi:1 Fi:1 Fi:1}


 S1501C3 ::~S1501C3(){ note_dtor("S1501C3", this);}
void  S1501C3 ::v95(){vfunc_called(this, "_ZN7S1501C33v95Ev");}
void  S1501C3 ::v96(){vfunc_called(this, "_ZN7S1501C33v96Ev");}
void  S1501C3 ::v97(){vfunc_called(this, "_ZN7S1501C33v97Ev");}
void  S1501C3 ::v98(){vfunc_called(this, "_ZN7S1501C33v98Ev");}
void  S1501C3 ::v99(){vfunc_called(this, "_ZN7S1501C33v99Ev");}
void  S1501C3 ::v100(){vfunc_called(this, "_ZN7S1501C34v100Ev");}
void  S1501C3 ::v101(){vfunc_called(this, "_ZN7S1501C34v101Ev");}
void  S1501C3 ::v102(){vfunc_called(this, "_ZN7S1501C34v102Ev");}
void  S1501C3 ::v103(){vfunc_called(this, "_ZN7S1501C34v103Ev");}
void  S1501C3 ::v104(){vfunc_called(this, "_ZN7S1501C34v104Ev");}
void  S1501C3 ::v105(){vfunc_called(this, "_ZN7S1501C34v105Ev");}
void  S1501C3 ::v106(){vfunc_called(this, "_ZN7S1501C34v106Ev");}
void  S1501C3 ::v107(){vfunc_called(this, "_ZN7S1501C34v107Ev");}
void  S1501C3 ::v108(){vfunc_called(this, "_ZN7S1501C34v108Ev");}
void  S1501C3 ::v109(){vfunc_called(this, "_ZN7S1501C34v109Ev");}
void  S1501C3 ::v110(){vfunc_called(this, "_ZN7S1501C34v110Ev");}
void  S1501C3 ::v111(){vfunc_called(this, "_ZN7S1501C34v111Ev");}
void  S1501C3 ::v112(){vfunc_called(this, "_ZN7S1501C34v112Ev");}
void  S1501C3 ::v113(){vfunc_called(this, "_ZN7S1501C34v113Ev");}
void  S1501C3 ::v114(){vfunc_called(this, "_ZN7S1501C34v114Ev");}
void  S1501C3 ::v115(){vfunc_called(this, "_ZN7S1501C34v115Ev");}
void  S1501C3 ::v116(){vfunc_called(this, "_ZN7S1501C34v116Ev");}
void  S1501C3 ::v117(){vfunc_called(this, "_ZN7S1501C34v117Ev");}
void  S1501C3 ::v118(){vfunc_called(this, "_ZN7S1501C34v118Ev");}
S1501C3 ::S1501C3(){ note_ctor("S1501C3", this);} // tgen

static void Test_S1501C3()
{
  extern Class_Descriptor cd_S1501C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,23)];
    init_test(&cd_S1501C3, buf);
    S1501C3 *dp, &lv = *(dp=new (buf) S1501C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,88), "sizeof(S1501C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1501C3)");
    check_base_class_offset(lv, (S1501C4*), 0, "S1501C3");
    check_base_class_offset(lv, (S1501C6*), ABISELECT(96,60), "S1501C3");
    check_base_class_offset(lv, (S1501C7*), ABISELECT(104,64), "S1501C3");
    check_field_offset(lv, s1501c3f0, ABISELECT(112,68), "S1501C3.s1501c3f0");
    check_field_offset(lv, s1501c3f1, ABISELECT(120,72), "S1501C3.s1501c3f1");
    set_bf_and_test(lv, s1501c3f2, ABISELECT(136,84), 0, 1, 1, "S1501C3");
    set_bf_and_test(lv, s1501c3f3, ABISELECT(136,84), 1, 1, 1, "S1501C3");
    set_bf_and_test(lv, s1501c3f4, ABISELECT(136,84), 2, 1, 1, "S1501C3");
    set_bf_and_test(lv, s1501c3f5, ABISELECT(136,84), 3, 1, 1, "S1501C3");
    test_class_info(&lv, &cd_S1501C3);
    dp->~S1501C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1501C3(Test_S1501C3, "S1501C3", ABISELECT(144,88));

#else // __cplusplus

extern void _ZN7S1501C3C1Ev();
extern void _ZN7S1501C3D1Ev();
Name_Map name_map_S1501C3[] = {
  NSPAIR(_ZN7S1501C3C1Ev),
  NSPAIR(_ZN7S1501C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1501C4;
extern VTBL_ENTRY _ZTI7S1501C4[];
extern  VTBL_ENTRY _ZTV7S1501C4[];
extern Class_Descriptor cd_S1501C6;
extern VTBL_ENTRY _ZTI7S1501C6[];
extern  VTBL_ENTRY _ZTV7S1501C6[];
extern Class_Descriptor cd_S1501C7;
extern VTBL_ENTRY _ZTI7S1501C7[];
extern  VTBL_ENTRY _ZTV7S1501C7[];
static Base_Class bases_S1501C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1501C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1501C6,    ABISELECT(96,60), //bcp->offset
    92, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1501C7,    ABISELECT(104,64), //bcp->offset
    110, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1501C3[];
extern void _ZN7S1501C3D1Ev();
extern void _ZN7S1501C3D0Ev();
extern void _ZN7S1501C42v6Ev();
extern void _ZN7S1501C42v7Ev();
extern void _ZN7S1501C42v8Ev();
extern void _ZN7S1501C42v9Ev();
extern void _ZN7S1501C43v10Ev();
extern void _ZN7S1501C43v11Ev();
extern void _ZN7S1501C43v12Ev();
extern void _ZN7S1501C43v13Ev();
extern void _ZN7S1501C43v14Ev();
extern void _ZN7S1501C43v15Ev();
extern void _ZN7S1501C43v16Ev();
extern void _ZN7S1501C43v17Ev();
extern void _ZN7S1501C43v18Ev();
extern void _ZN7S1501C43v19Ev();
extern void _ZN7S1501C43v20Ev();
extern void _ZN7S1501C43v21Ev();
extern void _ZN7S1501C43v22Ev();
extern void _ZN7S1501C43v23Ev();
extern void _ZN7S1501C43v24Ev();
extern void _ZN7S1501C43v25Ev();
extern void _ZN7S1501C43v26Ev();
extern void _ZN7S1501C43v27Ev();
extern void _ZN7S1501C43v28Ev();
extern void _ZN7S1501C43v29Ev();
extern void _ZN7S1501C43v30Ev();
extern void _ZN7S1501C43v31Ev();
extern void _ZN7S1501C43v32Ev();
extern void _ZN7S1501C43v33Ev();
extern void _ZN7S1501C43v34Ev();
extern void _ZN7S1501C43v35Ev();
extern void _ZN7S1501C43v36Ev();
extern void _ZN7S1501C43v37Ev();
extern void _ZN7S1501C43v38Ev();
extern void _ZN7S1501C43v39Ev();
extern void _ZN7S1501C43v40Ev();
extern void _ZN7S1501C43v41Ev();
extern void _ZN7S1501C43v42Ev();
extern void _ZN7S1501C43v43Ev();
extern void _ZN7S1501C43v44Ev();
extern void _ZN7S1501C43v45Ev();
extern void _ZN7S1501C43v46Ev();
extern void _ZN7S1501C43v47Ev();
extern void _ZN7S1501C43v48Ev();
extern void _ZN7S1501C43v49Ev();
extern void _ZN7S1501C43v50Ev();
extern void _ZN7S1501C43v51Ev();
extern void _ZN7S1501C43v52Ev();
extern void _ZN7S1501C43v53Ev();
extern void _ZN7S1501C43v54Ev();
extern void _ZN7S1501C43v55Ev();
extern void _ZN7S1501C43v56Ev();
extern void _ZN7S1501C43v57Ev();
extern void _ZN7S1501C43v58Ev();
extern void _ZN7S1501C43v59Ev();
extern void _ZN7S1501C43v60Ev();
extern void _ZN7S1501C43v61Ev();
extern void _ZN7S1501C43v62Ev();
extern void _ZN7S1501C43v63Ev();
extern void _ZN7S1501C43v64Ev();
extern void _ZN7S1501C43v65Ev();
extern void _ZN7S1501C43v66Ev();
extern void _ZN7S1501C43v67Ev();
extern void _ZN7S1501C43v68Ev();
extern void _ZN7S1501C43v69Ev();
extern void _ZN7S1501C33v95Ev();
extern void _ZN7S1501C33v96Ev();
extern void _ZN7S1501C33v97Ev();
extern void _ZN7S1501C33v98Ev();
extern void _ZN7S1501C33v99Ev();
extern void _ZN7S1501C34v100Ev();
extern void _ZN7S1501C34v101Ev();
extern void _ZN7S1501C34v102Ev();
extern void _ZN7S1501C34v103Ev();
extern void _ZN7S1501C34v104Ev();
extern void _ZN7S1501C34v105Ev();
extern void _ZN7S1501C34v106Ev();
extern void _ZN7S1501C34v107Ev();
extern void _ZN7S1501C34v108Ev();
extern void _ZN7S1501C34v109Ev();
extern void _ZN7S1501C34v110Ev();
extern void _ZN7S1501C34v111Ev();
extern void _ZN7S1501C34v112Ev();
extern void _ZN7S1501C34v113Ev();
extern void _ZN7S1501C34v114Ev();
extern void _ZN7S1501C34v115Ev();
extern void _ZN7S1501C34v116Ev();
extern void _ZN7S1501C34v117Ev();
extern void _ZN7S1501C34v118Ev();
extern void _ZN7S1501C63v70Ev();
extern void _ZN7S1501C63v71Ev();
extern void _ZN7S1501C63v72Ev();
extern void _ZN7S1501C63v73Ev();
extern void _ZN7S1501C63v74Ev();
extern void _ZN7S1501C63v75Ev();
extern void _ZN7S1501C63v76Ev();
extern void _ZN7S1501C63v77Ev();
extern void _ZN7S1501C63v78Ev();
extern void _ZN7S1501C63v79Ev();
extern void _ZN7S1501C63v80Ev();
extern void _ZN7S1501C63v81Ev();
extern void _ZN7S1501C63v82Ev();
extern void _ZN7S1501C63v83Ev();
extern void _ZN7S1501C63v84Ev();
extern void _ZN7S1501C63v85Ev();
extern void _ZN7S1501C73v86Ev();
extern void _ZN7S1501C73v87Ev();
extern void _ZN7S1501C73v88Ev();
extern void _ZN7S1501C73v89Ev();
extern void _ZN7S1501C73v90Ev();
extern void _ZN7S1501C73v91Ev();
extern void _ZN7S1501C73v92Ev();
extern void _ZN7S1501C73v93Ev();
extern void _ZN7S1501C73v94Ev();
static  VTBL_ENTRY vtc_S1501C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1501C3[0]),
  (VTBL_ENTRY)&_ZN7S1501C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1501C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1501C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1501C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1501C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1501C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1501C33v95Ev,
  (VTBL_ENTRY)&_ZN7S1501C33v96Ev,
  (VTBL_ENTRY)&_ZN7S1501C33v97Ev,
  (VTBL_ENTRY)&_ZN7S1501C33v98Ev,
  (VTBL_ENTRY)&_ZN7S1501C33v99Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v100Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v101Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v102Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v103Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v104Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v105Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v106Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v107Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v108Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v118Ev,
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S1501C3[0]),
  (VTBL_ENTRY)&_ZN7S1501C63v70Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v71Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v72Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v73Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v74Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v75Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v76Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v77Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v78Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v79Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v80Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v81Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v82Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v83Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v84Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v85Ev,
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S1501C3[0]),
  (VTBL_ENTRY)&_ZN7S1501C73v86Ev,
  (VTBL_ENTRY)&_ZN7S1501C73v87Ev,
  (VTBL_ENTRY)&_ZN7S1501C73v88Ev,
  (VTBL_ENTRY)&_ZN7S1501C73v89Ev,
  (VTBL_ENTRY)&_ZN7S1501C73v90Ev,
  (VTBL_ENTRY)&_ZN7S1501C73v91Ev,
  (VTBL_ENTRY)&_ZN7S1501C73v92Ev,
  (VTBL_ENTRY)&_ZN7S1501C73v93Ev,
  (VTBL_ENTRY)&_ZN7S1501C73v94Ev,
};
extern VTBL_ENTRY _ZTI7S1501C3[];
extern  VTBL_ENTRY _ZTV7S1501C3[];
Class_Descriptor cd_S1501C3 = {  "S1501C3", // class name
  bases_S1501C3, 3,
  &(vtc_S1501C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,88), // object size
  NSPAIRA(_ZTI7S1501C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S1501C3),121, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1501C2  : S1501C3 {
  ::S3262C11_nt s1501c2f0;
  int s1501c2f1;
  virtual  ~S1501C2(); // _ZN7S1501C2D1Ev
  virtual void  v119(); // _ZN7S1501C24v119Ev
  virtual void  v120(); // _ZN7S1501C24v120Ev
  virtual void  v121(); // _ZN7S1501C24v121Ev
  virtual void  v122(); // _ZN7S1501C24v122Ev
  virtual void  v123(); // _ZN7S1501C24v123Ev
  virtual void  v124(); // _ZN7S1501C24v124Ev
  virtual void  v125(); // _ZN7S1501C24v125Ev
  virtual void  v126(); // _ZN7S1501C24v126Ev
  virtual void  v127(); // _ZN7S1501C24v127Ev
  virtual void  v128(); // _ZN7S1501C24v128Ev
  virtual void  v129(); // _ZN7S1501C24v129Ev
  virtual void  v130(); // _ZN7S1501C24v130Ev
  virtual void  v131(); // _ZN7S1501C24v131Ev
  virtual void  v132(); // _ZN7S1501C24v132Ev
  virtual void  v133(); // _ZN7S1501C24v133Ev
  virtual void  v134(); // _ZN7S1501C24v134Ev
  virtual void  v135(); // _ZN7S1501C24v135Ev
  virtual void  v136(); // _ZN7S1501C24v136Ev
  virtual void  v137(); // _ZN7S1501C24v137Ev
  virtual void  v138(); // _ZN7S1501C24v138Ev
  virtual void  v139(); // _ZN7S1501C24v139Ev
  virtual void  v140(); // _ZN7S1501C24v140Ev
  virtual void  v141(); // _ZN7S1501C24v141Ev
  virtual void  v142(); // _ZN7S1501C24v142Ev
  virtual void  v143(); // _ZN7S1501C24v143Ev
  virtual void  v144(); // _ZN7S1501C24v144Ev
  virtual void  v145(); // _ZN7S1501C24v145Ev
  S1501C2(); // tgen
};
//SIG(-1 S1501C2) C1{ BC2{ BC3{ vd v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} BC5{ v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107} BC6{ v108 v109 v110 v111 v112 v113 v114 v115 v116} vd v117 v118 v119 v120 v121 v122 v123 v124 v125 v126 v127 v128 v129 v130 v131 v132 v133 v134 v135 v136 v137 v138 v139 v140 Fp FC7{ BC8{ BC9{ BC10{ m Fp Fi[2]}}}} Fi:1 Fi:1 Fi:1 Fi:1} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 FC11{ m FC12{ BC13{ BC10}} Fc} Fi}


 S1501C2 ::~S1501C2(){ note_dtor("S1501C2", this);}
void  S1501C2 ::v119(){vfunc_called(this, "_ZN7S1501C24v119Ev");}
void  S1501C2 ::v120(){vfunc_called(this, "_ZN7S1501C24v120Ev");}
void  S1501C2 ::v121(){vfunc_called(this, "_ZN7S1501C24v121Ev");}
void  S1501C2 ::v122(){vfunc_called(this, "_ZN7S1501C24v122Ev");}
void  S1501C2 ::v123(){vfunc_called(this, "_ZN7S1501C24v123Ev");}
void  S1501C2 ::v124(){vfunc_called(this, "_ZN7S1501C24v124Ev");}
void  S1501C2 ::v125(){vfunc_called(this, "_ZN7S1501C24v125Ev");}
void  S1501C2 ::v126(){vfunc_called(this, "_ZN7S1501C24v126Ev");}
void  S1501C2 ::v127(){vfunc_called(this, "_ZN7S1501C24v127Ev");}
void  S1501C2 ::v128(){vfunc_called(this, "_ZN7S1501C24v128Ev");}
void  S1501C2 ::v129(){vfunc_called(this, "_ZN7S1501C24v129Ev");}
void  S1501C2 ::v130(){vfunc_called(this, "_ZN7S1501C24v130Ev");}
void  S1501C2 ::v131(){vfunc_called(this, "_ZN7S1501C24v131Ev");}
void  S1501C2 ::v132(){vfunc_called(this, "_ZN7S1501C24v132Ev");}
void  S1501C2 ::v133(){vfunc_called(this, "_ZN7S1501C24v133Ev");}
void  S1501C2 ::v134(){vfunc_called(this, "_ZN7S1501C24v134Ev");}
void  S1501C2 ::v135(){vfunc_called(this, "_ZN7S1501C24v135Ev");}
void  S1501C2 ::v136(){vfunc_called(this, "_ZN7S1501C24v136Ev");}
void  S1501C2 ::v137(){vfunc_called(this, "_ZN7S1501C24v137Ev");}
void  S1501C2 ::v138(){vfunc_called(this, "_ZN7S1501C24v138Ev");}
void  S1501C2 ::v139(){vfunc_called(this, "_ZN7S1501C24v139Ev");}
void  S1501C2 ::v140(){vfunc_called(this, "_ZN7S1501C24v140Ev");}
void  S1501C2 ::v141(){vfunc_called(this, "_ZN7S1501C24v141Ev");}
void  S1501C2 ::v142(){vfunc_called(this, "_ZN7S1501C24v142Ev");}
void  S1501C2 ::v143(){vfunc_called(this, "_ZN7S1501C24v143Ev");}
void  S1501C2 ::v144(){vfunc_called(this, "_ZN7S1501C24v144Ev");}
void  S1501C2 ::v145(){vfunc_called(this, "_ZN7S1501C24v145Ev");}
S1501C2 ::S1501C2(){ note_ctor("S1501C2", this);} // tgen

static void Test_S1501C2()
{
  extern Class_Descriptor cd_S1501C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,28)];
    init_test(&cd_S1501C2, buf);
    S1501C2 *dp, &lv = *(dp=new (buf) S1501C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,108), "sizeof(S1501C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1501C2)");
    check_base_class_offset(lv, (S1501C4*)(S1501C3*), 0, "S1501C2");
    check_base_class_offset(lv, (S1501C6*)(S1501C3*), ABISELECT(96,60), "S1501C2");
    check_base_class_offset(lv, (S1501C7*)(S1501C3*), ABISELECT(104,64), "S1501C2");
    check_base_class_offset(lv, (S1501C3*), 0, "S1501C2");
    check_field_offset(lv, s1501c2f0, ABISELECT(144,88), "S1501C2.s1501c2f0");
    check_field_offset(lv, s1501c2f1, ABISELECT(168,104), "S1501C2.s1501c2f1");
    test_class_info(&lv, &cd_S1501C2);
    dp->~S1501C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1501C2(Test_S1501C2, "S1501C2", ABISELECT(176,108));

#else // __cplusplus

extern void _ZN7S1501C2C1Ev();
extern void _ZN7S1501C2D1Ev();
Name_Map name_map_S1501C2[] = {
  NSPAIR(_ZN7S1501C2C1Ev),
  NSPAIR(_ZN7S1501C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1501C4;
extern VTBL_ENTRY _ZTI7S1501C4[];
extern  VTBL_ENTRY _ZTV7S1501C4[];
extern Class_Descriptor cd_S1501C6;
extern VTBL_ENTRY _ZTI7S1501C6[];
extern  VTBL_ENTRY _ZTV7S1501C6[];
extern Class_Descriptor cd_S1501C7;
extern VTBL_ENTRY _ZTI7S1501C7[];
extern  VTBL_ENTRY _ZTV7S1501C7[];
extern Class_Descriptor cd_S1501C3;
extern VTBL_ENTRY _ZTI7S1501C3[];
extern  VTBL_ENTRY _ZTV7S1501C3[];
static Base_Class bases_S1501C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1501C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1501C6,    ABISELECT(96,60), //bcp->offset
    119, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1501C7,    ABISELECT(104,64), //bcp->offset
    137, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1501C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1501C2[];
extern void _ZN7S1501C2D1Ev();
extern void _ZN7S1501C2D0Ev();
extern void _ZN7S1501C42v6Ev();
extern void _ZN7S1501C42v7Ev();
extern void _ZN7S1501C42v8Ev();
extern void _ZN7S1501C42v9Ev();
extern void _ZN7S1501C43v10Ev();
extern void _ZN7S1501C43v11Ev();
extern void _ZN7S1501C43v12Ev();
extern void _ZN7S1501C43v13Ev();
extern void _ZN7S1501C43v14Ev();
extern void _ZN7S1501C43v15Ev();
extern void _ZN7S1501C43v16Ev();
extern void _ZN7S1501C43v17Ev();
extern void _ZN7S1501C43v18Ev();
extern void _ZN7S1501C43v19Ev();
extern void _ZN7S1501C43v20Ev();
extern void _ZN7S1501C43v21Ev();
extern void _ZN7S1501C43v22Ev();
extern void _ZN7S1501C43v23Ev();
extern void _ZN7S1501C43v24Ev();
extern void _ZN7S1501C43v25Ev();
extern void _ZN7S1501C43v26Ev();
extern void _ZN7S1501C43v27Ev();
extern void _ZN7S1501C43v28Ev();
extern void _ZN7S1501C43v29Ev();
extern void _ZN7S1501C43v30Ev();
extern void _ZN7S1501C43v31Ev();
extern void _ZN7S1501C43v32Ev();
extern void _ZN7S1501C43v33Ev();
extern void _ZN7S1501C43v34Ev();
extern void _ZN7S1501C43v35Ev();
extern void _ZN7S1501C43v36Ev();
extern void _ZN7S1501C43v37Ev();
extern void _ZN7S1501C43v38Ev();
extern void _ZN7S1501C43v39Ev();
extern void _ZN7S1501C43v40Ev();
extern void _ZN7S1501C43v41Ev();
extern void _ZN7S1501C43v42Ev();
extern void _ZN7S1501C43v43Ev();
extern void _ZN7S1501C43v44Ev();
extern void _ZN7S1501C43v45Ev();
extern void _ZN7S1501C43v46Ev();
extern void _ZN7S1501C43v47Ev();
extern void _ZN7S1501C43v48Ev();
extern void _ZN7S1501C43v49Ev();
extern void _ZN7S1501C43v50Ev();
extern void _ZN7S1501C43v51Ev();
extern void _ZN7S1501C43v52Ev();
extern void _ZN7S1501C43v53Ev();
extern void _ZN7S1501C43v54Ev();
extern void _ZN7S1501C43v55Ev();
extern void _ZN7S1501C43v56Ev();
extern void _ZN7S1501C43v57Ev();
extern void _ZN7S1501C43v58Ev();
extern void _ZN7S1501C43v59Ev();
extern void _ZN7S1501C43v60Ev();
extern void _ZN7S1501C43v61Ev();
extern void _ZN7S1501C43v62Ev();
extern void _ZN7S1501C43v63Ev();
extern void _ZN7S1501C43v64Ev();
extern void _ZN7S1501C43v65Ev();
extern void _ZN7S1501C43v66Ev();
extern void _ZN7S1501C43v67Ev();
extern void _ZN7S1501C43v68Ev();
extern void _ZN7S1501C43v69Ev();
extern void _ZN7S1501C33v95Ev();
extern void _ZN7S1501C33v96Ev();
extern void _ZN7S1501C33v97Ev();
extern void _ZN7S1501C33v98Ev();
extern void _ZN7S1501C33v99Ev();
extern void _ZN7S1501C34v100Ev();
extern void _ZN7S1501C34v101Ev();
extern void _ZN7S1501C34v102Ev();
extern void _ZN7S1501C34v103Ev();
extern void _ZN7S1501C34v104Ev();
extern void _ZN7S1501C34v105Ev();
extern void _ZN7S1501C34v106Ev();
extern void _ZN7S1501C34v107Ev();
extern void _ZN7S1501C34v108Ev();
extern void _ZN7S1501C34v109Ev();
extern void _ZN7S1501C34v110Ev();
extern void _ZN7S1501C34v111Ev();
extern void _ZN7S1501C34v112Ev();
extern void _ZN7S1501C34v113Ev();
extern void _ZN7S1501C34v114Ev();
extern void _ZN7S1501C34v115Ev();
extern void _ZN7S1501C34v116Ev();
extern void _ZN7S1501C34v117Ev();
extern void _ZN7S1501C34v118Ev();
extern void _ZN7S1501C24v119Ev();
extern void _ZN7S1501C24v120Ev();
extern void _ZN7S1501C24v121Ev();
extern void _ZN7S1501C24v122Ev();
extern void _ZN7S1501C24v123Ev();
extern void _ZN7S1501C24v124Ev();
extern void _ZN7S1501C24v125Ev();
extern void _ZN7S1501C24v126Ev();
extern void _ZN7S1501C24v127Ev();
extern void _ZN7S1501C24v128Ev();
extern void _ZN7S1501C24v129Ev();
extern void _ZN7S1501C24v130Ev();
extern void _ZN7S1501C24v131Ev();
extern void _ZN7S1501C24v132Ev();
extern void _ZN7S1501C24v133Ev();
extern void _ZN7S1501C24v134Ev();
extern void _ZN7S1501C24v135Ev();
extern void _ZN7S1501C24v136Ev();
extern void _ZN7S1501C24v137Ev();
extern void _ZN7S1501C24v138Ev();
extern void _ZN7S1501C24v139Ev();
extern void _ZN7S1501C24v140Ev();
extern void _ZN7S1501C24v141Ev();
extern void _ZN7S1501C24v142Ev();
extern void _ZN7S1501C24v143Ev();
extern void _ZN7S1501C24v144Ev();
extern void _ZN7S1501C24v145Ev();
extern void _ZN7S1501C63v70Ev();
extern void _ZN7S1501C63v71Ev();
extern void _ZN7S1501C63v72Ev();
extern void _ZN7S1501C63v73Ev();
extern void _ZN7S1501C63v74Ev();
extern void _ZN7S1501C63v75Ev();
extern void _ZN7S1501C63v76Ev();
extern void _ZN7S1501C63v77Ev();
extern void _ZN7S1501C63v78Ev();
extern void _ZN7S1501C63v79Ev();
extern void _ZN7S1501C63v80Ev();
extern void _ZN7S1501C63v81Ev();
extern void _ZN7S1501C63v82Ev();
extern void _ZN7S1501C63v83Ev();
extern void _ZN7S1501C63v84Ev();
extern void _ZN7S1501C63v85Ev();
extern void _ZN7S1501C73v86Ev();
extern void _ZN7S1501C73v87Ev();
extern void _ZN7S1501C73v88Ev();
extern void _ZN7S1501C73v89Ev();
extern void _ZN7S1501C73v90Ev();
extern void _ZN7S1501C73v91Ev();
extern void _ZN7S1501C73v92Ev();
extern void _ZN7S1501C73v93Ev();
extern void _ZN7S1501C73v94Ev();
static  VTBL_ENTRY vtc_S1501C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1501C2[0]),
  (VTBL_ENTRY)&_ZN7S1501C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1501C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1501C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1501C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1501C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1501C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1501C33v95Ev,
  (VTBL_ENTRY)&_ZN7S1501C33v96Ev,
  (VTBL_ENTRY)&_ZN7S1501C33v97Ev,
  (VTBL_ENTRY)&_ZN7S1501C33v98Ev,
  (VTBL_ENTRY)&_ZN7S1501C33v99Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v100Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v101Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v102Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v103Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v104Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v105Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v106Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v107Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v108Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v119Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v120Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v121Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v122Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v123Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v124Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v125Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v126Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v127Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v128Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v129Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v130Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v131Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v132Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v133Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v134Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v135Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v136Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v137Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v138Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v139Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v140Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v141Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v142Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v143Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v144Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v145Ev,
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S1501C2[0]),
  (VTBL_ENTRY)&_ZN7S1501C63v70Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v71Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v72Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v73Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v74Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v75Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v76Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v77Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v78Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v79Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v80Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v81Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v82Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v83Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v84Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v85Ev,
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S1501C2[0]),
  (VTBL_ENTRY)&_ZN7S1501C73v86Ev,
  (VTBL_ENTRY)&_ZN7S1501C73v87Ev,
  (VTBL_ENTRY)&_ZN7S1501C73v88Ev,
  (VTBL_ENTRY)&_ZN7S1501C73v89Ev,
  (VTBL_ENTRY)&_ZN7S1501C73v90Ev,
  (VTBL_ENTRY)&_ZN7S1501C73v91Ev,
  (VTBL_ENTRY)&_ZN7S1501C73v92Ev,
  (VTBL_ENTRY)&_ZN7S1501C73v93Ev,
  (VTBL_ENTRY)&_ZN7S1501C73v94Ev,
};
extern VTBL_ENTRY _ZTI7S1501C2[];
extern  VTBL_ENTRY _ZTV7S1501C2[];
Class_Descriptor cd_S1501C2 = {  "S1501C2", // class name
  bases_S1501C2, 4,
  &(vtc_S1501C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(176,108), // object size
  NSPAIRA(_ZTI7S1501C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1501C2),148, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  4, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1501C1  : S1501C2 {
  ::S79C8_nt s1501c1f0;
  virtual  ~S1501C1(); // _ZN7S1501C1D1Ev
  virtual void  v1(); // _ZN7S1501C12v1Ev
  virtual void  v2(); // _ZN7S1501C12v2Ev
  virtual void  v3(); // _ZN7S1501C12v3Ev
  virtual void  v4(); // _ZN7S1501C12v4Ev
  virtual void  v5(); // _ZN7S1501C12v5Ev
  S1501C1(); // tgen
};
//SIG(1 S1501C1) C1{ BC2{ BC3{ BC4{ vd v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 Fi FL Fp[4] Fi[2] Fp FC5{ m Fi[2]} Fp[2]} BC6{ v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85} BC7{ v86 v87 v88 v89 v90 v91 v92 v93 v94} vd v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 v112 v113 v114 v115 v116 v117 v118 Fp FC8{ BC9{ BC10{ BC11{ m Fp Fi[2]}}}} Fi:1 Fi:1 Fi:1 Fi:1} vd v119 v120 v121 v122 v123 v124 v125 v126 v127 v128 v129 v130 v131 v132 v133 v134 v135 v136 v137 v138 v139 v140 v141 v142 v143 v144 v145 FC12{ m FC13{ BC14{ BC11}} Fc} Fi} vd v1 v2 v3 v4 v5 FC5}


 S1501C1 ::~S1501C1(){ note_dtor("S1501C1", this);}
void  S1501C1 ::v1(){vfunc_called(this, "_ZN7S1501C12v1Ev");}
void  S1501C1 ::v2(){vfunc_called(this, "_ZN7S1501C12v2Ev");}
void  S1501C1 ::v3(){vfunc_called(this, "_ZN7S1501C12v3Ev");}
void  S1501C1 ::v4(){vfunc_called(this, "_ZN7S1501C12v4Ev");}
void  S1501C1 ::v5(){vfunc_called(this, "_ZN7S1501C12v5Ev");}
S1501C1 ::S1501C1(){ note_ctor("S1501C1", this);} // tgen

static void Test_S1501C1()
{
  extern Class_Descriptor cd_S1501C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,30)];
    init_test(&cd_S1501C1, buf);
    S1501C1 *dp, &lv = *(dp=new (buf) S1501C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,116), "sizeof(S1501C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1501C1)");
    check_base_class_offset(lv, (S1501C4*)(S1501C3*)(S1501C2*), 0, "S1501C1");
    check_base_class_offset(lv, (S1501C6*)(S1501C3*)(S1501C2*), ABISELECT(96,60), "S1501C1");
    check_base_class_offset(lv, (S1501C7*)(S1501C3*)(S1501C2*), ABISELECT(104,64), "S1501C1");
    check_base_class_offset(lv, (S1501C3*)(S1501C2*), 0, "S1501C1");
    check_base_class_offset(lv, (S1501C2*), 0, "S1501C1");
    check_field_offset(lv, s1501c1f0, ABISELECT(172,108), "S1501C1.s1501c1f0");
    test_class_info(&lv, &cd_S1501C1);
    dp->~S1501C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1501C1(Test_S1501C1, "S1501C1", ABISELECT(184,116));

#else // __cplusplus

extern void _ZN7S1501C1C1Ev();
extern void _ZN7S1501C1D1Ev();
Name_Map name_map_S1501C1[] = {
  NSPAIR(_ZN7S1501C1C1Ev),
  NSPAIR(_ZN7S1501C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1501C4;
extern VTBL_ENTRY _ZTI7S1501C4[];
extern  VTBL_ENTRY _ZTV7S1501C4[];
extern Class_Descriptor cd_S1501C6;
extern VTBL_ENTRY _ZTI7S1501C6[];
extern  VTBL_ENTRY _ZTV7S1501C6[];
extern Class_Descriptor cd_S1501C7;
extern VTBL_ENTRY _ZTI7S1501C7[];
extern  VTBL_ENTRY _ZTV7S1501C7[];
extern Class_Descriptor cd_S1501C3;
extern VTBL_ENTRY _ZTI7S1501C3[];
extern  VTBL_ENTRY _ZTV7S1501C3[];
extern Class_Descriptor cd_S1501C2;
extern VTBL_ENTRY _ZTI7S1501C2[];
extern  VTBL_ENTRY _ZTV7S1501C2[];
static Base_Class bases_S1501C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1501C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1501C6,    ABISELECT(96,60), //bcp->offset
    124, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1501C7,    ABISELECT(104,64), //bcp->offset
    142, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1501C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S1501C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1501C1[];
extern void _ZN7S1501C1D1Ev();
extern void _ZN7S1501C1D0Ev();
extern void _ZN7S1501C42v6Ev();
extern void _ZN7S1501C42v7Ev();
extern void _ZN7S1501C42v8Ev();
extern void _ZN7S1501C42v9Ev();
extern void _ZN7S1501C43v10Ev();
extern void _ZN7S1501C43v11Ev();
extern void _ZN7S1501C43v12Ev();
extern void _ZN7S1501C43v13Ev();
extern void _ZN7S1501C43v14Ev();
extern void _ZN7S1501C43v15Ev();
extern void _ZN7S1501C43v16Ev();
extern void _ZN7S1501C43v17Ev();
extern void _ZN7S1501C43v18Ev();
extern void _ZN7S1501C43v19Ev();
extern void _ZN7S1501C43v20Ev();
extern void _ZN7S1501C43v21Ev();
extern void _ZN7S1501C43v22Ev();
extern void _ZN7S1501C43v23Ev();
extern void _ZN7S1501C43v24Ev();
extern void _ZN7S1501C43v25Ev();
extern void _ZN7S1501C43v26Ev();
extern void _ZN7S1501C43v27Ev();
extern void _ZN7S1501C43v28Ev();
extern void _ZN7S1501C43v29Ev();
extern void _ZN7S1501C43v30Ev();
extern void _ZN7S1501C43v31Ev();
extern void _ZN7S1501C43v32Ev();
extern void _ZN7S1501C43v33Ev();
extern void _ZN7S1501C43v34Ev();
extern void _ZN7S1501C43v35Ev();
extern void _ZN7S1501C43v36Ev();
extern void _ZN7S1501C43v37Ev();
extern void _ZN7S1501C43v38Ev();
extern void _ZN7S1501C43v39Ev();
extern void _ZN7S1501C43v40Ev();
extern void _ZN7S1501C43v41Ev();
extern void _ZN7S1501C43v42Ev();
extern void _ZN7S1501C43v43Ev();
extern void _ZN7S1501C43v44Ev();
extern void _ZN7S1501C43v45Ev();
extern void _ZN7S1501C43v46Ev();
extern void _ZN7S1501C43v47Ev();
extern void _ZN7S1501C43v48Ev();
extern void _ZN7S1501C43v49Ev();
extern void _ZN7S1501C43v50Ev();
extern void _ZN7S1501C43v51Ev();
extern void _ZN7S1501C43v52Ev();
extern void _ZN7S1501C43v53Ev();
extern void _ZN7S1501C43v54Ev();
extern void _ZN7S1501C43v55Ev();
extern void _ZN7S1501C43v56Ev();
extern void _ZN7S1501C43v57Ev();
extern void _ZN7S1501C43v58Ev();
extern void _ZN7S1501C43v59Ev();
extern void _ZN7S1501C43v60Ev();
extern void _ZN7S1501C43v61Ev();
extern void _ZN7S1501C43v62Ev();
extern void _ZN7S1501C43v63Ev();
extern void _ZN7S1501C43v64Ev();
extern void _ZN7S1501C43v65Ev();
extern void _ZN7S1501C43v66Ev();
extern void _ZN7S1501C43v67Ev();
extern void _ZN7S1501C43v68Ev();
extern void _ZN7S1501C43v69Ev();
extern void _ZN7S1501C33v95Ev();
extern void _ZN7S1501C33v96Ev();
extern void _ZN7S1501C33v97Ev();
extern void _ZN7S1501C33v98Ev();
extern void _ZN7S1501C33v99Ev();
extern void _ZN7S1501C34v100Ev();
extern void _ZN7S1501C34v101Ev();
extern void _ZN7S1501C34v102Ev();
extern void _ZN7S1501C34v103Ev();
extern void _ZN7S1501C34v104Ev();
extern void _ZN7S1501C34v105Ev();
extern void _ZN7S1501C34v106Ev();
extern void _ZN7S1501C34v107Ev();
extern void _ZN7S1501C34v108Ev();
extern void _ZN7S1501C34v109Ev();
extern void _ZN7S1501C34v110Ev();
extern void _ZN7S1501C34v111Ev();
extern void _ZN7S1501C34v112Ev();
extern void _ZN7S1501C34v113Ev();
extern void _ZN7S1501C34v114Ev();
extern void _ZN7S1501C34v115Ev();
extern void _ZN7S1501C34v116Ev();
extern void _ZN7S1501C34v117Ev();
extern void _ZN7S1501C34v118Ev();
extern void _ZN7S1501C24v119Ev();
extern void _ZN7S1501C24v120Ev();
extern void _ZN7S1501C24v121Ev();
extern void _ZN7S1501C24v122Ev();
extern void _ZN7S1501C24v123Ev();
extern void _ZN7S1501C24v124Ev();
extern void _ZN7S1501C24v125Ev();
extern void _ZN7S1501C24v126Ev();
extern void _ZN7S1501C24v127Ev();
extern void _ZN7S1501C24v128Ev();
extern void _ZN7S1501C24v129Ev();
extern void _ZN7S1501C24v130Ev();
extern void _ZN7S1501C24v131Ev();
extern void _ZN7S1501C24v132Ev();
extern void _ZN7S1501C24v133Ev();
extern void _ZN7S1501C24v134Ev();
extern void _ZN7S1501C24v135Ev();
extern void _ZN7S1501C24v136Ev();
extern void _ZN7S1501C24v137Ev();
extern void _ZN7S1501C24v138Ev();
extern void _ZN7S1501C24v139Ev();
extern void _ZN7S1501C24v140Ev();
extern void _ZN7S1501C24v141Ev();
extern void _ZN7S1501C24v142Ev();
extern void _ZN7S1501C24v143Ev();
extern void _ZN7S1501C24v144Ev();
extern void _ZN7S1501C24v145Ev();
extern void _ZN7S1501C12v1Ev();
extern void _ZN7S1501C12v2Ev();
extern void _ZN7S1501C12v3Ev();
extern void _ZN7S1501C12v4Ev();
extern void _ZN7S1501C12v5Ev();
extern void _ZN7S1501C63v70Ev();
extern void _ZN7S1501C63v71Ev();
extern void _ZN7S1501C63v72Ev();
extern void _ZN7S1501C63v73Ev();
extern void _ZN7S1501C63v74Ev();
extern void _ZN7S1501C63v75Ev();
extern void _ZN7S1501C63v76Ev();
extern void _ZN7S1501C63v77Ev();
extern void _ZN7S1501C63v78Ev();
extern void _ZN7S1501C63v79Ev();
extern void _ZN7S1501C63v80Ev();
extern void _ZN7S1501C63v81Ev();
extern void _ZN7S1501C63v82Ev();
extern void _ZN7S1501C63v83Ev();
extern void _ZN7S1501C63v84Ev();
extern void _ZN7S1501C63v85Ev();
extern void _ZN7S1501C73v86Ev();
extern void _ZN7S1501C73v87Ev();
extern void _ZN7S1501C73v88Ev();
extern void _ZN7S1501C73v89Ev();
extern void _ZN7S1501C73v90Ev();
extern void _ZN7S1501C73v91Ev();
extern void _ZN7S1501C73v92Ev();
extern void _ZN7S1501C73v93Ev();
extern void _ZN7S1501C73v94Ev();
static  VTBL_ENTRY vtc_S1501C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1501C1[0]),
  (VTBL_ENTRY)&_ZN7S1501C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1501C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1501C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1501C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1501C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1501C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1501C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1501C33v95Ev,
  (VTBL_ENTRY)&_ZN7S1501C33v96Ev,
  (VTBL_ENTRY)&_ZN7S1501C33v97Ev,
  (VTBL_ENTRY)&_ZN7S1501C33v98Ev,
  (VTBL_ENTRY)&_ZN7S1501C33v99Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v100Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v101Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v102Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v103Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v104Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v105Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v106Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v107Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v108Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1501C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v119Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v120Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v121Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v122Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v123Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v124Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v125Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v126Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v127Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v128Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v129Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v130Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v131Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v132Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v133Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v134Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v135Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v136Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v137Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v138Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v139Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v140Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v141Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v142Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v143Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v144Ev,
  (VTBL_ENTRY)&_ZN7S1501C24v145Ev,
  (VTBL_ENTRY)&_ZN7S1501C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1501C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1501C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1501C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1501C12v5Ev,
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S1501C1[0]),
  (VTBL_ENTRY)&_ZN7S1501C63v70Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v71Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v72Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v73Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v74Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v75Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v76Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v77Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v78Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v79Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v80Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v81Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v82Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v83Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v84Ev,
  (VTBL_ENTRY)&_ZN7S1501C63v85Ev,
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S1501C1[0]),
  (VTBL_ENTRY)&_ZN7S1501C73v86Ev,
  (VTBL_ENTRY)&_ZN7S1501C73v87Ev,
  (VTBL_ENTRY)&_ZN7S1501C73v88Ev,
  (VTBL_ENTRY)&_ZN7S1501C73v89Ev,
  (VTBL_ENTRY)&_ZN7S1501C73v90Ev,
  (VTBL_ENTRY)&_ZN7S1501C73v91Ev,
  (VTBL_ENTRY)&_ZN7S1501C73v92Ev,
  (VTBL_ENTRY)&_ZN7S1501C73v93Ev,
  (VTBL_ENTRY)&_ZN7S1501C73v94Ev,
};
extern VTBL_ENTRY _ZTI7S1501C1[];
extern  VTBL_ENTRY _ZTV7S1501C1[];
Class_Descriptor cd_S1501C1 = {  "S1501C1", // class name
  bases_S1501C1, 5,
  &(vtc_S1501C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(184,116), // object size
  NSPAIRA(_ZTI7S1501C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1501C1),153, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  5, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1500C4  {
  int s1500c4f0;
  __tsi64 s1500c4f1;
  void *s1500c4f2[4];
  int s1500c4f3[2];
  void *s1500c4f4;
  ::S79C8_nt s1500c4f5;
  void *s1500c4f6[2];
  virtual  ~S1500C4(); // _ZN7S1500C4D1Ev
  virtual void  v6(); // _ZN7S1500C42v6Ev
  virtual void  v7(); // _ZN7S1500C42v7Ev
  virtual void  v8(); // _ZN7S1500C42v8Ev
  virtual void  v9(); // _ZN7S1500C42v9Ev
  virtual void  v10(); // _ZN7S1500C43v10Ev
  virtual void  v11(); // _ZN7S1500C43v11Ev
  virtual void  v12(); // _ZN7S1500C43v12Ev
  virtual void  v13(); // _ZN7S1500C43v13Ev
  virtual void  v14(); // _ZN7S1500C43v14Ev
  virtual void  v15(); // _ZN7S1500C43v15Ev
  virtual void  v16(); // _ZN7S1500C43v16Ev
  virtual void  v17(); // _ZN7S1500C43v17Ev
  virtual void  v18(); // _ZN7S1500C43v18Ev
  virtual void  v19(); // _ZN7S1500C43v19Ev
  virtual void  v20(); // _ZN7S1500C43v20Ev
  virtual void  v21(); // _ZN7S1500C43v21Ev
  virtual void  v22(); // _ZN7S1500C43v22Ev
  virtual void  v23(); // _ZN7S1500C43v23Ev
  virtual void  v24(); // _ZN7S1500C43v24Ev
  virtual void  v25(); // _ZN7S1500C43v25Ev
  virtual void  v26(); // _ZN7S1500C43v26Ev
  virtual void  v27(); // _ZN7S1500C43v27Ev
  virtual void  v28(); // _ZN7S1500C43v28Ev
  virtual void  v29(); // _ZN7S1500C43v29Ev
  virtual void  v30(); // _ZN7S1500C43v30Ev
  virtual void  v31(); // _ZN7S1500C43v31Ev
  virtual void  v32(); // _ZN7S1500C43v32Ev
  virtual void  v33(); // _ZN7S1500C43v33Ev
  virtual void  v34(); // _ZN7S1500C43v34Ev
  virtual void  v35(); // _ZN7S1500C43v35Ev
  virtual void  v36(); // _ZN7S1500C43v36Ev
  virtual void  v37(); // _ZN7S1500C43v37Ev
  virtual void  v38(); // _ZN7S1500C43v38Ev
  virtual void  v39(); // _ZN7S1500C43v39Ev
  virtual void  v40(); // _ZN7S1500C43v40Ev
  virtual void  v41(); // _ZN7S1500C43v41Ev
  virtual void  v42(); // _ZN7S1500C43v42Ev
  virtual void  v43(); // _ZN7S1500C43v43Ev
  virtual void  v44(); // _ZN7S1500C43v44Ev
  virtual void  v45(); // _ZN7S1500C43v45Ev
  virtual void  v46(); // _ZN7S1500C43v46Ev
  virtual void  v47(); // _ZN7S1500C43v47Ev
  virtual void  v48(); // _ZN7S1500C43v48Ev
  virtual void  v49(); // _ZN7S1500C43v49Ev
  virtual void  v50(); // _ZN7S1500C43v50Ev
  virtual void  v51(); // _ZN7S1500C43v51Ev
  virtual void  v52(); // _ZN7S1500C43v52Ev
  virtual void  v53(); // _ZN7S1500C43v53Ev
  virtual void  v54(); // _ZN7S1500C43v54Ev
  virtual void  v55(); // _ZN7S1500C43v55Ev
  virtual void  v56(); // _ZN7S1500C43v56Ev
  virtual void  v57(); // _ZN7S1500C43v57Ev
  virtual void  v58(); // _ZN7S1500C43v58Ev
  virtual void  v59(); // _ZN7S1500C43v59Ev
  virtual void  v60(); // _ZN7S1500C43v60Ev
  virtual void  v61(); // _ZN7S1500C43v61Ev
  virtual void  v62(); // _ZN7S1500C43v62Ev
  virtual void  v63(); // _ZN7S1500C43v63Ev
  virtual void  v64(); // _ZN7S1500C43v64Ev
  virtual void  v65(); // _ZN7S1500C43v65Ev
  virtual void  v66(); // _ZN7S1500C43v66Ev
  virtual void  v67(); // _ZN7S1500C43v67Ev
  virtual void  v68(); // _ZN7S1500C43v68Ev
  virtual void  v69(); // _ZN7S1500C43v69Ev
  S1500C4(); // tgen
};
//SIG(-1 S1500C4) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 Fi FL Fp[4] Fi[2] Fp FC2{ m Fi[2]} Fp[2]}


 S1500C4 ::~S1500C4(){ note_dtor("S1500C4", this);}
void  S1500C4 ::v6(){vfunc_called(this, "_ZN7S1500C42v6Ev");}
void  S1500C4 ::v7(){vfunc_called(this, "_ZN7S1500C42v7Ev");}
void  S1500C4 ::v8(){vfunc_called(this, "_ZN7S1500C42v8Ev");}
void  S1500C4 ::v9(){vfunc_called(this, "_ZN7S1500C42v9Ev");}
void  S1500C4 ::v10(){vfunc_called(this, "_ZN7S1500C43v10Ev");}
void  S1500C4 ::v11(){vfunc_called(this, "_ZN7S1500C43v11Ev");}
void  S1500C4 ::v12(){vfunc_called(this, "_ZN7S1500C43v12Ev");}
void  S1500C4 ::v13(){vfunc_called(this, "_ZN7S1500C43v13Ev");}
void  S1500C4 ::v14(){vfunc_called(this, "_ZN7S1500C43v14Ev");}
void  S1500C4 ::v15(){vfunc_called(this, "_ZN7S1500C43v15Ev");}
void  S1500C4 ::v16(){vfunc_called(this, "_ZN7S1500C43v16Ev");}
void  S1500C4 ::v17(){vfunc_called(this, "_ZN7S1500C43v17Ev");}
void  S1500C4 ::v18(){vfunc_called(this, "_ZN7S1500C43v18Ev");}
void  S1500C4 ::v19(){vfunc_called(this, "_ZN7S1500C43v19Ev");}
void  S1500C4 ::v20(){vfunc_called(this, "_ZN7S1500C43v20Ev");}
void  S1500C4 ::v21(){vfunc_called(this, "_ZN7S1500C43v21Ev");}
void  S1500C4 ::v22(){vfunc_called(this, "_ZN7S1500C43v22Ev");}
void  S1500C4 ::v23(){vfunc_called(this, "_ZN7S1500C43v23Ev");}
void  S1500C4 ::v24(){vfunc_called(this, "_ZN7S1500C43v24Ev");}
void  S1500C4 ::v25(){vfunc_called(this, "_ZN7S1500C43v25Ev");}
void  S1500C4 ::v26(){vfunc_called(this, "_ZN7S1500C43v26Ev");}
void  S1500C4 ::v27(){vfunc_called(this, "_ZN7S1500C43v27Ev");}
void  S1500C4 ::v28(){vfunc_called(this, "_ZN7S1500C43v28Ev");}
void  S1500C4 ::v29(){vfunc_called(this, "_ZN7S1500C43v29Ev");}
void  S1500C4 ::v30(){vfunc_called(this, "_ZN7S1500C43v30Ev");}
void  S1500C4 ::v31(){vfunc_called(this, "_ZN7S1500C43v31Ev");}
void  S1500C4 ::v32(){vfunc_called(this, "_ZN7S1500C43v32Ev");}
void  S1500C4 ::v33(){vfunc_called(this, "_ZN7S1500C43v33Ev");}
void  S1500C4 ::v34(){vfunc_called(this, "_ZN7S1500C43v34Ev");}
void  S1500C4 ::v35(){vfunc_called(this, "_ZN7S1500C43v35Ev");}
void  S1500C4 ::v36(){vfunc_called(this, "_ZN7S1500C43v36Ev");}
void  S1500C4 ::v37(){vfunc_called(this, "_ZN7S1500C43v37Ev");}
void  S1500C4 ::v38(){vfunc_called(this, "_ZN7S1500C43v38Ev");}
void  S1500C4 ::v39(){vfunc_called(this, "_ZN7S1500C43v39Ev");}
void  S1500C4 ::v40(){vfunc_called(this, "_ZN7S1500C43v40Ev");}
void  S1500C4 ::v41(){vfunc_called(this, "_ZN7S1500C43v41Ev");}
void  S1500C4 ::v42(){vfunc_called(this, "_ZN7S1500C43v42Ev");}
void  S1500C4 ::v43(){vfunc_called(this, "_ZN7S1500C43v43Ev");}
void  S1500C4 ::v44(){vfunc_called(this, "_ZN7S1500C43v44Ev");}
void  S1500C4 ::v45(){vfunc_called(this, "_ZN7S1500C43v45Ev");}
void  S1500C4 ::v46(){vfunc_called(this, "_ZN7S1500C43v46Ev");}
void  S1500C4 ::v47(){vfunc_called(this, "_ZN7S1500C43v47Ev");}
void  S1500C4 ::v48(){vfunc_called(this, "_ZN7S1500C43v48Ev");}
void  S1500C4 ::v49(){vfunc_called(this, "_ZN7S1500C43v49Ev");}
void  S1500C4 ::v50(){vfunc_called(this, "_ZN7S1500C43v50Ev");}
void  S1500C4 ::v51(){vfunc_called(this, "_ZN7S1500C43v51Ev");}
void  S1500C4 ::v52(){vfunc_called(this, "_ZN7S1500C43v52Ev");}
void  S1500C4 ::v53(){vfunc_called(this, "_ZN7S1500C43v53Ev");}
void  S1500C4 ::v54(){vfunc_called(this, "_ZN7S1500C43v54Ev");}
void  S1500C4 ::v55(){vfunc_called(this, "_ZN7S1500C43v55Ev");}
void  S1500C4 ::v56(){vfunc_called(this, "_ZN7S1500C43v56Ev");}
void  S1500C4 ::v57(){vfunc_called(this, "_ZN7S1500C43v57Ev");}
void  S1500C4 ::v58(){vfunc_called(this, "_ZN7S1500C43v58Ev");}
void  S1500C4 ::v59(){vfunc_called(this, "_ZN7S1500C43v59Ev");}
void  S1500C4 ::v60(){vfunc_called(this, "_ZN7S1500C43v60Ev");}
void  S1500C4 ::v61(){vfunc_called(this, "_ZN7S1500C43v61Ev");}
void  S1500C4 ::v62(){vfunc_called(this, "_ZN7S1500C43v62Ev");}
void  S1500C4 ::v63(){vfunc_called(this, "_ZN7S1500C43v63Ev");}
void  S1500C4 ::v64(){vfunc_called(this, "_ZN7S1500C43v64Ev");}
void  S1500C4 ::v65(){vfunc_called(this, "_ZN7S1500C43v65Ev");}
void  S1500C4 ::v66(){vfunc_called(this, "_ZN7S1500C43v66Ev");}
void  S1500C4 ::v67(){vfunc_called(this, "_ZN7S1500C43v67Ev");}
void  S1500C4 ::v68(){vfunc_called(this, "_ZN7S1500C43v68Ev");}
void  S1500C4 ::v69(){vfunc_called(this, "_ZN7S1500C43v69Ev");}
S1500C4 ::S1500C4(){ note_ctor("S1500C4", this);} // tgen

static void Test_S1500C4()
{
  extern Class_Descriptor cd_S1500C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S1500C4, buf);
    S1500C4 *dp, &lv = *(dp=new (buf) S1500C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S1500C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1500C4)");
    check_field_offset(lv, s1500c4f0, ABISELECT(8,4), "S1500C4.s1500c4f0");
    check_field_offset(lv, s1500c4f1, ABISELECT(16,8), "S1500C4.s1500c4f1");
    check_field_offset(lv, s1500c4f2, ABISELECT(24,16), "S1500C4.s1500c4f2");
    check_field_offset(lv, s1500c4f3, ABISELECT(56,32), "S1500C4.s1500c4f3");
    check_field_offset(lv, s1500c4f4, ABISELECT(64,40), "S1500C4.s1500c4f4");
    check_field_offset(lv, s1500c4f5, ABISELECT(72,44), "S1500C4.s1500c4f5");
    check_field_offset(lv, s1500c4f6, ABISELECT(80,52), "S1500C4.s1500c4f6");
    test_class_info(&lv, &cd_S1500C4);
    dp->~S1500C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1500C4(Test_S1500C4, "S1500C4", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S1500C4C1Ev();
extern void _ZN7S1500C4D1Ev();
Name_Map name_map_S1500C4[] = {
  NSPAIR(_ZN7S1500C4C1Ev),
  NSPAIR(_ZN7S1500C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1500C4[];
extern void _ZN7S1500C4D1Ev();
extern void _ZN7S1500C4D0Ev();
extern void _ZN7S1500C42v6Ev();
extern void _ZN7S1500C42v7Ev();
extern void _ZN7S1500C42v8Ev();
extern void _ZN7S1500C42v9Ev();
extern void _ZN7S1500C43v10Ev();
extern void _ZN7S1500C43v11Ev();
extern void _ZN7S1500C43v12Ev();
extern void _ZN7S1500C43v13Ev();
extern void _ZN7S1500C43v14Ev();
extern void _ZN7S1500C43v15Ev();
extern void _ZN7S1500C43v16Ev();
extern void _ZN7S1500C43v17Ev();
extern void _ZN7S1500C43v18Ev();
extern void _ZN7S1500C43v19Ev();
extern void _ZN7S1500C43v20Ev();
extern void _ZN7S1500C43v21Ev();
extern void _ZN7S1500C43v22Ev();
extern void _ZN7S1500C43v23Ev();
extern void _ZN7S1500C43v24Ev();
extern void _ZN7S1500C43v25Ev();
extern void _ZN7S1500C43v26Ev();
extern void _ZN7S1500C43v27Ev();
extern void _ZN7S1500C43v28Ev();
extern void _ZN7S1500C43v29Ev();
extern void _ZN7S1500C43v30Ev();
extern void _ZN7S1500C43v31Ev();
extern void _ZN7S1500C43v32Ev();
extern void _ZN7S1500C43v33Ev();
extern void _ZN7S1500C43v34Ev();
extern void _ZN7S1500C43v35Ev();
extern void _ZN7S1500C43v36Ev();
extern void _ZN7S1500C43v37Ev();
extern void _ZN7S1500C43v38Ev();
extern void _ZN7S1500C43v39Ev();
extern void _ZN7S1500C43v40Ev();
extern void _ZN7S1500C43v41Ev();
extern void _ZN7S1500C43v42Ev();
extern void _ZN7S1500C43v43Ev();
extern void _ZN7S1500C43v44Ev();
extern void _ZN7S1500C43v45Ev();
extern void _ZN7S1500C43v46Ev();
extern void _ZN7S1500C43v47Ev();
extern void _ZN7S1500C43v48Ev();
extern void _ZN7S1500C43v49Ev();
extern void _ZN7S1500C43v50Ev();
extern void _ZN7S1500C43v51Ev();
extern void _ZN7S1500C43v52Ev();
extern void _ZN7S1500C43v53Ev();
extern void _ZN7S1500C43v54Ev();
extern void _ZN7S1500C43v55Ev();
extern void _ZN7S1500C43v56Ev();
extern void _ZN7S1500C43v57Ev();
extern void _ZN7S1500C43v58Ev();
extern void _ZN7S1500C43v59Ev();
extern void _ZN7S1500C43v60Ev();
extern void _ZN7S1500C43v61Ev();
extern void _ZN7S1500C43v62Ev();
extern void _ZN7S1500C43v63Ev();
extern void _ZN7S1500C43v64Ev();
extern void _ZN7S1500C43v65Ev();
extern void _ZN7S1500C43v66Ev();
extern void _ZN7S1500C43v67Ev();
extern void _ZN7S1500C43v68Ev();
extern void _ZN7S1500C43v69Ev();
static  VTBL_ENTRY vtc_S1500C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1500C4[0]),
  (VTBL_ENTRY)&_ZN7S1500C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1500C4D0Ev,
  (VTBL_ENTRY)&_ZN7S1500C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1500C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1500C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1500C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v69Ev,
};
extern VTBL_ENTRY _ZTI7S1500C4[];
extern  VTBL_ENTRY _ZTV7S1500C4[];
Class_Descriptor cd_S1500C4 = {  "S1500C4", // class name
  0,0,//no base classes
  &(vtc_S1500C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S1500C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1500C4),68, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1500C6  {
  virtual void  v70(); // _ZN7S1500C63v70Ev
  virtual void  v71(); // _ZN7S1500C63v71Ev
  virtual void  v72(); // _ZN7S1500C63v72Ev
  virtual void  v73(); // _ZN7S1500C63v73Ev
  virtual void  v74(); // _ZN7S1500C63v74Ev
  virtual void  v75(); // _ZN7S1500C63v75Ev
  virtual void  v76(); // _ZN7S1500C63v76Ev
  virtual void  v77(); // _ZN7S1500C63v77Ev
  virtual void  v78(); // _ZN7S1500C63v78Ev
  virtual void  v79(); // _ZN7S1500C63v79Ev
  virtual void  v80(); // _ZN7S1500C63v80Ev
  virtual void  v81(); // _ZN7S1500C63v81Ev
  virtual void  v82(); // _ZN7S1500C63v82Ev
  virtual void  v83(); // _ZN7S1500C63v83Ev
  virtual void  v84(); // _ZN7S1500C63v84Ev
  virtual void  v85(); // _ZN7S1500C63v85Ev
  ~S1500C6(); // tgen
  S1500C6(); // tgen
};
//SIG(-1 S1500C6) C1{ v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16}


void  S1500C6 ::v70(){vfunc_called(this, "_ZN7S1500C63v70Ev");}
void  S1500C6 ::v71(){vfunc_called(this, "_ZN7S1500C63v71Ev");}
void  S1500C6 ::v72(){vfunc_called(this, "_ZN7S1500C63v72Ev");}
void  S1500C6 ::v73(){vfunc_called(this, "_ZN7S1500C63v73Ev");}
void  S1500C6 ::v74(){vfunc_called(this, "_ZN7S1500C63v74Ev");}
void  S1500C6 ::v75(){vfunc_called(this, "_ZN7S1500C63v75Ev");}
void  S1500C6 ::v76(){vfunc_called(this, "_ZN7S1500C63v76Ev");}
void  S1500C6 ::v77(){vfunc_called(this, "_ZN7S1500C63v77Ev");}
void  S1500C6 ::v78(){vfunc_called(this, "_ZN7S1500C63v78Ev");}
void  S1500C6 ::v79(){vfunc_called(this, "_ZN7S1500C63v79Ev");}
void  S1500C6 ::v80(){vfunc_called(this, "_ZN7S1500C63v80Ev");}
void  S1500C6 ::v81(){vfunc_called(this, "_ZN7S1500C63v81Ev");}
void  S1500C6 ::v82(){vfunc_called(this, "_ZN7S1500C63v82Ev");}
void  S1500C6 ::v83(){vfunc_called(this, "_ZN7S1500C63v83Ev");}
void  S1500C6 ::v84(){vfunc_called(this, "_ZN7S1500C63v84Ev");}
void  S1500C6 ::v85(){vfunc_called(this, "_ZN7S1500C63v85Ev");}
S1500C6 ::~S1500C6(){ note_dtor("S1500C6", this);} // tgen
S1500C6 ::S1500C6(){ note_ctor("S1500C6", this);} // tgen

static void Test_S1500C6()
{
  extern Class_Descriptor cd_S1500C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S1500C6, buf);
    S1500C6 *dp, &lv = *(dp=new (buf) S1500C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1500C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1500C6)");
    test_class_info(&lv, &cd_S1500C6);
    dp->~S1500C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1500C6(Test_S1500C6, "S1500C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S1500C6C1Ev();
extern void _ZN7S1500C6D1Ev();
Name_Map name_map_S1500C6[] = {
  NSPAIR(_ZN7S1500C6C1Ev),
  NSPAIR(_ZN7S1500C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1500C6[];
extern void _ZN7S1500C63v70Ev();
extern void _ZN7S1500C63v71Ev();
extern void _ZN7S1500C63v72Ev();
extern void _ZN7S1500C63v73Ev();
extern void _ZN7S1500C63v74Ev();
extern void _ZN7S1500C63v75Ev();
extern void _ZN7S1500C63v76Ev();
extern void _ZN7S1500C63v77Ev();
extern void _ZN7S1500C63v78Ev();
extern void _ZN7S1500C63v79Ev();
extern void _ZN7S1500C63v80Ev();
extern void _ZN7S1500C63v81Ev();
extern void _ZN7S1500C63v82Ev();
extern void _ZN7S1500C63v83Ev();
extern void _ZN7S1500C63v84Ev();
extern void _ZN7S1500C63v85Ev();
static  VTBL_ENTRY vtc_S1500C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1500C6[0]),
  (VTBL_ENTRY)&_ZN7S1500C63v70Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v71Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v72Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v73Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v74Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v75Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v76Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v77Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v78Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v79Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v80Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v81Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v82Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v83Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v84Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v85Ev,
};
extern VTBL_ENTRY _ZTI7S1500C6[];
extern  VTBL_ENTRY _ZTV7S1500C6[];
Class_Descriptor cd_S1500C6 = {  "S1500C6", // class name
  0,0,//no base classes
  &(vtc_S1500C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S1500C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1500C6),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1500C7  {
  virtual void  v86(); // _ZN7S1500C73v86Ev
  virtual void  v87(); // _ZN7S1500C73v87Ev
  virtual void  v88(); // _ZN7S1500C73v88Ev
  virtual void  v89(); // _ZN7S1500C73v89Ev
  virtual void  v90(); // _ZN7S1500C73v90Ev
  virtual void  v91(); // _ZN7S1500C73v91Ev
  virtual void  v92(); // _ZN7S1500C73v92Ev
  virtual void  v93(); // _ZN7S1500C73v93Ev
  virtual void  v94(); // _ZN7S1500C73v94Ev
  ~S1500C7(); // tgen
  S1500C7(); // tgen
};
//SIG(-1 S1500C7) C1{ v1 v2 v3 v4 v5 v6 v7 v8 v9}


void  S1500C7 ::v86(){vfunc_called(this, "_ZN7S1500C73v86Ev");}
void  S1500C7 ::v87(){vfunc_called(this, "_ZN7S1500C73v87Ev");}
void  S1500C7 ::v88(){vfunc_called(this, "_ZN7S1500C73v88Ev");}
void  S1500C7 ::v89(){vfunc_called(this, "_ZN7S1500C73v89Ev");}
void  S1500C7 ::v90(){vfunc_called(this, "_ZN7S1500C73v90Ev");}
void  S1500C7 ::v91(){vfunc_called(this, "_ZN7S1500C73v91Ev");}
void  S1500C7 ::v92(){vfunc_called(this, "_ZN7S1500C73v92Ev");}
void  S1500C7 ::v93(){vfunc_called(this, "_ZN7S1500C73v93Ev");}
void  S1500C7 ::v94(){vfunc_called(this, "_ZN7S1500C73v94Ev");}
S1500C7 ::~S1500C7(){ note_dtor("S1500C7", this);} // tgen
S1500C7 ::S1500C7(){ note_ctor("S1500C7", this);} // tgen

static void Test_S1500C7()
{
  extern Class_Descriptor cd_S1500C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S1500C7, buf);
    S1500C7 *dp, &lv = *(dp=new (buf) S1500C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1500C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1500C7)");
    test_class_info(&lv, &cd_S1500C7);
    dp->~S1500C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1500C7(Test_S1500C7, "S1500C7", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S1500C7C1Ev();
extern void _ZN7S1500C7D1Ev();
Name_Map name_map_S1500C7[] = {
  NSPAIR(_ZN7S1500C7C1Ev),
  NSPAIR(_ZN7S1500C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1500C7[];
extern void _ZN7S1500C73v86Ev();
extern void _ZN7S1500C73v87Ev();
extern void _ZN7S1500C73v88Ev();
extern void _ZN7S1500C73v89Ev();
extern void _ZN7S1500C73v90Ev();
extern void _ZN7S1500C73v91Ev();
extern void _ZN7S1500C73v92Ev();
extern void _ZN7S1500C73v93Ev();
extern void _ZN7S1500C73v94Ev();
static  VTBL_ENTRY vtc_S1500C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1500C7[0]),
  (VTBL_ENTRY)&_ZN7S1500C73v86Ev,
  (VTBL_ENTRY)&_ZN7S1500C73v87Ev,
  (VTBL_ENTRY)&_ZN7S1500C73v88Ev,
  (VTBL_ENTRY)&_ZN7S1500C73v89Ev,
  (VTBL_ENTRY)&_ZN7S1500C73v90Ev,
  (VTBL_ENTRY)&_ZN7S1500C73v91Ev,
  (VTBL_ENTRY)&_ZN7S1500C73v92Ev,
  (VTBL_ENTRY)&_ZN7S1500C73v93Ev,
  (VTBL_ENTRY)&_ZN7S1500C73v94Ev,
};
extern VTBL_ENTRY _ZTI7S1500C7[];
extern  VTBL_ENTRY _ZTV7S1500C7[];
Class_Descriptor cd_S1500C7 = {  "S1500C7", // class name
  0,0,//no base classes
  &(vtc_S1500C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S1500C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1500C7),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1500C3  : S1500C4 , S1500C6 , S1500C7 {
  void *s1500c3f0;
  ::S79C39_nt s1500c3f1;
  unsigned int s1500c3f2:1;
  unsigned int s1500c3f3:1;
  unsigned int s1500c3f4:1;
  unsigned int s1500c3f5:1;
  virtual  ~S1500C3(); // _ZN7S1500C3D1Ev
  virtual void  v95(); // _ZN7S1500C33v95Ev
  virtual void  v96(); // _ZN7S1500C33v96Ev
  virtual void  v97(); // _ZN7S1500C33v97Ev
  virtual void  v98(); // _ZN7S1500C33v98Ev
  virtual void  v99(); // _ZN7S1500C33v99Ev
  virtual void  v100(); // _ZN7S1500C34v100Ev
  virtual void  v101(); // _ZN7S1500C34v101Ev
  virtual void  v102(); // _ZN7S1500C34v102Ev
  virtual void  v103(); // _ZN7S1500C34v103Ev
  virtual void  v104(); // _ZN7S1500C34v104Ev
  virtual void  v105(); // _ZN7S1500C34v105Ev
  virtual void  v106(); // _ZN7S1500C34v106Ev
  virtual void  v107(); // _ZN7S1500C34v107Ev
  virtual void  v108(); // _ZN7S1500C34v108Ev
  virtual void  v109(); // _ZN7S1500C34v109Ev
  virtual void  v110(); // _ZN7S1500C34v110Ev
  virtual void  v111(); // _ZN7S1500C34v111Ev
  virtual void  v112(); // _ZN7S1500C34v112Ev
  virtual void  v113(); // _ZN7S1500C34v113Ev
  virtual void  v114(); // _ZN7S1500C34v114Ev
  virtual void  v115(); // _ZN7S1500C34v115Ev
  virtual void  v116(); // _ZN7S1500C34v116Ev
  virtual void  v117(); // _ZN7S1500C34v117Ev
  virtual void  v118(); // _ZN7S1500C34v118Ev
  S1500C3(); // tgen
};
//SIG(-1 S1500C3) C1{ BC2{ vd v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} BC4{ v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104} BC5{ v105 v106 v107 v108 v109 v110 v111 v112 v113} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 Fp FC6{ BC7{ BC8{ BC9{ m Fp Fi[2]}}}} Fi:1 Fi:1 Fi:1 Fi:1}


 S1500C3 ::~S1500C3(){ note_dtor("S1500C3", this);}
void  S1500C3 ::v95(){vfunc_called(this, "_ZN7S1500C33v95Ev");}
void  S1500C3 ::v96(){vfunc_called(this, "_ZN7S1500C33v96Ev");}
void  S1500C3 ::v97(){vfunc_called(this, "_ZN7S1500C33v97Ev");}
void  S1500C3 ::v98(){vfunc_called(this, "_ZN7S1500C33v98Ev");}
void  S1500C3 ::v99(){vfunc_called(this, "_ZN7S1500C33v99Ev");}
void  S1500C3 ::v100(){vfunc_called(this, "_ZN7S1500C34v100Ev");}
void  S1500C3 ::v101(){vfunc_called(this, "_ZN7S1500C34v101Ev");}
void  S1500C3 ::v102(){vfunc_called(this, "_ZN7S1500C34v102Ev");}
void  S1500C3 ::v103(){vfunc_called(this, "_ZN7S1500C34v103Ev");}
void  S1500C3 ::v104(){vfunc_called(this, "_ZN7S1500C34v104Ev");}
void  S1500C3 ::v105(){vfunc_called(this, "_ZN7S1500C34v105Ev");}
void  S1500C3 ::v106(){vfunc_called(this, "_ZN7S1500C34v106Ev");}
void  S1500C3 ::v107(){vfunc_called(this, "_ZN7S1500C34v107Ev");}
void  S1500C3 ::v108(){vfunc_called(this, "_ZN7S1500C34v108Ev");}
void  S1500C3 ::v109(){vfunc_called(this, "_ZN7S1500C34v109Ev");}
void  S1500C3 ::v110(){vfunc_called(this, "_ZN7S1500C34v110Ev");}
void  S1500C3 ::v111(){vfunc_called(this, "_ZN7S1500C34v111Ev");}
void  S1500C3 ::v112(){vfunc_called(this, "_ZN7S1500C34v112Ev");}
void  S1500C3 ::v113(){vfunc_called(this, "_ZN7S1500C34v113Ev");}
void  S1500C3 ::v114(){vfunc_called(this, "_ZN7S1500C34v114Ev");}
void  S1500C3 ::v115(){vfunc_called(this, "_ZN7S1500C34v115Ev");}
void  S1500C3 ::v116(){vfunc_called(this, "_ZN7S1500C34v116Ev");}
void  S1500C3 ::v117(){vfunc_called(this, "_ZN7S1500C34v117Ev");}
void  S1500C3 ::v118(){vfunc_called(this, "_ZN7S1500C34v118Ev");}
S1500C3 ::S1500C3(){ note_ctor("S1500C3", this);} // tgen

static void Test_S1500C3()
{
  extern Class_Descriptor cd_S1500C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,23)];
    init_test(&cd_S1500C3, buf);
    S1500C3 *dp, &lv = *(dp=new (buf) S1500C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,88), "sizeof(S1500C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1500C3)");
    check_base_class_offset(lv, (S1500C4*), 0, "S1500C3");
    check_base_class_offset(lv, (S1500C6*), ABISELECT(96,60), "S1500C3");
    check_base_class_offset(lv, (S1500C7*), ABISELECT(104,64), "S1500C3");
    check_field_offset(lv, s1500c3f0, ABISELECT(112,68), "S1500C3.s1500c3f0");
    check_field_offset(lv, s1500c3f1, ABISELECT(120,72), "S1500C3.s1500c3f1");
    set_bf_and_test(lv, s1500c3f2, ABISELECT(136,84), 0, 1, 1, "S1500C3");
    set_bf_and_test(lv, s1500c3f3, ABISELECT(136,84), 1, 1, 1, "S1500C3");
    set_bf_and_test(lv, s1500c3f4, ABISELECT(136,84), 2, 1, 1, "S1500C3");
    set_bf_and_test(lv, s1500c3f5, ABISELECT(136,84), 3, 1, 1, "S1500C3");
    test_class_info(&lv, &cd_S1500C3);
    dp->~S1500C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1500C3(Test_S1500C3, "S1500C3", ABISELECT(144,88));

#else // __cplusplus

extern void _ZN7S1500C3C1Ev();
extern void _ZN7S1500C3D1Ev();
Name_Map name_map_S1500C3[] = {
  NSPAIR(_ZN7S1500C3C1Ev),
  NSPAIR(_ZN7S1500C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1500C4;
extern VTBL_ENTRY _ZTI7S1500C4[];
extern  VTBL_ENTRY _ZTV7S1500C4[];
extern Class_Descriptor cd_S1500C6;
extern VTBL_ENTRY _ZTI7S1500C6[];
extern  VTBL_ENTRY _ZTV7S1500C6[];
extern Class_Descriptor cd_S1500C7;
extern VTBL_ENTRY _ZTI7S1500C7[];
extern  VTBL_ENTRY _ZTV7S1500C7[];
static Base_Class bases_S1500C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1500C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1500C6,    ABISELECT(96,60), //bcp->offset
    92, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1500C7,    ABISELECT(104,64), //bcp->offset
    110, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1500C3[];
extern void _ZN7S1500C3D1Ev();
extern void _ZN7S1500C3D0Ev();
extern void _ZN7S1500C42v6Ev();
extern void _ZN7S1500C42v7Ev();
extern void _ZN7S1500C42v8Ev();
extern void _ZN7S1500C42v9Ev();
extern void _ZN7S1500C43v10Ev();
extern void _ZN7S1500C43v11Ev();
extern void _ZN7S1500C43v12Ev();
extern void _ZN7S1500C43v13Ev();
extern void _ZN7S1500C43v14Ev();
extern void _ZN7S1500C43v15Ev();
extern void _ZN7S1500C43v16Ev();
extern void _ZN7S1500C43v17Ev();
extern void _ZN7S1500C43v18Ev();
extern void _ZN7S1500C43v19Ev();
extern void _ZN7S1500C43v20Ev();
extern void _ZN7S1500C43v21Ev();
extern void _ZN7S1500C43v22Ev();
extern void _ZN7S1500C43v23Ev();
extern void _ZN7S1500C43v24Ev();
extern void _ZN7S1500C43v25Ev();
extern void _ZN7S1500C43v26Ev();
extern void _ZN7S1500C43v27Ev();
extern void _ZN7S1500C43v28Ev();
extern void _ZN7S1500C43v29Ev();
extern void _ZN7S1500C43v30Ev();
extern void _ZN7S1500C43v31Ev();
extern void _ZN7S1500C43v32Ev();
extern void _ZN7S1500C43v33Ev();
extern void _ZN7S1500C43v34Ev();
extern void _ZN7S1500C43v35Ev();
extern void _ZN7S1500C43v36Ev();
extern void _ZN7S1500C43v37Ev();
extern void _ZN7S1500C43v38Ev();
extern void _ZN7S1500C43v39Ev();
extern void _ZN7S1500C43v40Ev();
extern void _ZN7S1500C43v41Ev();
extern void _ZN7S1500C43v42Ev();
extern void _ZN7S1500C43v43Ev();
extern void _ZN7S1500C43v44Ev();
extern void _ZN7S1500C43v45Ev();
extern void _ZN7S1500C43v46Ev();
extern void _ZN7S1500C43v47Ev();
extern void _ZN7S1500C43v48Ev();
extern void _ZN7S1500C43v49Ev();
extern void _ZN7S1500C43v50Ev();
extern void _ZN7S1500C43v51Ev();
extern void _ZN7S1500C43v52Ev();
extern void _ZN7S1500C43v53Ev();
extern void _ZN7S1500C43v54Ev();
extern void _ZN7S1500C43v55Ev();
extern void _ZN7S1500C43v56Ev();
extern void _ZN7S1500C43v57Ev();
extern void _ZN7S1500C43v58Ev();
extern void _ZN7S1500C43v59Ev();
extern void _ZN7S1500C43v60Ev();
extern void _ZN7S1500C43v61Ev();
extern void _ZN7S1500C43v62Ev();
extern void _ZN7S1500C43v63Ev();
extern void _ZN7S1500C43v64Ev();
extern void _ZN7S1500C43v65Ev();
extern void _ZN7S1500C43v66Ev();
extern void _ZN7S1500C43v67Ev();
extern void _ZN7S1500C43v68Ev();
extern void _ZN7S1500C43v69Ev();
extern void _ZN7S1500C33v95Ev();
extern void _ZN7S1500C33v96Ev();
extern void _ZN7S1500C33v97Ev();
extern void _ZN7S1500C33v98Ev();
extern void _ZN7S1500C33v99Ev();
extern void _ZN7S1500C34v100Ev();
extern void _ZN7S1500C34v101Ev();
extern void _ZN7S1500C34v102Ev();
extern void _ZN7S1500C34v103Ev();
extern void _ZN7S1500C34v104Ev();
extern void _ZN7S1500C34v105Ev();
extern void _ZN7S1500C34v106Ev();
extern void _ZN7S1500C34v107Ev();
extern void _ZN7S1500C34v108Ev();
extern void _ZN7S1500C34v109Ev();
extern void _ZN7S1500C34v110Ev();
extern void _ZN7S1500C34v111Ev();
extern void _ZN7S1500C34v112Ev();
extern void _ZN7S1500C34v113Ev();
extern void _ZN7S1500C34v114Ev();
extern void _ZN7S1500C34v115Ev();
extern void _ZN7S1500C34v116Ev();
extern void _ZN7S1500C34v117Ev();
extern void _ZN7S1500C34v118Ev();
extern void _ZN7S1500C63v70Ev();
extern void _ZN7S1500C63v71Ev();
extern void _ZN7S1500C63v72Ev();
extern void _ZN7S1500C63v73Ev();
extern void _ZN7S1500C63v74Ev();
extern void _ZN7S1500C63v75Ev();
extern void _ZN7S1500C63v76Ev();
extern void _ZN7S1500C63v77Ev();
extern void _ZN7S1500C63v78Ev();
extern void _ZN7S1500C63v79Ev();
extern void _ZN7S1500C63v80Ev();
extern void _ZN7S1500C63v81Ev();
extern void _ZN7S1500C63v82Ev();
extern void _ZN7S1500C63v83Ev();
extern void _ZN7S1500C63v84Ev();
extern void _ZN7S1500C63v85Ev();
extern void _ZN7S1500C73v86Ev();
extern void _ZN7S1500C73v87Ev();
extern void _ZN7S1500C73v88Ev();
extern void _ZN7S1500C73v89Ev();
extern void _ZN7S1500C73v90Ev();
extern void _ZN7S1500C73v91Ev();
extern void _ZN7S1500C73v92Ev();
extern void _ZN7S1500C73v93Ev();
extern void _ZN7S1500C73v94Ev();
static  VTBL_ENTRY vtc_S1500C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1500C3[0]),
  (VTBL_ENTRY)&_ZN7S1500C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1500C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1500C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1500C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1500C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1500C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1500C33v95Ev,
  (VTBL_ENTRY)&_ZN7S1500C33v96Ev,
  (VTBL_ENTRY)&_ZN7S1500C33v97Ev,
  (VTBL_ENTRY)&_ZN7S1500C33v98Ev,
  (VTBL_ENTRY)&_ZN7S1500C33v99Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v100Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v101Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v102Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v103Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v104Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v105Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v106Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v107Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v108Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v118Ev,
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S1500C3[0]),
  (VTBL_ENTRY)&_ZN7S1500C63v70Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v71Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v72Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v73Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v74Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v75Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v76Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v77Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v78Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v79Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v80Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v81Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v82Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v83Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v84Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v85Ev,
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S1500C3[0]),
  (VTBL_ENTRY)&_ZN7S1500C73v86Ev,
  (VTBL_ENTRY)&_ZN7S1500C73v87Ev,
  (VTBL_ENTRY)&_ZN7S1500C73v88Ev,
  (VTBL_ENTRY)&_ZN7S1500C73v89Ev,
  (VTBL_ENTRY)&_ZN7S1500C73v90Ev,
  (VTBL_ENTRY)&_ZN7S1500C73v91Ev,
  (VTBL_ENTRY)&_ZN7S1500C73v92Ev,
  (VTBL_ENTRY)&_ZN7S1500C73v93Ev,
  (VTBL_ENTRY)&_ZN7S1500C73v94Ev,
};
extern VTBL_ENTRY _ZTI7S1500C3[];
extern  VTBL_ENTRY _ZTV7S1500C3[];
Class_Descriptor cd_S1500C3 = {  "S1500C3", // class name
  bases_S1500C3, 3,
  &(vtc_S1500C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,88), // object size
  NSPAIRA(_ZTI7S1500C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S1500C3),121, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1500C2  : S1500C3 {
  ::S3262C11_nt s1500c2f0;
  int s1500c2f1;
  virtual  ~S1500C2(); // _ZN7S1500C2D1Ev
  virtual void  v119(); // _ZN7S1500C24v119Ev
  virtual void  v120(); // _ZN7S1500C24v120Ev
  virtual void  v121(); // _ZN7S1500C24v121Ev
  virtual void  v122(); // _ZN7S1500C24v122Ev
  virtual void  v123(); // _ZN7S1500C24v123Ev
  virtual void  v124(); // _ZN7S1500C24v124Ev
  virtual void  v125(); // _ZN7S1500C24v125Ev
  virtual void  v126(); // _ZN7S1500C24v126Ev
  virtual void  v127(); // _ZN7S1500C24v127Ev
  virtual void  v128(); // _ZN7S1500C24v128Ev
  virtual void  v129(); // _ZN7S1500C24v129Ev
  virtual void  v130(); // _ZN7S1500C24v130Ev
  virtual void  v131(); // _ZN7S1500C24v131Ev
  virtual void  v132(); // _ZN7S1500C24v132Ev
  virtual void  v133(); // _ZN7S1500C24v133Ev
  virtual void  v134(); // _ZN7S1500C24v134Ev
  virtual void  v135(); // _ZN7S1500C24v135Ev
  virtual void  v136(); // _ZN7S1500C24v136Ev
  virtual void  v137(); // _ZN7S1500C24v137Ev
  virtual void  v138(); // _ZN7S1500C24v138Ev
  virtual void  v139(); // _ZN7S1500C24v139Ev
  virtual void  v140(); // _ZN7S1500C24v140Ev
  virtual void  v141(); // _ZN7S1500C24v141Ev
  virtual void  v142(); // _ZN7S1500C24v142Ev
  virtual void  v143(); // _ZN7S1500C24v143Ev
  virtual void  v144(); // _ZN7S1500C24v144Ev
  S1500C2(); // tgen
};
//SIG(-1 S1500C2) C1{ BC2{ BC3{ vd v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} BC5{ v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106} BC6{ v107 v108 v109 v110 v111 v112 v113 v114 v115} vd v116 v117 v118 v119 v120 v121 v122 v123 v124 v125 v126 v127 v128 v129 v130 v131 v132 v133 v134 v135 v136 v137 v138 v139 Fp FC7{ BC8{ BC9{ BC10{ m Fp Fi[2]}}}} Fi:1 Fi:1 Fi:1 Fi:1} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 FC11{ m FC12{ BC13{ BC10}} Fc} Fi}


 S1500C2 ::~S1500C2(){ note_dtor("S1500C2", this);}
void  S1500C2 ::v119(){vfunc_called(this, "_ZN7S1500C24v119Ev");}
void  S1500C2 ::v120(){vfunc_called(this, "_ZN7S1500C24v120Ev");}
void  S1500C2 ::v121(){vfunc_called(this, "_ZN7S1500C24v121Ev");}
void  S1500C2 ::v122(){vfunc_called(this, "_ZN7S1500C24v122Ev");}
void  S1500C2 ::v123(){vfunc_called(this, "_ZN7S1500C24v123Ev");}
void  S1500C2 ::v124(){vfunc_called(this, "_ZN7S1500C24v124Ev");}
void  S1500C2 ::v125(){vfunc_called(this, "_ZN7S1500C24v125Ev");}
void  S1500C2 ::v126(){vfunc_called(this, "_ZN7S1500C24v126Ev");}
void  S1500C2 ::v127(){vfunc_called(this, "_ZN7S1500C24v127Ev");}
void  S1500C2 ::v128(){vfunc_called(this, "_ZN7S1500C24v128Ev");}
void  S1500C2 ::v129(){vfunc_called(this, "_ZN7S1500C24v129Ev");}
void  S1500C2 ::v130(){vfunc_called(this, "_ZN7S1500C24v130Ev");}
void  S1500C2 ::v131(){vfunc_called(this, "_ZN7S1500C24v131Ev");}
void  S1500C2 ::v132(){vfunc_called(this, "_ZN7S1500C24v132Ev");}
void  S1500C2 ::v133(){vfunc_called(this, "_ZN7S1500C24v133Ev");}
void  S1500C2 ::v134(){vfunc_called(this, "_ZN7S1500C24v134Ev");}
void  S1500C2 ::v135(){vfunc_called(this, "_ZN7S1500C24v135Ev");}
void  S1500C2 ::v136(){vfunc_called(this, "_ZN7S1500C24v136Ev");}
void  S1500C2 ::v137(){vfunc_called(this, "_ZN7S1500C24v137Ev");}
void  S1500C2 ::v138(){vfunc_called(this, "_ZN7S1500C24v138Ev");}
void  S1500C2 ::v139(){vfunc_called(this, "_ZN7S1500C24v139Ev");}
void  S1500C2 ::v140(){vfunc_called(this, "_ZN7S1500C24v140Ev");}
void  S1500C2 ::v141(){vfunc_called(this, "_ZN7S1500C24v141Ev");}
void  S1500C2 ::v142(){vfunc_called(this, "_ZN7S1500C24v142Ev");}
void  S1500C2 ::v143(){vfunc_called(this, "_ZN7S1500C24v143Ev");}
void  S1500C2 ::v144(){vfunc_called(this, "_ZN7S1500C24v144Ev");}
S1500C2 ::S1500C2(){ note_ctor("S1500C2", this);} // tgen

static void Test_S1500C2()
{
  extern Class_Descriptor cd_S1500C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,28)];
    init_test(&cd_S1500C2, buf);
    S1500C2 *dp, &lv = *(dp=new (buf) S1500C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,108), "sizeof(S1500C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1500C2)");
    check_base_class_offset(lv, (S1500C4*)(S1500C3*), 0, "S1500C2");
    check_base_class_offset(lv, (S1500C6*)(S1500C3*), ABISELECT(96,60), "S1500C2");
    check_base_class_offset(lv, (S1500C7*)(S1500C3*), ABISELECT(104,64), "S1500C2");
    check_base_class_offset(lv, (S1500C3*), 0, "S1500C2");
    check_field_offset(lv, s1500c2f0, ABISELECT(144,88), "S1500C2.s1500c2f0");
    check_field_offset(lv, s1500c2f1, ABISELECT(168,104), "S1500C2.s1500c2f1");
    test_class_info(&lv, &cd_S1500C2);
    dp->~S1500C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1500C2(Test_S1500C2, "S1500C2", ABISELECT(176,108));

#else // __cplusplus

extern void _ZN7S1500C2C1Ev();
extern void _ZN7S1500C2D1Ev();
Name_Map name_map_S1500C2[] = {
  NSPAIR(_ZN7S1500C2C1Ev),
  NSPAIR(_ZN7S1500C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1500C4;
extern VTBL_ENTRY _ZTI7S1500C4[];
extern  VTBL_ENTRY _ZTV7S1500C4[];
extern Class_Descriptor cd_S1500C6;
extern VTBL_ENTRY _ZTI7S1500C6[];
extern  VTBL_ENTRY _ZTV7S1500C6[];
extern Class_Descriptor cd_S1500C7;
extern VTBL_ENTRY _ZTI7S1500C7[];
extern  VTBL_ENTRY _ZTV7S1500C7[];
extern Class_Descriptor cd_S1500C3;
extern VTBL_ENTRY _ZTI7S1500C3[];
extern  VTBL_ENTRY _ZTV7S1500C3[];
static Base_Class bases_S1500C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1500C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1500C6,    ABISELECT(96,60), //bcp->offset
    118, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1500C7,    ABISELECT(104,64), //bcp->offset
    136, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1500C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1500C2[];
extern void _ZN7S1500C2D1Ev();
extern void _ZN7S1500C2D0Ev();
extern void _ZN7S1500C42v6Ev();
extern void _ZN7S1500C42v7Ev();
extern void _ZN7S1500C42v8Ev();
extern void _ZN7S1500C42v9Ev();
extern void _ZN7S1500C43v10Ev();
extern void _ZN7S1500C43v11Ev();
extern void _ZN7S1500C43v12Ev();
extern void _ZN7S1500C43v13Ev();
extern void _ZN7S1500C43v14Ev();
extern void _ZN7S1500C43v15Ev();
extern void _ZN7S1500C43v16Ev();
extern void _ZN7S1500C43v17Ev();
extern void _ZN7S1500C43v18Ev();
extern void _ZN7S1500C43v19Ev();
extern void _ZN7S1500C43v20Ev();
extern void _ZN7S1500C43v21Ev();
extern void _ZN7S1500C43v22Ev();
extern void _ZN7S1500C43v23Ev();
extern void _ZN7S1500C43v24Ev();
extern void _ZN7S1500C43v25Ev();
extern void _ZN7S1500C43v26Ev();
extern void _ZN7S1500C43v27Ev();
extern void _ZN7S1500C43v28Ev();
extern void _ZN7S1500C43v29Ev();
extern void _ZN7S1500C43v30Ev();
extern void _ZN7S1500C43v31Ev();
extern void _ZN7S1500C43v32Ev();
extern void _ZN7S1500C43v33Ev();
extern void _ZN7S1500C43v34Ev();
extern void _ZN7S1500C43v35Ev();
extern void _ZN7S1500C43v36Ev();
extern void _ZN7S1500C43v37Ev();
extern void _ZN7S1500C43v38Ev();
extern void _ZN7S1500C43v39Ev();
extern void _ZN7S1500C43v40Ev();
extern void _ZN7S1500C43v41Ev();
extern void _ZN7S1500C43v42Ev();
extern void _ZN7S1500C43v43Ev();
extern void _ZN7S1500C43v44Ev();
extern void _ZN7S1500C43v45Ev();
extern void _ZN7S1500C43v46Ev();
extern void _ZN7S1500C43v47Ev();
extern void _ZN7S1500C43v48Ev();
extern void _ZN7S1500C43v49Ev();
extern void _ZN7S1500C43v50Ev();
extern void _ZN7S1500C43v51Ev();
extern void _ZN7S1500C43v52Ev();
extern void _ZN7S1500C43v53Ev();
extern void _ZN7S1500C43v54Ev();
extern void _ZN7S1500C43v55Ev();
extern void _ZN7S1500C43v56Ev();
extern void _ZN7S1500C43v57Ev();
extern void _ZN7S1500C43v58Ev();
extern void _ZN7S1500C43v59Ev();
extern void _ZN7S1500C43v60Ev();
extern void _ZN7S1500C43v61Ev();
extern void _ZN7S1500C43v62Ev();
extern void _ZN7S1500C43v63Ev();
extern void _ZN7S1500C43v64Ev();
extern void _ZN7S1500C43v65Ev();
extern void _ZN7S1500C43v66Ev();
extern void _ZN7S1500C43v67Ev();
extern void _ZN7S1500C43v68Ev();
extern void _ZN7S1500C43v69Ev();
extern void _ZN7S1500C33v95Ev();
extern void _ZN7S1500C33v96Ev();
extern void _ZN7S1500C33v97Ev();
extern void _ZN7S1500C33v98Ev();
extern void _ZN7S1500C33v99Ev();
extern void _ZN7S1500C34v100Ev();
extern void _ZN7S1500C34v101Ev();
extern void _ZN7S1500C34v102Ev();
extern void _ZN7S1500C34v103Ev();
extern void _ZN7S1500C34v104Ev();
extern void _ZN7S1500C34v105Ev();
extern void _ZN7S1500C34v106Ev();
extern void _ZN7S1500C34v107Ev();
extern void _ZN7S1500C34v108Ev();
extern void _ZN7S1500C34v109Ev();
extern void _ZN7S1500C34v110Ev();
extern void _ZN7S1500C34v111Ev();
extern void _ZN7S1500C34v112Ev();
extern void _ZN7S1500C34v113Ev();
extern void _ZN7S1500C34v114Ev();
extern void _ZN7S1500C34v115Ev();
extern void _ZN7S1500C34v116Ev();
extern void _ZN7S1500C34v117Ev();
extern void _ZN7S1500C34v118Ev();
extern void _ZN7S1500C24v119Ev();
extern void _ZN7S1500C24v120Ev();
extern void _ZN7S1500C24v121Ev();
extern void _ZN7S1500C24v122Ev();
extern void _ZN7S1500C24v123Ev();
extern void _ZN7S1500C24v124Ev();
extern void _ZN7S1500C24v125Ev();
extern void _ZN7S1500C24v126Ev();
extern void _ZN7S1500C24v127Ev();
extern void _ZN7S1500C24v128Ev();
extern void _ZN7S1500C24v129Ev();
extern void _ZN7S1500C24v130Ev();
extern void _ZN7S1500C24v131Ev();
extern void _ZN7S1500C24v132Ev();
extern void _ZN7S1500C24v133Ev();
extern void _ZN7S1500C24v134Ev();
extern void _ZN7S1500C24v135Ev();
extern void _ZN7S1500C24v136Ev();
extern void _ZN7S1500C24v137Ev();
extern void _ZN7S1500C24v138Ev();
extern void _ZN7S1500C24v139Ev();
extern void _ZN7S1500C24v140Ev();
extern void _ZN7S1500C24v141Ev();
extern void _ZN7S1500C24v142Ev();
extern void _ZN7S1500C24v143Ev();
extern void _ZN7S1500C24v144Ev();
extern void _ZN7S1500C63v70Ev();
extern void _ZN7S1500C63v71Ev();
extern void _ZN7S1500C63v72Ev();
extern void _ZN7S1500C63v73Ev();
extern void _ZN7S1500C63v74Ev();
extern void _ZN7S1500C63v75Ev();
extern void _ZN7S1500C63v76Ev();
extern void _ZN7S1500C63v77Ev();
extern void _ZN7S1500C63v78Ev();
extern void _ZN7S1500C63v79Ev();
extern void _ZN7S1500C63v80Ev();
extern void _ZN7S1500C63v81Ev();
extern void _ZN7S1500C63v82Ev();
extern void _ZN7S1500C63v83Ev();
extern void _ZN7S1500C63v84Ev();
extern void _ZN7S1500C63v85Ev();
extern void _ZN7S1500C73v86Ev();
extern void _ZN7S1500C73v87Ev();
extern void _ZN7S1500C73v88Ev();
extern void _ZN7S1500C73v89Ev();
extern void _ZN7S1500C73v90Ev();
extern void _ZN7S1500C73v91Ev();
extern void _ZN7S1500C73v92Ev();
extern void _ZN7S1500C73v93Ev();
extern void _ZN7S1500C73v94Ev();
static  VTBL_ENTRY vtc_S1500C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1500C2[0]),
  (VTBL_ENTRY)&_ZN7S1500C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1500C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1500C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1500C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1500C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1500C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1500C33v95Ev,
  (VTBL_ENTRY)&_ZN7S1500C33v96Ev,
  (VTBL_ENTRY)&_ZN7S1500C33v97Ev,
  (VTBL_ENTRY)&_ZN7S1500C33v98Ev,
  (VTBL_ENTRY)&_ZN7S1500C33v99Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v100Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v101Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v102Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v103Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v104Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v105Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v106Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v107Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v108Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v119Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v120Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v121Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v122Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v123Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v124Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v125Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v126Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v127Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v128Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v129Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v130Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v131Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v132Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v133Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v134Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v135Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v136Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v137Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v138Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v139Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v140Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v141Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v142Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v143Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v144Ev,
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S1500C2[0]),
  (VTBL_ENTRY)&_ZN7S1500C63v70Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v71Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v72Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v73Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v74Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v75Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v76Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v77Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v78Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v79Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v80Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v81Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v82Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v83Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v84Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v85Ev,
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S1500C2[0]),
  (VTBL_ENTRY)&_ZN7S1500C73v86Ev,
  (VTBL_ENTRY)&_ZN7S1500C73v87Ev,
  (VTBL_ENTRY)&_ZN7S1500C73v88Ev,
  (VTBL_ENTRY)&_ZN7S1500C73v89Ev,
  (VTBL_ENTRY)&_ZN7S1500C73v90Ev,
  (VTBL_ENTRY)&_ZN7S1500C73v91Ev,
  (VTBL_ENTRY)&_ZN7S1500C73v92Ev,
  (VTBL_ENTRY)&_ZN7S1500C73v93Ev,
  (VTBL_ENTRY)&_ZN7S1500C73v94Ev,
};
extern VTBL_ENTRY _ZTI7S1500C2[];
extern  VTBL_ENTRY _ZTV7S1500C2[];
Class_Descriptor cd_S1500C2 = {  "S1500C2", // class name
  bases_S1500C2, 4,
  &(vtc_S1500C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(176,108), // object size
  NSPAIRA(_ZTI7S1500C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1500C2),147, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  4, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1500C1  : S1500C2 {
  ::S79C8_nt s1500c1f0;
  virtual  ~S1500C1(); // _ZN7S1500C1D1Ev
  virtual void  v1(); // _ZN7S1500C12v1Ev
  virtual void  v2(); // _ZN7S1500C12v2Ev
  virtual void  v3(); // _ZN7S1500C12v3Ev
  virtual void  v4(); // _ZN7S1500C12v4Ev
  virtual void  v5(); // _ZN7S1500C12v5Ev
  S1500C1(); // tgen
};
//SIG(1 S1500C1) C1{ BC2{ BC3{ BC4{ vd v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 Fi FL Fp[4] Fi[2] Fp FC5{ m Fi[2]} Fp[2]} BC6{ v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85} BC7{ v86 v87 v88 v89 v90 v91 v92 v93 v94} vd v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 v112 v113 v114 v115 v116 v117 v118 Fp FC8{ BC9{ BC10{ BC11{ m Fp Fi[2]}}}} Fi:1 Fi:1 Fi:1 Fi:1} vd v119 v120 v121 v122 v123 v124 v125 v126 v127 v128 v129 v130 v131 v132 v133 v134 v135 v136 v137 v138 v139 v140 v141 v142 v143 v144 FC12{ m FC13{ BC14{ BC11}} Fc} Fi} vd v1 v2 v3 v4 v5 FC5}


 S1500C1 ::~S1500C1(){ note_dtor("S1500C1", this);}
void  S1500C1 ::v1(){vfunc_called(this, "_ZN7S1500C12v1Ev");}
void  S1500C1 ::v2(){vfunc_called(this, "_ZN7S1500C12v2Ev");}
void  S1500C1 ::v3(){vfunc_called(this, "_ZN7S1500C12v3Ev");}
void  S1500C1 ::v4(){vfunc_called(this, "_ZN7S1500C12v4Ev");}
void  S1500C1 ::v5(){vfunc_called(this, "_ZN7S1500C12v5Ev");}
S1500C1 ::S1500C1(){ note_ctor("S1500C1", this);} // tgen

static void Test_S1500C1()
{
  extern Class_Descriptor cd_S1500C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,30)];
    init_test(&cd_S1500C1, buf);
    S1500C1 *dp, &lv = *(dp=new (buf) S1500C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,116), "sizeof(S1500C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1500C1)");
    check_base_class_offset(lv, (S1500C4*)(S1500C3*)(S1500C2*), 0, "S1500C1");
    check_base_class_offset(lv, (S1500C6*)(S1500C3*)(S1500C2*), ABISELECT(96,60), "S1500C1");
    check_base_class_offset(lv, (S1500C7*)(S1500C3*)(S1500C2*), ABISELECT(104,64), "S1500C1");
    check_base_class_offset(lv, (S1500C3*)(S1500C2*), 0, "S1500C1");
    check_base_class_offset(lv, (S1500C2*), 0, "S1500C1");
    check_field_offset(lv, s1500c1f0, ABISELECT(172,108), "S1500C1.s1500c1f0");
    test_class_info(&lv, &cd_S1500C1);
    dp->~S1500C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1500C1(Test_S1500C1, "S1500C1", ABISELECT(184,116));

#else // __cplusplus

extern void _ZN7S1500C1C1Ev();
extern void _ZN7S1500C1D1Ev();
Name_Map name_map_S1500C1[] = {
  NSPAIR(_ZN7S1500C1C1Ev),
  NSPAIR(_ZN7S1500C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1500C4;
extern VTBL_ENTRY _ZTI7S1500C4[];
extern  VTBL_ENTRY _ZTV7S1500C4[];
extern Class_Descriptor cd_S1500C6;
extern VTBL_ENTRY _ZTI7S1500C6[];
extern  VTBL_ENTRY _ZTV7S1500C6[];
extern Class_Descriptor cd_S1500C7;
extern VTBL_ENTRY _ZTI7S1500C7[];
extern  VTBL_ENTRY _ZTV7S1500C7[];
extern Class_Descriptor cd_S1500C3;
extern VTBL_ENTRY _ZTI7S1500C3[];
extern  VTBL_ENTRY _ZTV7S1500C3[];
extern Class_Descriptor cd_S1500C2;
extern VTBL_ENTRY _ZTI7S1500C2[];
extern  VTBL_ENTRY _ZTV7S1500C2[];
static Base_Class bases_S1500C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1500C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1500C6,    ABISELECT(96,60), //bcp->offset
    123, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1500C7,    ABISELECT(104,64), //bcp->offset
    141, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1500C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S1500C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1500C1[];
extern void _ZN7S1500C1D1Ev();
extern void _ZN7S1500C1D0Ev();
extern void _ZN7S1500C42v6Ev();
extern void _ZN7S1500C42v7Ev();
extern void _ZN7S1500C42v8Ev();
extern void _ZN7S1500C42v9Ev();
extern void _ZN7S1500C43v10Ev();
extern void _ZN7S1500C43v11Ev();
extern void _ZN7S1500C43v12Ev();
extern void _ZN7S1500C43v13Ev();
extern void _ZN7S1500C43v14Ev();
extern void _ZN7S1500C43v15Ev();
extern void _ZN7S1500C43v16Ev();
extern void _ZN7S1500C43v17Ev();
extern void _ZN7S1500C43v18Ev();
extern void _ZN7S1500C43v19Ev();
extern void _ZN7S1500C43v20Ev();
extern void _ZN7S1500C43v21Ev();
extern void _ZN7S1500C43v22Ev();
extern void _ZN7S1500C43v23Ev();
extern void _ZN7S1500C43v24Ev();
extern void _ZN7S1500C43v25Ev();
extern void _ZN7S1500C43v26Ev();
extern void _ZN7S1500C43v27Ev();
extern void _ZN7S1500C43v28Ev();
extern void _ZN7S1500C43v29Ev();
extern void _ZN7S1500C43v30Ev();
extern void _ZN7S1500C43v31Ev();
extern void _ZN7S1500C43v32Ev();
extern void _ZN7S1500C43v33Ev();
extern void _ZN7S1500C43v34Ev();
extern void _ZN7S1500C43v35Ev();
extern void _ZN7S1500C43v36Ev();
extern void _ZN7S1500C43v37Ev();
extern void _ZN7S1500C43v38Ev();
extern void _ZN7S1500C43v39Ev();
extern void _ZN7S1500C43v40Ev();
extern void _ZN7S1500C43v41Ev();
extern void _ZN7S1500C43v42Ev();
extern void _ZN7S1500C43v43Ev();
extern void _ZN7S1500C43v44Ev();
extern void _ZN7S1500C43v45Ev();
extern void _ZN7S1500C43v46Ev();
extern void _ZN7S1500C43v47Ev();
extern void _ZN7S1500C43v48Ev();
extern void _ZN7S1500C43v49Ev();
extern void _ZN7S1500C43v50Ev();
extern void _ZN7S1500C43v51Ev();
extern void _ZN7S1500C43v52Ev();
extern void _ZN7S1500C43v53Ev();
extern void _ZN7S1500C43v54Ev();
extern void _ZN7S1500C43v55Ev();
extern void _ZN7S1500C43v56Ev();
extern void _ZN7S1500C43v57Ev();
extern void _ZN7S1500C43v58Ev();
extern void _ZN7S1500C43v59Ev();
extern void _ZN7S1500C43v60Ev();
extern void _ZN7S1500C43v61Ev();
extern void _ZN7S1500C43v62Ev();
extern void _ZN7S1500C43v63Ev();
extern void _ZN7S1500C43v64Ev();
extern void _ZN7S1500C43v65Ev();
extern void _ZN7S1500C43v66Ev();
extern void _ZN7S1500C43v67Ev();
extern void _ZN7S1500C43v68Ev();
extern void _ZN7S1500C43v69Ev();
extern void _ZN7S1500C33v95Ev();
extern void _ZN7S1500C33v96Ev();
extern void _ZN7S1500C33v97Ev();
extern void _ZN7S1500C33v98Ev();
extern void _ZN7S1500C33v99Ev();
extern void _ZN7S1500C34v100Ev();
extern void _ZN7S1500C34v101Ev();
extern void _ZN7S1500C34v102Ev();
extern void _ZN7S1500C34v103Ev();
extern void _ZN7S1500C34v104Ev();
extern void _ZN7S1500C34v105Ev();
extern void _ZN7S1500C34v106Ev();
extern void _ZN7S1500C34v107Ev();
extern void _ZN7S1500C34v108Ev();
extern void _ZN7S1500C34v109Ev();
extern void _ZN7S1500C34v110Ev();
extern void _ZN7S1500C34v111Ev();
extern void _ZN7S1500C34v112Ev();
extern void _ZN7S1500C34v113Ev();
extern void _ZN7S1500C34v114Ev();
extern void _ZN7S1500C34v115Ev();
extern void _ZN7S1500C34v116Ev();
extern void _ZN7S1500C34v117Ev();
extern void _ZN7S1500C34v118Ev();
extern void _ZN7S1500C24v119Ev();
extern void _ZN7S1500C24v120Ev();
extern void _ZN7S1500C24v121Ev();
extern void _ZN7S1500C24v122Ev();
extern void _ZN7S1500C24v123Ev();
extern void _ZN7S1500C24v124Ev();
extern void _ZN7S1500C24v125Ev();
extern void _ZN7S1500C24v126Ev();
extern void _ZN7S1500C24v127Ev();
extern void _ZN7S1500C24v128Ev();
extern void _ZN7S1500C24v129Ev();
extern void _ZN7S1500C24v130Ev();
extern void _ZN7S1500C24v131Ev();
extern void _ZN7S1500C24v132Ev();
extern void _ZN7S1500C24v133Ev();
extern void _ZN7S1500C24v134Ev();
extern void _ZN7S1500C24v135Ev();
extern void _ZN7S1500C24v136Ev();
extern void _ZN7S1500C24v137Ev();
extern void _ZN7S1500C24v138Ev();
extern void _ZN7S1500C24v139Ev();
extern void _ZN7S1500C24v140Ev();
extern void _ZN7S1500C24v141Ev();
extern void _ZN7S1500C24v142Ev();
extern void _ZN7S1500C24v143Ev();
extern void _ZN7S1500C24v144Ev();
extern void _ZN7S1500C12v1Ev();
extern void _ZN7S1500C12v2Ev();
extern void _ZN7S1500C12v3Ev();
extern void _ZN7S1500C12v4Ev();
extern void _ZN7S1500C12v5Ev();
extern void _ZN7S1500C63v70Ev();
extern void _ZN7S1500C63v71Ev();
extern void _ZN7S1500C63v72Ev();
extern void _ZN7S1500C63v73Ev();
extern void _ZN7S1500C63v74Ev();
extern void _ZN7S1500C63v75Ev();
extern void _ZN7S1500C63v76Ev();
extern void _ZN7S1500C63v77Ev();
extern void _ZN7S1500C63v78Ev();
extern void _ZN7S1500C63v79Ev();
extern void _ZN7S1500C63v80Ev();
extern void _ZN7S1500C63v81Ev();
extern void _ZN7S1500C63v82Ev();
extern void _ZN7S1500C63v83Ev();
extern void _ZN7S1500C63v84Ev();
extern void _ZN7S1500C63v85Ev();
extern void _ZN7S1500C73v86Ev();
extern void _ZN7S1500C73v87Ev();
extern void _ZN7S1500C73v88Ev();
extern void _ZN7S1500C73v89Ev();
extern void _ZN7S1500C73v90Ev();
extern void _ZN7S1500C73v91Ev();
extern void _ZN7S1500C73v92Ev();
extern void _ZN7S1500C73v93Ev();
extern void _ZN7S1500C73v94Ev();
static  VTBL_ENTRY vtc_S1500C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1500C1[0]),
  (VTBL_ENTRY)&_ZN7S1500C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1500C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1500C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1500C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1500C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1500C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1500C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1500C33v95Ev,
  (VTBL_ENTRY)&_ZN7S1500C33v96Ev,
  (VTBL_ENTRY)&_ZN7S1500C33v97Ev,
  (VTBL_ENTRY)&_ZN7S1500C33v98Ev,
  (VTBL_ENTRY)&_ZN7S1500C33v99Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v100Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v101Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v102Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v103Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v104Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v105Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v106Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v107Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v108Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v109Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v110Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v111Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v112Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v113Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v114Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v115Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v116Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v117Ev,
  (VTBL_ENTRY)&_ZN7S1500C34v118Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v119Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v120Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v121Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v122Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v123Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v124Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v125Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v126Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v127Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v128Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v129Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v130Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v131Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v132Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v133Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v134Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v135Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v136Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v137Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v138Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v139Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v140Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v141Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v142Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v143Ev,
  (VTBL_ENTRY)&_ZN7S1500C24v144Ev,
  (VTBL_ENTRY)&_ZN7S1500C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1500C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1500C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1500C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1500C12v5Ev,
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S1500C1[0]),
  (VTBL_ENTRY)&_ZN7S1500C63v70Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v71Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v72Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v73Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v74Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v75Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v76Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v77Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v78Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v79Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v80Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v81Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v82Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v83Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v84Ev,
  (VTBL_ENTRY)&_ZN7S1500C63v85Ev,
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S1500C1[0]),
  (VTBL_ENTRY)&_ZN7S1500C73v86Ev,
  (VTBL_ENTRY)&_ZN7S1500C73v87Ev,
  (VTBL_ENTRY)&_ZN7S1500C73v88Ev,
  (VTBL_ENTRY)&_ZN7S1500C73v89Ev,
  (VTBL_ENTRY)&_ZN7S1500C73v90Ev,
  (VTBL_ENTRY)&_ZN7S1500C73v91Ev,
  (VTBL_ENTRY)&_ZN7S1500C73v92Ev,
  (VTBL_ENTRY)&_ZN7S1500C73v93Ev,
  (VTBL_ENTRY)&_ZN7S1500C73v94Ev,
};
extern VTBL_ENTRY _ZTI7S1500C1[];
extern  VTBL_ENTRY _ZTV7S1500C1[];
Class_Descriptor cd_S1500C1 = {  "S1500C1", // class name
  bases_S1500C1, 5,
  &(vtc_S1500C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(184,116), // object size
  NSPAIRA(_ZTI7S1500C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1500C1),152, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  5, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3043C3  {
  int s3043c3f0;
  __tsi64 s3043c3f1;
  void *s3043c3f2[4];
  int s3043c3f3[2];
  void *s3043c3f4;
  ::S79C8_nt s3043c3f5;
  void *s3043c3f6[2];
  virtual  ~S3043C3(); // _ZN7S3043C3D1Ev
  virtual void  v17(); // _ZN7S3043C33v17Ev
  virtual void  v18(); // _ZN7S3043C33v18Ev
  virtual void  v19(); // _ZN7S3043C33v19Ev
  virtual void  v20(); // _ZN7S3043C33v20Ev
  virtual void  v21(); // _ZN7S3043C33v21Ev
  virtual void  v22(); // _ZN7S3043C33v22Ev
  virtual void  v23(); // _ZN7S3043C33v23Ev
  virtual void  v24(); // _ZN7S3043C33v24Ev
  virtual void  v25(); // _ZN7S3043C33v25Ev
  virtual void  v26(); // _ZN7S3043C33v26Ev
  virtual void  v27(); // _ZN7S3043C33v27Ev
  virtual void  v28(); // _ZN7S3043C33v28Ev
  virtual void  v29(); // _ZN7S3043C33v29Ev
  virtual void  v30(); // _ZN7S3043C33v30Ev
  virtual void  v31(); // _ZN7S3043C33v31Ev
  virtual void  v32(); // _ZN7S3043C33v32Ev
  virtual void  v33(); // _ZN7S3043C33v33Ev
  virtual void  v34(); // _ZN7S3043C33v34Ev
  virtual void  v35(); // _ZN7S3043C33v35Ev
  virtual void  v36(); // _ZN7S3043C33v36Ev
  virtual void  v37(); // _ZN7S3043C33v37Ev
  virtual void  v38(); // _ZN7S3043C33v38Ev
  virtual void  v39(); // _ZN7S3043C33v39Ev
  virtual void  v40(); // _ZN7S3043C33v40Ev
  virtual void  v41(); // _ZN7S3043C33v41Ev
  virtual void  v42(); // _ZN7S3043C33v42Ev
  virtual void  v43(); // _ZN7S3043C33v43Ev
  virtual void  v44(); // _ZN7S3043C33v44Ev
  virtual void  v45(); // _ZN7S3043C33v45Ev
  virtual void  v46(); // _ZN7S3043C33v46Ev
  virtual void  v47(); // _ZN7S3043C33v47Ev
  virtual void  v48(); // _ZN7S3043C33v48Ev
  virtual void  v49(); // _ZN7S3043C33v49Ev
  virtual void  v50(); // _ZN7S3043C33v50Ev
  virtual void  v51(); // _ZN7S3043C33v51Ev
  virtual void  v52(); // _ZN7S3043C33v52Ev
  virtual void  v53(); // _ZN7S3043C33v53Ev
  virtual void  v54(); // _ZN7S3043C33v54Ev
  virtual void  v55(); // _ZN7S3043C33v55Ev
  virtual void  v56(); // _ZN7S3043C33v56Ev
  virtual void  v57(); // _ZN7S3043C33v57Ev
  virtual void  v58(); // _ZN7S3043C33v58Ev
  virtual void  v59(); // _ZN7S3043C33v59Ev
  virtual void  v60(); // _ZN7S3043C33v60Ev
  virtual void  v61(); // _ZN7S3043C33v61Ev
  virtual void  v62(); // _ZN7S3043C33v62Ev
  virtual void  v63(); // _ZN7S3043C33v63Ev
  virtual void  v64(); // _ZN7S3043C33v64Ev
  virtual void  v65(); // _ZN7S3043C33v65Ev
  virtual void  v66(); // _ZN7S3043C33v66Ev
  virtual void  v67(); // _ZN7S3043C33v67Ev
  virtual void  v68(); // _ZN7S3043C33v68Ev
  virtual void  v69(); // _ZN7S3043C33v69Ev
  virtual void  v70(); // _ZN7S3043C33v70Ev
  virtual void  v71(); // _ZN7S3043C33v71Ev
  virtual void  v72(); // _ZN7S3043C33v72Ev
  virtual void  v73(); // _ZN7S3043C33v73Ev
  virtual void  v74(); // _ZN7S3043C33v74Ev
  virtual void  v75(); // _ZN7S3043C33v75Ev
  virtual void  v76(); // _ZN7S3043C33v76Ev
  virtual void  v77(); // _ZN7S3043C33v77Ev
  virtual void  v78(); // _ZN7S3043C33v78Ev
  virtual void  v79(); // _ZN7S3043C33v79Ev
  virtual void  v80(); // _ZN7S3043C33v80Ev
  S3043C3(); // tgen
};
//SIG(-1 S3043C3) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 Fi FL Fp[4] Fi[2] Fp FC2{ m Fi[2]} Fp[2]}


 S3043C3 ::~S3043C3(){ note_dtor("S3043C3", this);}
void  S3043C3 ::v17(){vfunc_called(this, "_ZN7S3043C33v17Ev");}
void  S3043C3 ::v18(){vfunc_called(this, "_ZN7S3043C33v18Ev");}
void  S3043C3 ::v19(){vfunc_called(this, "_ZN7S3043C33v19Ev");}
void  S3043C3 ::v20(){vfunc_called(this, "_ZN7S3043C33v20Ev");}
void  S3043C3 ::v21(){vfunc_called(this, "_ZN7S3043C33v21Ev");}
void  S3043C3 ::v22(){vfunc_called(this, "_ZN7S3043C33v22Ev");}
void  S3043C3 ::v23(){vfunc_called(this, "_ZN7S3043C33v23Ev");}
void  S3043C3 ::v24(){vfunc_called(this, "_ZN7S3043C33v24Ev");}
void  S3043C3 ::v25(){vfunc_called(this, "_ZN7S3043C33v25Ev");}
void  S3043C3 ::v26(){vfunc_called(this, "_ZN7S3043C33v26Ev");}
void  S3043C3 ::v27(){vfunc_called(this, "_ZN7S3043C33v27Ev");}
void  S3043C3 ::v28(){vfunc_called(this, "_ZN7S3043C33v28Ev");}
void  S3043C3 ::v29(){vfunc_called(this, "_ZN7S3043C33v29Ev");}
void  S3043C3 ::v30(){vfunc_called(this, "_ZN7S3043C33v30Ev");}
void  S3043C3 ::v31(){vfunc_called(this, "_ZN7S3043C33v31Ev");}
void  S3043C3 ::v32(){vfunc_called(this, "_ZN7S3043C33v32Ev");}
void  S3043C3 ::v33(){vfunc_called(this, "_ZN7S3043C33v33Ev");}
void  S3043C3 ::v34(){vfunc_called(this, "_ZN7S3043C33v34Ev");}
void  S3043C3 ::v35(){vfunc_called(this, "_ZN7S3043C33v35Ev");}
void  S3043C3 ::v36(){vfunc_called(this, "_ZN7S3043C33v36Ev");}
void  S3043C3 ::v37(){vfunc_called(this, "_ZN7S3043C33v37Ev");}
void  S3043C3 ::v38(){vfunc_called(this, "_ZN7S3043C33v38Ev");}
void  S3043C3 ::v39(){vfunc_called(this, "_ZN7S3043C33v39Ev");}
void  S3043C3 ::v40(){vfunc_called(this, "_ZN7S3043C33v40Ev");}
void  S3043C3 ::v41(){vfunc_called(this, "_ZN7S3043C33v41Ev");}
void  S3043C3 ::v42(){vfunc_called(this, "_ZN7S3043C33v42Ev");}
void  S3043C3 ::v43(){vfunc_called(this, "_ZN7S3043C33v43Ev");}
void  S3043C3 ::v44(){vfunc_called(this, "_ZN7S3043C33v44Ev");}
void  S3043C3 ::v45(){vfunc_called(this, "_ZN7S3043C33v45Ev");}
void  S3043C3 ::v46(){vfunc_called(this, "_ZN7S3043C33v46Ev");}
void  S3043C3 ::v47(){vfunc_called(this, "_ZN7S3043C33v47Ev");}
void  S3043C3 ::v48(){vfunc_called(this, "_ZN7S3043C33v48Ev");}
void  S3043C3 ::v49(){vfunc_called(this, "_ZN7S3043C33v49Ev");}
void  S3043C3 ::v50(){vfunc_called(this, "_ZN7S3043C33v50Ev");}
void  S3043C3 ::v51(){vfunc_called(this, "_ZN7S3043C33v51Ev");}
void  S3043C3 ::v52(){vfunc_called(this, "_ZN7S3043C33v52Ev");}
void  S3043C3 ::v53(){vfunc_called(this, "_ZN7S3043C33v53Ev");}
void  S3043C3 ::v54(){vfunc_called(this, "_ZN7S3043C33v54Ev");}
void  S3043C3 ::v55(){vfunc_called(this, "_ZN7S3043C33v55Ev");}
void  S3043C3 ::v56(){vfunc_called(this, "_ZN7S3043C33v56Ev");}
void  S3043C3 ::v57(){vfunc_called(this, "_ZN7S3043C33v57Ev");}
void  S3043C3 ::v58(){vfunc_called(this, "_ZN7S3043C33v58Ev");}
void  S3043C3 ::v59(){vfunc_called(this, "_ZN7S3043C33v59Ev");}
void  S3043C3 ::v60(){vfunc_called(this, "_ZN7S3043C33v60Ev");}
void  S3043C3 ::v61(){vfunc_called(this, "_ZN7S3043C33v61Ev");}
void  S3043C3 ::v62(){vfunc_called(this, "_ZN7S3043C33v62Ev");}
void  S3043C3 ::v63(){vfunc_called(this, "_ZN7S3043C33v63Ev");}
void  S3043C3 ::v64(){vfunc_called(this, "_ZN7S3043C33v64Ev");}
void  S3043C3 ::v65(){vfunc_called(this, "_ZN7S3043C33v65Ev");}
void  S3043C3 ::v66(){vfunc_called(this, "_ZN7S3043C33v66Ev");}
void  S3043C3 ::v67(){vfunc_called(this, "_ZN7S3043C33v67Ev");}
void  S3043C3 ::v68(){vfunc_called(this, "_ZN7S3043C33v68Ev");}
void  S3043C3 ::v69(){vfunc_called(this, "_ZN7S3043C33v69Ev");}
void  S3043C3 ::v70(){vfunc_called(this, "_ZN7S3043C33v70Ev");}
void  S3043C3 ::v71(){vfunc_called(this, "_ZN7S3043C33v71Ev");}
void  S3043C3 ::v72(){vfunc_called(this, "_ZN7S3043C33v72Ev");}
void  S3043C3 ::v73(){vfunc_called(this, "_ZN7S3043C33v73Ev");}
void  S3043C3 ::v74(){vfunc_called(this, "_ZN7S3043C33v74Ev");}
void  S3043C3 ::v75(){vfunc_called(this, "_ZN7S3043C33v75Ev");}
void  S3043C3 ::v76(){vfunc_called(this, "_ZN7S3043C33v76Ev");}
void  S3043C3 ::v77(){vfunc_called(this, "_ZN7S3043C33v77Ev");}
void  S3043C3 ::v78(){vfunc_called(this, "_ZN7S3043C33v78Ev");}
void  S3043C3 ::v79(){vfunc_called(this, "_ZN7S3043C33v79Ev");}
void  S3043C3 ::v80(){vfunc_called(this, "_ZN7S3043C33v80Ev");}
S3043C3 ::S3043C3(){ note_ctor("S3043C3", this);} // tgen

static void Test_S3043C3()
{
  extern Class_Descriptor cd_S3043C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S3043C3, buf);
    S3043C3 *dp, &lv = *(dp=new (buf) S3043C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S3043C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3043C3)");
    check_field_offset(lv, s3043c3f0, ABISELECT(8,4), "S3043C3.s3043c3f0");
    check_field_offset(lv, s3043c3f1, ABISELECT(16,8), "S3043C3.s3043c3f1");
    check_field_offset(lv, s3043c3f2, ABISELECT(24,16), "S3043C3.s3043c3f2");
    check_field_offset(lv, s3043c3f3, ABISELECT(56,32), "S3043C3.s3043c3f3");
    check_field_offset(lv, s3043c3f4, ABISELECT(64,40), "S3043C3.s3043c3f4");
    check_field_offset(lv, s3043c3f5, ABISELECT(72,44), "S3043C3.s3043c3f5");
    check_field_offset(lv, s3043c3f6, ABISELECT(80,52), "S3043C3.s3043c3f6");
    test_class_info(&lv, &cd_S3043C3);
    dp->~S3043C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3043C3(Test_S3043C3, "S3043C3", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S3043C3C1Ev();
extern void _ZN7S3043C3D1Ev();
Name_Map name_map_S3043C3[] = {
  NSPAIR(_ZN7S3043C3C1Ev),
  NSPAIR(_ZN7S3043C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3043C3[];
extern void _ZN7S3043C3D1Ev();
extern void _ZN7S3043C3D0Ev();
extern void _ZN7S3043C33v17Ev();
extern void _ZN7S3043C33v18Ev();
extern void _ZN7S3043C33v19Ev();
extern void _ZN7S3043C33v20Ev();
extern void _ZN7S3043C33v21Ev();
extern void _ZN7S3043C33v22Ev();
extern void _ZN7S3043C33v23Ev();
extern void _ZN7S3043C33v24Ev();
extern void _ZN7S3043C33v25Ev();
extern void _ZN7S3043C33v26Ev();
extern void _ZN7S3043C33v27Ev();
extern void _ZN7S3043C33v28Ev();
extern void _ZN7S3043C33v29Ev();
extern void _ZN7S3043C33v30Ev();
extern void _ZN7S3043C33v31Ev();
extern void _ZN7S3043C33v32Ev();
extern void _ZN7S3043C33v33Ev();
extern void _ZN7S3043C33v34Ev();
extern void _ZN7S3043C33v35Ev();
extern void _ZN7S3043C33v36Ev();
extern void _ZN7S3043C33v37Ev();
extern void _ZN7S3043C33v38Ev();
extern void _ZN7S3043C33v39Ev();
extern void _ZN7S3043C33v40Ev();
extern void _ZN7S3043C33v41Ev();
extern void _ZN7S3043C33v42Ev();
extern void _ZN7S3043C33v43Ev();
extern void _ZN7S3043C33v44Ev();
extern void _ZN7S3043C33v45Ev();
extern void _ZN7S3043C33v46Ev();
extern void _ZN7S3043C33v47Ev();
extern void _ZN7S3043C33v48Ev();
extern void _ZN7S3043C33v49Ev();
extern void _ZN7S3043C33v50Ev();
extern void _ZN7S3043C33v51Ev();
extern void _ZN7S3043C33v52Ev();
extern void _ZN7S3043C33v53Ev();
extern void _ZN7S3043C33v54Ev();
extern void _ZN7S3043C33v55Ev();
extern void _ZN7S3043C33v56Ev();
extern void _ZN7S3043C33v57Ev();
extern void _ZN7S3043C33v58Ev();
extern void _ZN7S3043C33v59Ev();
extern void _ZN7S3043C33v60Ev();
extern void _ZN7S3043C33v61Ev();
extern void _ZN7S3043C33v62Ev();
extern void _ZN7S3043C33v63Ev();
extern void _ZN7S3043C33v64Ev();
extern void _ZN7S3043C33v65Ev();
extern void _ZN7S3043C33v66Ev();
extern void _ZN7S3043C33v67Ev();
extern void _ZN7S3043C33v68Ev();
extern void _ZN7S3043C33v69Ev();
extern void _ZN7S3043C33v70Ev();
extern void _ZN7S3043C33v71Ev();
extern void _ZN7S3043C33v72Ev();
extern void _ZN7S3043C33v73Ev();
extern void _ZN7S3043C33v74Ev();
extern void _ZN7S3043C33v75Ev();
extern void _ZN7S3043C33v76Ev();
extern void _ZN7S3043C33v77Ev();
extern void _ZN7S3043C33v78Ev();
extern void _ZN7S3043C33v79Ev();
extern void _ZN7S3043C33v80Ev();
static  VTBL_ENTRY vtc_S3043C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3043C3[0]),
  (VTBL_ENTRY)&_ZN7S3043C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3043C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v68Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v69Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v70Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v71Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v72Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v73Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v74Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v75Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v76Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v77Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v78Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v79Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v80Ev,
};
extern VTBL_ENTRY _ZTI7S3043C3[];
extern  VTBL_ENTRY _ZTV7S3043C3[];
Class_Descriptor cd_S3043C3 = {  "S3043C3", // class name
  0,0,//no base classes
  &(vtc_S3043C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S3043C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3043C3),68, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3043C5  {
  virtual void  v81(); // _ZN7S3043C53v81Ev
  virtual void  v82(); // _ZN7S3043C53v82Ev
  virtual void  v83(); // _ZN7S3043C53v83Ev
  virtual void  v84(); // _ZN7S3043C53v84Ev
  virtual void  v85(); // _ZN7S3043C53v85Ev
  virtual void  v86(); // _ZN7S3043C53v86Ev
  virtual void  v87(); // _ZN7S3043C53v87Ev
  virtual void  v88(); // _ZN7S3043C53v88Ev
  virtual void  v89(); // _ZN7S3043C53v89Ev
  virtual void  v90(); // _ZN7S3043C53v90Ev
  virtual void  v91(); // _ZN7S3043C53v91Ev
  virtual void  v92(); // _ZN7S3043C53v92Ev
  virtual void  v93(); // _ZN7S3043C53v93Ev
  virtual void  v94(); // _ZN7S3043C53v94Ev
  virtual void  v95(); // _ZN7S3043C53v95Ev
  virtual void  v96(); // _ZN7S3043C53v96Ev
  ~S3043C5(); // tgen
  S3043C5(); // tgen
};
//SIG(-1 S3043C5) C1{ v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16}


void  S3043C5 ::v81(){vfunc_called(this, "_ZN7S3043C53v81Ev");}
void  S3043C5 ::v82(){vfunc_called(this, "_ZN7S3043C53v82Ev");}
void  S3043C5 ::v83(){vfunc_called(this, "_ZN7S3043C53v83Ev");}
void  S3043C5 ::v84(){vfunc_called(this, "_ZN7S3043C53v84Ev");}
void  S3043C5 ::v85(){vfunc_called(this, "_ZN7S3043C53v85Ev");}
void  S3043C5 ::v86(){vfunc_called(this, "_ZN7S3043C53v86Ev");}
void  S3043C5 ::v87(){vfunc_called(this, "_ZN7S3043C53v87Ev");}
void  S3043C5 ::v88(){vfunc_called(this, "_ZN7S3043C53v88Ev");}
void  S3043C5 ::v89(){vfunc_called(this, "_ZN7S3043C53v89Ev");}
void  S3043C5 ::v90(){vfunc_called(this, "_ZN7S3043C53v90Ev");}
void  S3043C5 ::v91(){vfunc_called(this, "_ZN7S3043C53v91Ev");}
void  S3043C5 ::v92(){vfunc_called(this, "_ZN7S3043C53v92Ev");}
void  S3043C5 ::v93(){vfunc_called(this, "_ZN7S3043C53v93Ev");}
void  S3043C5 ::v94(){vfunc_called(this, "_ZN7S3043C53v94Ev");}
void  S3043C5 ::v95(){vfunc_called(this, "_ZN7S3043C53v95Ev");}
void  S3043C5 ::v96(){vfunc_called(this, "_ZN7S3043C53v96Ev");}
S3043C5 ::~S3043C5(){ note_dtor("S3043C5", this);} // tgen
S3043C5 ::S3043C5(){ note_ctor("S3043C5", this);} // tgen

static void Test_S3043C5()
{
  extern Class_Descriptor cd_S3043C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3043C5, buf);
    S3043C5 *dp, &lv = *(dp=new (buf) S3043C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3043C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3043C5)");
    test_class_info(&lv, &cd_S3043C5);
    dp->~S3043C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3043C5(Test_S3043C5, "S3043C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3043C5C1Ev();
extern void _ZN7S3043C5D1Ev();
Name_Map name_map_S3043C5[] = {
  NSPAIR(_ZN7S3043C5C1Ev),
  NSPAIR(_ZN7S3043C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3043C5[];
extern void _ZN7S3043C53v81Ev();
extern void _ZN7S3043C53v82Ev();
extern void _ZN7S3043C53v83Ev();
extern void _ZN7S3043C53v84Ev();
extern void _ZN7S3043C53v85Ev();
extern void _ZN7S3043C53v86Ev();
extern void _ZN7S3043C53v87Ev();
extern void _ZN7S3043C53v88Ev();
extern void _ZN7S3043C53v89Ev();
extern void _ZN7S3043C53v90Ev();
extern void _ZN7S3043C53v91Ev();
extern void _ZN7S3043C53v92Ev();
extern void _ZN7S3043C53v93Ev();
extern void _ZN7S3043C53v94Ev();
extern void _ZN7S3043C53v95Ev();
extern void _ZN7S3043C53v96Ev();
static  VTBL_ENTRY vtc_S3043C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3043C5[0]),
  (VTBL_ENTRY)&_ZN7S3043C53v81Ev,
  (VTBL_ENTRY)&_ZN7S3043C53v82Ev,
  (VTBL_ENTRY)&_ZN7S3043C53v83Ev,
  (VTBL_ENTRY)&_ZN7S3043C53v84Ev,
  (VTBL_ENTRY)&_ZN7S3043C53v85Ev,
  (VTBL_ENTRY)&_ZN7S3043C53v86Ev,
  (VTBL_ENTRY)&_ZN7S3043C53v87Ev,
  (VTBL_ENTRY)&_ZN7S3043C53v88Ev,
  (VTBL_ENTRY)&_ZN7S3043C53v89Ev,
  (VTBL_ENTRY)&_ZN7S3043C53v90Ev,
  (VTBL_ENTRY)&_ZN7S3043C53v91Ev,
  (VTBL_ENTRY)&_ZN7S3043C53v92Ev,
  (VTBL_ENTRY)&_ZN7S3043C53v93Ev,
  (VTBL_ENTRY)&_ZN7S3043C53v94Ev,
  (VTBL_ENTRY)&_ZN7S3043C53v95Ev,
  (VTBL_ENTRY)&_ZN7S3043C53v96Ev,
};
extern VTBL_ENTRY _ZTI7S3043C5[];
extern  VTBL_ENTRY _ZTV7S3043C5[];
Class_Descriptor cd_S3043C5 = {  "S3043C5", // class name
  0,0,//no base classes
  &(vtc_S3043C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3043C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3043C5),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3043C6  {
  virtual void  v97(); // _ZN7S3043C63v97Ev
  virtual void  v98(); // _ZN7S3043C63v98Ev
  virtual void  v99(); // _ZN7S3043C63v99Ev
  virtual void  v100(); // _ZN7S3043C64v100Ev
  virtual void  v101(); // _ZN7S3043C64v101Ev
  virtual void  v102(); // _ZN7S3043C64v102Ev
  virtual void  v103(); // _ZN7S3043C64v103Ev
  virtual void  v104(); // _ZN7S3043C64v104Ev
  virtual void  v105(); // _ZN7S3043C64v105Ev
  ~S3043C6(); // tgen
  S3043C6(); // tgen
};
//SIG(-1 S3043C6) C1{ v1 v2 v3 v4 v5 v6 v7 v8 v9}


void  S3043C6 ::v97(){vfunc_called(this, "_ZN7S3043C63v97Ev");}
void  S3043C6 ::v98(){vfunc_called(this, "_ZN7S3043C63v98Ev");}
void  S3043C6 ::v99(){vfunc_called(this, "_ZN7S3043C63v99Ev");}
void  S3043C6 ::v100(){vfunc_called(this, "_ZN7S3043C64v100Ev");}
void  S3043C6 ::v101(){vfunc_called(this, "_ZN7S3043C64v101Ev");}
void  S3043C6 ::v102(){vfunc_called(this, "_ZN7S3043C64v102Ev");}
void  S3043C6 ::v103(){vfunc_called(this, "_ZN7S3043C64v103Ev");}
void  S3043C6 ::v104(){vfunc_called(this, "_ZN7S3043C64v104Ev");}
void  S3043C6 ::v105(){vfunc_called(this, "_ZN7S3043C64v105Ev");}
S3043C6 ::~S3043C6(){ note_dtor("S3043C6", this);} // tgen
S3043C6 ::S3043C6(){ note_ctor("S3043C6", this);} // tgen

static void Test_S3043C6()
{
  extern Class_Descriptor cd_S3043C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3043C6, buf);
    S3043C6 *dp, &lv = *(dp=new (buf) S3043C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3043C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3043C6)");
    test_class_info(&lv, &cd_S3043C6);
    dp->~S3043C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3043C6(Test_S3043C6, "S3043C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3043C6C1Ev();
extern void _ZN7S3043C6D1Ev();
Name_Map name_map_S3043C6[] = {
  NSPAIR(_ZN7S3043C6C1Ev),
  NSPAIR(_ZN7S3043C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3043C6[];
extern void _ZN7S3043C63v97Ev();
extern void _ZN7S3043C63v98Ev();
extern void _ZN7S3043C63v99Ev();
extern void _ZN7S3043C64v100Ev();
extern void _ZN7S3043C64v101Ev();
extern void _ZN7S3043C64v102Ev();
extern void _ZN7S3043C64v103Ev();
extern void _ZN7S3043C64v104Ev();
extern void _ZN7S3043C64v105Ev();
static  VTBL_ENTRY vtc_S3043C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3043C6[0]),
  (VTBL_ENTRY)&_ZN7S3043C63v97Ev,
  (VTBL_ENTRY)&_ZN7S3043C63v98Ev,
  (VTBL_ENTRY)&_ZN7S3043C63v99Ev,
  (VTBL_ENTRY)&_ZN7S3043C64v100Ev,
  (VTBL_ENTRY)&_ZN7S3043C64v101Ev,
  (VTBL_ENTRY)&_ZN7S3043C64v102Ev,
  (VTBL_ENTRY)&_ZN7S3043C64v103Ev,
  (VTBL_ENTRY)&_ZN7S3043C64v104Ev,
  (VTBL_ENTRY)&_ZN7S3043C64v105Ev,
};
extern VTBL_ENTRY _ZTI7S3043C6[];
extern  VTBL_ENTRY _ZTV7S3043C6[];
Class_Descriptor cd_S3043C6 = {  "S3043C6", // class name
  0,0,//no base classes
  &(vtc_S3043C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3043C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3043C6),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3043C2  : S3043C3 , S3043C5 , S3043C6 {
  void *s3043c2f0;
  ::S79C39_nt s3043c2f1;
  unsigned int s3043c2f2:1;
  unsigned int s3043c2f3:1;
  unsigned int s3043c2f4:1;
  unsigned int s3043c2f5:1;
  virtual  ~S3043C2(); // _ZN7S3043C2D1Ev
  virtual void  v106(); // _ZN7S3043C24v106Ev
  virtual void  v107(); // _ZN7S3043C24v107Ev
  virtual void  v108(); // _ZN7S3043C24v108Ev
  virtual void  v109(); // _ZN7S3043C24v109Ev
  virtual void  v110(); // _ZN7S3043C24v110Ev
  virtual void  v111(); // _ZN7S3043C24v111Ev
  virtual void  v112(); // _ZN7S3043C24v112Ev
  virtual void  v113(); // _ZN7S3043C24v113Ev
  virtual void  v114(); // _ZN7S3043C24v114Ev
  virtual void  v115(); // _ZN7S3043C24v115Ev
  virtual void  v116(); // _ZN7S3043C24v116Ev
  virtual void  v117(); // _ZN7S3043C24v117Ev
  virtual void  v118(); // _ZN7S3043C24v118Ev
  virtual void  v119(); // _ZN7S3043C24v119Ev
  virtual void  v120(); // _ZN7S3043C24v120Ev
  virtual void  v121(); // _ZN7S3043C24v121Ev
  virtual void  v122(); // _ZN7S3043C24v122Ev
  virtual void  v123(); // _ZN7S3043C24v123Ev
  virtual void  v124(); // _ZN7S3043C24v124Ev
  virtual void  v125(); // _ZN7S3043C24v125Ev
  virtual void  v126(); // _ZN7S3043C24v126Ev
  virtual void  v127(); // _ZN7S3043C24v127Ev
  virtual void  v128(); // _ZN7S3043C24v128Ev
  virtual void  v129(); // _ZN7S3043C24v129Ev
  S3043C2(); // tgen
};
//SIG(-1 S3043C2) C1{ BC2{ vd v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} BC4{ v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104} BC5{ v105 v106 v107 v108 v109 v110 v111 v112 v113} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 Fp FC6{ BC7{ BC8{ BC9{ m Fp Fi[2]}}}} Fi:1 Fi:1 Fi:1 Fi:1}


 S3043C2 ::~S3043C2(){ note_dtor("S3043C2", this);}
void  S3043C2 ::v106(){vfunc_called(this, "_ZN7S3043C24v106Ev");}
void  S3043C2 ::v107(){vfunc_called(this, "_ZN7S3043C24v107Ev");}
void  S3043C2 ::v108(){vfunc_called(this, "_ZN7S3043C24v108Ev");}
void  S3043C2 ::v109(){vfunc_called(this, "_ZN7S3043C24v109Ev");}
void  S3043C2 ::v110(){vfunc_called(this, "_ZN7S3043C24v110Ev");}
void  S3043C2 ::v111(){vfunc_called(this, "_ZN7S3043C24v111Ev");}
void  S3043C2 ::v112(){vfunc_called(this, "_ZN7S3043C24v112Ev");}
void  S3043C2 ::v113(){vfunc_called(this, "_ZN7S3043C24v113Ev");}
void  S3043C2 ::v114(){vfunc_called(this, "_ZN7S3043C24v114Ev");}
void  S3043C2 ::v115(){vfunc_called(this, "_ZN7S3043C24v115Ev");}
void  S3043C2 ::v116(){vfunc_called(this, "_ZN7S3043C24v116Ev");}
void  S3043C2 ::v117(){vfunc_called(this, "_ZN7S3043C24v117Ev");}
void  S3043C2 ::v118(){vfunc_called(this, "_ZN7S3043C24v118Ev");}
void  S3043C2 ::v119(){vfunc_called(this, "_ZN7S3043C24v119Ev");}
void  S3043C2 ::v120(){vfunc_called(this, "_ZN7S3043C24v120Ev");}
void  S3043C2 ::v121(){vfunc_called(this, "_ZN7S3043C24v121Ev");}
void  S3043C2 ::v122(){vfunc_called(this, "_ZN7S3043C24v122Ev");}
void  S3043C2 ::v123(){vfunc_called(this, "_ZN7S3043C24v123Ev");}
void  S3043C2 ::v124(){vfunc_called(this, "_ZN7S3043C24v124Ev");}
void  S3043C2 ::v125(){vfunc_called(this, "_ZN7S3043C24v125Ev");}
void  S3043C2 ::v126(){vfunc_called(this, "_ZN7S3043C24v126Ev");}
void  S3043C2 ::v127(){vfunc_called(this, "_ZN7S3043C24v127Ev");}
void  S3043C2 ::v128(){vfunc_called(this, "_ZN7S3043C24v128Ev");}
void  S3043C2 ::v129(){vfunc_called(this, "_ZN7S3043C24v129Ev");}
S3043C2 ::S3043C2(){ note_ctor("S3043C2", this);} // tgen

static void Test_S3043C2()
{
  extern Class_Descriptor cd_S3043C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,23)];
    init_test(&cd_S3043C2, buf);
    S3043C2 *dp, &lv = *(dp=new (buf) S3043C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,88), "sizeof(S3043C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3043C2)");
    check_base_class_offset(lv, (S3043C3*), 0, "S3043C2");
    check_base_class_offset(lv, (S3043C5*), ABISELECT(96,60), "S3043C2");
    check_base_class_offset(lv, (S3043C6*), ABISELECT(104,64), "S3043C2");
    check_field_offset(lv, s3043c2f0, ABISELECT(112,68), "S3043C2.s3043c2f0");
    check_field_offset(lv, s3043c2f1, ABISELECT(120,72), "S3043C2.s3043c2f1");
    set_bf_and_test(lv, s3043c2f2, ABISELECT(136,84), 0, 1, 1, "S3043C2");
    set_bf_and_test(lv, s3043c2f3, ABISELECT(136,84), 1, 1, 1, "S3043C2");
    set_bf_and_test(lv, s3043c2f4, ABISELECT(136,84), 2, 1, 1, "S3043C2");
    set_bf_and_test(lv, s3043c2f5, ABISELECT(136,84), 3, 1, 1, "S3043C2");
    test_class_info(&lv, &cd_S3043C2);
    dp->~S3043C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3043C2(Test_S3043C2, "S3043C2", ABISELECT(144,88));

#else // __cplusplus

extern void _ZN7S3043C2C1Ev();
extern void _ZN7S3043C2D1Ev();
Name_Map name_map_S3043C2[] = {
  NSPAIR(_ZN7S3043C2C1Ev),
  NSPAIR(_ZN7S3043C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3043C3;
extern VTBL_ENTRY _ZTI7S3043C3[];
extern  VTBL_ENTRY _ZTV7S3043C3[];
extern Class_Descriptor cd_S3043C5;
extern VTBL_ENTRY _ZTI7S3043C5[];
extern  VTBL_ENTRY _ZTV7S3043C5[];
extern Class_Descriptor cd_S3043C6;
extern VTBL_ENTRY _ZTI7S3043C6[];
extern  VTBL_ENTRY _ZTV7S3043C6[];
static Base_Class bases_S3043C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3043C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3043C5,    ABISELECT(96,60), //bcp->offset
    92, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3043C6,    ABISELECT(104,64), //bcp->offset
    110, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3043C2[];
extern void _ZN7S3043C2D1Ev();
extern void _ZN7S3043C2D0Ev();
extern void _ZN7S3043C33v17Ev();
extern void _ZN7S3043C33v18Ev();
extern void _ZN7S3043C33v19Ev();
extern void _ZN7S3043C33v20Ev();
extern void _ZN7S3043C33v21Ev();
extern void _ZN7S3043C33v22Ev();
extern void _ZN7S3043C33v23Ev();
extern void _ZN7S3043C33v24Ev();
extern void _ZN7S3043C33v25Ev();
extern void _ZN7S3043C33v26Ev();
extern void _ZN7S3043C33v27Ev();
extern void _ZN7S3043C33v28Ev();
extern void _ZN7S3043C33v29Ev();
extern void _ZN7S3043C33v30Ev();
extern void _ZN7S3043C33v31Ev();
extern void _ZN7S3043C33v32Ev();
extern void _ZN7S3043C33v33Ev();
extern void _ZN7S3043C33v34Ev();
extern void _ZN7S3043C33v35Ev();
extern void _ZN7S3043C33v36Ev();
extern void _ZN7S3043C33v37Ev();
extern void _ZN7S3043C33v38Ev();
extern void _ZN7S3043C33v39Ev();
extern void _ZN7S3043C33v40Ev();
extern void _ZN7S3043C33v41Ev();
extern void _ZN7S3043C33v42Ev();
extern void _ZN7S3043C33v43Ev();
extern void _ZN7S3043C33v44Ev();
extern void _ZN7S3043C33v45Ev();
extern void _ZN7S3043C33v46Ev();
extern void _ZN7S3043C33v47Ev();
extern void _ZN7S3043C33v48Ev();
extern void _ZN7S3043C33v49Ev();
extern void _ZN7S3043C33v50Ev();
extern void _ZN7S3043C33v51Ev();
extern void _ZN7S3043C33v52Ev();
extern void _ZN7S3043C33v53Ev();
extern void _ZN7S3043C33v54Ev();
extern void _ZN7S3043C33v55Ev();
extern void _ZN7S3043C33v56Ev();
extern void _ZN7S3043C33v57Ev();
extern void _ZN7S3043C33v58Ev();
extern void _ZN7S3043C33v59Ev();
extern void _ZN7S3043C33v60Ev();
extern void _ZN7S3043C33v61Ev();
extern void _ZN7S3043C33v62Ev();
extern void _ZN7S3043C33v63Ev();
extern void _ZN7S3043C33v64Ev();
extern void _ZN7S3043C33v65Ev();
extern void _ZN7S3043C33v66Ev();
extern void _ZN7S3043C33v67Ev();
extern void _ZN7S3043C33v68Ev();
extern void _ZN7S3043C33v69Ev();
extern void _ZN7S3043C33v70Ev();
extern void _ZN7S3043C33v71Ev();
extern void _ZN7S3043C33v72Ev();
extern void _ZN7S3043C33v73Ev();
extern void _ZN7S3043C33v74Ev();
extern void _ZN7S3043C33v75Ev();
extern void _ZN7S3043C33v76Ev();
extern void _ZN7S3043C33v77Ev();
extern void _ZN7S3043C33v78Ev();
extern void _ZN7S3043C33v79Ev();
extern void _ZN7S3043C33v80Ev();
extern void _ZN7S3043C24v106Ev();
extern void _ZN7S3043C24v107Ev();
extern void _ZN7S3043C24v108Ev();
extern void _ZN7S3043C24v109Ev();
extern void _ZN7S3043C24v110Ev();
extern void _ZN7S3043C24v111Ev();
extern void _ZN7S3043C24v112Ev();
extern void _ZN7S3043C24v113Ev();
extern void _ZN7S3043C24v114Ev();
extern void _ZN7S3043C24v115Ev();
extern void _ZN7S3043C24v116Ev();
extern void _ZN7S3043C24v117Ev();
extern void _ZN7S3043C24v118Ev();
extern void _ZN7S3043C24v119Ev();
extern void _ZN7S3043C24v120Ev();
extern void _ZN7S3043C24v121Ev();
extern void _ZN7S3043C24v122Ev();
extern void _ZN7S3043C24v123Ev();
extern void _ZN7S3043C24v124Ev();
extern void _ZN7S3043C24v125Ev();
extern void _ZN7S3043C24v126Ev();
extern void _ZN7S3043C24v127Ev();
extern void _ZN7S3043C24v128Ev();
extern void _ZN7S3043C24v129Ev();
extern void _ZN7S3043C53v81Ev();
extern void _ZN7S3043C53v82Ev();
extern void _ZN7S3043C53v83Ev();
extern void _ZN7S3043C53v84Ev();
extern void _ZN7S3043C53v85Ev();
extern void _ZN7S3043C53v86Ev();
extern void _ZN7S3043C53v87Ev();
extern void _ZN7S3043C53v88Ev();
extern void _ZN7S3043C53v89Ev();
extern void _ZN7S3043C53v90Ev();
extern void _ZN7S3043C53v91Ev();
extern void _ZN7S3043C53v92Ev();
extern void _ZN7S3043C53v93Ev();
extern void _ZN7S3043C53v94Ev();
extern void _ZN7S3043C53v95Ev();
extern void _ZN7S3043C53v96Ev();
extern void _ZN7S3043C63v97Ev();
extern void _ZN7S3043C63v98Ev();
extern void _ZN7S3043C63v99Ev();
extern void _ZN7S3043C64v100Ev();
extern void _ZN7S3043C64v101Ev();
extern void _ZN7S3043C64v102Ev();
extern void _ZN7S3043C64v103Ev();
extern void _ZN7S3043C64v104Ev();
extern void _ZN7S3043C64v105Ev();
static  VTBL_ENTRY vtc_S3043C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3043C2[0]),
  (VTBL_ENTRY)&_ZN7S3043C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3043C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v68Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v69Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v70Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v71Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v72Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v73Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v74Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v75Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v76Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v77Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v78Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v79Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v80Ev,
  (VTBL_ENTRY)&_ZN7S3043C24v106Ev,
  (VTBL_ENTRY)&_ZN7S3043C24v107Ev,
  (VTBL_ENTRY)&_ZN7S3043C24v108Ev,
  (VTBL_ENTRY)&_ZN7S3043C24v109Ev,
  (VTBL_ENTRY)&_ZN7S3043C24v110Ev,
  (VTBL_ENTRY)&_ZN7S3043C24v111Ev,
  (VTBL_ENTRY)&_ZN7S3043C24v112Ev,
  (VTBL_ENTRY)&_ZN7S3043C24v113Ev,
  (VTBL_ENTRY)&_ZN7S3043C24v114Ev,
  (VTBL_ENTRY)&_ZN7S3043C24v115Ev,
  (VTBL_ENTRY)&_ZN7S3043C24v116Ev,
  (VTBL_ENTRY)&_ZN7S3043C24v117Ev,
  (VTBL_ENTRY)&_ZN7S3043C24v118Ev,
  (VTBL_ENTRY)&_ZN7S3043C24v119Ev,
  (VTBL_ENTRY)&_ZN7S3043C24v120Ev,
  (VTBL_ENTRY)&_ZN7S3043C24v121Ev,
  (VTBL_ENTRY)&_ZN7S3043C24v122Ev,
  (VTBL_ENTRY)&_ZN7S3043C24v123Ev,
  (VTBL_ENTRY)&_ZN7S3043C24v124Ev,
  (VTBL_ENTRY)&_ZN7S3043C24v125Ev,
  (VTBL_ENTRY)&_ZN7S3043C24v126Ev,
  (VTBL_ENTRY)&_ZN7S3043C24v127Ev,
  (VTBL_ENTRY)&_ZN7S3043C24v128Ev,
  (VTBL_ENTRY)&_ZN7S3043C24v129Ev,
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S3043C2[0]),
  (VTBL_ENTRY)&_ZN7S3043C53v81Ev,
  (VTBL_ENTRY)&_ZN7S3043C53v82Ev,
  (VTBL_ENTRY)&_ZN7S3043C53v83Ev,
  (VTBL_ENTRY)&_ZN7S3043C53v84Ev,
  (VTBL_ENTRY)&_ZN7S3043C53v85Ev,
  (VTBL_ENTRY)&_ZN7S3043C53v86Ev,
  (VTBL_ENTRY)&_ZN7S3043C53v87Ev,
  (VTBL_ENTRY)&_ZN7S3043C53v88Ev,
  (VTBL_ENTRY)&_ZN7S3043C53v89Ev,
  (VTBL_ENTRY)&_ZN7S3043C53v90Ev,
  (VTBL_ENTRY)&_ZN7S3043C53v91Ev,
  (VTBL_ENTRY)&_ZN7S3043C53v92Ev,
  (VTBL_ENTRY)&_ZN7S3043C53v93Ev,
  (VTBL_ENTRY)&_ZN7S3043C53v94Ev,
  (VTBL_ENTRY)&_ZN7S3043C53v95Ev,
  (VTBL_ENTRY)&_ZN7S3043C53v96Ev,
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S3043C2[0]),
  (VTBL_ENTRY)&_ZN7S3043C63v97Ev,
  (VTBL_ENTRY)&_ZN7S3043C63v98Ev,
  (VTBL_ENTRY)&_ZN7S3043C63v99Ev,
  (VTBL_ENTRY)&_ZN7S3043C64v100Ev,
  (VTBL_ENTRY)&_ZN7S3043C64v101Ev,
  (VTBL_ENTRY)&_ZN7S3043C64v102Ev,
  (VTBL_ENTRY)&_ZN7S3043C64v103Ev,
  (VTBL_ENTRY)&_ZN7S3043C64v104Ev,
  (VTBL_ENTRY)&_ZN7S3043C64v105Ev,
};
extern VTBL_ENTRY _ZTI7S3043C2[];
extern  VTBL_ENTRY _ZTV7S3043C2[];
Class_Descriptor cd_S3043C2 = {  "S3043C2", // class name
  bases_S3043C2, 3,
  &(vtc_S3043C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,88), // object size
  NSPAIRA(_ZTI7S3043C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S3043C2),121, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3043C1  : S3043C2 {
  ::S79C44 s3043c1f0;
  ::S79C40 s3043c1f1;
  void *s3043c1f2;
  virtual  ~S3043C1(); // _ZN7S3043C1D1Ev
  virtual void  v1(); // _ZN7S3043C12v1Ev
  virtual void  v2(); // _ZN7S3043C12v2Ev
  virtual void  v3(); // _ZN7S3043C12v3Ev
  virtual void  v4(); // _ZN7S3043C12v4Ev
  virtual void  v5(); // _ZN7S3043C12v5Ev
  virtual void  v6(); // _ZN7S3043C12v6Ev
  virtual void  v7(); // _ZN7S3043C12v7Ev
  virtual void  v8(); // _ZN7S3043C12v8Ev
  virtual void  v9(); // _ZN7S3043C12v9Ev
  virtual void  v10(); // _ZN7S3043C13v10Ev
  virtual void  v11(); // _ZN7S3043C13v11Ev
  virtual void  v12(); // _ZN7S3043C13v12Ev
  virtual void  v13(); // _ZN7S3043C13v13Ev
  virtual void  v14(); // _ZN7S3043C13v14Ev
  virtual void  v15(); // _ZN7S3043C13v15Ev
  virtual void  v16(); // _ZN7S3043C13v16Ev
  S3043C1(); // tgen
};
//SIG(1 S3043C1) C1{ BC2{ BC3{ vd v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} BC5{ v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96} BC6{ v97 v98 v99 v100 v101 v102 v103 v104 v105} vd v106 v107 v108 v109 v110 v111 v112 v113 v114 v115 v116 v117 v118 v119 v120 v121 v122 v123 v124 v125 v126 v127 v128 v129 Fp FC7{ BC8{ BC9{ BC10{ m Fp Fi[2]}}}} Fi:1 Fi:1 Fi:1 Fi:1} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 FC11{ BC12{ BC10}} FC8 Fp}


 S3043C1 ::~S3043C1(){ note_dtor("S3043C1", this);}
void  S3043C1 ::v1(){vfunc_called(this, "_ZN7S3043C12v1Ev");}
void  S3043C1 ::v2(){vfunc_called(this, "_ZN7S3043C12v2Ev");}
void  S3043C1 ::v3(){vfunc_called(this, "_ZN7S3043C12v3Ev");}
void  S3043C1 ::v4(){vfunc_called(this, "_ZN7S3043C12v4Ev");}
void  S3043C1 ::v5(){vfunc_called(this, "_ZN7S3043C12v5Ev");}
void  S3043C1 ::v6(){vfunc_called(this, "_ZN7S3043C12v6Ev");}
void  S3043C1 ::v7(){vfunc_called(this, "_ZN7S3043C12v7Ev");}
void  S3043C1 ::v8(){vfunc_called(this, "_ZN7S3043C12v8Ev");}
void  S3043C1 ::v9(){vfunc_called(this, "_ZN7S3043C12v9Ev");}
void  S3043C1 ::v10(){vfunc_called(this, "_ZN7S3043C13v10Ev");}
void  S3043C1 ::v11(){vfunc_called(this, "_ZN7S3043C13v11Ev");}
void  S3043C1 ::v12(){vfunc_called(this, "_ZN7S3043C13v12Ev");}
void  S3043C1 ::v13(){vfunc_called(this, "_ZN7S3043C13v13Ev");}
void  S3043C1 ::v14(){vfunc_called(this, "_ZN7S3043C13v14Ev");}
void  S3043C1 ::v15(){vfunc_called(this, "_ZN7S3043C13v15Ev");}
void  S3043C1 ::v16(){vfunc_called(this, "_ZN7S3043C13v16Ev");}
S3043C1 ::S3043C1(){ note_ctor("S3043C1", this);} // tgen

static void Test_S3043C1()
{
  extern Class_Descriptor cd_S3043C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,30)];
    init_test(&cd_S3043C1, buf);
    S3043C1 *dp, &lv = *(dp=new (buf) S3043C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,116), "sizeof(S3043C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3043C1)");
    check_base_class_offset(lv, (S3043C3*)(S3043C2*), 0, "S3043C1");
    check_base_class_offset(lv, (S3043C5*)(S3043C2*), ABISELECT(96,60), "S3043C1");
    check_base_class_offset(lv, (S3043C6*)(S3043C2*), ABISELECT(104,64), "S3043C1");
    check_base_class_offset(lv, (S3043C2*), 0, "S3043C1");
    check_field_offset(lv, s3043c1f0, ABISELECT(144,88), "S3043C1.s3043c1f0");
    check_field_offset(lv, s3043c1f1, ABISELECT(160,100), "S3043C1.s3043c1f1");
    check_field_offset(lv, s3043c1f2, ABISELECT(176,112), "S3043C1.s3043c1f2");
    test_class_info(&lv, &cd_S3043C1);
    dp->~S3043C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3043C1(Test_S3043C1, "S3043C1", ABISELECT(184,116));

#else // __cplusplus

extern void _ZN7S3043C1C1Ev();
extern void _ZN7S3043C1D1Ev();
Name_Map name_map_S3043C1[] = {
  NSPAIR(_ZN7S3043C1C1Ev),
  NSPAIR(_ZN7S3043C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3043C3;
extern VTBL_ENTRY _ZTI7S3043C3[];
extern  VTBL_ENTRY _ZTV7S3043C3[];
extern Class_Descriptor cd_S3043C5;
extern VTBL_ENTRY _ZTI7S3043C5[];
extern  VTBL_ENTRY _ZTV7S3043C5[];
extern Class_Descriptor cd_S3043C6;
extern VTBL_ENTRY _ZTI7S3043C6[];
extern  VTBL_ENTRY _ZTV7S3043C6[];
extern Class_Descriptor cd_S3043C2;
extern VTBL_ENTRY _ZTI7S3043C2[];
extern  VTBL_ENTRY _ZTV7S3043C2[];
static Base_Class bases_S3043C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3043C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S3043C5,    ABISELECT(96,60), //bcp->offset
    108, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S3043C6,    ABISELECT(104,64), //bcp->offset
    126, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S3043C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3043C1[];
extern void _ZN7S3043C1D1Ev();
extern void _ZN7S3043C1D0Ev();
extern void _ZN7S3043C33v17Ev();
extern void _ZN7S3043C33v18Ev();
extern void _ZN7S3043C33v19Ev();
extern void _ZN7S3043C33v20Ev();
extern void _ZN7S3043C33v21Ev();
extern void _ZN7S3043C33v22Ev();
extern void _ZN7S3043C33v23Ev();
extern void _ZN7S3043C33v24Ev();
extern void _ZN7S3043C33v25Ev();
extern void _ZN7S3043C33v26Ev();
extern void _ZN7S3043C33v27Ev();
extern void _ZN7S3043C33v28Ev();
extern void _ZN7S3043C33v29Ev();
extern void _ZN7S3043C33v30Ev();
extern void _ZN7S3043C33v31Ev();
extern void _ZN7S3043C33v32Ev();
extern void _ZN7S3043C33v33Ev();
extern void _ZN7S3043C33v34Ev();
extern void _ZN7S3043C33v35Ev();
extern void _ZN7S3043C33v36Ev();
extern void _ZN7S3043C33v37Ev();
extern void _ZN7S3043C33v38Ev();
extern void _ZN7S3043C33v39Ev();
extern void _ZN7S3043C33v40Ev();
extern void _ZN7S3043C33v41Ev();
extern void _ZN7S3043C33v42Ev();
extern void _ZN7S3043C33v43Ev();
extern void _ZN7S3043C33v44Ev();
extern void _ZN7S3043C33v45Ev();
extern void _ZN7S3043C33v46Ev();
extern void _ZN7S3043C33v47Ev();
extern void _ZN7S3043C33v48Ev();
extern void _ZN7S3043C33v49Ev();
extern void _ZN7S3043C33v50Ev();
extern void _ZN7S3043C33v51Ev();
extern void _ZN7S3043C33v52Ev();
extern void _ZN7S3043C33v53Ev();
extern void _ZN7S3043C33v54Ev();
extern void _ZN7S3043C33v55Ev();
extern void _ZN7S3043C33v56Ev();
extern void _ZN7S3043C33v57Ev();
extern void _ZN7S3043C33v58Ev();
extern void _ZN7S3043C33v59Ev();
extern void _ZN7S3043C33v60Ev();
extern void _ZN7S3043C33v61Ev();
extern void _ZN7S3043C33v62Ev();
extern void _ZN7S3043C33v63Ev();
extern void _ZN7S3043C33v64Ev();
extern void _ZN7S3043C33v65Ev();
extern void _ZN7S3043C33v66Ev();
extern void _ZN7S3043C33v67Ev();
extern void _ZN7S3043C33v68Ev();
extern void _ZN7S3043C33v69Ev();
extern void _ZN7S3043C33v70Ev();
extern void _ZN7S3043C33v71Ev();
extern void _ZN7S3043C33v72Ev();
extern void _ZN7S3043C33v73Ev();
extern void _ZN7S3043C33v74Ev();
extern void _ZN7S3043C33v75Ev();
extern void _ZN7S3043C33v76Ev();
extern void _ZN7S3043C33v77Ev();
extern void _ZN7S3043C33v78Ev();
extern void _ZN7S3043C33v79Ev();
extern void _ZN7S3043C33v80Ev();
extern void _ZN7S3043C24v106Ev();
extern void _ZN7S3043C24v107Ev();
extern void _ZN7S3043C24v108Ev();
extern void _ZN7S3043C24v109Ev();
extern void _ZN7S3043C24v110Ev();
extern void _ZN7S3043C24v111Ev();
extern void _ZN7S3043C24v112Ev();
extern void _ZN7S3043C24v113Ev();
extern void _ZN7S3043C24v114Ev();
extern void _ZN7S3043C24v115Ev();
extern void _ZN7S3043C24v116Ev();
extern void _ZN7S3043C24v117Ev();
extern void _ZN7S3043C24v118Ev();
extern void _ZN7S3043C24v119Ev();
extern void _ZN7S3043C24v120Ev();
extern void _ZN7S3043C24v121Ev();
extern void _ZN7S3043C24v122Ev();
extern void _ZN7S3043C24v123Ev();
extern void _ZN7S3043C24v124Ev();
extern void _ZN7S3043C24v125Ev();
extern void _ZN7S3043C24v126Ev();
extern void _ZN7S3043C24v127Ev();
extern void _ZN7S3043C24v128Ev();
extern void _ZN7S3043C24v129Ev();
extern void _ZN7S3043C12v1Ev();
extern void _ZN7S3043C12v2Ev();
extern void _ZN7S3043C12v3Ev();
extern void _ZN7S3043C12v4Ev();
extern void _ZN7S3043C12v5Ev();
extern void _ZN7S3043C12v6Ev();
extern void _ZN7S3043C12v7Ev();
extern void _ZN7S3043C12v8Ev();
extern void _ZN7S3043C12v9Ev();
extern void _ZN7S3043C13v10Ev();
extern void _ZN7S3043C13v11Ev();
extern void _ZN7S3043C13v12Ev();
extern void _ZN7S3043C13v13Ev();
extern void _ZN7S3043C13v14Ev();
extern void _ZN7S3043C13v15Ev();
extern void _ZN7S3043C13v16Ev();
extern void _ZN7S3043C53v81Ev();
extern void _ZN7S3043C53v82Ev();
extern void _ZN7S3043C53v83Ev();
extern void _ZN7S3043C53v84Ev();
extern void _ZN7S3043C53v85Ev();
extern void _ZN7S3043C53v86Ev();
extern void _ZN7S3043C53v87Ev();
extern void _ZN7S3043C53v88Ev();
extern void _ZN7S3043C53v89Ev();
extern void _ZN7S3043C53v90Ev();
extern void _ZN7S3043C53v91Ev();
extern void _ZN7S3043C53v92Ev();
extern void _ZN7S3043C53v93Ev();
extern void _ZN7S3043C53v94Ev();
extern void _ZN7S3043C53v95Ev();
extern void _ZN7S3043C53v96Ev();
extern void _ZN7S3043C63v97Ev();
extern void _ZN7S3043C63v98Ev();
extern void _ZN7S3043C63v99Ev();
extern void _ZN7S3043C64v100Ev();
extern void _ZN7S3043C64v101Ev();
extern void _ZN7S3043C64v102Ev();
extern void _ZN7S3043C64v103Ev();
extern void _ZN7S3043C64v104Ev();
extern void _ZN7S3043C64v105Ev();
static  VTBL_ENTRY vtc_S3043C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3043C1[0]),
  (VTBL_ENTRY)&_ZN7S3043C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3043C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v68Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v69Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v70Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v71Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v72Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v73Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v74Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v75Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v76Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v77Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v78Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v79Ev,
  (VTBL_ENTRY)&_ZN7S3043C33v80Ev,
  (VTBL_ENTRY)&_ZN7S3043C24v106Ev,
  (VTBL_ENTRY)&_ZN7S3043C24v107Ev,
  (VTBL_ENTRY)&_ZN7S3043C24v108Ev,
  (VTBL_ENTRY)&_ZN7S3043C24v109Ev,
  (VTBL_ENTRY)&_ZN7S3043C24v110Ev,
  (VTBL_ENTRY)&_ZN7S3043C24v111Ev,
  (VTBL_ENTRY)&_ZN7S3043C24v112Ev,
  (VTBL_ENTRY)&_ZN7S3043C24v113Ev,
  (VTBL_ENTRY)&_ZN7S3043C24v114Ev,
  (VTBL_ENTRY)&_ZN7S3043C24v115Ev,
  (VTBL_ENTRY)&_ZN7S3043C24v116Ev,
  (VTBL_ENTRY)&_ZN7S3043C24v117Ev,
  (VTBL_ENTRY)&_ZN7S3043C24v118Ev,
  (VTBL_ENTRY)&_ZN7S3043C24v119Ev,
  (VTBL_ENTRY)&_ZN7S3043C24v120Ev,
  (VTBL_ENTRY)&_ZN7S3043C24v121Ev,
  (VTBL_ENTRY)&_ZN7S3043C24v122Ev,
  (VTBL_ENTRY)&_ZN7S3043C24v123Ev,
  (VTBL_ENTRY)&_ZN7S3043C24v124Ev,
  (VTBL_ENTRY)&_ZN7S3043C24v125Ev,
  (VTBL_ENTRY)&_ZN7S3043C24v126Ev,
  (VTBL_ENTRY)&_ZN7S3043C24v127Ev,
  (VTBL_ENTRY)&_ZN7S3043C24v128Ev,
  (VTBL_ENTRY)&_ZN7S3043C24v129Ev,
  (VTBL_ENTRY)&_ZN7S3043C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3043C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3043C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3043C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3043C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3043C12v6Ev,
  (VTBL_ENTRY)&_ZN7S3043C12v7Ev,
  (VTBL_ENTRY)&_ZN7S3043C12v8Ev,
  (VTBL_ENTRY)&_ZN7S3043C12v9Ev,
  (VTBL_ENTRY)&_ZN7S3043C13v10Ev,
  (VTBL_ENTRY)&_ZN7S3043C13v11Ev,
  (VTBL_ENTRY)&_ZN7S3043C13v12Ev,
  (VTBL_ENTRY)&_ZN7S3043C13v13Ev,
  (VTBL_ENTRY)&_ZN7S3043C13v14Ev,
  (VTBL_ENTRY)&_ZN7S3043C13v15Ev,
  (VTBL_ENTRY)&_ZN7S3043C13v16Ev,
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S3043C1[0]),
  (VTBL_ENTRY)&_ZN7S3043C53v81Ev,
  (VTBL_ENTRY)&_ZN7S3043C53v82Ev,
  (VTBL_ENTRY)&_ZN7S3043C53v83Ev,
  (VTBL_ENTRY)&_ZN7S3043C53v84Ev,
  (VTBL_ENTRY)&_ZN7S3043C53v85Ev,
  (VTBL_ENTRY)&_ZN7S3043C53v86Ev,
  (VTBL_ENTRY)&_ZN7S3043C53v87Ev,
  (VTBL_ENTRY)&_ZN7S3043C53v88Ev,
  (VTBL_ENTRY)&_ZN7S3043C53v89Ev,
  (VTBL_ENTRY)&_ZN7S3043C53v90Ev,
  (VTBL_ENTRY)&_ZN7S3043C53v91Ev,
  (VTBL_ENTRY)&_ZN7S3043C53v92Ev,
  (VTBL_ENTRY)&_ZN7S3043C53v93Ev,
  (VTBL_ENTRY)&_ZN7S3043C53v94Ev,
  (VTBL_ENTRY)&_ZN7S3043C53v95Ev,
  (VTBL_ENTRY)&_ZN7S3043C53v96Ev,
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S3043C1[0]),
  (VTBL_ENTRY)&_ZN7S3043C63v97Ev,
  (VTBL_ENTRY)&_ZN7S3043C63v98Ev,
  (VTBL_ENTRY)&_ZN7S3043C63v99Ev,
  (VTBL_ENTRY)&_ZN7S3043C64v100Ev,
  (VTBL_ENTRY)&_ZN7S3043C64v101Ev,
  (VTBL_ENTRY)&_ZN7S3043C64v102Ev,
  (VTBL_ENTRY)&_ZN7S3043C64v103Ev,
  (VTBL_ENTRY)&_ZN7S3043C64v104Ev,
  (VTBL_ENTRY)&_ZN7S3043C64v105Ev,
};
extern VTBL_ENTRY _ZTI7S3043C1[];
extern  VTBL_ENTRY _ZTV7S3043C1[];
Class_Descriptor cd_S3043C1 = {  "S3043C1", // class name
  bases_S3043C1, 4,
  &(vtc_S3043C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(184,116), // object size
  NSPAIRA(_ZTI7S3043C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3043C1),137, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  4, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3038C3  {
  int s3038c3f0;
  __tsi64 s3038c3f1;
  void *s3038c3f2[4];
  int s3038c3f3[2];
  void *s3038c3f4;
  ::S79C8_nt s3038c3f5;
  void *s3038c3f6[2];
  virtual  ~S3038C3(); // _ZN7S3038C3D1Ev
  virtual void  v16(); // _ZN7S3038C33v16Ev
  virtual void  v17(); // _ZN7S3038C33v17Ev
  virtual void  v18(); // _ZN7S3038C33v18Ev
  virtual void  v19(); // _ZN7S3038C33v19Ev
  virtual void  v20(); // _ZN7S3038C33v20Ev
  virtual void  v21(); // _ZN7S3038C33v21Ev
  virtual void  v22(); // _ZN7S3038C33v22Ev
  virtual void  v23(); // _ZN7S3038C33v23Ev
  virtual void  v24(); // _ZN7S3038C33v24Ev
  virtual void  v25(); // _ZN7S3038C33v25Ev
  virtual void  v26(); // _ZN7S3038C33v26Ev
  virtual void  v27(); // _ZN7S3038C33v27Ev
  virtual void  v28(); // _ZN7S3038C33v28Ev
  virtual void  v29(); // _ZN7S3038C33v29Ev
  virtual void  v30(); // _ZN7S3038C33v30Ev
  virtual void  v31(); // _ZN7S3038C33v31Ev
  virtual void  v32(); // _ZN7S3038C33v32Ev
  virtual void  v33(); // _ZN7S3038C33v33Ev
  virtual void  v34(); // _ZN7S3038C33v34Ev
  virtual void  v35(); // _ZN7S3038C33v35Ev
  virtual void  v36(); // _ZN7S3038C33v36Ev
  virtual void  v37(); // _ZN7S3038C33v37Ev
  virtual void  v38(); // _ZN7S3038C33v38Ev
  virtual void  v39(); // _ZN7S3038C33v39Ev
  virtual void  v40(); // _ZN7S3038C33v40Ev
  virtual void  v41(); // _ZN7S3038C33v41Ev
  virtual void  v42(); // _ZN7S3038C33v42Ev
  virtual void  v43(); // _ZN7S3038C33v43Ev
  virtual void  v44(); // _ZN7S3038C33v44Ev
  virtual void  v45(); // _ZN7S3038C33v45Ev
  virtual void  v46(); // _ZN7S3038C33v46Ev
  virtual void  v47(); // _ZN7S3038C33v47Ev
  virtual void  v48(); // _ZN7S3038C33v48Ev
  virtual void  v49(); // _ZN7S3038C33v49Ev
  virtual void  v50(); // _ZN7S3038C33v50Ev
  virtual void  v51(); // _ZN7S3038C33v51Ev
  virtual void  v52(); // _ZN7S3038C33v52Ev
  virtual void  v53(); // _ZN7S3038C33v53Ev
  virtual void  v54(); // _ZN7S3038C33v54Ev
  virtual void  v55(); // _ZN7S3038C33v55Ev
  virtual void  v56(); // _ZN7S3038C33v56Ev
  virtual void  v57(); // _ZN7S3038C33v57Ev
  virtual void  v58(); // _ZN7S3038C33v58Ev
  virtual void  v59(); // _ZN7S3038C33v59Ev
  virtual void  v60(); // _ZN7S3038C33v60Ev
  virtual void  v61(); // _ZN7S3038C33v61Ev
  virtual void  v62(); // _ZN7S3038C33v62Ev
  virtual void  v63(); // _ZN7S3038C33v63Ev
  virtual void  v64(); // _ZN7S3038C33v64Ev
  virtual void  v65(); // _ZN7S3038C33v65Ev
  virtual void  v66(); // _ZN7S3038C33v66Ev
  virtual void  v67(); // _ZN7S3038C33v67Ev
  virtual void  v68(); // _ZN7S3038C33v68Ev
  virtual void  v69(); // _ZN7S3038C33v69Ev
  virtual void  v70(); // _ZN7S3038C33v70Ev
  virtual void  v71(); // _ZN7S3038C33v71Ev
  virtual void  v72(); // _ZN7S3038C33v72Ev
  virtual void  v73(); // _ZN7S3038C33v73Ev
  virtual void  v74(); // _ZN7S3038C33v74Ev
  virtual void  v75(); // _ZN7S3038C33v75Ev
  virtual void  v76(); // _ZN7S3038C33v76Ev
  virtual void  v77(); // _ZN7S3038C33v77Ev
  virtual void  v78(); // _ZN7S3038C33v78Ev
  virtual void  v79(); // _ZN7S3038C33v79Ev
  S3038C3(); // tgen
};
//SIG(-1 S3038C3) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 Fi FL Fp[4] Fi[2] Fp FC2{ m Fi[2]} Fp[2]}


 S3038C3 ::~S3038C3(){ note_dtor("S3038C3", this);}
void  S3038C3 ::v16(){vfunc_called(this, "_ZN7S3038C33v16Ev");}
void  S3038C3 ::v17(){vfunc_called(this, "_ZN7S3038C33v17Ev");}
void  S3038C3 ::v18(){vfunc_called(this, "_ZN7S3038C33v18Ev");}
void  S3038C3 ::v19(){vfunc_called(this, "_ZN7S3038C33v19Ev");}
void  S3038C3 ::v20(){vfunc_called(this, "_ZN7S3038C33v20Ev");}
void  S3038C3 ::v21(){vfunc_called(this, "_ZN7S3038C33v21Ev");}
void  S3038C3 ::v22(){vfunc_called(this, "_ZN7S3038C33v22Ev");}
void  S3038C3 ::v23(){vfunc_called(this, "_ZN7S3038C33v23Ev");}
void  S3038C3 ::v24(){vfunc_called(this, "_ZN7S3038C33v24Ev");}
void  S3038C3 ::v25(){vfunc_called(this, "_ZN7S3038C33v25Ev");}
void  S3038C3 ::v26(){vfunc_called(this, "_ZN7S3038C33v26Ev");}
void  S3038C3 ::v27(){vfunc_called(this, "_ZN7S3038C33v27Ev");}
void  S3038C3 ::v28(){vfunc_called(this, "_ZN7S3038C33v28Ev");}
void  S3038C3 ::v29(){vfunc_called(this, "_ZN7S3038C33v29Ev");}
void  S3038C3 ::v30(){vfunc_called(this, "_ZN7S3038C33v30Ev");}
void  S3038C3 ::v31(){vfunc_called(this, "_ZN7S3038C33v31Ev");}
void  S3038C3 ::v32(){vfunc_called(this, "_ZN7S3038C33v32Ev");}
void  S3038C3 ::v33(){vfunc_called(this, "_ZN7S3038C33v33Ev");}
void  S3038C3 ::v34(){vfunc_called(this, "_ZN7S3038C33v34Ev");}
void  S3038C3 ::v35(){vfunc_called(this, "_ZN7S3038C33v35Ev");}
void  S3038C3 ::v36(){vfunc_called(this, "_ZN7S3038C33v36Ev");}
void  S3038C3 ::v37(){vfunc_called(this, "_ZN7S3038C33v37Ev");}
void  S3038C3 ::v38(){vfunc_called(this, "_ZN7S3038C33v38Ev");}
void  S3038C3 ::v39(){vfunc_called(this, "_ZN7S3038C33v39Ev");}
void  S3038C3 ::v40(){vfunc_called(this, "_ZN7S3038C33v40Ev");}
void  S3038C3 ::v41(){vfunc_called(this, "_ZN7S3038C33v41Ev");}
void  S3038C3 ::v42(){vfunc_called(this, "_ZN7S3038C33v42Ev");}
void  S3038C3 ::v43(){vfunc_called(this, "_ZN7S3038C33v43Ev");}
void  S3038C3 ::v44(){vfunc_called(this, "_ZN7S3038C33v44Ev");}
void  S3038C3 ::v45(){vfunc_called(this, "_ZN7S3038C33v45Ev");}
void  S3038C3 ::v46(){vfunc_called(this, "_ZN7S3038C33v46Ev");}
void  S3038C3 ::v47(){vfunc_called(this, "_ZN7S3038C33v47Ev");}
void  S3038C3 ::v48(){vfunc_called(this, "_ZN7S3038C33v48Ev");}
void  S3038C3 ::v49(){vfunc_called(this, "_ZN7S3038C33v49Ev");}
void  S3038C3 ::v50(){vfunc_called(this, "_ZN7S3038C33v50Ev");}
void  S3038C3 ::v51(){vfunc_called(this, "_ZN7S3038C33v51Ev");}
void  S3038C3 ::v52(){vfunc_called(this, "_ZN7S3038C33v52Ev");}
void  S3038C3 ::v53(){vfunc_called(this, "_ZN7S3038C33v53Ev");}
void  S3038C3 ::v54(){vfunc_called(this, "_ZN7S3038C33v54Ev");}
void  S3038C3 ::v55(){vfunc_called(this, "_ZN7S3038C33v55Ev");}
void  S3038C3 ::v56(){vfunc_called(this, "_ZN7S3038C33v56Ev");}
void  S3038C3 ::v57(){vfunc_called(this, "_ZN7S3038C33v57Ev");}
void  S3038C3 ::v58(){vfunc_called(this, "_ZN7S3038C33v58Ev");}
void  S3038C3 ::v59(){vfunc_called(this, "_ZN7S3038C33v59Ev");}
void  S3038C3 ::v60(){vfunc_called(this, "_ZN7S3038C33v60Ev");}
void  S3038C3 ::v61(){vfunc_called(this, "_ZN7S3038C33v61Ev");}
void  S3038C3 ::v62(){vfunc_called(this, "_ZN7S3038C33v62Ev");}
void  S3038C3 ::v63(){vfunc_called(this, "_ZN7S3038C33v63Ev");}
void  S3038C3 ::v64(){vfunc_called(this, "_ZN7S3038C33v64Ev");}
void  S3038C3 ::v65(){vfunc_called(this, "_ZN7S3038C33v65Ev");}
void  S3038C3 ::v66(){vfunc_called(this, "_ZN7S3038C33v66Ev");}
void  S3038C3 ::v67(){vfunc_called(this, "_ZN7S3038C33v67Ev");}
void  S3038C3 ::v68(){vfunc_called(this, "_ZN7S3038C33v68Ev");}
void  S3038C3 ::v69(){vfunc_called(this, "_ZN7S3038C33v69Ev");}
void  S3038C3 ::v70(){vfunc_called(this, "_ZN7S3038C33v70Ev");}
void  S3038C3 ::v71(){vfunc_called(this, "_ZN7S3038C33v71Ev");}
void  S3038C3 ::v72(){vfunc_called(this, "_ZN7S3038C33v72Ev");}
void  S3038C3 ::v73(){vfunc_called(this, "_ZN7S3038C33v73Ev");}
void  S3038C3 ::v74(){vfunc_called(this, "_ZN7S3038C33v74Ev");}
void  S3038C3 ::v75(){vfunc_called(this, "_ZN7S3038C33v75Ev");}
void  S3038C3 ::v76(){vfunc_called(this, "_ZN7S3038C33v76Ev");}
void  S3038C3 ::v77(){vfunc_called(this, "_ZN7S3038C33v77Ev");}
void  S3038C3 ::v78(){vfunc_called(this, "_ZN7S3038C33v78Ev");}
void  S3038C3 ::v79(){vfunc_called(this, "_ZN7S3038C33v79Ev");}
S3038C3 ::S3038C3(){ note_ctor("S3038C3", this);} // tgen

static void Test_S3038C3()
{
  extern Class_Descriptor cd_S3038C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S3038C3, buf);
    S3038C3 *dp, &lv = *(dp=new (buf) S3038C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S3038C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3038C3)");
    check_field_offset(lv, s3038c3f0, ABISELECT(8,4), "S3038C3.s3038c3f0");
    check_field_offset(lv, s3038c3f1, ABISELECT(16,8), "S3038C3.s3038c3f1");
    check_field_offset(lv, s3038c3f2, ABISELECT(24,16), "S3038C3.s3038c3f2");
    check_field_offset(lv, s3038c3f3, ABISELECT(56,32), "S3038C3.s3038c3f3");
    check_field_offset(lv, s3038c3f4, ABISELECT(64,40), "S3038C3.s3038c3f4");
    check_field_offset(lv, s3038c3f5, ABISELECT(72,44), "S3038C3.s3038c3f5");
    check_field_offset(lv, s3038c3f6, ABISELECT(80,52), "S3038C3.s3038c3f6");
    test_class_info(&lv, &cd_S3038C3);
    dp->~S3038C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3038C3(Test_S3038C3, "S3038C3", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S3038C3C1Ev();
extern void _ZN7S3038C3D1Ev();
Name_Map name_map_S3038C3[] = {
  NSPAIR(_ZN7S3038C3C1Ev),
  NSPAIR(_ZN7S3038C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3038C3[];
extern void _ZN7S3038C3D1Ev();
extern void _ZN7S3038C3D0Ev();
extern void _ZN7S3038C33v16Ev();
extern void _ZN7S3038C33v17Ev();
extern void _ZN7S3038C33v18Ev();
extern void _ZN7S3038C33v19Ev();
extern void _ZN7S3038C33v20Ev();
extern void _ZN7S3038C33v21Ev();
extern void _ZN7S3038C33v22Ev();
extern void _ZN7S3038C33v23Ev();
extern void _ZN7S3038C33v24Ev();
extern void _ZN7S3038C33v25Ev();
extern void _ZN7S3038C33v26Ev();
extern void _ZN7S3038C33v27Ev();
extern void _ZN7S3038C33v28Ev();
extern void _ZN7S3038C33v29Ev();
extern void _ZN7S3038C33v30Ev();
extern void _ZN7S3038C33v31Ev();
extern void _ZN7S3038C33v32Ev();
extern void _ZN7S3038C33v33Ev();
extern void _ZN7S3038C33v34Ev();
extern void _ZN7S3038C33v35Ev();
extern void _ZN7S3038C33v36Ev();
extern void _ZN7S3038C33v37Ev();
extern void _ZN7S3038C33v38Ev();
extern void _ZN7S3038C33v39Ev();
extern void _ZN7S3038C33v40Ev();
extern void _ZN7S3038C33v41Ev();
extern void _ZN7S3038C33v42Ev();
extern void _ZN7S3038C33v43Ev();
extern void _ZN7S3038C33v44Ev();
extern void _ZN7S3038C33v45Ev();
extern void _ZN7S3038C33v46Ev();
extern void _ZN7S3038C33v47Ev();
extern void _ZN7S3038C33v48Ev();
extern void _ZN7S3038C33v49Ev();
extern void _ZN7S3038C33v50Ev();
extern void _ZN7S3038C33v51Ev();
extern void _ZN7S3038C33v52Ev();
extern void _ZN7S3038C33v53Ev();
extern void _ZN7S3038C33v54Ev();
extern void _ZN7S3038C33v55Ev();
extern void _ZN7S3038C33v56Ev();
extern void _ZN7S3038C33v57Ev();
extern void _ZN7S3038C33v58Ev();
extern void _ZN7S3038C33v59Ev();
extern void _ZN7S3038C33v60Ev();
extern void _ZN7S3038C33v61Ev();
extern void _ZN7S3038C33v62Ev();
extern void _ZN7S3038C33v63Ev();
extern void _ZN7S3038C33v64Ev();
extern void _ZN7S3038C33v65Ev();
extern void _ZN7S3038C33v66Ev();
extern void _ZN7S3038C33v67Ev();
extern void _ZN7S3038C33v68Ev();
extern void _ZN7S3038C33v69Ev();
extern void _ZN7S3038C33v70Ev();
extern void _ZN7S3038C33v71Ev();
extern void _ZN7S3038C33v72Ev();
extern void _ZN7S3038C33v73Ev();
extern void _ZN7S3038C33v74Ev();
extern void _ZN7S3038C33v75Ev();
extern void _ZN7S3038C33v76Ev();
extern void _ZN7S3038C33v77Ev();
extern void _ZN7S3038C33v78Ev();
extern void _ZN7S3038C33v79Ev();
static  VTBL_ENTRY vtc_S3038C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3038C3[0]),
  (VTBL_ENTRY)&_ZN7S3038C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3038C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v68Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v69Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v70Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v71Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v72Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v73Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v74Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v75Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v76Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v77Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v78Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v79Ev,
};
extern VTBL_ENTRY _ZTI7S3038C3[];
extern  VTBL_ENTRY _ZTV7S3038C3[];
Class_Descriptor cd_S3038C3 = {  "S3038C3", // class name
  0,0,//no base classes
  &(vtc_S3038C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S3038C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3038C3),68, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3038C5  {
  virtual void  v80(); // _ZN7S3038C53v80Ev
  virtual void  v81(); // _ZN7S3038C53v81Ev
  virtual void  v82(); // _ZN7S3038C53v82Ev
  virtual void  v83(); // _ZN7S3038C53v83Ev
  virtual void  v84(); // _ZN7S3038C53v84Ev
  virtual void  v85(); // _ZN7S3038C53v85Ev
  virtual void  v86(); // _ZN7S3038C53v86Ev
  virtual void  v87(); // _ZN7S3038C53v87Ev
  virtual void  v88(); // _ZN7S3038C53v88Ev
  virtual void  v89(); // _ZN7S3038C53v89Ev
  virtual void  v90(); // _ZN7S3038C53v90Ev
  virtual void  v91(); // _ZN7S3038C53v91Ev
  virtual void  v92(); // _ZN7S3038C53v92Ev
  virtual void  v93(); // _ZN7S3038C53v93Ev
  virtual void  v94(); // _ZN7S3038C53v94Ev
  virtual void  v95(); // _ZN7S3038C53v95Ev
  ~S3038C5(); // tgen
  S3038C5(); // tgen
};
//SIG(-1 S3038C5) C1{ v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16}


void  S3038C5 ::v80(){vfunc_called(this, "_ZN7S3038C53v80Ev");}
void  S3038C5 ::v81(){vfunc_called(this, "_ZN7S3038C53v81Ev");}
void  S3038C5 ::v82(){vfunc_called(this, "_ZN7S3038C53v82Ev");}
void  S3038C5 ::v83(){vfunc_called(this, "_ZN7S3038C53v83Ev");}
void  S3038C5 ::v84(){vfunc_called(this, "_ZN7S3038C53v84Ev");}
void  S3038C5 ::v85(){vfunc_called(this, "_ZN7S3038C53v85Ev");}
void  S3038C5 ::v86(){vfunc_called(this, "_ZN7S3038C53v86Ev");}
void  S3038C5 ::v87(){vfunc_called(this, "_ZN7S3038C53v87Ev");}
void  S3038C5 ::v88(){vfunc_called(this, "_ZN7S3038C53v88Ev");}
void  S3038C5 ::v89(){vfunc_called(this, "_ZN7S3038C53v89Ev");}
void  S3038C5 ::v90(){vfunc_called(this, "_ZN7S3038C53v90Ev");}
void  S3038C5 ::v91(){vfunc_called(this, "_ZN7S3038C53v91Ev");}
void  S3038C5 ::v92(){vfunc_called(this, "_ZN7S3038C53v92Ev");}
void  S3038C5 ::v93(){vfunc_called(this, "_ZN7S3038C53v93Ev");}
void  S3038C5 ::v94(){vfunc_called(this, "_ZN7S3038C53v94Ev");}
void  S3038C5 ::v95(){vfunc_called(this, "_ZN7S3038C53v95Ev");}
S3038C5 ::~S3038C5(){ note_dtor("S3038C5", this);} // tgen
S3038C5 ::S3038C5(){ note_ctor("S3038C5", this);} // tgen

static void Test_S3038C5()
{
  extern Class_Descriptor cd_S3038C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3038C5, buf);
    S3038C5 *dp, &lv = *(dp=new (buf) S3038C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3038C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3038C5)");
    test_class_info(&lv, &cd_S3038C5);
    dp->~S3038C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3038C5(Test_S3038C5, "S3038C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3038C5C1Ev();
extern void _ZN7S3038C5D1Ev();
Name_Map name_map_S3038C5[] = {
  NSPAIR(_ZN7S3038C5C1Ev),
  NSPAIR(_ZN7S3038C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3038C5[];
extern void _ZN7S3038C53v80Ev();
extern void _ZN7S3038C53v81Ev();
extern void _ZN7S3038C53v82Ev();
extern void _ZN7S3038C53v83Ev();
extern void _ZN7S3038C53v84Ev();
extern void _ZN7S3038C53v85Ev();
extern void _ZN7S3038C53v86Ev();
extern void _ZN7S3038C53v87Ev();
extern void _ZN7S3038C53v88Ev();
extern void _ZN7S3038C53v89Ev();
extern void _ZN7S3038C53v90Ev();
extern void _ZN7S3038C53v91Ev();
extern void _ZN7S3038C53v92Ev();
extern void _ZN7S3038C53v93Ev();
extern void _ZN7S3038C53v94Ev();
extern void _ZN7S3038C53v95Ev();
static  VTBL_ENTRY vtc_S3038C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3038C5[0]),
  (VTBL_ENTRY)&_ZN7S3038C53v80Ev,
  (VTBL_ENTRY)&_ZN7S3038C53v81Ev,
  (VTBL_ENTRY)&_ZN7S3038C53v82Ev,
  (VTBL_ENTRY)&_ZN7S3038C53v83Ev,
  (VTBL_ENTRY)&_ZN7S3038C53v84Ev,
  (VTBL_ENTRY)&_ZN7S3038C53v85Ev,
  (VTBL_ENTRY)&_ZN7S3038C53v86Ev,
  (VTBL_ENTRY)&_ZN7S3038C53v87Ev,
  (VTBL_ENTRY)&_ZN7S3038C53v88Ev,
  (VTBL_ENTRY)&_ZN7S3038C53v89Ev,
  (VTBL_ENTRY)&_ZN7S3038C53v90Ev,
  (VTBL_ENTRY)&_ZN7S3038C53v91Ev,
  (VTBL_ENTRY)&_ZN7S3038C53v92Ev,
  (VTBL_ENTRY)&_ZN7S3038C53v93Ev,
  (VTBL_ENTRY)&_ZN7S3038C53v94Ev,
  (VTBL_ENTRY)&_ZN7S3038C53v95Ev,
};
extern VTBL_ENTRY _ZTI7S3038C5[];
extern  VTBL_ENTRY _ZTV7S3038C5[];
Class_Descriptor cd_S3038C5 = {  "S3038C5", // class name
  0,0,//no base classes
  &(vtc_S3038C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3038C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3038C5),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3038C6  {
  virtual void  v96(); // _ZN7S3038C63v96Ev
  virtual void  v97(); // _ZN7S3038C63v97Ev
  virtual void  v98(); // _ZN7S3038C63v98Ev
  virtual void  v99(); // _ZN7S3038C63v99Ev
  virtual void  v100(); // _ZN7S3038C64v100Ev
  virtual void  v101(); // _ZN7S3038C64v101Ev
  virtual void  v102(); // _ZN7S3038C64v102Ev
  virtual void  v103(); // _ZN7S3038C64v103Ev
  virtual void  v104(); // _ZN7S3038C64v104Ev
  ~S3038C6(); // tgen
  S3038C6(); // tgen
};
//SIG(-1 S3038C6) C1{ v1 v2 v3 v4 v5 v6 v7 v8 v9}


void  S3038C6 ::v96(){vfunc_called(this, "_ZN7S3038C63v96Ev");}
void  S3038C6 ::v97(){vfunc_called(this, "_ZN7S3038C63v97Ev");}
void  S3038C6 ::v98(){vfunc_called(this, "_ZN7S3038C63v98Ev");}
void  S3038C6 ::v99(){vfunc_called(this, "_ZN7S3038C63v99Ev");}
void  S3038C6 ::v100(){vfunc_called(this, "_ZN7S3038C64v100Ev");}
void  S3038C6 ::v101(){vfunc_called(this, "_ZN7S3038C64v101Ev");}
void  S3038C6 ::v102(){vfunc_called(this, "_ZN7S3038C64v102Ev");}
void  S3038C6 ::v103(){vfunc_called(this, "_ZN7S3038C64v103Ev");}
void  S3038C6 ::v104(){vfunc_called(this, "_ZN7S3038C64v104Ev");}
S3038C6 ::~S3038C6(){ note_dtor("S3038C6", this);} // tgen
S3038C6 ::S3038C6(){ note_ctor("S3038C6", this);} // tgen

static void Test_S3038C6()
{
  extern Class_Descriptor cd_S3038C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3038C6, buf);
    S3038C6 *dp, &lv = *(dp=new (buf) S3038C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3038C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3038C6)");
    test_class_info(&lv, &cd_S3038C6);
    dp->~S3038C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3038C6(Test_S3038C6, "S3038C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3038C6C1Ev();
extern void _ZN7S3038C6D1Ev();
Name_Map name_map_S3038C6[] = {
  NSPAIR(_ZN7S3038C6C1Ev),
  NSPAIR(_ZN7S3038C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3038C6[];
extern void _ZN7S3038C63v96Ev();
extern void _ZN7S3038C63v97Ev();
extern void _ZN7S3038C63v98Ev();
extern void _ZN7S3038C63v99Ev();
extern void _ZN7S3038C64v100Ev();
extern void _ZN7S3038C64v101Ev();
extern void _ZN7S3038C64v102Ev();
extern void _ZN7S3038C64v103Ev();
extern void _ZN7S3038C64v104Ev();
static  VTBL_ENTRY vtc_S3038C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3038C6[0]),
  (VTBL_ENTRY)&_ZN7S3038C63v96Ev,
  (VTBL_ENTRY)&_ZN7S3038C63v97Ev,
  (VTBL_ENTRY)&_ZN7S3038C63v98Ev,
  (VTBL_ENTRY)&_ZN7S3038C63v99Ev,
  (VTBL_ENTRY)&_ZN7S3038C64v100Ev,
  (VTBL_ENTRY)&_ZN7S3038C64v101Ev,
  (VTBL_ENTRY)&_ZN7S3038C64v102Ev,
  (VTBL_ENTRY)&_ZN7S3038C64v103Ev,
  (VTBL_ENTRY)&_ZN7S3038C64v104Ev,
};
extern VTBL_ENTRY _ZTI7S3038C6[];
extern  VTBL_ENTRY _ZTV7S3038C6[];
Class_Descriptor cd_S3038C6 = {  "S3038C6", // class name
  0,0,//no base classes
  &(vtc_S3038C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3038C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3038C6),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3038C2  : S3038C3 , S3038C5 , S3038C6 {
  void *s3038c2f0;
  ::S79C39_nt s3038c2f1;
  unsigned int s3038c2f2:1;
  unsigned int s3038c2f3:1;
  unsigned int s3038c2f4:1;
  unsigned int s3038c2f5:1;
  virtual  ~S3038C2(); // _ZN7S3038C2D1Ev
  virtual void  v105(); // _ZN7S3038C24v105Ev
  virtual void  v106(); // _ZN7S3038C24v106Ev
  virtual void  v107(); // _ZN7S3038C24v107Ev
  virtual void  v108(); // _ZN7S3038C24v108Ev
  virtual void  v109(); // _ZN7S3038C24v109Ev
  virtual void  v110(); // _ZN7S3038C24v110Ev
  virtual void  v111(); // _ZN7S3038C24v111Ev
  virtual void  v112(); // _ZN7S3038C24v112Ev
  virtual void  v113(); // _ZN7S3038C24v113Ev
  virtual void  v114(); // _ZN7S3038C24v114Ev
  virtual void  v115(); // _ZN7S3038C24v115Ev
  virtual void  v116(); // _ZN7S3038C24v116Ev
  virtual void  v117(); // _ZN7S3038C24v117Ev
  virtual void  v118(); // _ZN7S3038C24v118Ev
  virtual void  v119(); // _ZN7S3038C24v119Ev
  virtual void  v120(); // _ZN7S3038C24v120Ev
  virtual void  v121(); // _ZN7S3038C24v121Ev
  virtual void  v122(); // _ZN7S3038C24v122Ev
  virtual void  v123(); // _ZN7S3038C24v123Ev
  virtual void  v124(); // _ZN7S3038C24v124Ev
  virtual void  v125(); // _ZN7S3038C24v125Ev
  virtual void  v126(); // _ZN7S3038C24v126Ev
  virtual void  v127(); // _ZN7S3038C24v127Ev
  virtual void  v128(); // _ZN7S3038C24v128Ev
  S3038C2(); // tgen
};
//SIG(-1 S3038C2) C1{ BC2{ vd v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} BC4{ v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104} BC5{ v105 v106 v107 v108 v109 v110 v111 v112 v113} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 Fp FC6{ BC7{ BC8{ BC9{ m Fp Fi[2]}}}} Fi:1 Fi:1 Fi:1 Fi:1}


 S3038C2 ::~S3038C2(){ note_dtor("S3038C2", this);}
void  S3038C2 ::v105(){vfunc_called(this, "_ZN7S3038C24v105Ev");}
void  S3038C2 ::v106(){vfunc_called(this, "_ZN7S3038C24v106Ev");}
void  S3038C2 ::v107(){vfunc_called(this, "_ZN7S3038C24v107Ev");}
void  S3038C2 ::v108(){vfunc_called(this, "_ZN7S3038C24v108Ev");}
void  S3038C2 ::v109(){vfunc_called(this, "_ZN7S3038C24v109Ev");}
void  S3038C2 ::v110(){vfunc_called(this, "_ZN7S3038C24v110Ev");}
void  S3038C2 ::v111(){vfunc_called(this, "_ZN7S3038C24v111Ev");}
void  S3038C2 ::v112(){vfunc_called(this, "_ZN7S3038C24v112Ev");}
void  S3038C2 ::v113(){vfunc_called(this, "_ZN7S3038C24v113Ev");}
void  S3038C2 ::v114(){vfunc_called(this, "_ZN7S3038C24v114Ev");}
void  S3038C2 ::v115(){vfunc_called(this, "_ZN7S3038C24v115Ev");}
void  S3038C2 ::v116(){vfunc_called(this, "_ZN7S3038C24v116Ev");}
void  S3038C2 ::v117(){vfunc_called(this, "_ZN7S3038C24v117Ev");}
void  S3038C2 ::v118(){vfunc_called(this, "_ZN7S3038C24v118Ev");}
void  S3038C2 ::v119(){vfunc_called(this, "_ZN7S3038C24v119Ev");}
void  S3038C2 ::v120(){vfunc_called(this, "_ZN7S3038C24v120Ev");}
void  S3038C2 ::v121(){vfunc_called(this, "_ZN7S3038C24v121Ev");}
void  S3038C2 ::v122(){vfunc_called(this, "_ZN7S3038C24v122Ev");}
void  S3038C2 ::v123(){vfunc_called(this, "_ZN7S3038C24v123Ev");}
void  S3038C2 ::v124(){vfunc_called(this, "_ZN7S3038C24v124Ev");}
void  S3038C2 ::v125(){vfunc_called(this, "_ZN7S3038C24v125Ev");}
void  S3038C2 ::v126(){vfunc_called(this, "_ZN7S3038C24v126Ev");}
void  S3038C2 ::v127(){vfunc_called(this, "_ZN7S3038C24v127Ev");}
void  S3038C2 ::v128(){vfunc_called(this, "_ZN7S3038C24v128Ev");}
S3038C2 ::S3038C2(){ note_ctor("S3038C2", this);} // tgen

static void Test_S3038C2()
{
  extern Class_Descriptor cd_S3038C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,23)];
    init_test(&cd_S3038C2, buf);
    S3038C2 *dp, &lv = *(dp=new (buf) S3038C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,88), "sizeof(S3038C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3038C2)");
    check_base_class_offset(lv, (S3038C3*), 0, "S3038C2");
    check_base_class_offset(lv, (S3038C5*), ABISELECT(96,60), "S3038C2");
    check_base_class_offset(lv, (S3038C6*), ABISELECT(104,64), "S3038C2");
    check_field_offset(lv, s3038c2f0, ABISELECT(112,68), "S3038C2.s3038c2f0");
    check_field_offset(lv, s3038c2f1, ABISELECT(120,72), "S3038C2.s3038c2f1");
    set_bf_and_test(lv, s3038c2f2, ABISELECT(136,84), 0, 1, 1, "S3038C2");
    set_bf_and_test(lv, s3038c2f3, ABISELECT(136,84), 1, 1, 1, "S3038C2");
    set_bf_and_test(lv, s3038c2f4, ABISELECT(136,84), 2, 1, 1, "S3038C2");
    set_bf_and_test(lv, s3038c2f5, ABISELECT(136,84), 3, 1, 1, "S3038C2");
    test_class_info(&lv, &cd_S3038C2);
    dp->~S3038C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3038C2(Test_S3038C2, "S3038C2", ABISELECT(144,88));

#else // __cplusplus

extern void _ZN7S3038C2C1Ev();
extern void _ZN7S3038C2D1Ev();
Name_Map name_map_S3038C2[] = {
  NSPAIR(_ZN7S3038C2C1Ev),
  NSPAIR(_ZN7S3038C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3038C3;
extern VTBL_ENTRY _ZTI7S3038C3[];
extern  VTBL_ENTRY _ZTV7S3038C3[];
extern Class_Descriptor cd_S3038C5;
extern VTBL_ENTRY _ZTI7S3038C5[];
extern  VTBL_ENTRY _ZTV7S3038C5[];
extern Class_Descriptor cd_S3038C6;
extern VTBL_ENTRY _ZTI7S3038C6[];
extern  VTBL_ENTRY _ZTV7S3038C6[];
static Base_Class bases_S3038C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3038C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3038C5,    ABISELECT(96,60), //bcp->offset
    92, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3038C6,    ABISELECT(104,64), //bcp->offset
    110, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3038C2[];
extern void _ZN7S3038C2D1Ev();
extern void _ZN7S3038C2D0Ev();
extern void _ZN7S3038C33v16Ev();
extern void _ZN7S3038C33v17Ev();
extern void _ZN7S3038C33v18Ev();
extern void _ZN7S3038C33v19Ev();
extern void _ZN7S3038C33v20Ev();
extern void _ZN7S3038C33v21Ev();
extern void _ZN7S3038C33v22Ev();
extern void _ZN7S3038C33v23Ev();
extern void _ZN7S3038C33v24Ev();
extern void _ZN7S3038C33v25Ev();
extern void _ZN7S3038C33v26Ev();
extern void _ZN7S3038C33v27Ev();
extern void _ZN7S3038C33v28Ev();
extern void _ZN7S3038C33v29Ev();
extern void _ZN7S3038C33v30Ev();
extern void _ZN7S3038C33v31Ev();
extern void _ZN7S3038C33v32Ev();
extern void _ZN7S3038C33v33Ev();
extern void _ZN7S3038C33v34Ev();
extern void _ZN7S3038C33v35Ev();
extern void _ZN7S3038C33v36Ev();
extern void _ZN7S3038C33v37Ev();
extern void _ZN7S3038C33v38Ev();
extern void _ZN7S3038C33v39Ev();
extern void _ZN7S3038C33v40Ev();
extern void _ZN7S3038C33v41Ev();
extern void _ZN7S3038C33v42Ev();
extern void _ZN7S3038C33v43Ev();
extern void _ZN7S3038C33v44Ev();
extern void _ZN7S3038C33v45Ev();
extern void _ZN7S3038C33v46Ev();
extern void _ZN7S3038C33v47Ev();
extern void _ZN7S3038C33v48Ev();
extern void _ZN7S3038C33v49Ev();
extern void _ZN7S3038C33v50Ev();
extern void _ZN7S3038C33v51Ev();
extern void _ZN7S3038C33v52Ev();
extern void _ZN7S3038C33v53Ev();
extern void _ZN7S3038C33v54Ev();
extern void _ZN7S3038C33v55Ev();
extern void _ZN7S3038C33v56Ev();
extern void _ZN7S3038C33v57Ev();
extern void _ZN7S3038C33v58Ev();
extern void _ZN7S3038C33v59Ev();
extern void _ZN7S3038C33v60Ev();
extern void _ZN7S3038C33v61Ev();
extern void _ZN7S3038C33v62Ev();
extern void _ZN7S3038C33v63Ev();
extern void _ZN7S3038C33v64Ev();
extern void _ZN7S3038C33v65Ev();
extern void _ZN7S3038C33v66Ev();
extern void _ZN7S3038C33v67Ev();
extern void _ZN7S3038C33v68Ev();
extern void _ZN7S3038C33v69Ev();
extern void _ZN7S3038C33v70Ev();
extern void _ZN7S3038C33v71Ev();
extern void _ZN7S3038C33v72Ev();
extern void _ZN7S3038C33v73Ev();
extern void _ZN7S3038C33v74Ev();
extern void _ZN7S3038C33v75Ev();
extern void _ZN7S3038C33v76Ev();
extern void _ZN7S3038C33v77Ev();
extern void _ZN7S3038C33v78Ev();
extern void _ZN7S3038C33v79Ev();
extern void _ZN7S3038C24v105Ev();
extern void _ZN7S3038C24v106Ev();
extern void _ZN7S3038C24v107Ev();
extern void _ZN7S3038C24v108Ev();
extern void _ZN7S3038C24v109Ev();
extern void _ZN7S3038C24v110Ev();
extern void _ZN7S3038C24v111Ev();
extern void _ZN7S3038C24v112Ev();
extern void _ZN7S3038C24v113Ev();
extern void _ZN7S3038C24v114Ev();
extern void _ZN7S3038C24v115Ev();
extern void _ZN7S3038C24v116Ev();
extern void _ZN7S3038C24v117Ev();
extern void _ZN7S3038C24v118Ev();
extern void _ZN7S3038C24v119Ev();
extern void _ZN7S3038C24v120Ev();
extern void _ZN7S3038C24v121Ev();
extern void _ZN7S3038C24v122Ev();
extern void _ZN7S3038C24v123Ev();
extern void _ZN7S3038C24v124Ev();
extern void _ZN7S3038C24v125Ev();
extern void _ZN7S3038C24v126Ev();
extern void _ZN7S3038C24v127Ev();
extern void _ZN7S3038C24v128Ev();
extern void _ZN7S3038C53v80Ev();
extern void _ZN7S3038C53v81Ev();
extern void _ZN7S3038C53v82Ev();
extern void _ZN7S3038C53v83Ev();
extern void _ZN7S3038C53v84Ev();
extern void _ZN7S3038C53v85Ev();
extern void _ZN7S3038C53v86Ev();
extern void _ZN7S3038C53v87Ev();
extern void _ZN7S3038C53v88Ev();
extern void _ZN7S3038C53v89Ev();
extern void _ZN7S3038C53v90Ev();
extern void _ZN7S3038C53v91Ev();
extern void _ZN7S3038C53v92Ev();
extern void _ZN7S3038C53v93Ev();
extern void _ZN7S3038C53v94Ev();
extern void _ZN7S3038C53v95Ev();
extern void _ZN7S3038C63v96Ev();
extern void _ZN7S3038C63v97Ev();
extern void _ZN7S3038C63v98Ev();
extern void _ZN7S3038C63v99Ev();
extern void _ZN7S3038C64v100Ev();
extern void _ZN7S3038C64v101Ev();
extern void _ZN7S3038C64v102Ev();
extern void _ZN7S3038C64v103Ev();
extern void _ZN7S3038C64v104Ev();
static  VTBL_ENTRY vtc_S3038C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3038C2[0]),
  (VTBL_ENTRY)&_ZN7S3038C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3038C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v68Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v69Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v70Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v71Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v72Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v73Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v74Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v75Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v76Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v77Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v78Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v79Ev,
  (VTBL_ENTRY)&_ZN7S3038C24v105Ev,
  (VTBL_ENTRY)&_ZN7S3038C24v106Ev,
  (VTBL_ENTRY)&_ZN7S3038C24v107Ev,
  (VTBL_ENTRY)&_ZN7S3038C24v108Ev,
  (VTBL_ENTRY)&_ZN7S3038C24v109Ev,
  (VTBL_ENTRY)&_ZN7S3038C24v110Ev,
  (VTBL_ENTRY)&_ZN7S3038C24v111Ev,
  (VTBL_ENTRY)&_ZN7S3038C24v112Ev,
  (VTBL_ENTRY)&_ZN7S3038C24v113Ev,
  (VTBL_ENTRY)&_ZN7S3038C24v114Ev,
  (VTBL_ENTRY)&_ZN7S3038C24v115Ev,
  (VTBL_ENTRY)&_ZN7S3038C24v116Ev,
  (VTBL_ENTRY)&_ZN7S3038C24v117Ev,
  (VTBL_ENTRY)&_ZN7S3038C24v118Ev,
  (VTBL_ENTRY)&_ZN7S3038C24v119Ev,
  (VTBL_ENTRY)&_ZN7S3038C24v120Ev,
  (VTBL_ENTRY)&_ZN7S3038C24v121Ev,
  (VTBL_ENTRY)&_ZN7S3038C24v122Ev,
  (VTBL_ENTRY)&_ZN7S3038C24v123Ev,
  (VTBL_ENTRY)&_ZN7S3038C24v124Ev,
  (VTBL_ENTRY)&_ZN7S3038C24v125Ev,
  (VTBL_ENTRY)&_ZN7S3038C24v126Ev,
  (VTBL_ENTRY)&_ZN7S3038C24v127Ev,
  (VTBL_ENTRY)&_ZN7S3038C24v128Ev,
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S3038C2[0]),
  (VTBL_ENTRY)&_ZN7S3038C53v80Ev,
  (VTBL_ENTRY)&_ZN7S3038C53v81Ev,
  (VTBL_ENTRY)&_ZN7S3038C53v82Ev,
  (VTBL_ENTRY)&_ZN7S3038C53v83Ev,
  (VTBL_ENTRY)&_ZN7S3038C53v84Ev,
  (VTBL_ENTRY)&_ZN7S3038C53v85Ev,
  (VTBL_ENTRY)&_ZN7S3038C53v86Ev,
  (VTBL_ENTRY)&_ZN7S3038C53v87Ev,
  (VTBL_ENTRY)&_ZN7S3038C53v88Ev,
  (VTBL_ENTRY)&_ZN7S3038C53v89Ev,
  (VTBL_ENTRY)&_ZN7S3038C53v90Ev,
  (VTBL_ENTRY)&_ZN7S3038C53v91Ev,
  (VTBL_ENTRY)&_ZN7S3038C53v92Ev,
  (VTBL_ENTRY)&_ZN7S3038C53v93Ev,
  (VTBL_ENTRY)&_ZN7S3038C53v94Ev,
  (VTBL_ENTRY)&_ZN7S3038C53v95Ev,
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S3038C2[0]),
  (VTBL_ENTRY)&_ZN7S3038C63v96Ev,
  (VTBL_ENTRY)&_ZN7S3038C63v97Ev,
  (VTBL_ENTRY)&_ZN7S3038C63v98Ev,
  (VTBL_ENTRY)&_ZN7S3038C63v99Ev,
  (VTBL_ENTRY)&_ZN7S3038C64v100Ev,
  (VTBL_ENTRY)&_ZN7S3038C64v101Ev,
  (VTBL_ENTRY)&_ZN7S3038C64v102Ev,
  (VTBL_ENTRY)&_ZN7S3038C64v103Ev,
  (VTBL_ENTRY)&_ZN7S3038C64v104Ev,
};
extern VTBL_ENTRY _ZTI7S3038C2[];
extern  VTBL_ENTRY _ZTV7S3038C2[];
Class_Descriptor cd_S3038C2 = {  "S3038C2", // class name
  bases_S3038C2, 3,
  &(vtc_S3038C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,88), // object size
  NSPAIRA(_ZTI7S3038C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S3038C2),121, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3038C1  : S3038C2 {
  ::S79C44 s3038c1f0;
  unsigned int s3038c1f1:1;
  unsigned int s3038c1f2:1;
  unsigned int s3038c1f3:1;
  virtual  ~S3038C1(); // _ZN7S3038C1D1Ev
  virtual void  v1(); // _ZN7S3038C12v1Ev
  virtual void  v2(); // _ZN7S3038C12v2Ev
  virtual void  v3(); // _ZN7S3038C12v3Ev
  virtual void  v4(); // _ZN7S3038C12v4Ev
  virtual void  v5(); // _ZN7S3038C12v5Ev
  virtual void  v6(); // _ZN7S3038C12v6Ev
  virtual void  v7(); // _ZN7S3038C12v7Ev
  virtual void  v8(); // _ZN7S3038C12v8Ev
  virtual void  v9(); // _ZN7S3038C12v9Ev
  virtual void  v10(); // _ZN7S3038C13v10Ev
  virtual void  v11(); // _ZN7S3038C13v11Ev
  virtual void  v12(); // _ZN7S3038C13v12Ev
  virtual void  v13(); // _ZN7S3038C13v13Ev
  virtual void  v14(); // _ZN7S3038C13v14Ev
  virtual void  v15(); // _ZN7S3038C13v15Ev
  S3038C1(); // tgen
};
//SIG(1 S3038C1) C1{ BC2{ BC3{ vd v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} BC5{ v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95} BC6{ v96 v97 v98 v99 v100 v101 v102 v103 v104} vd v105 v106 v107 v108 v109 v110 v111 v112 v113 v114 v115 v116 v117 v118 v119 v120 v121 v122 v123 v124 v125 v126 v127 v128 Fp FC7{ BC8{ BC9{ BC10{ m Fp Fi[2]}}}} Fi:1 Fi:1 Fi:1 Fi:1} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 FC11{ BC12{ BC10}} Fi:1 Fi:1 Fi:1}


 S3038C1 ::~S3038C1(){ note_dtor("S3038C1", this);}
void  S3038C1 ::v1(){vfunc_called(this, "_ZN7S3038C12v1Ev");}
void  S3038C1 ::v2(){vfunc_called(this, "_ZN7S3038C12v2Ev");}
void  S3038C1 ::v3(){vfunc_called(this, "_ZN7S3038C12v3Ev");}
void  S3038C1 ::v4(){vfunc_called(this, "_ZN7S3038C12v4Ev");}
void  S3038C1 ::v5(){vfunc_called(this, "_ZN7S3038C12v5Ev");}
void  S3038C1 ::v6(){vfunc_called(this, "_ZN7S3038C12v6Ev");}
void  S3038C1 ::v7(){vfunc_called(this, "_ZN7S3038C12v7Ev");}
void  S3038C1 ::v8(){vfunc_called(this, "_ZN7S3038C12v8Ev");}
void  S3038C1 ::v9(){vfunc_called(this, "_ZN7S3038C12v9Ev");}
void  S3038C1 ::v10(){vfunc_called(this, "_ZN7S3038C13v10Ev");}
void  S3038C1 ::v11(){vfunc_called(this, "_ZN7S3038C13v11Ev");}
void  S3038C1 ::v12(){vfunc_called(this, "_ZN7S3038C13v12Ev");}
void  S3038C1 ::v13(){vfunc_called(this, "_ZN7S3038C13v13Ev");}
void  S3038C1 ::v14(){vfunc_called(this, "_ZN7S3038C13v14Ev");}
void  S3038C1 ::v15(){vfunc_called(this, "_ZN7S3038C13v15Ev");}
S3038C1 ::S3038C1(){ note_ctor("S3038C1", this);} // tgen

static void Test_S3038C1()
{
  extern Class_Descriptor cd_S3038C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,27)];
    init_test(&cd_S3038C1, buf);
    S3038C1 *dp, &lv = *(dp=new (buf) S3038C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,104), "sizeof(S3038C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3038C1)");
    check_base_class_offset(lv, (S3038C3*)(S3038C2*), 0, "S3038C1");
    check_base_class_offset(lv, (S3038C5*)(S3038C2*), ABISELECT(96,60), "S3038C1");
    check_base_class_offset(lv, (S3038C6*)(S3038C2*), ABISELECT(104,64), "S3038C1");
    check_base_class_offset(lv, (S3038C2*), 0, "S3038C1");
    check_field_offset(lv, s3038c1f0, ABISELECT(144,88), "S3038C1.s3038c1f0");
    set_bf_and_test(lv, s3038c1f1, ABISELECT(160,100), 0, 1, 1, "S3038C1");
    set_bf_and_test(lv, s3038c1f2, ABISELECT(160,100), 1, 1, 1, "S3038C1");
    set_bf_and_test(lv, s3038c1f3, ABISELECT(160,100), 2, 1, 1, "S3038C1");
    test_class_info(&lv, &cd_S3038C1);
    dp->~S3038C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3038C1(Test_S3038C1, "S3038C1", ABISELECT(168,104));

#else // __cplusplus

extern void _ZN7S3038C1C1Ev();
extern void _ZN7S3038C1D1Ev();
Name_Map name_map_S3038C1[] = {
  NSPAIR(_ZN7S3038C1C1Ev),
  NSPAIR(_ZN7S3038C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3038C3;
extern VTBL_ENTRY _ZTI7S3038C3[];
extern  VTBL_ENTRY _ZTV7S3038C3[];
extern Class_Descriptor cd_S3038C5;
extern VTBL_ENTRY _ZTI7S3038C5[];
extern  VTBL_ENTRY _ZTV7S3038C5[];
extern Class_Descriptor cd_S3038C6;
extern VTBL_ENTRY _ZTI7S3038C6[];
extern  VTBL_ENTRY _ZTV7S3038C6[];
extern Class_Descriptor cd_S3038C2;
extern VTBL_ENTRY _ZTI7S3038C2[];
extern  VTBL_ENTRY _ZTV7S3038C2[];
static Base_Class bases_S3038C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3038C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S3038C5,    ABISELECT(96,60), //bcp->offset
    107, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S3038C6,    ABISELECT(104,64), //bcp->offset
    125, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S3038C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3038C1[];
extern void _ZN7S3038C1D1Ev();
extern void _ZN7S3038C1D0Ev();
extern void _ZN7S3038C33v16Ev();
extern void _ZN7S3038C33v17Ev();
extern void _ZN7S3038C33v18Ev();
extern void _ZN7S3038C33v19Ev();
extern void _ZN7S3038C33v20Ev();
extern void _ZN7S3038C33v21Ev();
extern void _ZN7S3038C33v22Ev();
extern void _ZN7S3038C33v23Ev();
extern void _ZN7S3038C33v24Ev();
extern void _ZN7S3038C33v25Ev();
extern void _ZN7S3038C33v26Ev();
extern void _ZN7S3038C33v27Ev();
extern void _ZN7S3038C33v28Ev();
extern void _ZN7S3038C33v29Ev();
extern void _ZN7S3038C33v30Ev();
extern void _ZN7S3038C33v31Ev();
extern void _ZN7S3038C33v32Ev();
extern void _ZN7S3038C33v33Ev();
extern void _ZN7S3038C33v34Ev();
extern void _ZN7S3038C33v35Ev();
extern void _ZN7S3038C33v36Ev();
extern void _ZN7S3038C33v37Ev();
extern void _ZN7S3038C33v38Ev();
extern void _ZN7S3038C33v39Ev();
extern void _ZN7S3038C33v40Ev();
extern void _ZN7S3038C33v41Ev();
extern void _ZN7S3038C33v42Ev();
extern void _ZN7S3038C33v43Ev();
extern void _ZN7S3038C33v44Ev();
extern void _ZN7S3038C33v45Ev();
extern void _ZN7S3038C33v46Ev();
extern void _ZN7S3038C33v47Ev();
extern void _ZN7S3038C33v48Ev();
extern void _ZN7S3038C33v49Ev();
extern void _ZN7S3038C33v50Ev();
extern void _ZN7S3038C33v51Ev();
extern void _ZN7S3038C33v52Ev();
extern void _ZN7S3038C33v53Ev();
extern void _ZN7S3038C33v54Ev();
extern void _ZN7S3038C33v55Ev();
extern void _ZN7S3038C33v56Ev();
extern void _ZN7S3038C33v57Ev();
extern void _ZN7S3038C33v58Ev();
extern void _ZN7S3038C33v59Ev();
extern void _ZN7S3038C33v60Ev();
extern void _ZN7S3038C33v61Ev();
extern void _ZN7S3038C33v62Ev();
extern void _ZN7S3038C33v63Ev();
extern void _ZN7S3038C33v64Ev();
extern void _ZN7S3038C33v65Ev();
extern void _ZN7S3038C33v66Ev();
extern void _ZN7S3038C33v67Ev();
extern void _ZN7S3038C33v68Ev();
extern void _ZN7S3038C33v69Ev();
extern void _ZN7S3038C33v70Ev();
extern void _ZN7S3038C33v71Ev();
extern void _ZN7S3038C33v72Ev();
extern void _ZN7S3038C33v73Ev();
extern void _ZN7S3038C33v74Ev();
extern void _ZN7S3038C33v75Ev();
extern void _ZN7S3038C33v76Ev();
extern void _ZN7S3038C33v77Ev();
extern void _ZN7S3038C33v78Ev();
extern void _ZN7S3038C33v79Ev();
extern void _ZN7S3038C24v105Ev();
extern void _ZN7S3038C24v106Ev();
extern void _ZN7S3038C24v107Ev();
extern void _ZN7S3038C24v108Ev();
extern void _ZN7S3038C24v109Ev();
extern void _ZN7S3038C24v110Ev();
extern void _ZN7S3038C24v111Ev();
extern void _ZN7S3038C24v112Ev();
extern void _ZN7S3038C24v113Ev();
extern void _ZN7S3038C24v114Ev();
extern void _ZN7S3038C24v115Ev();
extern void _ZN7S3038C24v116Ev();
extern void _ZN7S3038C24v117Ev();
extern void _ZN7S3038C24v118Ev();
extern void _ZN7S3038C24v119Ev();
extern void _ZN7S3038C24v120Ev();
extern void _ZN7S3038C24v121Ev();
extern void _ZN7S3038C24v122Ev();
extern void _ZN7S3038C24v123Ev();
extern void _ZN7S3038C24v124Ev();
extern void _ZN7S3038C24v125Ev();
extern void _ZN7S3038C24v126Ev();
extern void _ZN7S3038C24v127Ev();
extern void _ZN7S3038C24v128Ev();
extern void _ZN7S3038C12v1Ev();
extern void _ZN7S3038C12v2Ev();
extern void _ZN7S3038C12v3Ev();
extern void _ZN7S3038C12v4Ev();
extern void _ZN7S3038C12v5Ev();
extern void _ZN7S3038C12v6Ev();
extern void _ZN7S3038C12v7Ev();
extern void _ZN7S3038C12v8Ev();
extern void _ZN7S3038C12v9Ev();
extern void _ZN7S3038C13v10Ev();
extern void _ZN7S3038C13v11Ev();
extern void _ZN7S3038C13v12Ev();
extern void _ZN7S3038C13v13Ev();
extern void _ZN7S3038C13v14Ev();
extern void _ZN7S3038C13v15Ev();
extern void _ZN7S3038C53v80Ev();
extern void _ZN7S3038C53v81Ev();
extern void _ZN7S3038C53v82Ev();
extern void _ZN7S3038C53v83Ev();
extern void _ZN7S3038C53v84Ev();
extern void _ZN7S3038C53v85Ev();
extern void _ZN7S3038C53v86Ev();
extern void _ZN7S3038C53v87Ev();
extern void _ZN7S3038C53v88Ev();
extern void _ZN7S3038C53v89Ev();
extern void _ZN7S3038C53v90Ev();
extern void _ZN7S3038C53v91Ev();
extern void _ZN7S3038C53v92Ev();
extern void _ZN7S3038C53v93Ev();
extern void _ZN7S3038C53v94Ev();
extern void _ZN7S3038C53v95Ev();
extern void _ZN7S3038C63v96Ev();
extern void _ZN7S3038C63v97Ev();
extern void _ZN7S3038C63v98Ev();
extern void _ZN7S3038C63v99Ev();
extern void _ZN7S3038C64v100Ev();
extern void _ZN7S3038C64v101Ev();
extern void _ZN7S3038C64v102Ev();
extern void _ZN7S3038C64v103Ev();
extern void _ZN7S3038C64v104Ev();
static  VTBL_ENTRY vtc_S3038C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3038C1[0]),
  (VTBL_ENTRY)&_ZN7S3038C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3038C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v68Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v69Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v70Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v71Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v72Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v73Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v74Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v75Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v76Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v77Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v78Ev,
  (VTBL_ENTRY)&_ZN7S3038C33v79Ev,
  (VTBL_ENTRY)&_ZN7S3038C24v105Ev,
  (VTBL_ENTRY)&_ZN7S3038C24v106Ev,
  (VTBL_ENTRY)&_ZN7S3038C24v107Ev,
  (VTBL_ENTRY)&_ZN7S3038C24v108Ev,
  (VTBL_ENTRY)&_ZN7S3038C24v109Ev,
  (VTBL_ENTRY)&_ZN7S3038C24v110Ev,
  (VTBL_ENTRY)&_ZN7S3038C24v111Ev,
  (VTBL_ENTRY)&_ZN7S3038C24v112Ev,
  (VTBL_ENTRY)&_ZN7S3038C24v113Ev,
  (VTBL_ENTRY)&_ZN7S3038C24v114Ev,
  (VTBL_ENTRY)&_ZN7S3038C24v115Ev,
  (VTBL_ENTRY)&_ZN7S3038C24v116Ev,
  (VTBL_ENTRY)&_ZN7S3038C24v117Ev,
  (VTBL_ENTRY)&_ZN7S3038C24v118Ev,
  (VTBL_ENTRY)&_ZN7S3038C24v119Ev,
  (VTBL_ENTRY)&_ZN7S3038C24v120Ev,
  (VTBL_ENTRY)&_ZN7S3038C24v121Ev,
  (VTBL_ENTRY)&_ZN7S3038C24v122Ev,
  (VTBL_ENTRY)&_ZN7S3038C24v123Ev,
  (VTBL_ENTRY)&_ZN7S3038C24v124Ev,
  (VTBL_ENTRY)&_ZN7S3038C24v125Ev,
  (VTBL_ENTRY)&_ZN7S3038C24v126Ev,
  (VTBL_ENTRY)&_ZN7S3038C24v127Ev,
  (VTBL_ENTRY)&_ZN7S3038C24v128Ev,
  (VTBL_ENTRY)&_ZN7S3038C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3038C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3038C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3038C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3038C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3038C12v6Ev,
  (VTBL_ENTRY)&_ZN7S3038C12v7Ev,
  (VTBL_ENTRY)&_ZN7S3038C12v8Ev,
  (VTBL_ENTRY)&_ZN7S3038C12v9Ev,
  (VTBL_ENTRY)&_ZN7S3038C13v10Ev,
  (VTBL_ENTRY)&_ZN7S3038C13v11Ev,
  (VTBL_ENTRY)&_ZN7S3038C13v12Ev,
  (VTBL_ENTRY)&_ZN7S3038C13v13Ev,
  (VTBL_ENTRY)&_ZN7S3038C13v14Ev,
  (VTBL_ENTRY)&_ZN7S3038C13v15Ev,
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S3038C1[0]),
  (VTBL_ENTRY)&_ZN7S3038C53v80Ev,
  (VTBL_ENTRY)&_ZN7S3038C53v81Ev,
  (VTBL_ENTRY)&_ZN7S3038C53v82Ev,
  (VTBL_ENTRY)&_ZN7S3038C53v83Ev,
  (VTBL_ENTRY)&_ZN7S3038C53v84Ev,
  (VTBL_ENTRY)&_ZN7S3038C53v85Ev,
  (VTBL_ENTRY)&_ZN7S3038C53v86Ev,
  (VTBL_ENTRY)&_ZN7S3038C53v87Ev,
  (VTBL_ENTRY)&_ZN7S3038C53v88Ev,
  (VTBL_ENTRY)&_ZN7S3038C53v89Ev,
  (VTBL_ENTRY)&_ZN7S3038C53v90Ev,
  (VTBL_ENTRY)&_ZN7S3038C53v91Ev,
  (VTBL_ENTRY)&_ZN7S3038C53v92Ev,
  (VTBL_ENTRY)&_ZN7S3038C53v93Ev,
  (VTBL_ENTRY)&_ZN7S3038C53v94Ev,
  (VTBL_ENTRY)&_ZN7S3038C53v95Ev,
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S3038C1[0]),
  (VTBL_ENTRY)&_ZN7S3038C63v96Ev,
  (VTBL_ENTRY)&_ZN7S3038C63v97Ev,
  (VTBL_ENTRY)&_ZN7S3038C63v98Ev,
  (VTBL_ENTRY)&_ZN7S3038C63v99Ev,
  (VTBL_ENTRY)&_ZN7S3038C64v100Ev,
  (VTBL_ENTRY)&_ZN7S3038C64v101Ev,
  (VTBL_ENTRY)&_ZN7S3038C64v102Ev,
  (VTBL_ENTRY)&_ZN7S3038C64v103Ev,
  (VTBL_ENTRY)&_ZN7S3038C64v104Ev,
};
extern VTBL_ENTRY _ZTI7S3038C1[];
extern  VTBL_ENTRY _ZTV7S3038C1[];
Class_Descriptor cd_S3038C1 = {  "S3038C1", // class name
  bases_S3038C1, 4,
  &(vtc_S3038C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(168,104), // object size
  NSPAIRA(_ZTI7S3038C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3038C1),136, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  4, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3044C3  {
  int s3044c3f0;
  __tsi64 s3044c3f1;
  void *s3044c3f2[4];
  int s3044c3f3[2];
  void *s3044c3f4;
  ::S79C8_nt s3044c3f5;
  void *s3044c3f6[2];
  virtual  ~S3044C3(); // _ZN7S3044C3D1Ev
  virtual void  v17(); // _ZN7S3044C33v17Ev
  virtual void  v18(); // _ZN7S3044C33v18Ev
  virtual void  v19(); // _ZN7S3044C33v19Ev
  virtual void  v20(); // _ZN7S3044C33v20Ev
  virtual void  v21(); // _ZN7S3044C33v21Ev
  virtual void  v22(); // _ZN7S3044C33v22Ev
  virtual void  v23(); // _ZN7S3044C33v23Ev
  virtual void  v24(); // _ZN7S3044C33v24Ev
  virtual void  v25(); // _ZN7S3044C33v25Ev
  virtual void  v26(); // _ZN7S3044C33v26Ev
  virtual void  v27(); // _ZN7S3044C33v27Ev
  virtual void  v28(); // _ZN7S3044C33v28Ev
  virtual void  v29(); // _ZN7S3044C33v29Ev
  virtual void  v30(); // _ZN7S3044C33v30Ev
  virtual void  v31(); // _ZN7S3044C33v31Ev
  virtual void  v32(); // _ZN7S3044C33v32Ev
  virtual void  v33(); // _ZN7S3044C33v33Ev
  virtual void  v34(); // _ZN7S3044C33v34Ev
  virtual void  v35(); // _ZN7S3044C33v35Ev
  virtual void  v36(); // _ZN7S3044C33v36Ev
  virtual void  v37(); // _ZN7S3044C33v37Ev
  virtual void  v38(); // _ZN7S3044C33v38Ev
  virtual void  v39(); // _ZN7S3044C33v39Ev
  virtual void  v40(); // _ZN7S3044C33v40Ev
  virtual void  v41(); // _ZN7S3044C33v41Ev
  virtual void  v42(); // _ZN7S3044C33v42Ev
  virtual void  v43(); // _ZN7S3044C33v43Ev
  virtual void  v44(); // _ZN7S3044C33v44Ev
  virtual void  v45(); // _ZN7S3044C33v45Ev
  virtual void  v46(); // _ZN7S3044C33v46Ev
  virtual void  v47(); // _ZN7S3044C33v47Ev
  virtual void  v48(); // _ZN7S3044C33v48Ev
  virtual void  v49(); // _ZN7S3044C33v49Ev
  virtual void  v50(); // _ZN7S3044C33v50Ev
  virtual void  v51(); // _ZN7S3044C33v51Ev
  virtual void  v52(); // _ZN7S3044C33v52Ev
  virtual void  v53(); // _ZN7S3044C33v53Ev
  virtual void  v54(); // _ZN7S3044C33v54Ev
  virtual void  v55(); // _ZN7S3044C33v55Ev
  virtual void  v56(); // _ZN7S3044C33v56Ev
  virtual void  v57(); // _ZN7S3044C33v57Ev
  virtual void  v58(); // _ZN7S3044C33v58Ev
  virtual void  v59(); // _ZN7S3044C33v59Ev
  virtual void  v60(); // _ZN7S3044C33v60Ev
  virtual void  v61(); // _ZN7S3044C33v61Ev
  virtual void  v62(); // _ZN7S3044C33v62Ev
  virtual void  v63(); // _ZN7S3044C33v63Ev
  virtual void  v64(); // _ZN7S3044C33v64Ev
  virtual void  v65(); // _ZN7S3044C33v65Ev
  virtual void  v66(); // _ZN7S3044C33v66Ev
  virtual void  v67(); // _ZN7S3044C33v67Ev
  virtual void  v68(); // _ZN7S3044C33v68Ev
  virtual void  v69(); // _ZN7S3044C33v69Ev
  virtual void  v70(); // _ZN7S3044C33v70Ev
  virtual void  v71(); // _ZN7S3044C33v71Ev
  virtual void  v72(); // _ZN7S3044C33v72Ev
  virtual void  v73(); // _ZN7S3044C33v73Ev
  virtual void  v74(); // _ZN7S3044C33v74Ev
  virtual void  v75(); // _ZN7S3044C33v75Ev
  virtual void  v76(); // _ZN7S3044C33v76Ev
  virtual void  v77(); // _ZN7S3044C33v77Ev
  virtual void  v78(); // _ZN7S3044C33v78Ev
  virtual void  v79(); // _ZN7S3044C33v79Ev
  virtual void  v80(); // _ZN7S3044C33v80Ev
  S3044C3(); // tgen
};
//SIG(-1 S3044C3) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 Fi FL Fp[4] Fi[2] Fp FC2{ m Fi[2]} Fp[2]}


 S3044C3 ::~S3044C3(){ note_dtor("S3044C3", this);}
void  S3044C3 ::v17(){vfunc_called(this, "_ZN7S3044C33v17Ev");}
void  S3044C3 ::v18(){vfunc_called(this, "_ZN7S3044C33v18Ev");}
void  S3044C3 ::v19(){vfunc_called(this, "_ZN7S3044C33v19Ev");}
void  S3044C3 ::v20(){vfunc_called(this, "_ZN7S3044C33v20Ev");}
void  S3044C3 ::v21(){vfunc_called(this, "_ZN7S3044C33v21Ev");}
void  S3044C3 ::v22(){vfunc_called(this, "_ZN7S3044C33v22Ev");}
void  S3044C3 ::v23(){vfunc_called(this, "_ZN7S3044C33v23Ev");}
void  S3044C3 ::v24(){vfunc_called(this, "_ZN7S3044C33v24Ev");}
void  S3044C3 ::v25(){vfunc_called(this, "_ZN7S3044C33v25Ev");}
void  S3044C3 ::v26(){vfunc_called(this, "_ZN7S3044C33v26Ev");}
void  S3044C3 ::v27(){vfunc_called(this, "_ZN7S3044C33v27Ev");}
void  S3044C3 ::v28(){vfunc_called(this, "_ZN7S3044C33v28Ev");}
void  S3044C3 ::v29(){vfunc_called(this, "_ZN7S3044C33v29Ev");}
void  S3044C3 ::v30(){vfunc_called(this, "_ZN7S3044C33v30Ev");}
void  S3044C3 ::v31(){vfunc_called(this, "_ZN7S3044C33v31Ev");}
void  S3044C3 ::v32(){vfunc_called(this, "_ZN7S3044C33v32Ev");}
void  S3044C3 ::v33(){vfunc_called(this, "_ZN7S3044C33v33Ev");}
void  S3044C3 ::v34(){vfunc_called(this, "_ZN7S3044C33v34Ev");}
void  S3044C3 ::v35(){vfunc_called(this, "_ZN7S3044C33v35Ev");}
void  S3044C3 ::v36(){vfunc_called(this, "_ZN7S3044C33v36Ev");}
void  S3044C3 ::v37(){vfunc_called(this, "_ZN7S3044C33v37Ev");}
void  S3044C3 ::v38(){vfunc_called(this, "_ZN7S3044C33v38Ev");}
void  S3044C3 ::v39(){vfunc_called(this, "_ZN7S3044C33v39Ev");}
void  S3044C3 ::v40(){vfunc_called(this, "_ZN7S3044C33v40Ev");}
void  S3044C3 ::v41(){vfunc_called(this, "_ZN7S3044C33v41Ev");}
void  S3044C3 ::v42(){vfunc_called(this, "_ZN7S3044C33v42Ev");}
void  S3044C3 ::v43(){vfunc_called(this, "_ZN7S3044C33v43Ev");}
void  S3044C3 ::v44(){vfunc_called(this, "_ZN7S3044C33v44Ev");}
void  S3044C3 ::v45(){vfunc_called(this, "_ZN7S3044C33v45Ev");}
void  S3044C3 ::v46(){vfunc_called(this, "_ZN7S3044C33v46Ev");}
void  S3044C3 ::v47(){vfunc_called(this, "_ZN7S3044C33v47Ev");}
void  S3044C3 ::v48(){vfunc_called(this, "_ZN7S3044C33v48Ev");}
void  S3044C3 ::v49(){vfunc_called(this, "_ZN7S3044C33v49Ev");}
void  S3044C3 ::v50(){vfunc_called(this, "_ZN7S3044C33v50Ev");}
void  S3044C3 ::v51(){vfunc_called(this, "_ZN7S3044C33v51Ev");}
void  S3044C3 ::v52(){vfunc_called(this, "_ZN7S3044C33v52Ev");}
void  S3044C3 ::v53(){vfunc_called(this, "_ZN7S3044C33v53Ev");}
void  S3044C3 ::v54(){vfunc_called(this, "_ZN7S3044C33v54Ev");}
void  S3044C3 ::v55(){vfunc_called(this, "_ZN7S3044C33v55Ev");}
void  S3044C3 ::v56(){vfunc_called(this, "_ZN7S3044C33v56Ev");}
void  S3044C3 ::v57(){vfunc_called(this, "_ZN7S3044C33v57Ev");}
void  S3044C3 ::v58(){vfunc_called(this, "_ZN7S3044C33v58Ev");}
void  S3044C3 ::v59(){vfunc_called(this, "_ZN7S3044C33v59Ev");}
void  S3044C3 ::v60(){vfunc_called(this, "_ZN7S3044C33v60Ev");}
void  S3044C3 ::v61(){vfunc_called(this, "_ZN7S3044C33v61Ev");}
void  S3044C3 ::v62(){vfunc_called(this, "_ZN7S3044C33v62Ev");}
void  S3044C3 ::v63(){vfunc_called(this, "_ZN7S3044C33v63Ev");}
void  S3044C3 ::v64(){vfunc_called(this, "_ZN7S3044C33v64Ev");}
void  S3044C3 ::v65(){vfunc_called(this, "_ZN7S3044C33v65Ev");}
void  S3044C3 ::v66(){vfunc_called(this, "_ZN7S3044C33v66Ev");}
void  S3044C3 ::v67(){vfunc_called(this, "_ZN7S3044C33v67Ev");}
void  S3044C3 ::v68(){vfunc_called(this, "_ZN7S3044C33v68Ev");}
void  S3044C3 ::v69(){vfunc_called(this, "_ZN7S3044C33v69Ev");}
void  S3044C3 ::v70(){vfunc_called(this, "_ZN7S3044C33v70Ev");}
void  S3044C3 ::v71(){vfunc_called(this, "_ZN7S3044C33v71Ev");}
void  S3044C3 ::v72(){vfunc_called(this, "_ZN7S3044C33v72Ev");}
void  S3044C3 ::v73(){vfunc_called(this, "_ZN7S3044C33v73Ev");}
void  S3044C3 ::v74(){vfunc_called(this, "_ZN7S3044C33v74Ev");}
void  S3044C3 ::v75(){vfunc_called(this, "_ZN7S3044C33v75Ev");}
void  S3044C3 ::v76(){vfunc_called(this, "_ZN7S3044C33v76Ev");}
void  S3044C3 ::v77(){vfunc_called(this, "_ZN7S3044C33v77Ev");}
void  S3044C3 ::v78(){vfunc_called(this, "_ZN7S3044C33v78Ev");}
void  S3044C3 ::v79(){vfunc_called(this, "_ZN7S3044C33v79Ev");}
void  S3044C3 ::v80(){vfunc_called(this, "_ZN7S3044C33v80Ev");}
S3044C3 ::S3044C3(){ note_ctor("S3044C3", this);} // tgen

static void Test_S3044C3()
{
  extern Class_Descriptor cd_S3044C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S3044C3, buf);
    S3044C3 *dp, &lv = *(dp=new (buf) S3044C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S3044C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3044C3)");
    check_field_offset(lv, s3044c3f0, ABISELECT(8,4), "S3044C3.s3044c3f0");
    check_field_offset(lv, s3044c3f1, ABISELECT(16,8), "S3044C3.s3044c3f1");
    check_field_offset(lv, s3044c3f2, ABISELECT(24,16), "S3044C3.s3044c3f2");
    check_field_offset(lv, s3044c3f3, ABISELECT(56,32), "S3044C3.s3044c3f3");
    check_field_offset(lv, s3044c3f4, ABISELECT(64,40), "S3044C3.s3044c3f4");
    check_field_offset(lv, s3044c3f5, ABISELECT(72,44), "S3044C3.s3044c3f5");
    check_field_offset(lv, s3044c3f6, ABISELECT(80,52), "S3044C3.s3044c3f6");
    test_class_info(&lv, &cd_S3044C3);
    dp->~S3044C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3044C3(Test_S3044C3, "S3044C3", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S3044C3C1Ev();
extern void _ZN7S3044C3D1Ev();
Name_Map name_map_S3044C3[] = {
  NSPAIR(_ZN7S3044C3C1Ev),
  NSPAIR(_ZN7S3044C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3044C3[];
extern void _ZN7S3044C3D1Ev();
extern void _ZN7S3044C3D0Ev();
extern void _ZN7S3044C33v17Ev();
extern void _ZN7S3044C33v18Ev();
extern void _ZN7S3044C33v19Ev();
extern void _ZN7S3044C33v20Ev();
extern void _ZN7S3044C33v21Ev();
extern void _ZN7S3044C33v22Ev();
extern void _ZN7S3044C33v23Ev();
extern void _ZN7S3044C33v24Ev();
extern void _ZN7S3044C33v25Ev();
extern void _ZN7S3044C33v26Ev();
extern void _ZN7S3044C33v27Ev();
extern void _ZN7S3044C33v28Ev();
extern void _ZN7S3044C33v29Ev();
extern void _ZN7S3044C33v30Ev();
extern void _ZN7S3044C33v31Ev();
extern void _ZN7S3044C33v32Ev();
extern void _ZN7S3044C33v33Ev();
extern void _ZN7S3044C33v34Ev();
extern void _ZN7S3044C33v35Ev();
extern void _ZN7S3044C33v36Ev();
extern void _ZN7S3044C33v37Ev();
extern void _ZN7S3044C33v38Ev();
extern void _ZN7S3044C33v39Ev();
extern void _ZN7S3044C33v40Ev();
extern void _ZN7S3044C33v41Ev();
extern void _ZN7S3044C33v42Ev();
extern void _ZN7S3044C33v43Ev();
extern void _ZN7S3044C33v44Ev();
extern void _ZN7S3044C33v45Ev();
extern void _ZN7S3044C33v46Ev();
extern void _ZN7S3044C33v47Ev();
extern void _ZN7S3044C33v48Ev();
extern void _ZN7S3044C33v49Ev();
extern void _ZN7S3044C33v50Ev();
extern void _ZN7S3044C33v51Ev();
extern void _ZN7S3044C33v52Ev();
extern void _ZN7S3044C33v53Ev();
extern void _ZN7S3044C33v54Ev();
extern void _ZN7S3044C33v55Ev();
extern void _ZN7S3044C33v56Ev();
extern void _ZN7S3044C33v57Ev();
extern void _ZN7S3044C33v58Ev();
extern void _ZN7S3044C33v59Ev();
extern void _ZN7S3044C33v60Ev();
extern void _ZN7S3044C33v61Ev();
extern void _ZN7S3044C33v62Ev();
extern void _ZN7S3044C33v63Ev();
extern void _ZN7S3044C33v64Ev();
extern void _ZN7S3044C33v65Ev();
extern void _ZN7S3044C33v66Ev();
extern void _ZN7S3044C33v67Ev();
extern void _ZN7S3044C33v68Ev();
extern void _ZN7S3044C33v69Ev();
extern void _ZN7S3044C33v70Ev();
extern void _ZN7S3044C33v71Ev();
extern void _ZN7S3044C33v72Ev();
extern void _ZN7S3044C33v73Ev();
extern void _ZN7S3044C33v74Ev();
extern void _ZN7S3044C33v75Ev();
extern void _ZN7S3044C33v76Ev();
extern void _ZN7S3044C33v77Ev();
extern void _ZN7S3044C33v78Ev();
extern void _ZN7S3044C33v79Ev();
extern void _ZN7S3044C33v80Ev();
static  VTBL_ENTRY vtc_S3044C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3044C3[0]),
  (VTBL_ENTRY)&_ZN7S3044C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3044C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v68Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v69Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v70Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v71Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v72Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v73Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v74Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v75Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v76Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v77Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v78Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v79Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v80Ev,
};
extern VTBL_ENTRY _ZTI7S3044C3[];
extern  VTBL_ENTRY _ZTV7S3044C3[];
Class_Descriptor cd_S3044C3 = {  "S3044C3", // class name
  0,0,//no base classes
  &(vtc_S3044C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S3044C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3044C3),68, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3044C5  {
  virtual void  v81(); // _ZN7S3044C53v81Ev
  virtual void  v82(); // _ZN7S3044C53v82Ev
  virtual void  v83(); // _ZN7S3044C53v83Ev
  virtual void  v84(); // _ZN7S3044C53v84Ev
  virtual void  v85(); // _ZN7S3044C53v85Ev
  virtual void  v86(); // _ZN7S3044C53v86Ev
  virtual void  v87(); // _ZN7S3044C53v87Ev
  virtual void  v88(); // _ZN7S3044C53v88Ev
  virtual void  v89(); // _ZN7S3044C53v89Ev
  virtual void  v90(); // _ZN7S3044C53v90Ev
  virtual void  v91(); // _ZN7S3044C53v91Ev
  virtual void  v92(); // _ZN7S3044C53v92Ev
  virtual void  v93(); // _ZN7S3044C53v93Ev
  virtual void  v94(); // _ZN7S3044C53v94Ev
  virtual void  v95(); // _ZN7S3044C53v95Ev
  virtual void  v96(); // _ZN7S3044C53v96Ev
  ~S3044C5(); // tgen
  S3044C5(); // tgen
};
//SIG(-1 S3044C5) C1{ v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16}


void  S3044C5 ::v81(){vfunc_called(this, "_ZN7S3044C53v81Ev");}
void  S3044C5 ::v82(){vfunc_called(this, "_ZN7S3044C53v82Ev");}
void  S3044C5 ::v83(){vfunc_called(this, "_ZN7S3044C53v83Ev");}
void  S3044C5 ::v84(){vfunc_called(this, "_ZN7S3044C53v84Ev");}
void  S3044C5 ::v85(){vfunc_called(this, "_ZN7S3044C53v85Ev");}
void  S3044C5 ::v86(){vfunc_called(this, "_ZN7S3044C53v86Ev");}
void  S3044C5 ::v87(){vfunc_called(this, "_ZN7S3044C53v87Ev");}
void  S3044C5 ::v88(){vfunc_called(this, "_ZN7S3044C53v88Ev");}
void  S3044C5 ::v89(){vfunc_called(this, "_ZN7S3044C53v89Ev");}
void  S3044C5 ::v90(){vfunc_called(this, "_ZN7S3044C53v90Ev");}
void  S3044C5 ::v91(){vfunc_called(this, "_ZN7S3044C53v91Ev");}
void  S3044C5 ::v92(){vfunc_called(this, "_ZN7S3044C53v92Ev");}
void  S3044C5 ::v93(){vfunc_called(this, "_ZN7S3044C53v93Ev");}
void  S3044C5 ::v94(){vfunc_called(this, "_ZN7S3044C53v94Ev");}
void  S3044C5 ::v95(){vfunc_called(this, "_ZN7S3044C53v95Ev");}
void  S3044C5 ::v96(){vfunc_called(this, "_ZN7S3044C53v96Ev");}
S3044C5 ::~S3044C5(){ note_dtor("S3044C5", this);} // tgen
S3044C5 ::S3044C5(){ note_ctor("S3044C5", this);} // tgen

static void Test_S3044C5()
{
  extern Class_Descriptor cd_S3044C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3044C5, buf);
    S3044C5 *dp, &lv = *(dp=new (buf) S3044C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3044C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3044C5)");
    test_class_info(&lv, &cd_S3044C5);
    dp->~S3044C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3044C5(Test_S3044C5, "S3044C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3044C5C1Ev();
extern void _ZN7S3044C5D1Ev();
Name_Map name_map_S3044C5[] = {
  NSPAIR(_ZN7S3044C5C1Ev),
  NSPAIR(_ZN7S3044C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3044C5[];
extern void _ZN7S3044C53v81Ev();
extern void _ZN7S3044C53v82Ev();
extern void _ZN7S3044C53v83Ev();
extern void _ZN7S3044C53v84Ev();
extern void _ZN7S3044C53v85Ev();
extern void _ZN7S3044C53v86Ev();
extern void _ZN7S3044C53v87Ev();
extern void _ZN7S3044C53v88Ev();
extern void _ZN7S3044C53v89Ev();
extern void _ZN7S3044C53v90Ev();
extern void _ZN7S3044C53v91Ev();
extern void _ZN7S3044C53v92Ev();
extern void _ZN7S3044C53v93Ev();
extern void _ZN7S3044C53v94Ev();
extern void _ZN7S3044C53v95Ev();
extern void _ZN7S3044C53v96Ev();
static  VTBL_ENTRY vtc_S3044C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3044C5[0]),
  (VTBL_ENTRY)&_ZN7S3044C53v81Ev,
  (VTBL_ENTRY)&_ZN7S3044C53v82Ev,
  (VTBL_ENTRY)&_ZN7S3044C53v83Ev,
  (VTBL_ENTRY)&_ZN7S3044C53v84Ev,
  (VTBL_ENTRY)&_ZN7S3044C53v85Ev,
  (VTBL_ENTRY)&_ZN7S3044C53v86Ev,
  (VTBL_ENTRY)&_ZN7S3044C53v87Ev,
  (VTBL_ENTRY)&_ZN7S3044C53v88Ev,
  (VTBL_ENTRY)&_ZN7S3044C53v89Ev,
  (VTBL_ENTRY)&_ZN7S3044C53v90Ev,
  (VTBL_ENTRY)&_ZN7S3044C53v91Ev,
  (VTBL_ENTRY)&_ZN7S3044C53v92Ev,
  (VTBL_ENTRY)&_ZN7S3044C53v93Ev,
  (VTBL_ENTRY)&_ZN7S3044C53v94Ev,
  (VTBL_ENTRY)&_ZN7S3044C53v95Ev,
  (VTBL_ENTRY)&_ZN7S3044C53v96Ev,
};
extern VTBL_ENTRY _ZTI7S3044C5[];
extern  VTBL_ENTRY _ZTV7S3044C5[];
Class_Descriptor cd_S3044C5 = {  "S3044C5", // class name
  0,0,//no base classes
  &(vtc_S3044C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3044C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3044C5),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3044C6  {
  virtual void  v97(); // _ZN7S3044C63v97Ev
  virtual void  v98(); // _ZN7S3044C63v98Ev
  virtual void  v99(); // _ZN7S3044C63v99Ev
  virtual void  v100(); // _ZN7S3044C64v100Ev
  virtual void  v101(); // _ZN7S3044C64v101Ev
  virtual void  v102(); // _ZN7S3044C64v102Ev
  virtual void  v103(); // _ZN7S3044C64v103Ev
  virtual void  v104(); // _ZN7S3044C64v104Ev
  virtual void  v105(); // _ZN7S3044C64v105Ev
  ~S3044C6(); // tgen
  S3044C6(); // tgen
};
//SIG(-1 S3044C6) C1{ v1 v2 v3 v4 v5 v6 v7 v8 v9}


void  S3044C6 ::v97(){vfunc_called(this, "_ZN7S3044C63v97Ev");}
void  S3044C6 ::v98(){vfunc_called(this, "_ZN7S3044C63v98Ev");}
void  S3044C6 ::v99(){vfunc_called(this, "_ZN7S3044C63v99Ev");}
void  S3044C6 ::v100(){vfunc_called(this, "_ZN7S3044C64v100Ev");}
void  S3044C6 ::v101(){vfunc_called(this, "_ZN7S3044C64v101Ev");}
void  S3044C6 ::v102(){vfunc_called(this, "_ZN7S3044C64v102Ev");}
void  S3044C6 ::v103(){vfunc_called(this, "_ZN7S3044C64v103Ev");}
void  S3044C6 ::v104(){vfunc_called(this, "_ZN7S3044C64v104Ev");}
void  S3044C6 ::v105(){vfunc_called(this, "_ZN7S3044C64v105Ev");}
S3044C6 ::~S3044C6(){ note_dtor("S3044C6", this);} // tgen
S3044C6 ::S3044C6(){ note_ctor("S3044C6", this);} // tgen

static void Test_S3044C6()
{
  extern Class_Descriptor cd_S3044C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3044C6, buf);
    S3044C6 *dp, &lv = *(dp=new (buf) S3044C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3044C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3044C6)");
    test_class_info(&lv, &cd_S3044C6);
    dp->~S3044C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3044C6(Test_S3044C6, "S3044C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3044C6C1Ev();
extern void _ZN7S3044C6D1Ev();
Name_Map name_map_S3044C6[] = {
  NSPAIR(_ZN7S3044C6C1Ev),
  NSPAIR(_ZN7S3044C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3044C6[];
extern void _ZN7S3044C63v97Ev();
extern void _ZN7S3044C63v98Ev();
extern void _ZN7S3044C63v99Ev();
extern void _ZN7S3044C64v100Ev();
extern void _ZN7S3044C64v101Ev();
extern void _ZN7S3044C64v102Ev();
extern void _ZN7S3044C64v103Ev();
extern void _ZN7S3044C64v104Ev();
extern void _ZN7S3044C64v105Ev();
static  VTBL_ENTRY vtc_S3044C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3044C6[0]),
  (VTBL_ENTRY)&_ZN7S3044C63v97Ev,
  (VTBL_ENTRY)&_ZN7S3044C63v98Ev,
  (VTBL_ENTRY)&_ZN7S3044C63v99Ev,
  (VTBL_ENTRY)&_ZN7S3044C64v100Ev,
  (VTBL_ENTRY)&_ZN7S3044C64v101Ev,
  (VTBL_ENTRY)&_ZN7S3044C64v102Ev,
  (VTBL_ENTRY)&_ZN7S3044C64v103Ev,
  (VTBL_ENTRY)&_ZN7S3044C64v104Ev,
  (VTBL_ENTRY)&_ZN7S3044C64v105Ev,
};
extern VTBL_ENTRY _ZTI7S3044C6[];
extern  VTBL_ENTRY _ZTV7S3044C6[];
Class_Descriptor cd_S3044C6 = {  "S3044C6", // class name
  0,0,//no base classes
  &(vtc_S3044C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3044C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3044C6),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3044C2  : S3044C3 , S3044C5 , S3044C6 {
  void *s3044c2f0;
  ::S79C39_nt s3044c2f1;
  unsigned int s3044c2f2:1;
  unsigned int s3044c2f3:1;
  unsigned int s3044c2f4:1;
  unsigned int s3044c2f5:1;
  virtual  ~S3044C2(); // _ZN7S3044C2D1Ev
  virtual void  v106(); // _ZN7S3044C24v106Ev
  virtual void  v107(); // _ZN7S3044C24v107Ev
  virtual void  v108(); // _ZN7S3044C24v108Ev
  virtual void  v109(); // _ZN7S3044C24v109Ev
  virtual void  v110(); // _ZN7S3044C24v110Ev
  virtual void  v111(); // _ZN7S3044C24v111Ev
  virtual void  v112(); // _ZN7S3044C24v112Ev
  virtual void  v113(); // _ZN7S3044C24v113Ev
  virtual void  v114(); // _ZN7S3044C24v114Ev
  virtual void  v115(); // _ZN7S3044C24v115Ev
  virtual void  v116(); // _ZN7S3044C24v116Ev
  virtual void  v117(); // _ZN7S3044C24v117Ev
  virtual void  v118(); // _ZN7S3044C24v118Ev
  virtual void  v119(); // _ZN7S3044C24v119Ev
  virtual void  v120(); // _ZN7S3044C24v120Ev
  virtual void  v121(); // _ZN7S3044C24v121Ev
  virtual void  v122(); // _ZN7S3044C24v122Ev
  virtual void  v123(); // _ZN7S3044C24v123Ev
  virtual void  v124(); // _ZN7S3044C24v124Ev
  virtual void  v125(); // _ZN7S3044C24v125Ev
  virtual void  v126(); // _ZN7S3044C24v126Ev
  virtual void  v127(); // _ZN7S3044C24v127Ev
  virtual void  v128(); // _ZN7S3044C24v128Ev
  virtual void  v129(); // _ZN7S3044C24v129Ev
  S3044C2(); // tgen
};
//SIG(-1 S3044C2) C1{ BC2{ vd v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} BC4{ v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104} BC5{ v105 v106 v107 v108 v109 v110 v111 v112 v113} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 Fp FC6{ BC7{ BC8{ BC9{ m Fp Fi[2]}}}} Fi:1 Fi:1 Fi:1 Fi:1}


 S3044C2 ::~S3044C2(){ note_dtor("S3044C2", this);}
void  S3044C2 ::v106(){vfunc_called(this, "_ZN7S3044C24v106Ev");}
void  S3044C2 ::v107(){vfunc_called(this, "_ZN7S3044C24v107Ev");}
void  S3044C2 ::v108(){vfunc_called(this, "_ZN7S3044C24v108Ev");}
void  S3044C2 ::v109(){vfunc_called(this, "_ZN7S3044C24v109Ev");}
void  S3044C2 ::v110(){vfunc_called(this, "_ZN7S3044C24v110Ev");}
void  S3044C2 ::v111(){vfunc_called(this, "_ZN7S3044C24v111Ev");}
void  S3044C2 ::v112(){vfunc_called(this, "_ZN7S3044C24v112Ev");}
void  S3044C2 ::v113(){vfunc_called(this, "_ZN7S3044C24v113Ev");}
void  S3044C2 ::v114(){vfunc_called(this, "_ZN7S3044C24v114Ev");}
void  S3044C2 ::v115(){vfunc_called(this, "_ZN7S3044C24v115Ev");}
void  S3044C2 ::v116(){vfunc_called(this, "_ZN7S3044C24v116Ev");}
void  S3044C2 ::v117(){vfunc_called(this, "_ZN7S3044C24v117Ev");}
void  S3044C2 ::v118(){vfunc_called(this, "_ZN7S3044C24v118Ev");}
void  S3044C2 ::v119(){vfunc_called(this, "_ZN7S3044C24v119Ev");}
void  S3044C2 ::v120(){vfunc_called(this, "_ZN7S3044C24v120Ev");}
void  S3044C2 ::v121(){vfunc_called(this, "_ZN7S3044C24v121Ev");}
void  S3044C2 ::v122(){vfunc_called(this, "_ZN7S3044C24v122Ev");}
void  S3044C2 ::v123(){vfunc_called(this, "_ZN7S3044C24v123Ev");}
void  S3044C2 ::v124(){vfunc_called(this, "_ZN7S3044C24v124Ev");}
void  S3044C2 ::v125(){vfunc_called(this, "_ZN7S3044C24v125Ev");}
void  S3044C2 ::v126(){vfunc_called(this, "_ZN7S3044C24v126Ev");}
void  S3044C2 ::v127(){vfunc_called(this, "_ZN7S3044C24v127Ev");}
void  S3044C2 ::v128(){vfunc_called(this, "_ZN7S3044C24v128Ev");}
void  S3044C2 ::v129(){vfunc_called(this, "_ZN7S3044C24v129Ev");}
S3044C2 ::S3044C2(){ note_ctor("S3044C2", this);} // tgen

static void Test_S3044C2()
{
  extern Class_Descriptor cd_S3044C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,23)];
    init_test(&cd_S3044C2, buf);
    S3044C2 *dp, &lv = *(dp=new (buf) S3044C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,88), "sizeof(S3044C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3044C2)");
    check_base_class_offset(lv, (S3044C3*), 0, "S3044C2");
    check_base_class_offset(lv, (S3044C5*), ABISELECT(96,60), "S3044C2");
    check_base_class_offset(lv, (S3044C6*), ABISELECT(104,64), "S3044C2");
    check_field_offset(lv, s3044c2f0, ABISELECT(112,68), "S3044C2.s3044c2f0");
    check_field_offset(lv, s3044c2f1, ABISELECT(120,72), "S3044C2.s3044c2f1");
    set_bf_and_test(lv, s3044c2f2, ABISELECT(136,84), 0, 1, 1, "S3044C2");
    set_bf_and_test(lv, s3044c2f3, ABISELECT(136,84), 1, 1, 1, "S3044C2");
    set_bf_and_test(lv, s3044c2f4, ABISELECT(136,84), 2, 1, 1, "S3044C2");
    set_bf_and_test(lv, s3044c2f5, ABISELECT(136,84), 3, 1, 1, "S3044C2");
    test_class_info(&lv, &cd_S3044C2);
    dp->~S3044C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3044C2(Test_S3044C2, "S3044C2", ABISELECT(144,88));

#else // __cplusplus

extern void _ZN7S3044C2C1Ev();
extern void _ZN7S3044C2D1Ev();
Name_Map name_map_S3044C2[] = {
  NSPAIR(_ZN7S3044C2C1Ev),
  NSPAIR(_ZN7S3044C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3044C3;
extern VTBL_ENTRY _ZTI7S3044C3[];
extern  VTBL_ENTRY _ZTV7S3044C3[];
extern Class_Descriptor cd_S3044C5;
extern VTBL_ENTRY _ZTI7S3044C5[];
extern  VTBL_ENTRY _ZTV7S3044C5[];
extern Class_Descriptor cd_S3044C6;
extern VTBL_ENTRY _ZTI7S3044C6[];
extern  VTBL_ENTRY _ZTV7S3044C6[];
static Base_Class bases_S3044C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3044C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3044C5,    ABISELECT(96,60), //bcp->offset
    92, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3044C6,    ABISELECT(104,64), //bcp->offset
    110, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3044C2[];
extern void _ZN7S3044C2D1Ev();
extern void _ZN7S3044C2D0Ev();
extern void _ZN7S3044C33v17Ev();
extern void _ZN7S3044C33v18Ev();
extern void _ZN7S3044C33v19Ev();
extern void _ZN7S3044C33v20Ev();
extern void _ZN7S3044C33v21Ev();
extern void _ZN7S3044C33v22Ev();
extern void _ZN7S3044C33v23Ev();
extern void _ZN7S3044C33v24Ev();
extern void _ZN7S3044C33v25Ev();
extern void _ZN7S3044C33v26Ev();
extern void _ZN7S3044C33v27Ev();
extern void _ZN7S3044C33v28Ev();
extern void _ZN7S3044C33v29Ev();
extern void _ZN7S3044C33v30Ev();
extern void _ZN7S3044C33v31Ev();
extern void _ZN7S3044C33v32Ev();
extern void _ZN7S3044C33v33Ev();
extern void _ZN7S3044C33v34Ev();
extern void _ZN7S3044C33v35Ev();
extern void _ZN7S3044C33v36Ev();
extern void _ZN7S3044C33v37Ev();
extern void _ZN7S3044C33v38Ev();
extern void _ZN7S3044C33v39Ev();
extern void _ZN7S3044C33v40Ev();
extern void _ZN7S3044C33v41Ev();
extern void _ZN7S3044C33v42Ev();
extern void _ZN7S3044C33v43Ev();
extern void _ZN7S3044C33v44Ev();
extern void _ZN7S3044C33v45Ev();
extern void _ZN7S3044C33v46Ev();
extern void _ZN7S3044C33v47Ev();
extern void _ZN7S3044C33v48Ev();
extern void _ZN7S3044C33v49Ev();
extern void _ZN7S3044C33v50Ev();
extern void _ZN7S3044C33v51Ev();
extern void _ZN7S3044C33v52Ev();
extern void _ZN7S3044C33v53Ev();
extern void _ZN7S3044C33v54Ev();
extern void _ZN7S3044C33v55Ev();
extern void _ZN7S3044C33v56Ev();
extern void _ZN7S3044C33v57Ev();
extern void _ZN7S3044C33v58Ev();
extern void _ZN7S3044C33v59Ev();
extern void _ZN7S3044C33v60Ev();
extern void _ZN7S3044C33v61Ev();
extern void _ZN7S3044C33v62Ev();
extern void _ZN7S3044C33v63Ev();
extern void _ZN7S3044C33v64Ev();
extern void _ZN7S3044C33v65Ev();
extern void _ZN7S3044C33v66Ev();
extern void _ZN7S3044C33v67Ev();
extern void _ZN7S3044C33v68Ev();
extern void _ZN7S3044C33v69Ev();
extern void _ZN7S3044C33v70Ev();
extern void _ZN7S3044C33v71Ev();
extern void _ZN7S3044C33v72Ev();
extern void _ZN7S3044C33v73Ev();
extern void _ZN7S3044C33v74Ev();
extern void _ZN7S3044C33v75Ev();
extern void _ZN7S3044C33v76Ev();
extern void _ZN7S3044C33v77Ev();
extern void _ZN7S3044C33v78Ev();
extern void _ZN7S3044C33v79Ev();
extern void _ZN7S3044C33v80Ev();
extern void _ZN7S3044C24v106Ev();
extern void _ZN7S3044C24v107Ev();
extern void _ZN7S3044C24v108Ev();
extern void _ZN7S3044C24v109Ev();
extern void _ZN7S3044C24v110Ev();
extern void _ZN7S3044C24v111Ev();
extern void _ZN7S3044C24v112Ev();
extern void _ZN7S3044C24v113Ev();
extern void _ZN7S3044C24v114Ev();
extern void _ZN7S3044C24v115Ev();
extern void _ZN7S3044C24v116Ev();
extern void _ZN7S3044C24v117Ev();
extern void _ZN7S3044C24v118Ev();
extern void _ZN7S3044C24v119Ev();
extern void _ZN7S3044C24v120Ev();
extern void _ZN7S3044C24v121Ev();
extern void _ZN7S3044C24v122Ev();
extern void _ZN7S3044C24v123Ev();
extern void _ZN7S3044C24v124Ev();
extern void _ZN7S3044C24v125Ev();
extern void _ZN7S3044C24v126Ev();
extern void _ZN7S3044C24v127Ev();
extern void _ZN7S3044C24v128Ev();
extern void _ZN7S3044C24v129Ev();
extern void _ZN7S3044C53v81Ev();
extern void _ZN7S3044C53v82Ev();
extern void _ZN7S3044C53v83Ev();
extern void _ZN7S3044C53v84Ev();
extern void _ZN7S3044C53v85Ev();
extern void _ZN7S3044C53v86Ev();
extern void _ZN7S3044C53v87Ev();
extern void _ZN7S3044C53v88Ev();
extern void _ZN7S3044C53v89Ev();
extern void _ZN7S3044C53v90Ev();
extern void _ZN7S3044C53v91Ev();
extern void _ZN7S3044C53v92Ev();
extern void _ZN7S3044C53v93Ev();
extern void _ZN7S3044C53v94Ev();
extern void _ZN7S3044C53v95Ev();
extern void _ZN7S3044C53v96Ev();
extern void _ZN7S3044C63v97Ev();
extern void _ZN7S3044C63v98Ev();
extern void _ZN7S3044C63v99Ev();
extern void _ZN7S3044C64v100Ev();
extern void _ZN7S3044C64v101Ev();
extern void _ZN7S3044C64v102Ev();
extern void _ZN7S3044C64v103Ev();
extern void _ZN7S3044C64v104Ev();
extern void _ZN7S3044C64v105Ev();
static  VTBL_ENTRY vtc_S3044C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3044C2[0]),
  (VTBL_ENTRY)&_ZN7S3044C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3044C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v68Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v69Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v70Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v71Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v72Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v73Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v74Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v75Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v76Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v77Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v78Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v79Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v80Ev,
  (VTBL_ENTRY)&_ZN7S3044C24v106Ev,
  (VTBL_ENTRY)&_ZN7S3044C24v107Ev,
  (VTBL_ENTRY)&_ZN7S3044C24v108Ev,
  (VTBL_ENTRY)&_ZN7S3044C24v109Ev,
  (VTBL_ENTRY)&_ZN7S3044C24v110Ev,
  (VTBL_ENTRY)&_ZN7S3044C24v111Ev,
  (VTBL_ENTRY)&_ZN7S3044C24v112Ev,
  (VTBL_ENTRY)&_ZN7S3044C24v113Ev,
  (VTBL_ENTRY)&_ZN7S3044C24v114Ev,
  (VTBL_ENTRY)&_ZN7S3044C24v115Ev,
  (VTBL_ENTRY)&_ZN7S3044C24v116Ev,
  (VTBL_ENTRY)&_ZN7S3044C24v117Ev,
  (VTBL_ENTRY)&_ZN7S3044C24v118Ev,
  (VTBL_ENTRY)&_ZN7S3044C24v119Ev,
  (VTBL_ENTRY)&_ZN7S3044C24v120Ev,
  (VTBL_ENTRY)&_ZN7S3044C24v121Ev,
  (VTBL_ENTRY)&_ZN7S3044C24v122Ev,
  (VTBL_ENTRY)&_ZN7S3044C24v123Ev,
  (VTBL_ENTRY)&_ZN7S3044C24v124Ev,
  (VTBL_ENTRY)&_ZN7S3044C24v125Ev,
  (VTBL_ENTRY)&_ZN7S3044C24v126Ev,
  (VTBL_ENTRY)&_ZN7S3044C24v127Ev,
  (VTBL_ENTRY)&_ZN7S3044C24v128Ev,
  (VTBL_ENTRY)&_ZN7S3044C24v129Ev,
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S3044C2[0]),
  (VTBL_ENTRY)&_ZN7S3044C53v81Ev,
  (VTBL_ENTRY)&_ZN7S3044C53v82Ev,
  (VTBL_ENTRY)&_ZN7S3044C53v83Ev,
  (VTBL_ENTRY)&_ZN7S3044C53v84Ev,
  (VTBL_ENTRY)&_ZN7S3044C53v85Ev,
  (VTBL_ENTRY)&_ZN7S3044C53v86Ev,
  (VTBL_ENTRY)&_ZN7S3044C53v87Ev,
  (VTBL_ENTRY)&_ZN7S3044C53v88Ev,
  (VTBL_ENTRY)&_ZN7S3044C53v89Ev,
  (VTBL_ENTRY)&_ZN7S3044C53v90Ev,
  (VTBL_ENTRY)&_ZN7S3044C53v91Ev,
  (VTBL_ENTRY)&_ZN7S3044C53v92Ev,
  (VTBL_ENTRY)&_ZN7S3044C53v93Ev,
  (VTBL_ENTRY)&_ZN7S3044C53v94Ev,
  (VTBL_ENTRY)&_ZN7S3044C53v95Ev,
  (VTBL_ENTRY)&_ZN7S3044C53v96Ev,
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S3044C2[0]),
  (VTBL_ENTRY)&_ZN7S3044C63v97Ev,
  (VTBL_ENTRY)&_ZN7S3044C63v98Ev,
  (VTBL_ENTRY)&_ZN7S3044C63v99Ev,
  (VTBL_ENTRY)&_ZN7S3044C64v100Ev,
  (VTBL_ENTRY)&_ZN7S3044C64v101Ev,
  (VTBL_ENTRY)&_ZN7S3044C64v102Ev,
  (VTBL_ENTRY)&_ZN7S3044C64v103Ev,
  (VTBL_ENTRY)&_ZN7S3044C64v104Ev,
  (VTBL_ENTRY)&_ZN7S3044C64v105Ev,
};
extern VTBL_ENTRY _ZTI7S3044C2[];
extern  VTBL_ENTRY _ZTV7S3044C2[];
Class_Descriptor cd_S3044C2 = {  "S3044C2", // class name
  bases_S3044C2, 3,
  &(vtc_S3044C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,88), // object size
  NSPAIRA(_ZTI7S3044C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S3044C2),121, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3044C1  : S3044C2 {
  ::S79C44 s3044c1f0;
  unsigned int s3044c1f1:1;
  unsigned int s3044c1f2:1;
  virtual  ~S3044C1(); // _ZN7S3044C1D1Ev
  virtual void  v1(); // _ZN7S3044C12v1Ev
  virtual void  v2(); // _ZN7S3044C12v2Ev
  virtual void  v3(); // _ZN7S3044C12v3Ev
  virtual void  v4(); // _ZN7S3044C12v4Ev
  virtual void  v5(); // _ZN7S3044C12v5Ev
  virtual void  v6(); // _ZN7S3044C12v6Ev
  virtual void  v7(); // _ZN7S3044C12v7Ev
  virtual void  v8(); // _ZN7S3044C12v8Ev
  virtual void  v9(); // _ZN7S3044C12v9Ev
  virtual void  v10(); // _ZN7S3044C13v10Ev
  virtual void  v11(); // _ZN7S3044C13v11Ev
  virtual void  v12(); // _ZN7S3044C13v12Ev
  virtual void  v13(); // _ZN7S3044C13v13Ev
  virtual void  v14(); // _ZN7S3044C13v14Ev
  virtual void  v15(); // _ZN7S3044C13v15Ev
  virtual void  v16(); // _ZN7S3044C13v16Ev
  S3044C1(); // tgen
};
//SIG(1 S3044C1) C1{ BC2{ BC3{ vd v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} BC5{ v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96} BC6{ v97 v98 v99 v100 v101 v102 v103 v104 v105} vd v106 v107 v108 v109 v110 v111 v112 v113 v114 v115 v116 v117 v118 v119 v120 v121 v122 v123 v124 v125 v126 v127 v128 v129 Fp FC7{ BC8{ BC9{ BC10{ m Fp Fi[2]}}}} Fi:1 Fi:1 Fi:1 Fi:1} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 FC11{ BC12{ BC10}} Fi:1 Fi:1}


 S3044C1 ::~S3044C1(){ note_dtor("S3044C1", this);}
void  S3044C1 ::v1(){vfunc_called(this, "_ZN7S3044C12v1Ev");}
void  S3044C1 ::v2(){vfunc_called(this, "_ZN7S3044C12v2Ev");}
void  S3044C1 ::v3(){vfunc_called(this, "_ZN7S3044C12v3Ev");}
void  S3044C1 ::v4(){vfunc_called(this, "_ZN7S3044C12v4Ev");}
void  S3044C1 ::v5(){vfunc_called(this, "_ZN7S3044C12v5Ev");}
void  S3044C1 ::v6(){vfunc_called(this, "_ZN7S3044C12v6Ev");}
void  S3044C1 ::v7(){vfunc_called(this, "_ZN7S3044C12v7Ev");}
void  S3044C1 ::v8(){vfunc_called(this, "_ZN7S3044C12v8Ev");}
void  S3044C1 ::v9(){vfunc_called(this, "_ZN7S3044C12v9Ev");}
void  S3044C1 ::v10(){vfunc_called(this, "_ZN7S3044C13v10Ev");}
void  S3044C1 ::v11(){vfunc_called(this, "_ZN7S3044C13v11Ev");}
void  S3044C1 ::v12(){vfunc_called(this, "_ZN7S3044C13v12Ev");}
void  S3044C1 ::v13(){vfunc_called(this, "_ZN7S3044C13v13Ev");}
void  S3044C1 ::v14(){vfunc_called(this, "_ZN7S3044C13v14Ev");}
void  S3044C1 ::v15(){vfunc_called(this, "_ZN7S3044C13v15Ev");}
void  S3044C1 ::v16(){vfunc_called(this, "_ZN7S3044C13v16Ev");}
S3044C1 ::S3044C1(){ note_ctor("S3044C1", this);} // tgen

static void Test_S3044C1()
{
  extern Class_Descriptor cd_S3044C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,27)];
    init_test(&cd_S3044C1, buf);
    S3044C1 *dp, &lv = *(dp=new (buf) S3044C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,104), "sizeof(S3044C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3044C1)");
    check_base_class_offset(lv, (S3044C3*)(S3044C2*), 0, "S3044C1");
    check_base_class_offset(lv, (S3044C5*)(S3044C2*), ABISELECT(96,60), "S3044C1");
    check_base_class_offset(lv, (S3044C6*)(S3044C2*), ABISELECT(104,64), "S3044C1");
    check_base_class_offset(lv, (S3044C2*), 0, "S3044C1");
    check_field_offset(lv, s3044c1f0, ABISELECT(144,88), "S3044C1.s3044c1f0");
    set_bf_and_test(lv, s3044c1f1, ABISELECT(160,100), 0, 1, 1, "S3044C1");
    set_bf_and_test(lv, s3044c1f2, ABISELECT(160,100), 1, 1, 1, "S3044C1");
    test_class_info(&lv, &cd_S3044C1);
    dp->~S3044C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3044C1(Test_S3044C1, "S3044C1", ABISELECT(168,104));

#else // __cplusplus

extern void _ZN7S3044C1C1Ev();
extern void _ZN7S3044C1D1Ev();
Name_Map name_map_S3044C1[] = {
  NSPAIR(_ZN7S3044C1C1Ev),
  NSPAIR(_ZN7S3044C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3044C3;
extern VTBL_ENTRY _ZTI7S3044C3[];
extern  VTBL_ENTRY _ZTV7S3044C3[];
extern Class_Descriptor cd_S3044C5;
extern VTBL_ENTRY _ZTI7S3044C5[];
extern  VTBL_ENTRY _ZTV7S3044C5[];
extern Class_Descriptor cd_S3044C6;
extern VTBL_ENTRY _ZTI7S3044C6[];
extern  VTBL_ENTRY _ZTV7S3044C6[];
extern Class_Descriptor cd_S3044C2;
extern VTBL_ENTRY _ZTI7S3044C2[];
extern  VTBL_ENTRY _ZTV7S3044C2[];
static Base_Class bases_S3044C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3044C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S3044C5,    ABISELECT(96,60), //bcp->offset
    108, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S3044C6,    ABISELECT(104,64), //bcp->offset
    126, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S3044C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3044C1[];
extern void _ZN7S3044C1D1Ev();
extern void _ZN7S3044C1D0Ev();
extern void _ZN7S3044C33v17Ev();
extern void _ZN7S3044C33v18Ev();
extern void _ZN7S3044C33v19Ev();
extern void _ZN7S3044C33v20Ev();
extern void _ZN7S3044C33v21Ev();
extern void _ZN7S3044C33v22Ev();
extern void _ZN7S3044C33v23Ev();
extern void _ZN7S3044C33v24Ev();
extern void _ZN7S3044C33v25Ev();
extern void _ZN7S3044C33v26Ev();
extern void _ZN7S3044C33v27Ev();
extern void _ZN7S3044C33v28Ev();
extern void _ZN7S3044C33v29Ev();
extern void _ZN7S3044C33v30Ev();
extern void _ZN7S3044C33v31Ev();
extern void _ZN7S3044C33v32Ev();
extern void _ZN7S3044C33v33Ev();
extern void _ZN7S3044C33v34Ev();
extern void _ZN7S3044C33v35Ev();
extern void _ZN7S3044C33v36Ev();
extern void _ZN7S3044C33v37Ev();
extern void _ZN7S3044C33v38Ev();
extern void _ZN7S3044C33v39Ev();
extern void _ZN7S3044C33v40Ev();
extern void _ZN7S3044C33v41Ev();
extern void _ZN7S3044C33v42Ev();
extern void _ZN7S3044C33v43Ev();
extern void _ZN7S3044C33v44Ev();
extern void _ZN7S3044C33v45Ev();
extern void _ZN7S3044C33v46Ev();
extern void _ZN7S3044C33v47Ev();
extern void _ZN7S3044C33v48Ev();
extern void _ZN7S3044C33v49Ev();
extern void _ZN7S3044C33v50Ev();
extern void _ZN7S3044C33v51Ev();
extern void _ZN7S3044C33v52Ev();
extern void _ZN7S3044C33v53Ev();
extern void _ZN7S3044C33v54Ev();
extern void _ZN7S3044C33v55Ev();
extern void _ZN7S3044C33v56Ev();
extern void _ZN7S3044C33v57Ev();
extern void _ZN7S3044C33v58Ev();
extern void _ZN7S3044C33v59Ev();
extern void _ZN7S3044C33v60Ev();
extern void _ZN7S3044C33v61Ev();
extern void _ZN7S3044C33v62Ev();
extern void _ZN7S3044C33v63Ev();
extern void _ZN7S3044C33v64Ev();
extern void _ZN7S3044C33v65Ev();
extern void _ZN7S3044C33v66Ev();
extern void _ZN7S3044C33v67Ev();
extern void _ZN7S3044C33v68Ev();
extern void _ZN7S3044C33v69Ev();
extern void _ZN7S3044C33v70Ev();
extern void _ZN7S3044C33v71Ev();
extern void _ZN7S3044C33v72Ev();
extern void _ZN7S3044C33v73Ev();
extern void _ZN7S3044C33v74Ev();
extern void _ZN7S3044C33v75Ev();
extern void _ZN7S3044C33v76Ev();
extern void _ZN7S3044C33v77Ev();
extern void _ZN7S3044C33v78Ev();
extern void _ZN7S3044C33v79Ev();
extern void _ZN7S3044C33v80Ev();
extern void _ZN7S3044C24v106Ev();
extern void _ZN7S3044C24v107Ev();
extern void _ZN7S3044C24v108Ev();
extern void _ZN7S3044C24v109Ev();
extern void _ZN7S3044C24v110Ev();
extern void _ZN7S3044C24v111Ev();
extern void _ZN7S3044C24v112Ev();
extern void _ZN7S3044C24v113Ev();
extern void _ZN7S3044C24v114Ev();
extern void _ZN7S3044C24v115Ev();
extern void _ZN7S3044C24v116Ev();
extern void _ZN7S3044C24v117Ev();
extern void _ZN7S3044C24v118Ev();
extern void _ZN7S3044C24v119Ev();
extern void _ZN7S3044C24v120Ev();
extern void _ZN7S3044C24v121Ev();
extern void _ZN7S3044C24v122Ev();
extern void _ZN7S3044C24v123Ev();
extern void _ZN7S3044C24v124Ev();
extern void _ZN7S3044C24v125Ev();
extern void _ZN7S3044C24v126Ev();
extern void _ZN7S3044C24v127Ev();
extern void _ZN7S3044C24v128Ev();
extern void _ZN7S3044C24v129Ev();
extern void _ZN7S3044C12v1Ev();
extern void _ZN7S3044C12v2Ev();
extern void _ZN7S3044C12v3Ev();
extern void _ZN7S3044C12v4Ev();
extern void _ZN7S3044C12v5Ev();
extern void _ZN7S3044C12v6Ev();
extern void _ZN7S3044C12v7Ev();
extern void _ZN7S3044C12v8Ev();
extern void _ZN7S3044C12v9Ev();
extern void _ZN7S3044C13v10Ev();
extern void _ZN7S3044C13v11Ev();
extern void _ZN7S3044C13v12Ev();
extern void _ZN7S3044C13v13Ev();
extern void _ZN7S3044C13v14Ev();
extern void _ZN7S3044C13v15Ev();
extern void _ZN7S3044C13v16Ev();
extern void _ZN7S3044C53v81Ev();
extern void _ZN7S3044C53v82Ev();
extern void _ZN7S3044C53v83Ev();
extern void _ZN7S3044C53v84Ev();
extern void _ZN7S3044C53v85Ev();
extern void _ZN7S3044C53v86Ev();
extern void _ZN7S3044C53v87Ev();
extern void _ZN7S3044C53v88Ev();
extern void _ZN7S3044C53v89Ev();
extern void _ZN7S3044C53v90Ev();
extern void _ZN7S3044C53v91Ev();
extern void _ZN7S3044C53v92Ev();
extern void _ZN7S3044C53v93Ev();
extern void _ZN7S3044C53v94Ev();
extern void _ZN7S3044C53v95Ev();
extern void _ZN7S3044C53v96Ev();
extern void _ZN7S3044C63v97Ev();
extern void _ZN7S3044C63v98Ev();
extern void _ZN7S3044C63v99Ev();
extern void _ZN7S3044C64v100Ev();
extern void _ZN7S3044C64v101Ev();
extern void _ZN7S3044C64v102Ev();
extern void _ZN7S3044C64v103Ev();
extern void _ZN7S3044C64v104Ev();
extern void _ZN7S3044C64v105Ev();
static  VTBL_ENTRY vtc_S3044C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3044C1[0]),
  (VTBL_ENTRY)&_ZN7S3044C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3044C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v68Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v69Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v70Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v71Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v72Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v73Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v74Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v75Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v76Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v77Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v78Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v79Ev,
  (VTBL_ENTRY)&_ZN7S3044C33v80Ev,
  (VTBL_ENTRY)&_ZN7S3044C24v106Ev,
  (VTBL_ENTRY)&_ZN7S3044C24v107Ev,
  (VTBL_ENTRY)&_ZN7S3044C24v108Ev,
  (VTBL_ENTRY)&_ZN7S3044C24v109Ev,
  (VTBL_ENTRY)&_ZN7S3044C24v110Ev,
  (VTBL_ENTRY)&_ZN7S3044C24v111Ev,
  (VTBL_ENTRY)&_ZN7S3044C24v112Ev,
  (VTBL_ENTRY)&_ZN7S3044C24v113Ev,
  (VTBL_ENTRY)&_ZN7S3044C24v114Ev,
  (VTBL_ENTRY)&_ZN7S3044C24v115Ev,
  (VTBL_ENTRY)&_ZN7S3044C24v116Ev,
  (VTBL_ENTRY)&_ZN7S3044C24v117Ev,
  (VTBL_ENTRY)&_ZN7S3044C24v118Ev,
  (VTBL_ENTRY)&_ZN7S3044C24v119Ev,
  (VTBL_ENTRY)&_ZN7S3044C24v120Ev,
  (VTBL_ENTRY)&_ZN7S3044C24v121Ev,
  (VTBL_ENTRY)&_ZN7S3044C24v122Ev,
  (VTBL_ENTRY)&_ZN7S3044C24v123Ev,
  (VTBL_ENTRY)&_ZN7S3044C24v124Ev,
  (VTBL_ENTRY)&_ZN7S3044C24v125Ev,
  (VTBL_ENTRY)&_ZN7S3044C24v126Ev,
  (VTBL_ENTRY)&_ZN7S3044C24v127Ev,
  (VTBL_ENTRY)&_ZN7S3044C24v128Ev,
  (VTBL_ENTRY)&_ZN7S3044C24v129Ev,
  (VTBL_ENTRY)&_ZN7S3044C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3044C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3044C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3044C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3044C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3044C12v6Ev,
  (VTBL_ENTRY)&_ZN7S3044C12v7Ev,
  (VTBL_ENTRY)&_ZN7S3044C12v8Ev,
  (VTBL_ENTRY)&_ZN7S3044C12v9Ev,
  (VTBL_ENTRY)&_ZN7S3044C13v10Ev,
  (VTBL_ENTRY)&_ZN7S3044C13v11Ev,
  (VTBL_ENTRY)&_ZN7S3044C13v12Ev,
  (VTBL_ENTRY)&_ZN7S3044C13v13Ev,
  (VTBL_ENTRY)&_ZN7S3044C13v14Ev,
  (VTBL_ENTRY)&_ZN7S3044C13v15Ev,
  (VTBL_ENTRY)&_ZN7S3044C13v16Ev,
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S3044C1[0]),
  (VTBL_ENTRY)&_ZN7S3044C53v81Ev,
  (VTBL_ENTRY)&_ZN7S3044C53v82Ev,
  (VTBL_ENTRY)&_ZN7S3044C53v83Ev,
  (VTBL_ENTRY)&_ZN7S3044C53v84Ev,
  (VTBL_ENTRY)&_ZN7S3044C53v85Ev,
  (VTBL_ENTRY)&_ZN7S3044C53v86Ev,
  (VTBL_ENTRY)&_ZN7S3044C53v87Ev,
  (VTBL_ENTRY)&_ZN7S3044C53v88Ev,
  (VTBL_ENTRY)&_ZN7S3044C53v89Ev,
  (VTBL_ENTRY)&_ZN7S3044C53v90Ev,
  (VTBL_ENTRY)&_ZN7S3044C53v91Ev,
  (VTBL_ENTRY)&_ZN7S3044C53v92Ev,
  (VTBL_ENTRY)&_ZN7S3044C53v93Ev,
  (VTBL_ENTRY)&_ZN7S3044C53v94Ev,
  (VTBL_ENTRY)&_ZN7S3044C53v95Ev,
  (VTBL_ENTRY)&_ZN7S3044C53v96Ev,
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S3044C1[0]),
  (VTBL_ENTRY)&_ZN7S3044C63v97Ev,
  (VTBL_ENTRY)&_ZN7S3044C63v98Ev,
  (VTBL_ENTRY)&_ZN7S3044C63v99Ev,
  (VTBL_ENTRY)&_ZN7S3044C64v100Ev,
  (VTBL_ENTRY)&_ZN7S3044C64v101Ev,
  (VTBL_ENTRY)&_ZN7S3044C64v102Ev,
  (VTBL_ENTRY)&_ZN7S3044C64v103Ev,
  (VTBL_ENTRY)&_ZN7S3044C64v104Ev,
  (VTBL_ENTRY)&_ZN7S3044C64v105Ev,
};
extern VTBL_ENTRY _ZTI7S3044C1[];
extern  VTBL_ENTRY _ZTV7S3044C1[];
Class_Descriptor cd_S3044C1 = {  "S3044C1", // class name
  bases_S3044C1, 4,
  &(vtc_S3044C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(168,104), // object size
  NSPAIRA(_ZTI7S3044C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3044C1),137, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  4, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3031C3  {
  int s3031c3f0;
  __tsi64 s3031c3f1;
  void *s3031c3f2[4];
  int s3031c3f3[2];
  void *s3031c3f4;
  ::S79C8_nt s3031c3f5;
  void *s3031c3f6[2];
  virtual  ~S3031C3(); // _ZN7S3031C3D1Ev
  virtual void  v15(); // _ZN7S3031C33v15Ev
  virtual void  v16(); // _ZN7S3031C33v16Ev
  virtual void  v17(); // _ZN7S3031C33v17Ev
  virtual void  v18(); // _ZN7S3031C33v18Ev
  virtual void  v19(); // _ZN7S3031C33v19Ev
  virtual void  v20(); // _ZN7S3031C33v20Ev
  virtual void  v21(); // _ZN7S3031C33v21Ev
  virtual void  v22(); // _ZN7S3031C33v22Ev
  virtual void  v23(); // _ZN7S3031C33v23Ev
  virtual void  v24(); // _ZN7S3031C33v24Ev
  virtual void  v25(); // _ZN7S3031C33v25Ev
  virtual void  v26(); // _ZN7S3031C33v26Ev
  virtual void  v27(); // _ZN7S3031C33v27Ev
  virtual void  v28(); // _ZN7S3031C33v28Ev
  virtual void  v29(); // _ZN7S3031C33v29Ev
  virtual void  v30(); // _ZN7S3031C33v30Ev
  virtual void  v31(); // _ZN7S3031C33v31Ev
  virtual void  v32(); // _ZN7S3031C33v32Ev
  virtual void  v33(); // _ZN7S3031C33v33Ev
  virtual void  v34(); // _ZN7S3031C33v34Ev
  virtual void  v35(); // _ZN7S3031C33v35Ev
  virtual void  v36(); // _ZN7S3031C33v36Ev
  virtual void  v37(); // _ZN7S3031C33v37Ev
  virtual void  v38(); // _ZN7S3031C33v38Ev
  virtual void  v39(); // _ZN7S3031C33v39Ev
  virtual void  v40(); // _ZN7S3031C33v40Ev
  virtual void  v41(); // _ZN7S3031C33v41Ev
  virtual void  v42(); // _ZN7S3031C33v42Ev
  virtual void  v43(); // _ZN7S3031C33v43Ev
  virtual void  v44(); // _ZN7S3031C33v44Ev
  virtual void  v45(); // _ZN7S3031C33v45Ev
  virtual void  v46(); // _ZN7S3031C33v46Ev
  virtual void  v47(); // _ZN7S3031C33v47Ev
  virtual void  v48(); // _ZN7S3031C33v48Ev
  virtual void  v49(); // _ZN7S3031C33v49Ev
  virtual void  v50(); // _ZN7S3031C33v50Ev
  virtual void  v51(); // _ZN7S3031C33v51Ev
  virtual void  v52(); // _ZN7S3031C33v52Ev
  virtual void  v53(); // _ZN7S3031C33v53Ev
  virtual void  v54(); // _ZN7S3031C33v54Ev
  virtual void  v55(); // _ZN7S3031C33v55Ev
  virtual void  v56(); // _ZN7S3031C33v56Ev
  virtual void  v57(); // _ZN7S3031C33v57Ev
  virtual void  v58(); // _ZN7S3031C33v58Ev
  virtual void  v59(); // _ZN7S3031C33v59Ev
  virtual void  v60(); // _ZN7S3031C33v60Ev
  virtual void  v61(); // _ZN7S3031C33v61Ev
  virtual void  v62(); // _ZN7S3031C33v62Ev
  virtual void  v63(); // _ZN7S3031C33v63Ev
  virtual void  v64(); // _ZN7S3031C33v64Ev
  virtual void  v65(); // _ZN7S3031C33v65Ev
  virtual void  v66(); // _ZN7S3031C33v66Ev
  virtual void  v67(); // _ZN7S3031C33v67Ev
  virtual void  v68(); // _ZN7S3031C33v68Ev
  virtual void  v69(); // _ZN7S3031C33v69Ev
  virtual void  v70(); // _ZN7S3031C33v70Ev
  virtual void  v71(); // _ZN7S3031C33v71Ev
  virtual void  v72(); // _ZN7S3031C33v72Ev
  virtual void  v73(); // _ZN7S3031C33v73Ev
  virtual void  v74(); // _ZN7S3031C33v74Ev
  virtual void  v75(); // _ZN7S3031C33v75Ev
  virtual void  v76(); // _ZN7S3031C33v76Ev
  virtual void  v77(); // _ZN7S3031C33v77Ev
  virtual void  v78(); // _ZN7S3031C33v78Ev
  S3031C3(); // tgen
};
//SIG(-1 S3031C3) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 Fi FL Fp[4] Fi[2] Fp FC2{ m Fi[2]} Fp[2]}


 S3031C3 ::~S3031C3(){ note_dtor("S3031C3", this);}
void  S3031C3 ::v15(){vfunc_called(this, "_ZN7S3031C33v15Ev");}
void  S3031C3 ::v16(){vfunc_called(this, "_ZN7S3031C33v16Ev");}
void  S3031C3 ::v17(){vfunc_called(this, "_ZN7S3031C33v17Ev");}
void  S3031C3 ::v18(){vfunc_called(this, "_ZN7S3031C33v18Ev");}
void  S3031C3 ::v19(){vfunc_called(this, "_ZN7S3031C33v19Ev");}
void  S3031C3 ::v20(){vfunc_called(this, "_ZN7S3031C33v20Ev");}
void  S3031C3 ::v21(){vfunc_called(this, "_ZN7S3031C33v21Ev");}
void  S3031C3 ::v22(){vfunc_called(this, "_ZN7S3031C33v22Ev");}
void  S3031C3 ::v23(){vfunc_called(this, "_ZN7S3031C33v23Ev");}
void  S3031C3 ::v24(){vfunc_called(this, "_ZN7S3031C33v24Ev");}
void  S3031C3 ::v25(){vfunc_called(this, "_ZN7S3031C33v25Ev");}
void  S3031C3 ::v26(){vfunc_called(this, "_ZN7S3031C33v26Ev");}
void  S3031C3 ::v27(){vfunc_called(this, "_ZN7S3031C33v27Ev");}
void  S3031C3 ::v28(){vfunc_called(this, "_ZN7S3031C33v28Ev");}
void  S3031C3 ::v29(){vfunc_called(this, "_ZN7S3031C33v29Ev");}
void  S3031C3 ::v30(){vfunc_called(this, "_ZN7S3031C33v30Ev");}
void  S3031C3 ::v31(){vfunc_called(this, "_ZN7S3031C33v31Ev");}
void  S3031C3 ::v32(){vfunc_called(this, "_ZN7S3031C33v32Ev");}
void  S3031C3 ::v33(){vfunc_called(this, "_ZN7S3031C33v33Ev");}
void  S3031C3 ::v34(){vfunc_called(this, "_ZN7S3031C33v34Ev");}
void  S3031C3 ::v35(){vfunc_called(this, "_ZN7S3031C33v35Ev");}
void  S3031C3 ::v36(){vfunc_called(this, "_ZN7S3031C33v36Ev");}
void  S3031C3 ::v37(){vfunc_called(this, "_ZN7S3031C33v37Ev");}
void  S3031C3 ::v38(){vfunc_called(this, "_ZN7S3031C33v38Ev");}
void  S3031C3 ::v39(){vfunc_called(this, "_ZN7S3031C33v39Ev");}
void  S3031C3 ::v40(){vfunc_called(this, "_ZN7S3031C33v40Ev");}
void  S3031C3 ::v41(){vfunc_called(this, "_ZN7S3031C33v41Ev");}
void  S3031C3 ::v42(){vfunc_called(this, "_ZN7S3031C33v42Ev");}
void  S3031C3 ::v43(){vfunc_called(this, "_ZN7S3031C33v43Ev");}
void  S3031C3 ::v44(){vfunc_called(this, "_ZN7S3031C33v44Ev");}
void  S3031C3 ::v45(){vfunc_called(this, "_ZN7S3031C33v45Ev");}
void  S3031C3 ::v46(){vfunc_called(this, "_ZN7S3031C33v46Ev");}
void  S3031C3 ::v47(){vfunc_called(this, "_ZN7S3031C33v47Ev");}
void  S3031C3 ::v48(){vfunc_called(this, "_ZN7S3031C33v48Ev");}
void  S3031C3 ::v49(){vfunc_called(this, "_ZN7S3031C33v49Ev");}
void  S3031C3 ::v50(){vfunc_called(this, "_ZN7S3031C33v50Ev");}
void  S3031C3 ::v51(){vfunc_called(this, "_ZN7S3031C33v51Ev");}
void  S3031C3 ::v52(){vfunc_called(this, "_ZN7S3031C33v52Ev");}
void  S3031C3 ::v53(){vfunc_called(this, "_ZN7S3031C33v53Ev");}
void  S3031C3 ::v54(){vfunc_called(this, "_ZN7S3031C33v54Ev");}
void  S3031C3 ::v55(){vfunc_called(this, "_ZN7S3031C33v55Ev");}
void  S3031C3 ::v56(){vfunc_called(this, "_ZN7S3031C33v56Ev");}
void  S3031C3 ::v57(){vfunc_called(this, "_ZN7S3031C33v57Ev");}
void  S3031C3 ::v58(){vfunc_called(this, "_ZN7S3031C33v58Ev");}
void  S3031C3 ::v59(){vfunc_called(this, "_ZN7S3031C33v59Ev");}
void  S3031C3 ::v60(){vfunc_called(this, "_ZN7S3031C33v60Ev");}
void  S3031C3 ::v61(){vfunc_called(this, "_ZN7S3031C33v61Ev");}
void  S3031C3 ::v62(){vfunc_called(this, "_ZN7S3031C33v62Ev");}
void  S3031C3 ::v63(){vfunc_called(this, "_ZN7S3031C33v63Ev");}
void  S3031C3 ::v64(){vfunc_called(this, "_ZN7S3031C33v64Ev");}
void  S3031C3 ::v65(){vfunc_called(this, "_ZN7S3031C33v65Ev");}
void  S3031C3 ::v66(){vfunc_called(this, "_ZN7S3031C33v66Ev");}
void  S3031C3 ::v67(){vfunc_called(this, "_ZN7S3031C33v67Ev");}
void  S3031C3 ::v68(){vfunc_called(this, "_ZN7S3031C33v68Ev");}
void  S3031C3 ::v69(){vfunc_called(this, "_ZN7S3031C33v69Ev");}
void  S3031C3 ::v70(){vfunc_called(this, "_ZN7S3031C33v70Ev");}
void  S3031C3 ::v71(){vfunc_called(this, "_ZN7S3031C33v71Ev");}
void  S3031C3 ::v72(){vfunc_called(this, "_ZN7S3031C33v72Ev");}
void  S3031C3 ::v73(){vfunc_called(this, "_ZN7S3031C33v73Ev");}
void  S3031C3 ::v74(){vfunc_called(this, "_ZN7S3031C33v74Ev");}
void  S3031C3 ::v75(){vfunc_called(this, "_ZN7S3031C33v75Ev");}
void  S3031C3 ::v76(){vfunc_called(this, "_ZN7S3031C33v76Ev");}
void  S3031C3 ::v77(){vfunc_called(this, "_ZN7S3031C33v77Ev");}
void  S3031C3 ::v78(){vfunc_called(this, "_ZN7S3031C33v78Ev");}
S3031C3 ::S3031C3(){ note_ctor("S3031C3", this);} // tgen

static void Test_S3031C3()
{
  extern Class_Descriptor cd_S3031C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S3031C3, buf);
    S3031C3 *dp, &lv = *(dp=new (buf) S3031C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S3031C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3031C3)");
    check_field_offset(lv, s3031c3f0, ABISELECT(8,4), "S3031C3.s3031c3f0");
    check_field_offset(lv, s3031c3f1, ABISELECT(16,8), "S3031C3.s3031c3f1");
    check_field_offset(lv, s3031c3f2, ABISELECT(24,16), "S3031C3.s3031c3f2");
    check_field_offset(lv, s3031c3f3, ABISELECT(56,32), "S3031C3.s3031c3f3");
    check_field_offset(lv, s3031c3f4, ABISELECT(64,40), "S3031C3.s3031c3f4");
    check_field_offset(lv, s3031c3f5, ABISELECT(72,44), "S3031C3.s3031c3f5");
    check_field_offset(lv, s3031c3f6, ABISELECT(80,52), "S3031C3.s3031c3f6");
    test_class_info(&lv, &cd_S3031C3);
    dp->~S3031C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3031C3(Test_S3031C3, "S3031C3", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S3031C3C1Ev();
extern void _ZN7S3031C3D1Ev();
Name_Map name_map_S3031C3[] = {
  NSPAIR(_ZN7S3031C3C1Ev),
  NSPAIR(_ZN7S3031C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3031C3[];
extern void _ZN7S3031C3D1Ev();
extern void _ZN7S3031C3D0Ev();
extern void _ZN7S3031C33v15Ev();
extern void _ZN7S3031C33v16Ev();
extern void _ZN7S3031C33v17Ev();
extern void _ZN7S3031C33v18Ev();
extern void _ZN7S3031C33v19Ev();
extern void _ZN7S3031C33v20Ev();
extern void _ZN7S3031C33v21Ev();
extern void _ZN7S3031C33v22Ev();
extern void _ZN7S3031C33v23Ev();
extern void _ZN7S3031C33v24Ev();
extern void _ZN7S3031C33v25Ev();
extern void _ZN7S3031C33v26Ev();
extern void _ZN7S3031C33v27Ev();
extern void _ZN7S3031C33v28Ev();
extern void _ZN7S3031C33v29Ev();
extern void _ZN7S3031C33v30Ev();
extern void _ZN7S3031C33v31Ev();
extern void _ZN7S3031C33v32Ev();
extern void _ZN7S3031C33v33Ev();
extern void _ZN7S3031C33v34Ev();
extern void _ZN7S3031C33v35Ev();
extern void _ZN7S3031C33v36Ev();
extern void _ZN7S3031C33v37Ev();
extern void _ZN7S3031C33v38Ev();
extern void _ZN7S3031C33v39Ev();
extern void _ZN7S3031C33v40Ev();
extern void _ZN7S3031C33v41Ev();
extern void _ZN7S3031C33v42Ev();
extern void _ZN7S3031C33v43Ev();
extern void _ZN7S3031C33v44Ev();
extern void _ZN7S3031C33v45Ev();
extern void _ZN7S3031C33v46Ev();
extern void _ZN7S3031C33v47Ev();
extern void _ZN7S3031C33v48Ev();
extern void _ZN7S3031C33v49Ev();
extern void _ZN7S3031C33v50Ev();
extern void _ZN7S3031C33v51Ev();
extern void _ZN7S3031C33v52Ev();
extern void _ZN7S3031C33v53Ev();
extern void _ZN7S3031C33v54Ev();
extern void _ZN7S3031C33v55Ev();
extern void _ZN7S3031C33v56Ev();
extern void _ZN7S3031C33v57Ev();
extern void _ZN7S3031C33v58Ev();
extern void _ZN7S3031C33v59Ev();
extern void _ZN7S3031C33v60Ev();
extern void _ZN7S3031C33v61Ev();
extern void _ZN7S3031C33v62Ev();
extern void _ZN7S3031C33v63Ev();
extern void _ZN7S3031C33v64Ev();
extern void _ZN7S3031C33v65Ev();
extern void _ZN7S3031C33v66Ev();
extern void _ZN7S3031C33v67Ev();
extern void _ZN7S3031C33v68Ev();
extern void _ZN7S3031C33v69Ev();
extern void _ZN7S3031C33v70Ev();
extern void _ZN7S3031C33v71Ev();
extern void _ZN7S3031C33v72Ev();
extern void _ZN7S3031C33v73Ev();
extern void _ZN7S3031C33v74Ev();
extern void _ZN7S3031C33v75Ev();
extern void _ZN7S3031C33v76Ev();
extern void _ZN7S3031C33v77Ev();
extern void _ZN7S3031C33v78Ev();
static  VTBL_ENTRY vtc_S3031C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3031C3[0]),
  (VTBL_ENTRY)&_ZN7S3031C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3031C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v68Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v69Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v70Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v71Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v72Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v73Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v74Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v75Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v76Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v77Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v78Ev,
};
extern VTBL_ENTRY _ZTI7S3031C3[];
extern  VTBL_ENTRY _ZTV7S3031C3[];
Class_Descriptor cd_S3031C3 = {  "S3031C3", // class name
  0,0,//no base classes
  &(vtc_S3031C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S3031C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3031C3),68, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3031C5  {
  virtual void  v79(); // _ZN7S3031C53v79Ev
  virtual void  v80(); // _ZN7S3031C53v80Ev
  virtual void  v81(); // _ZN7S3031C53v81Ev
  virtual void  v82(); // _ZN7S3031C53v82Ev
  virtual void  v83(); // _ZN7S3031C53v83Ev
  virtual void  v84(); // _ZN7S3031C53v84Ev
  virtual void  v85(); // _ZN7S3031C53v85Ev
  virtual void  v86(); // _ZN7S3031C53v86Ev
  virtual void  v87(); // _ZN7S3031C53v87Ev
  virtual void  v88(); // _ZN7S3031C53v88Ev
  virtual void  v89(); // _ZN7S3031C53v89Ev
  virtual void  v90(); // _ZN7S3031C53v90Ev
  virtual void  v91(); // _ZN7S3031C53v91Ev
  virtual void  v92(); // _ZN7S3031C53v92Ev
  virtual void  v93(); // _ZN7S3031C53v93Ev
  virtual void  v94(); // _ZN7S3031C53v94Ev
  ~S3031C5(); // tgen
  S3031C5(); // tgen
};
//SIG(-1 S3031C5) C1{ v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16}


void  S3031C5 ::v79(){vfunc_called(this, "_ZN7S3031C53v79Ev");}
void  S3031C5 ::v80(){vfunc_called(this, "_ZN7S3031C53v80Ev");}
void  S3031C5 ::v81(){vfunc_called(this, "_ZN7S3031C53v81Ev");}
void  S3031C5 ::v82(){vfunc_called(this, "_ZN7S3031C53v82Ev");}
void  S3031C5 ::v83(){vfunc_called(this, "_ZN7S3031C53v83Ev");}
void  S3031C5 ::v84(){vfunc_called(this, "_ZN7S3031C53v84Ev");}
void  S3031C5 ::v85(){vfunc_called(this, "_ZN7S3031C53v85Ev");}
void  S3031C5 ::v86(){vfunc_called(this, "_ZN7S3031C53v86Ev");}
void  S3031C5 ::v87(){vfunc_called(this, "_ZN7S3031C53v87Ev");}
void  S3031C5 ::v88(){vfunc_called(this, "_ZN7S3031C53v88Ev");}
void  S3031C5 ::v89(){vfunc_called(this, "_ZN7S3031C53v89Ev");}
void  S3031C5 ::v90(){vfunc_called(this, "_ZN7S3031C53v90Ev");}
void  S3031C5 ::v91(){vfunc_called(this, "_ZN7S3031C53v91Ev");}
void  S3031C5 ::v92(){vfunc_called(this, "_ZN7S3031C53v92Ev");}
void  S3031C5 ::v93(){vfunc_called(this, "_ZN7S3031C53v93Ev");}
void  S3031C5 ::v94(){vfunc_called(this, "_ZN7S3031C53v94Ev");}
S3031C5 ::~S3031C5(){ note_dtor("S3031C5", this);} // tgen
S3031C5 ::S3031C5(){ note_ctor("S3031C5", this);} // tgen

static void Test_S3031C5()
{
  extern Class_Descriptor cd_S3031C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3031C5, buf);
    S3031C5 *dp, &lv = *(dp=new (buf) S3031C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3031C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3031C5)");
    test_class_info(&lv, &cd_S3031C5);
    dp->~S3031C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3031C5(Test_S3031C5, "S3031C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3031C5C1Ev();
extern void _ZN7S3031C5D1Ev();
Name_Map name_map_S3031C5[] = {
  NSPAIR(_ZN7S3031C5C1Ev),
  NSPAIR(_ZN7S3031C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3031C5[];
extern void _ZN7S3031C53v79Ev();
extern void _ZN7S3031C53v80Ev();
extern void _ZN7S3031C53v81Ev();
extern void _ZN7S3031C53v82Ev();
extern void _ZN7S3031C53v83Ev();
extern void _ZN7S3031C53v84Ev();
extern void _ZN7S3031C53v85Ev();
extern void _ZN7S3031C53v86Ev();
extern void _ZN7S3031C53v87Ev();
extern void _ZN7S3031C53v88Ev();
extern void _ZN7S3031C53v89Ev();
extern void _ZN7S3031C53v90Ev();
extern void _ZN7S3031C53v91Ev();
extern void _ZN7S3031C53v92Ev();
extern void _ZN7S3031C53v93Ev();
extern void _ZN7S3031C53v94Ev();
static  VTBL_ENTRY vtc_S3031C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3031C5[0]),
  (VTBL_ENTRY)&_ZN7S3031C53v79Ev,
  (VTBL_ENTRY)&_ZN7S3031C53v80Ev,
  (VTBL_ENTRY)&_ZN7S3031C53v81Ev,
  (VTBL_ENTRY)&_ZN7S3031C53v82Ev,
  (VTBL_ENTRY)&_ZN7S3031C53v83Ev,
  (VTBL_ENTRY)&_ZN7S3031C53v84Ev,
  (VTBL_ENTRY)&_ZN7S3031C53v85Ev,
  (VTBL_ENTRY)&_ZN7S3031C53v86Ev,
  (VTBL_ENTRY)&_ZN7S3031C53v87Ev,
  (VTBL_ENTRY)&_ZN7S3031C53v88Ev,
  (VTBL_ENTRY)&_ZN7S3031C53v89Ev,
  (VTBL_ENTRY)&_ZN7S3031C53v90Ev,
  (VTBL_ENTRY)&_ZN7S3031C53v91Ev,
  (VTBL_ENTRY)&_ZN7S3031C53v92Ev,
  (VTBL_ENTRY)&_ZN7S3031C53v93Ev,
  (VTBL_ENTRY)&_ZN7S3031C53v94Ev,
};
extern VTBL_ENTRY _ZTI7S3031C5[];
extern  VTBL_ENTRY _ZTV7S3031C5[];
Class_Descriptor cd_S3031C5 = {  "S3031C5", // class name
  0,0,//no base classes
  &(vtc_S3031C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3031C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3031C5),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3031C6  {
  virtual void  v95(); // _ZN7S3031C63v95Ev
  virtual void  v96(); // _ZN7S3031C63v96Ev
  virtual void  v97(); // _ZN7S3031C63v97Ev
  virtual void  v98(); // _ZN7S3031C63v98Ev
  virtual void  v99(); // _ZN7S3031C63v99Ev
  virtual void  v100(); // _ZN7S3031C64v100Ev
  virtual void  v101(); // _ZN7S3031C64v101Ev
  virtual void  v102(); // _ZN7S3031C64v102Ev
  virtual void  v103(); // _ZN7S3031C64v103Ev
  ~S3031C6(); // tgen
  S3031C6(); // tgen
};
//SIG(-1 S3031C6) C1{ v1 v2 v3 v4 v5 v6 v7 v8 v9}


void  S3031C6 ::v95(){vfunc_called(this, "_ZN7S3031C63v95Ev");}
void  S3031C6 ::v96(){vfunc_called(this, "_ZN7S3031C63v96Ev");}
void  S3031C6 ::v97(){vfunc_called(this, "_ZN7S3031C63v97Ev");}
void  S3031C6 ::v98(){vfunc_called(this, "_ZN7S3031C63v98Ev");}
void  S3031C6 ::v99(){vfunc_called(this, "_ZN7S3031C63v99Ev");}
void  S3031C6 ::v100(){vfunc_called(this, "_ZN7S3031C64v100Ev");}
void  S3031C6 ::v101(){vfunc_called(this, "_ZN7S3031C64v101Ev");}
void  S3031C6 ::v102(){vfunc_called(this, "_ZN7S3031C64v102Ev");}
void  S3031C6 ::v103(){vfunc_called(this, "_ZN7S3031C64v103Ev");}
S3031C6 ::~S3031C6(){ note_dtor("S3031C6", this);} // tgen
S3031C6 ::S3031C6(){ note_ctor("S3031C6", this);} // tgen

static void Test_S3031C6()
{
  extern Class_Descriptor cd_S3031C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3031C6, buf);
    S3031C6 *dp, &lv = *(dp=new (buf) S3031C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3031C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3031C6)");
    test_class_info(&lv, &cd_S3031C6);
    dp->~S3031C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3031C6(Test_S3031C6, "S3031C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3031C6C1Ev();
extern void _ZN7S3031C6D1Ev();
Name_Map name_map_S3031C6[] = {
  NSPAIR(_ZN7S3031C6C1Ev),
  NSPAIR(_ZN7S3031C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3031C6[];
extern void _ZN7S3031C63v95Ev();
extern void _ZN7S3031C63v96Ev();
extern void _ZN7S3031C63v97Ev();
extern void _ZN7S3031C63v98Ev();
extern void _ZN7S3031C63v99Ev();
extern void _ZN7S3031C64v100Ev();
extern void _ZN7S3031C64v101Ev();
extern void _ZN7S3031C64v102Ev();
extern void _ZN7S3031C64v103Ev();
static  VTBL_ENTRY vtc_S3031C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3031C6[0]),
  (VTBL_ENTRY)&_ZN7S3031C63v95Ev,
  (VTBL_ENTRY)&_ZN7S3031C63v96Ev,
  (VTBL_ENTRY)&_ZN7S3031C63v97Ev,
  (VTBL_ENTRY)&_ZN7S3031C63v98Ev,
  (VTBL_ENTRY)&_ZN7S3031C63v99Ev,
  (VTBL_ENTRY)&_ZN7S3031C64v100Ev,
  (VTBL_ENTRY)&_ZN7S3031C64v101Ev,
  (VTBL_ENTRY)&_ZN7S3031C64v102Ev,
  (VTBL_ENTRY)&_ZN7S3031C64v103Ev,
};
extern VTBL_ENTRY _ZTI7S3031C6[];
extern  VTBL_ENTRY _ZTV7S3031C6[];
Class_Descriptor cd_S3031C6 = {  "S3031C6", // class name
  0,0,//no base classes
  &(vtc_S3031C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3031C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3031C6),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3031C2  : S3031C3 , S3031C5 , S3031C6 {
  void *s3031c2f0;
  ::S79C39_nt s3031c2f1;
  unsigned int s3031c2f2:1;
  unsigned int s3031c2f3:1;
  unsigned int s3031c2f4:1;
  unsigned int s3031c2f5:1;
  virtual  ~S3031C2(); // _ZN7S3031C2D1Ev
  virtual void  v104(); // _ZN7S3031C24v104Ev
  virtual void  v105(); // _ZN7S3031C24v105Ev
  virtual void  v106(); // _ZN7S3031C24v106Ev
  virtual void  v107(); // _ZN7S3031C24v107Ev
  virtual void  v108(); // _ZN7S3031C24v108Ev
  virtual void  v109(); // _ZN7S3031C24v109Ev
  virtual void  v110(); // _ZN7S3031C24v110Ev
  virtual void  v111(); // _ZN7S3031C24v111Ev
  virtual void  v112(); // _ZN7S3031C24v112Ev
  virtual void  v113(); // _ZN7S3031C24v113Ev
  virtual void  v114(); // _ZN7S3031C24v114Ev
  virtual void  v115(); // _ZN7S3031C24v115Ev
  virtual void  v116(); // _ZN7S3031C24v116Ev
  virtual void  v117(); // _ZN7S3031C24v117Ev
  virtual void  v118(); // _ZN7S3031C24v118Ev
  virtual void  v119(); // _ZN7S3031C24v119Ev
  virtual void  v120(); // _ZN7S3031C24v120Ev
  virtual void  v121(); // _ZN7S3031C24v121Ev
  virtual void  v122(); // _ZN7S3031C24v122Ev
  virtual void  v123(); // _ZN7S3031C24v123Ev
  virtual void  v124(); // _ZN7S3031C24v124Ev
  virtual void  v125(); // _ZN7S3031C24v125Ev
  virtual void  v126(); // _ZN7S3031C24v126Ev
  virtual void  v127(); // _ZN7S3031C24v127Ev
  S3031C2(); // tgen
};
//SIG(-1 S3031C2) C1{ BC2{ vd v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} BC4{ v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104} BC5{ v105 v106 v107 v108 v109 v110 v111 v112 v113} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 Fp FC6{ BC7{ BC8{ BC9{ m Fp Fi[2]}}}} Fi:1 Fi:1 Fi:1 Fi:1}


 S3031C2 ::~S3031C2(){ note_dtor("S3031C2", this);}
void  S3031C2 ::v104(){vfunc_called(this, "_ZN7S3031C24v104Ev");}
void  S3031C2 ::v105(){vfunc_called(this, "_ZN7S3031C24v105Ev");}
void  S3031C2 ::v106(){vfunc_called(this, "_ZN7S3031C24v106Ev");}
void  S3031C2 ::v107(){vfunc_called(this, "_ZN7S3031C24v107Ev");}
void  S3031C2 ::v108(){vfunc_called(this, "_ZN7S3031C24v108Ev");}
void  S3031C2 ::v109(){vfunc_called(this, "_ZN7S3031C24v109Ev");}
void  S3031C2 ::v110(){vfunc_called(this, "_ZN7S3031C24v110Ev");}
void  S3031C2 ::v111(){vfunc_called(this, "_ZN7S3031C24v111Ev");}
void  S3031C2 ::v112(){vfunc_called(this, "_ZN7S3031C24v112Ev");}
void  S3031C2 ::v113(){vfunc_called(this, "_ZN7S3031C24v113Ev");}
void  S3031C2 ::v114(){vfunc_called(this, "_ZN7S3031C24v114Ev");}
void  S3031C2 ::v115(){vfunc_called(this, "_ZN7S3031C24v115Ev");}
void  S3031C2 ::v116(){vfunc_called(this, "_ZN7S3031C24v116Ev");}
void  S3031C2 ::v117(){vfunc_called(this, "_ZN7S3031C24v117Ev");}
void  S3031C2 ::v118(){vfunc_called(this, "_ZN7S3031C24v118Ev");}
void  S3031C2 ::v119(){vfunc_called(this, "_ZN7S3031C24v119Ev");}
void  S3031C2 ::v120(){vfunc_called(this, "_ZN7S3031C24v120Ev");}
void  S3031C2 ::v121(){vfunc_called(this, "_ZN7S3031C24v121Ev");}
void  S3031C2 ::v122(){vfunc_called(this, "_ZN7S3031C24v122Ev");}
void  S3031C2 ::v123(){vfunc_called(this, "_ZN7S3031C24v123Ev");}
void  S3031C2 ::v124(){vfunc_called(this, "_ZN7S3031C24v124Ev");}
void  S3031C2 ::v125(){vfunc_called(this, "_ZN7S3031C24v125Ev");}
void  S3031C2 ::v126(){vfunc_called(this, "_ZN7S3031C24v126Ev");}
void  S3031C2 ::v127(){vfunc_called(this, "_ZN7S3031C24v127Ev");}
S3031C2 ::S3031C2(){ note_ctor("S3031C2", this);} // tgen

static void Test_S3031C2()
{
  extern Class_Descriptor cd_S3031C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,23)];
    init_test(&cd_S3031C2, buf);
    S3031C2 *dp, &lv = *(dp=new (buf) S3031C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,88), "sizeof(S3031C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3031C2)");
    check_base_class_offset(lv, (S3031C3*), 0, "S3031C2");
    check_base_class_offset(lv, (S3031C5*), ABISELECT(96,60), "S3031C2");
    check_base_class_offset(lv, (S3031C6*), ABISELECT(104,64), "S3031C2");
    check_field_offset(lv, s3031c2f0, ABISELECT(112,68), "S3031C2.s3031c2f0");
    check_field_offset(lv, s3031c2f1, ABISELECT(120,72), "S3031C2.s3031c2f1");
    set_bf_and_test(lv, s3031c2f2, ABISELECT(136,84), 0, 1, 1, "S3031C2");
    set_bf_and_test(lv, s3031c2f3, ABISELECT(136,84), 1, 1, 1, "S3031C2");
    set_bf_and_test(lv, s3031c2f4, ABISELECT(136,84), 2, 1, 1, "S3031C2");
    set_bf_and_test(lv, s3031c2f5, ABISELECT(136,84), 3, 1, 1, "S3031C2");
    test_class_info(&lv, &cd_S3031C2);
    dp->~S3031C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3031C2(Test_S3031C2, "S3031C2", ABISELECT(144,88));

#else // __cplusplus

extern void _ZN7S3031C2C1Ev();
extern void _ZN7S3031C2D1Ev();
Name_Map name_map_S3031C2[] = {
  NSPAIR(_ZN7S3031C2C1Ev),
  NSPAIR(_ZN7S3031C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3031C3;
extern VTBL_ENTRY _ZTI7S3031C3[];
extern  VTBL_ENTRY _ZTV7S3031C3[];
extern Class_Descriptor cd_S3031C5;
extern VTBL_ENTRY _ZTI7S3031C5[];
extern  VTBL_ENTRY _ZTV7S3031C5[];
extern Class_Descriptor cd_S3031C6;
extern VTBL_ENTRY _ZTI7S3031C6[];
extern  VTBL_ENTRY _ZTV7S3031C6[];
static Base_Class bases_S3031C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3031C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3031C5,    ABISELECT(96,60), //bcp->offset
    92, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3031C6,    ABISELECT(104,64), //bcp->offset
    110, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3031C2[];
extern void _ZN7S3031C2D1Ev();
extern void _ZN7S3031C2D0Ev();
extern void _ZN7S3031C33v15Ev();
extern void _ZN7S3031C33v16Ev();
extern void _ZN7S3031C33v17Ev();
extern void _ZN7S3031C33v18Ev();
extern void _ZN7S3031C33v19Ev();
extern void _ZN7S3031C33v20Ev();
extern void _ZN7S3031C33v21Ev();
extern void _ZN7S3031C33v22Ev();
extern void _ZN7S3031C33v23Ev();
extern void _ZN7S3031C33v24Ev();
extern void _ZN7S3031C33v25Ev();
extern void _ZN7S3031C33v26Ev();
extern void _ZN7S3031C33v27Ev();
extern void _ZN7S3031C33v28Ev();
extern void _ZN7S3031C33v29Ev();
extern void _ZN7S3031C33v30Ev();
extern void _ZN7S3031C33v31Ev();
extern void _ZN7S3031C33v32Ev();
extern void _ZN7S3031C33v33Ev();
extern void _ZN7S3031C33v34Ev();
extern void _ZN7S3031C33v35Ev();
extern void _ZN7S3031C33v36Ev();
extern void _ZN7S3031C33v37Ev();
extern void _ZN7S3031C33v38Ev();
extern void _ZN7S3031C33v39Ev();
extern void _ZN7S3031C33v40Ev();
extern void _ZN7S3031C33v41Ev();
extern void _ZN7S3031C33v42Ev();
extern void _ZN7S3031C33v43Ev();
extern void _ZN7S3031C33v44Ev();
extern void _ZN7S3031C33v45Ev();
extern void _ZN7S3031C33v46Ev();
extern void _ZN7S3031C33v47Ev();
extern void _ZN7S3031C33v48Ev();
extern void _ZN7S3031C33v49Ev();
extern void _ZN7S3031C33v50Ev();
extern void _ZN7S3031C33v51Ev();
extern void _ZN7S3031C33v52Ev();
extern void _ZN7S3031C33v53Ev();
extern void _ZN7S3031C33v54Ev();
extern void _ZN7S3031C33v55Ev();
extern void _ZN7S3031C33v56Ev();
extern void _ZN7S3031C33v57Ev();
extern void _ZN7S3031C33v58Ev();
extern void _ZN7S3031C33v59Ev();
extern void _ZN7S3031C33v60Ev();
extern void _ZN7S3031C33v61Ev();
extern void _ZN7S3031C33v62Ev();
extern void _ZN7S3031C33v63Ev();
extern void _ZN7S3031C33v64Ev();
extern void _ZN7S3031C33v65Ev();
extern void _ZN7S3031C33v66Ev();
extern void _ZN7S3031C33v67Ev();
extern void _ZN7S3031C33v68Ev();
extern void _ZN7S3031C33v69Ev();
extern void _ZN7S3031C33v70Ev();
extern void _ZN7S3031C33v71Ev();
extern void _ZN7S3031C33v72Ev();
extern void _ZN7S3031C33v73Ev();
extern void _ZN7S3031C33v74Ev();
extern void _ZN7S3031C33v75Ev();
extern void _ZN7S3031C33v76Ev();
extern void _ZN7S3031C33v77Ev();
extern void _ZN7S3031C33v78Ev();
extern void _ZN7S3031C24v104Ev();
extern void _ZN7S3031C24v105Ev();
extern void _ZN7S3031C24v106Ev();
extern void _ZN7S3031C24v107Ev();
extern void _ZN7S3031C24v108Ev();
extern void _ZN7S3031C24v109Ev();
extern void _ZN7S3031C24v110Ev();
extern void _ZN7S3031C24v111Ev();
extern void _ZN7S3031C24v112Ev();
extern void _ZN7S3031C24v113Ev();
extern void _ZN7S3031C24v114Ev();
extern void _ZN7S3031C24v115Ev();
extern void _ZN7S3031C24v116Ev();
extern void _ZN7S3031C24v117Ev();
extern void _ZN7S3031C24v118Ev();
extern void _ZN7S3031C24v119Ev();
extern void _ZN7S3031C24v120Ev();
extern void _ZN7S3031C24v121Ev();
extern void _ZN7S3031C24v122Ev();
extern void _ZN7S3031C24v123Ev();
extern void _ZN7S3031C24v124Ev();
extern void _ZN7S3031C24v125Ev();
extern void _ZN7S3031C24v126Ev();
extern void _ZN7S3031C24v127Ev();
extern void _ZN7S3031C53v79Ev();
extern void _ZN7S3031C53v80Ev();
extern void _ZN7S3031C53v81Ev();
extern void _ZN7S3031C53v82Ev();
extern void _ZN7S3031C53v83Ev();
extern void _ZN7S3031C53v84Ev();
extern void _ZN7S3031C53v85Ev();
extern void _ZN7S3031C53v86Ev();
extern void _ZN7S3031C53v87Ev();
extern void _ZN7S3031C53v88Ev();
extern void _ZN7S3031C53v89Ev();
extern void _ZN7S3031C53v90Ev();
extern void _ZN7S3031C53v91Ev();
extern void _ZN7S3031C53v92Ev();
extern void _ZN7S3031C53v93Ev();
extern void _ZN7S3031C53v94Ev();
extern void _ZN7S3031C63v95Ev();
extern void _ZN7S3031C63v96Ev();
extern void _ZN7S3031C63v97Ev();
extern void _ZN7S3031C63v98Ev();
extern void _ZN7S3031C63v99Ev();
extern void _ZN7S3031C64v100Ev();
extern void _ZN7S3031C64v101Ev();
extern void _ZN7S3031C64v102Ev();
extern void _ZN7S3031C64v103Ev();
static  VTBL_ENTRY vtc_S3031C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3031C2[0]),
  (VTBL_ENTRY)&_ZN7S3031C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3031C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v68Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v69Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v70Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v71Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v72Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v73Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v74Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v75Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v76Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v77Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v78Ev,
  (VTBL_ENTRY)&_ZN7S3031C24v104Ev,
  (VTBL_ENTRY)&_ZN7S3031C24v105Ev,
  (VTBL_ENTRY)&_ZN7S3031C24v106Ev,
  (VTBL_ENTRY)&_ZN7S3031C24v107Ev,
  (VTBL_ENTRY)&_ZN7S3031C24v108Ev,
  (VTBL_ENTRY)&_ZN7S3031C24v109Ev,
  (VTBL_ENTRY)&_ZN7S3031C24v110Ev,
  (VTBL_ENTRY)&_ZN7S3031C24v111Ev,
  (VTBL_ENTRY)&_ZN7S3031C24v112Ev,
  (VTBL_ENTRY)&_ZN7S3031C24v113Ev,
  (VTBL_ENTRY)&_ZN7S3031C24v114Ev,
  (VTBL_ENTRY)&_ZN7S3031C24v115Ev,
  (VTBL_ENTRY)&_ZN7S3031C24v116Ev,
  (VTBL_ENTRY)&_ZN7S3031C24v117Ev,
  (VTBL_ENTRY)&_ZN7S3031C24v118Ev,
  (VTBL_ENTRY)&_ZN7S3031C24v119Ev,
  (VTBL_ENTRY)&_ZN7S3031C24v120Ev,
  (VTBL_ENTRY)&_ZN7S3031C24v121Ev,
  (VTBL_ENTRY)&_ZN7S3031C24v122Ev,
  (VTBL_ENTRY)&_ZN7S3031C24v123Ev,
  (VTBL_ENTRY)&_ZN7S3031C24v124Ev,
  (VTBL_ENTRY)&_ZN7S3031C24v125Ev,
  (VTBL_ENTRY)&_ZN7S3031C24v126Ev,
  (VTBL_ENTRY)&_ZN7S3031C24v127Ev,
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S3031C2[0]),
  (VTBL_ENTRY)&_ZN7S3031C53v79Ev,
  (VTBL_ENTRY)&_ZN7S3031C53v80Ev,
  (VTBL_ENTRY)&_ZN7S3031C53v81Ev,
  (VTBL_ENTRY)&_ZN7S3031C53v82Ev,
  (VTBL_ENTRY)&_ZN7S3031C53v83Ev,
  (VTBL_ENTRY)&_ZN7S3031C53v84Ev,
  (VTBL_ENTRY)&_ZN7S3031C53v85Ev,
  (VTBL_ENTRY)&_ZN7S3031C53v86Ev,
  (VTBL_ENTRY)&_ZN7S3031C53v87Ev,
  (VTBL_ENTRY)&_ZN7S3031C53v88Ev,
  (VTBL_ENTRY)&_ZN7S3031C53v89Ev,
  (VTBL_ENTRY)&_ZN7S3031C53v90Ev,
  (VTBL_ENTRY)&_ZN7S3031C53v91Ev,
  (VTBL_ENTRY)&_ZN7S3031C53v92Ev,
  (VTBL_ENTRY)&_ZN7S3031C53v93Ev,
  (VTBL_ENTRY)&_ZN7S3031C53v94Ev,
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S3031C2[0]),
  (VTBL_ENTRY)&_ZN7S3031C63v95Ev,
  (VTBL_ENTRY)&_ZN7S3031C63v96Ev,
  (VTBL_ENTRY)&_ZN7S3031C63v97Ev,
  (VTBL_ENTRY)&_ZN7S3031C63v98Ev,
  (VTBL_ENTRY)&_ZN7S3031C63v99Ev,
  (VTBL_ENTRY)&_ZN7S3031C64v100Ev,
  (VTBL_ENTRY)&_ZN7S3031C64v101Ev,
  (VTBL_ENTRY)&_ZN7S3031C64v102Ev,
  (VTBL_ENTRY)&_ZN7S3031C64v103Ev,
};
extern VTBL_ENTRY _ZTI7S3031C2[];
extern  VTBL_ENTRY _ZTV7S3031C2[];
Class_Descriptor cd_S3031C2 = {  "S3031C2", // class name
  bases_S3031C2, 3,
  &(vtc_S3031C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,88), // object size
  NSPAIRA(_ZTI7S3031C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S3031C2),121, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3031C1  : S3031C2 {
  ::S79C44 s3031c1f0;
  virtual  ~S3031C1(); // _ZN7S3031C1D1Ev
  virtual void  v1(); // _ZN7S3031C12v1Ev
  virtual void  v2(); // _ZN7S3031C12v2Ev
  virtual void  v3(); // _ZN7S3031C12v3Ev
  virtual void  v4(); // _ZN7S3031C12v4Ev
  virtual void  v5(); // _ZN7S3031C12v5Ev
  virtual void  v6(); // _ZN7S3031C12v6Ev
  virtual void  v7(); // _ZN7S3031C12v7Ev
  virtual void  v8(); // _ZN7S3031C12v8Ev
  virtual void  v9(); // _ZN7S3031C12v9Ev
  virtual void  v10(); // _ZN7S3031C13v10Ev
  virtual void  v11(); // _ZN7S3031C13v11Ev
  virtual void  v12(); // _ZN7S3031C13v12Ev
  virtual void  v13(); // _ZN7S3031C13v13Ev
  virtual void  v14(); // _ZN7S3031C13v14Ev
  S3031C1(); // tgen
};
//SIG(1 S3031C1) C1{ BC2{ BC3{ vd v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} BC5{ v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94} BC6{ v95 v96 v97 v98 v99 v100 v101 v102 v103} vd v104 v105 v106 v107 v108 v109 v110 v111 v112 v113 v114 v115 v116 v117 v118 v119 v120 v121 v122 v123 v124 v125 v126 v127 Fp FC7{ BC8{ BC9{ BC10{ m Fp Fi[2]}}}} Fi:1 Fi:1 Fi:1 Fi:1} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 FC11{ BC12{ BC10}}}


 S3031C1 ::~S3031C1(){ note_dtor("S3031C1", this);}
void  S3031C1 ::v1(){vfunc_called(this, "_ZN7S3031C12v1Ev");}
void  S3031C1 ::v2(){vfunc_called(this, "_ZN7S3031C12v2Ev");}
void  S3031C1 ::v3(){vfunc_called(this, "_ZN7S3031C12v3Ev");}
void  S3031C1 ::v4(){vfunc_called(this, "_ZN7S3031C12v4Ev");}
void  S3031C1 ::v5(){vfunc_called(this, "_ZN7S3031C12v5Ev");}
void  S3031C1 ::v6(){vfunc_called(this, "_ZN7S3031C12v6Ev");}
void  S3031C1 ::v7(){vfunc_called(this, "_ZN7S3031C12v7Ev");}
void  S3031C1 ::v8(){vfunc_called(this, "_ZN7S3031C12v8Ev");}
void  S3031C1 ::v9(){vfunc_called(this, "_ZN7S3031C12v9Ev");}
void  S3031C1 ::v10(){vfunc_called(this, "_ZN7S3031C13v10Ev");}
void  S3031C1 ::v11(){vfunc_called(this, "_ZN7S3031C13v11Ev");}
void  S3031C1 ::v12(){vfunc_called(this, "_ZN7S3031C13v12Ev");}
void  S3031C1 ::v13(){vfunc_called(this, "_ZN7S3031C13v13Ev");}
void  S3031C1 ::v14(){vfunc_called(this, "_ZN7S3031C13v14Ev");}
S3031C1 ::S3031C1(){ note_ctor("S3031C1", this);} // tgen

static void Test_S3031C1()
{
  extern Class_Descriptor cd_S3031C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,26)];
    init_test(&cd_S3031C1, buf);
    S3031C1 *dp, &lv = *(dp=new (buf) S3031C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,100), "sizeof(S3031C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3031C1)");
    check_base_class_offset(lv, (S3031C3*)(S3031C2*), 0, "S3031C1");
    check_base_class_offset(lv, (S3031C5*)(S3031C2*), ABISELECT(96,60), "S3031C1");
    check_base_class_offset(lv, (S3031C6*)(S3031C2*), ABISELECT(104,64), "S3031C1");
    check_base_class_offset(lv, (S3031C2*), 0, "S3031C1");
    check_field_offset(lv, s3031c1f0, ABISELECT(144,88), "S3031C1.s3031c1f0");
    test_class_info(&lv, &cd_S3031C1);
    dp->~S3031C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3031C1(Test_S3031C1, "S3031C1", ABISELECT(160,100));

#else // __cplusplus

extern void _ZN7S3031C1C1Ev();
extern void _ZN7S3031C1D1Ev();
Name_Map name_map_S3031C1[] = {
  NSPAIR(_ZN7S3031C1C1Ev),
  NSPAIR(_ZN7S3031C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3031C3;
extern VTBL_ENTRY _ZTI7S3031C3[];
extern  VTBL_ENTRY _ZTV7S3031C3[];
extern Class_Descriptor cd_S3031C5;
extern VTBL_ENTRY _ZTI7S3031C5[];
extern  VTBL_ENTRY _ZTV7S3031C5[];
extern Class_Descriptor cd_S3031C6;
extern VTBL_ENTRY _ZTI7S3031C6[];
extern  VTBL_ENTRY _ZTV7S3031C6[];
extern Class_Descriptor cd_S3031C2;
extern VTBL_ENTRY _ZTI7S3031C2[];
extern  VTBL_ENTRY _ZTV7S3031C2[];
static Base_Class bases_S3031C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3031C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S3031C5,    ABISELECT(96,60), //bcp->offset
    106, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S3031C6,    ABISELECT(104,64), //bcp->offset
    124, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S3031C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3031C1[];
extern void _ZN7S3031C1D1Ev();
extern void _ZN7S3031C1D0Ev();
extern void _ZN7S3031C33v15Ev();
extern void _ZN7S3031C33v16Ev();
extern void _ZN7S3031C33v17Ev();
extern void _ZN7S3031C33v18Ev();
extern void _ZN7S3031C33v19Ev();
extern void _ZN7S3031C33v20Ev();
extern void _ZN7S3031C33v21Ev();
extern void _ZN7S3031C33v22Ev();
extern void _ZN7S3031C33v23Ev();
extern void _ZN7S3031C33v24Ev();
extern void _ZN7S3031C33v25Ev();
extern void _ZN7S3031C33v26Ev();
extern void _ZN7S3031C33v27Ev();
extern void _ZN7S3031C33v28Ev();
extern void _ZN7S3031C33v29Ev();
extern void _ZN7S3031C33v30Ev();
extern void _ZN7S3031C33v31Ev();
extern void _ZN7S3031C33v32Ev();
extern void _ZN7S3031C33v33Ev();
extern void _ZN7S3031C33v34Ev();
extern void _ZN7S3031C33v35Ev();
extern void _ZN7S3031C33v36Ev();
extern void _ZN7S3031C33v37Ev();
extern void _ZN7S3031C33v38Ev();
extern void _ZN7S3031C33v39Ev();
extern void _ZN7S3031C33v40Ev();
extern void _ZN7S3031C33v41Ev();
extern void _ZN7S3031C33v42Ev();
extern void _ZN7S3031C33v43Ev();
extern void _ZN7S3031C33v44Ev();
extern void _ZN7S3031C33v45Ev();
extern void _ZN7S3031C33v46Ev();
extern void _ZN7S3031C33v47Ev();
extern void _ZN7S3031C33v48Ev();
extern void _ZN7S3031C33v49Ev();
extern void _ZN7S3031C33v50Ev();
extern void _ZN7S3031C33v51Ev();
extern void _ZN7S3031C33v52Ev();
extern void _ZN7S3031C33v53Ev();
extern void _ZN7S3031C33v54Ev();
extern void _ZN7S3031C33v55Ev();
extern void _ZN7S3031C33v56Ev();
extern void _ZN7S3031C33v57Ev();
extern void _ZN7S3031C33v58Ev();
extern void _ZN7S3031C33v59Ev();
extern void _ZN7S3031C33v60Ev();
extern void _ZN7S3031C33v61Ev();
extern void _ZN7S3031C33v62Ev();
extern void _ZN7S3031C33v63Ev();
extern void _ZN7S3031C33v64Ev();
extern void _ZN7S3031C33v65Ev();
extern void _ZN7S3031C33v66Ev();
extern void _ZN7S3031C33v67Ev();
extern void _ZN7S3031C33v68Ev();
extern void _ZN7S3031C33v69Ev();
extern void _ZN7S3031C33v70Ev();
extern void _ZN7S3031C33v71Ev();
extern void _ZN7S3031C33v72Ev();
extern void _ZN7S3031C33v73Ev();
extern void _ZN7S3031C33v74Ev();
extern void _ZN7S3031C33v75Ev();
extern void _ZN7S3031C33v76Ev();
extern void _ZN7S3031C33v77Ev();
extern void _ZN7S3031C33v78Ev();
extern void _ZN7S3031C24v104Ev();
extern void _ZN7S3031C24v105Ev();
extern void _ZN7S3031C24v106Ev();
extern void _ZN7S3031C24v107Ev();
extern void _ZN7S3031C24v108Ev();
extern void _ZN7S3031C24v109Ev();
extern void _ZN7S3031C24v110Ev();
extern void _ZN7S3031C24v111Ev();
extern void _ZN7S3031C24v112Ev();
extern void _ZN7S3031C24v113Ev();
extern void _ZN7S3031C24v114Ev();
extern void _ZN7S3031C24v115Ev();
extern void _ZN7S3031C24v116Ev();
extern void _ZN7S3031C24v117Ev();
extern void _ZN7S3031C24v118Ev();
extern void _ZN7S3031C24v119Ev();
extern void _ZN7S3031C24v120Ev();
extern void _ZN7S3031C24v121Ev();
extern void _ZN7S3031C24v122Ev();
extern void _ZN7S3031C24v123Ev();
extern void _ZN7S3031C24v124Ev();
extern void _ZN7S3031C24v125Ev();
extern void _ZN7S3031C24v126Ev();
extern void _ZN7S3031C24v127Ev();
extern void _ZN7S3031C12v1Ev();
extern void _ZN7S3031C12v2Ev();
extern void _ZN7S3031C12v3Ev();
extern void _ZN7S3031C12v4Ev();
extern void _ZN7S3031C12v5Ev();
extern void _ZN7S3031C12v6Ev();
extern void _ZN7S3031C12v7Ev();
extern void _ZN7S3031C12v8Ev();
extern void _ZN7S3031C12v9Ev();
extern void _ZN7S3031C13v10Ev();
extern void _ZN7S3031C13v11Ev();
extern void _ZN7S3031C13v12Ev();
extern void _ZN7S3031C13v13Ev();
extern void _ZN7S3031C13v14Ev();
extern void _ZN7S3031C53v79Ev();
extern void _ZN7S3031C53v80Ev();
extern void _ZN7S3031C53v81Ev();
extern void _ZN7S3031C53v82Ev();
extern void _ZN7S3031C53v83Ev();
extern void _ZN7S3031C53v84Ev();
extern void _ZN7S3031C53v85Ev();
extern void _ZN7S3031C53v86Ev();
extern void _ZN7S3031C53v87Ev();
extern void _ZN7S3031C53v88Ev();
extern void _ZN7S3031C53v89Ev();
extern void _ZN7S3031C53v90Ev();
extern void _ZN7S3031C53v91Ev();
extern void _ZN7S3031C53v92Ev();
extern void _ZN7S3031C53v93Ev();
extern void _ZN7S3031C53v94Ev();
extern void _ZN7S3031C63v95Ev();
extern void _ZN7S3031C63v96Ev();
extern void _ZN7S3031C63v97Ev();
extern void _ZN7S3031C63v98Ev();
extern void _ZN7S3031C63v99Ev();
extern void _ZN7S3031C64v100Ev();
extern void _ZN7S3031C64v101Ev();
extern void _ZN7S3031C64v102Ev();
extern void _ZN7S3031C64v103Ev();
static  VTBL_ENTRY vtc_S3031C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3031C1[0]),
  (VTBL_ENTRY)&_ZN7S3031C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3031C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v68Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v69Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v70Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v71Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v72Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v73Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v74Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v75Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v76Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v77Ev,
  (VTBL_ENTRY)&_ZN7S3031C33v78Ev,
  (VTBL_ENTRY)&_ZN7S3031C24v104Ev,
  (VTBL_ENTRY)&_ZN7S3031C24v105Ev,
  (VTBL_ENTRY)&_ZN7S3031C24v106Ev,
  (VTBL_ENTRY)&_ZN7S3031C24v107Ev,
  (VTBL_ENTRY)&_ZN7S3031C24v108Ev,
  (VTBL_ENTRY)&_ZN7S3031C24v109Ev,
  (VTBL_ENTRY)&_ZN7S3031C24v110Ev,
  (VTBL_ENTRY)&_ZN7S3031C24v111Ev,
  (VTBL_ENTRY)&_ZN7S3031C24v112Ev,
  (VTBL_ENTRY)&_ZN7S3031C24v113Ev,
  (VTBL_ENTRY)&_ZN7S3031C24v114Ev,
  (VTBL_ENTRY)&_ZN7S3031C24v115Ev,
  (VTBL_ENTRY)&_ZN7S3031C24v116Ev,
  (VTBL_ENTRY)&_ZN7S3031C24v117Ev,
  (VTBL_ENTRY)&_ZN7S3031C24v118Ev,
  (VTBL_ENTRY)&_ZN7S3031C24v119Ev,
  (VTBL_ENTRY)&_ZN7S3031C24v120Ev,
  (VTBL_ENTRY)&_ZN7S3031C24v121Ev,
  (VTBL_ENTRY)&_ZN7S3031C24v122Ev,
  (VTBL_ENTRY)&_ZN7S3031C24v123Ev,
  (VTBL_ENTRY)&_ZN7S3031C24v124Ev,
  (VTBL_ENTRY)&_ZN7S3031C24v125Ev,
  (VTBL_ENTRY)&_ZN7S3031C24v126Ev,
  (VTBL_ENTRY)&_ZN7S3031C24v127Ev,
  (VTBL_ENTRY)&_ZN7S3031C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3031C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3031C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3031C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3031C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3031C12v6Ev,
  (VTBL_ENTRY)&_ZN7S3031C12v7Ev,
  (VTBL_ENTRY)&_ZN7S3031C12v8Ev,
  (VTBL_ENTRY)&_ZN7S3031C12v9Ev,
  (VTBL_ENTRY)&_ZN7S3031C13v10Ev,
  (VTBL_ENTRY)&_ZN7S3031C13v11Ev,
  (VTBL_ENTRY)&_ZN7S3031C13v12Ev,
  (VTBL_ENTRY)&_ZN7S3031C13v13Ev,
  (VTBL_ENTRY)&_ZN7S3031C13v14Ev,
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S3031C1[0]),
  (VTBL_ENTRY)&_ZN7S3031C53v79Ev,
  (VTBL_ENTRY)&_ZN7S3031C53v80Ev,
  (VTBL_ENTRY)&_ZN7S3031C53v81Ev,
  (VTBL_ENTRY)&_ZN7S3031C53v82Ev,
  (VTBL_ENTRY)&_ZN7S3031C53v83Ev,
  (VTBL_ENTRY)&_ZN7S3031C53v84Ev,
  (VTBL_ENTRY)&_ZN7S3031C53v85Ev,
  (VTBL_ENTRY)&_ZN7S3031C53v86Ev,
  (VTBL_ENTRY)&_ZN7S3031C53v87Ev,
  (VTBL_ENTRY)&_ZN7S3031C53v88Ev,
  (VTBL_ENTRY)&_ZN7S3031C53v89Ev,
  (VTBL_ENTRY)&_ZN7S3031C53v90Ev,
  (VTBL_ENTRY)&_ZN7S3031C53v91Ev,
  (VTBL_ENTRY)&_ZN7S3031C53v92Ev,
  (VTBL_ENTRY)&_ZN7S3031C53v93Ev,
  (VTBL_ENTRY)&_ZN7S3031C53v94Ev,
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S3031C1[0]),
  (VTBL_ENTRY)&_ZN7S3031C63v95Ev,
  (VTBL_ENTRY)&_ZN7S3031C63v96Ev,
  (VTBL_ENTRY)&_ZN7S3031C63v97Ev,
  (VTBL_ENTRY)&_ZN7S3031C63v98Ev,
  (VTBL_ENTRY)&_ZN7S3031C63v99Ev,
  (VTBL_ENTRY)&_ZN7S3031C64v100Ev,
  (VTBL_ENTRY)&_ZN7S3031C64v101Ev,
  (VTBL_ENTRY)&_ZN7S3031C64v102Ev,
  (VTBL_ENTRY)&_ZN7S3031C64v103Ev,
};
extern VTBL_ENTRY _ZTI7S3031C1[];
extern  VTBL_ENTRY _ZTV7S3031C1[];
Class_Descriptor cd_S3031C1 = {  "S3031C1", // class name
  bases_S3031C1, 4,
  &(vtc_S3031C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(160,100), // object size
  NSPAIRA(_ZTI7S3031C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3031C1),135, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  4, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6795C2  {
  virtual  ~S6795C2(); // _ZN7S6795C2D1Ev
  virtual void  v34(); // _ZN7S6795C23v34Ev
  virtual void  v35(); // _ZN7S6795C23v35Ev
  virtual void  v36(); // _ZN7S6795C23v36Ev
  virtual void  v37(); // _ZN7S6795C23v37Ev
  virtual void  v38(); // _ZN7S6795C23v38Ev
  virtual void  v39(); // _ZN7S6795C23v39Ev
  virtual void  v40(); // _ZN7S6795C23v40Ev
  virtual void  v41(); // _ZN7S6795C23v41Ev
  virtual void  v42(); // _ZN7S6795C23v42Ev
  virtual void  v43(); // _ZN7S6795C23v43Ev
  virtual void  v44(); // _ZN7S6795C23v44Ev
  virtual void  v45(); // _ZN7S6795C23v45Ev
  virtual void  v46(); // _ZN7S6795C23v46Ev
  virtual void  v47(); // _ZN7S6795C23v47Ev
  virtual void  v48(); // _ZN7S6795C23v48Ev
  virtual void  v49(); // _ZN7S6795C23v49Ev
  virtual void  v50(); // _ZN7S6795C23v50Ev
  virtual void  v51(); // _ZN7S6795C23v51Ev
  virtual void  v52(); // _ZN7S6795C23v52Ev
  virtual void  v53(); // _ZN7S6795C23v53Ev
  virtual void  v54(); // _ZN7S6795C23v54Ev
  virtual void  v55(); // _ZN7S6795C23v55Ev
  virtual void  v56(); // _ZN7S6795C23v56Ev
  virtual void  v57(); // _ZN7S6795C23v57Ev
  virtual void  v58(); // _ZN7S6795C23v58Ev
  virtual void  v59(); // _ZN7S6795C23v59Ev
  virtual void  v60(); // _ZN7S6795C23v60Ev
  virtual void  v61(); // _ZN7S6795C23v61Ev
  virtual void  v62(); // _ZN7S6795C23v62Ev
  virtual void  v63(); // _ZN7S6795C23v63Ev
  S6795C2(); // tgen
};
//SIG(-1 S6795C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30}


 S6795C2 ::~S6795C2(){ note_dtor("S6795C2", this);}
void  S6795C2 ::v34(){vfunc_called(this, "_ZN7S6795C23v34Ev");}
void  S6795C2 ::v35(){vfunc_called(this, "_ZN7S6795C23v35Ev");}
void  S6795C2 ::v36(){vfunc_called(this, "_ZN7S6795C23v36Ev");}
void  S6795C2 ::v37(){vfunc_called(this, "_ZN7S6795C23v37Ev");}
void  S6795C2 ::v38(){vfunc_called(this, "_ZN7S6795C23v38Ev");}
void  S6795C2 ::v39(){vfunc_called(this, "_ZN7S6795C23v39Ev");}
void  S6795C2 ::v40(){vfunc_called(this, "_ZN7S6795C23v40Ev");}
void  S6795C2 ::v41(){vfunc_called(this, "_ZN7S6795C23v41Ev");}
void  S6795C2 ::v42(){vfunc_called(this, "_ZN7S6795C23v42Ev");}
void  S6795C2 ::v43(){vfunc_called(this, "_ZN7S6795C23v43Ev");}
void  S6795C2 ::v44(){vfunc_called(this, "_ZN7S6795C23v44Ev");}
void  S6795C2 ::v45(){vfunc_called(this, "_ZN7S6795C23v45Ev");}
void  S6795C2 ::v46(){vfunc_called(this, "_ZN7S6795C23v46Ev");}
void  S6795C2 ::v47(){vfunc_called(this, "_ZN7S6795C23v47Ev");}
void  S6795C2 ::v48(){vfunc_called(this, "_ZN7S6795C23v48Ev");}
void  S6795C2 ::v49(){vfunc_called(this, "_ZN7S6795C23v49Ev");}
void  S6795C2 ::v50(){vfunc_called(this, "_ZN7S6795C23v50Ev");}
void  S6795C2 ::v51(){vfunc_called(this, "_ZN7S6795C23v51Ev");}
void  S6795C2 ::v52(){vfunc_called(this, "_ZN7S6795C23v52Ev");}
void  S6795C2 ::v53(){vfunc_called(this, "_ZN7S6795C23v53Ev");}
void  S6795C2 ::v54(){vfunc_called(this, "_ZN7S6795C23v54Ev");}
void  S6795C2 ::v55(){vfunc_called(this, "_ZN7S6795C23v55Ev");}
void  S6795C2 ::v56(){vfunc_called(this, "_ZN7S6795C23v56Ev");}
void  S6795C2 ::v57(){vfunc_called(this, "_ZN7S6795C23v57Ev");}
void  S6795C2 ::v58(){vfunc_called(this, "_ZN7S6795C23v58Ev");}
void  S6795C2 ::v59(){vfunc_called(this, "_ZN7S6795C23v59Ev");}
void  S6795C2 ::v60(){vfunc_called(this, "_ZN7S6795C23v60Ev");}
void  S6795C2 ::v61(){vfunc_called(this, "_ZN7S6795C23v61Ev");}
void  S6795C2 ::v62(){vfunc_called(this, "_ZN7S6795C23v62Ev");}
void  S6795C2 ::v63(){vfunc_called(this, "_ZN7S6795C23v63Ev");}
S6795C2 ::S6795C2(){ note_ctor("S6795C2", this);} // tgen

static void Test_S6795C2()
{
  extern Class_Descriptor cd_S6795C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S6795C2, buf);
    S6795C2 *dp, &lv = *(dp=new (buf) S6795C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S6795C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6795C2)");
    test_class_info(&lv, &cd_S6795C2);
    dp->~S6795C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6795C2(Test_S6795C2, "S6795C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S6795C2C1Ev();
extern void _ZN7S6795C2D1Ev();
Name_Map name_map_S6795C2[] = {
  NSPAIR(_ZN7S6795C2C1Ev),
  NSPAIR(_ZN7S6795C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6795C2[];
extern void _ZN7S6795C2D1Ev();
extern void _ZN7S6795C2D0Ev();
extern void _ZN7S6795C23v34Ev();
extern void _ZN7S6795C23v35Ev();
extern void _ZN7S6795C23v36Ev();
extern void _ZN7S6795C23v37Ev();
extern void _ZN7S6795C23v38Ev();
extern void _ZN7S6795C23v39Ev();
extern void _ZN7S6795C23v40Ev();
extern void _ZN7S6795C23v41Ev();
extern void _ZN7S6795C23v42Ev();
extern void _ZN7S6795C23v43Ev();
extern void _ZN7S6795C23v44Ev();
extern void _ZN7S6795C23v45Ev();
extern void _ZN7S6795C23v46Ev();
extern void _ZN7S6795C23v47Ev();
extern void _ZN7S6795C23v48Ev();
extern void _ZN7S6795C23v49Ev();
extern void _ZN7S6795C23v50Ev();
extern void _ZN7S6795C23v51Ev();
extern void _ZN7S6795C23v52Ev();
extern void _ZN7S6795C23v53Ev();
extern void _ZN7S6795C23v54Ev();
extern void _ZN7S6795C23v55Ev();
extern void _ZN7S6795C23v56Ev();
extern void _ZN7S6795C23v57Ev();
extern void _ZN7S6795C23v58Ev();
extern void _ZN7S6795C23v59Ev();
extern void _ZN7S6795C23v60Ev();
extern void _ZN7S6795C23v61Ev();
extern void _ZN7S6795C23v62Ev();
extern void _ZN7S6795C23v63Ev();
static  VTBL_ENTRY vtc_S6795C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6795C2[0]),
  (VTBL_ENTRY)&_ZN7S6795C2D1Ev,
  (VTBL_ENTRY)&_ZN7S6795C2D0Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v34Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v35Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v36Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v37Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v38Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v39Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v40Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v41Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v42Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v43Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v44Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v45Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v46Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v47Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v48Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v49Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v50Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v51Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v52Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v53Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v54Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v55Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v56Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v57Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v58Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v59Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v60Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v61Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v62Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v63Ev,
};
extern VTBL_ENTRY _ZTI7S6795C2[];
extern  VTBL_ENTRY _ZTV7S6795C2[];
Class_Descriptor cd_S6795C2 = {  "S6795C2", // class name
  0,0,//no base classes
  &(vtc_S6795C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6795C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6795C2),34, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6795C6_nt  {
  void *s6795c6f0;
  int s6795c6f1;
  void *s6795c6f2;
  void  mf6795c6(); // _ZN10S6795C6_nt8mf6795c6Ev
};
//SIG(-1 S6795C6_nt) C1{ m Fp Fi Fp}


void  S6795C6_nt ::mf6795c6(){}

//skip512 S6795C6_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6795C7  {
  __tsi64 s6795c7f0;
  int s6795c7f1[5];
  char s6795c7f2[128];
};
//SIG(-1 S6795C7) C1{ FL Fi[5] Fc[128]}



static void Test_S6795C7()
{
  {
    init_simple_test("S6795C7");
    S6795C7 lv;
    check2(sizeof(lv), ABISELECT(160,156), "sizeof(S6795C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6795C7)");
    check_field_offset(lv, s6795c7f0, 0, "S6795C7.s6795c7f0");
    check_field_offset(lv, s6795c7f1, 8, "S6795C7.s6795c7f1");
    check_field_offset(lv, s6795c7f2, 28, "S6795C7.s6795c7f2");
  }
}
static Arrange_To_Call_Me vS6795C7(Test_S6795C7, "S6795C7", ABISELECT(160,156));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6795C8_nt  {
  void *s6795c8f0;
  void  mf6795c8(); // _ZN10S6795C8_nt8mf6795c8Ev
  virtual  ~S6795C8_nt(); // _ZN10S6795C8_ntD1Ev
  S6795C8_nt(); // tgen
};
//SIG(-1 S6795C8_nt) C1{ vd m Fp}


void  S6795C8_nt ::mf6795c8(){}
 S6795C8_nt ::~S6795C8_nt(){ note_dtor("S6795C8_nt", this);}
S6795C8_nt ::S6795C8_nt(){ note_ctor("S6795C8_nt", this);} // tgen

//skip512 S6795C8_nt

#else // __cplusplus

extern void _ZN10S6795C8_ntC1Ev();
extern void _ZN10S6795C8_ntD1Ev();
Name_Map name_map_S6795C8_nt[] = {
  NSPAIR(_ZN10S6795C8_ntC1Ev),
  NSPAIR(_ZN10S6795C8_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S6795C8_nt[];
extern void _ZN10S6795C8_ntD1Ev();
extern void _ZN10S6795C8_ntD0Ev();
static  VTBL_ENTRY vtc_S6795C8_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S6795C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S6795C8_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S6795C8_ntD0Ev,
};
extern VTBL_ENTRY _ZTI10S6795C8_nt[];
VTBL_ENTRY *P__ZTI10S6795C8_nt = _ZTI10S6795C8_nt; 
extern  VTBL_ENTRY _ZTV10S6795C8_nt[];
Class_Descriptor cd_S6795C8_nt = {  "S6795C8_nt", // class name
  0,0,//no base classes
  &(vtc_S6795C8_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S6795C8_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S6795C8_nt),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6795C10_nt  {
  int s6795c10f0[4];
};
//SIG(-1 S6795C10_nt) C1{ Fi[4]}



//skip512 S6795C10_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6795C1  : S6795C2 {
  void *s6795c1f0[5];
  ::S5266C25 s6795c1f1;
  void *s6795c1f2;
  ::S6795C6_nt s6795c1f3;
  void *s6795c1f4[2];
  int s6795c1f5;
  ::S6795C7 s6795c1f6;
  void *s6795c1f7;
  ::S6795C8_nt s6795c1f8;
  ::S79C38_nt s6795c1f9;
  void *s6795c1f10;
  int s6795c1f11;
  char s6795c1f12[5];
  void *s6795c1f13[4];
  int s6795c1f14;
  void *s6795c1f15;
  char s6795c1f16;
  ::S6795C10_nt s6795c1f17;
  void *s6795c1f18;
  virtual  ~S6795C1(); // _ZN7S6795C1D1Ev
  virtual void  v1(); // _ZN7S6795C12v1Ev
  virtual void  v2(); // _ZN7S6795C12v2Ev
  virtual void  v3(); // _ZN7S6795C12v3Ev
  virtual void  v4(); // _ZN7S6795C12v4Ev
  virtual void  v5(); // _ZN7S6795C12v5Ev
  virtual void  v6(); // _ZN7S6795C12v6Ev
  virtual void  v7(); // _ZN7S6795C12v7Ev
  virtual void  v8(); // _ZN7S6795C12v8Ev
  virtual void  v9(); // _ZN7S6795C12v9Ev
  virtual void  v10(); // _ZN7S6795C13v10Ev
  virtual void  v11(); // _ZN7S6795C13v11Ev
  virtual void  v12(); // _ZN7S6795C13v12Ev
  virtual void  v13(); // _ZN7S6795C13v13Ev
  virtual void  v14(); // _ZN7S6795C13v14Ev
  virtual void  v15(); // _ZN7S6795C13v15Ev
  virtual void  v16(); // _ZN7S6795C13v16Ev
  virtual void  v17(); // _ZN7S6795C13v17Ev
  virtual void  v18(); // _ZN7S6795C13v18Ev
  virtual void  v19(); // _ZN7S6795C13v19Ev
  virtual void  v20(); // _ZN7S6795C13v20Ev
  virtual void  v21(); // _ZN7S6795C13v21Ev
  virtual void  v22(); // _ZN7S6795C13v22Ev
  virtual void  v23(); // _ZN7S6795C13v23Ev
  virtual void  v24(); // _ZN7S6795C13v24Ev
  virtual void  v25(); // _ZN7S6795C13v25Ev
  virtual void  v26(); // _ZN7S6795C13v26Ev
  virtual void  v27(); // _ZN7S6795C13v27Ev
  virtual void  v28(); // _ZN7S6795C13v28Ev
  virtual void  v29(); // _ZN7S6795C13v29Ev
  virtual void  v30(); // _ZN7S6795C13v30Ev
  virtual void  v31(); // _ZN7S6795C13v31Ev
  virtual void  v32(); // _ZN7S6795C13v32Ev
  virtual void  v33(); // _ZN7S6795C13v33Ev
  S6795C1(); // tgen
};
//SIG(1 S6795C1) C1{ BC2{ vd v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 Fp[5] FC3{ m Fp Fi FC4{ m} FC4} Fp FC5{ m Fp Fi Fp} Fp[2] Fi FC6{ FL Fi[5] Fc[128]} Fp FC7{ vd m Fp} FC8{ m Fp[2]} Fp Fi Fc[5] Fp[4] Fi Fp Fc FC9{ Fi[4]} Fp}


 S6795C1 ::~S6795C1(){ note_dtor("S6795C1", this);}
void  S6795C1 ::v1(){vfunc_called(this, "_ZN7S6795C12v1Ev");}
void  S6795C1 ::v2(){vfunc_called(this, "_ZN7S6795C12v2Ev");}
void  S6795C1 ::v3(){vfunc_called(this, "_ZN7S6795C12v3Ev");}
void  S6795C1 ::v4(){vfunc_called(this, "_ZN7S6795C12v4Ev");}
void  S6795C1 ::v5(){vfunc_called(this, "_ZN7S6795C12v5Ev");}
void  S6795C1 ::v6(){vfunc_called(this, "_ZN7S6795C12v6Ev");}
void  S6795C1 ::v7(){vfunc_called(this, "_ZN7S6795C12v7Ev");}
void  S6795C1 ::v8(){vfunc_called(this, "_ZN7S6795C12v8Ev");}
void  S6795C1 ::v9(){vfunc_called(this, "_ZN7S6795C12v9Ev");}
void  S6795C1 ::v10(){vfunc_called(this, "_ZN7S6795C13v10Ev");}
void  S6795C1 ::v11(){vfunc_called(this, "_ZN7S6795C13v11Ev");}
void  S6795C1 ::v12(){vfunc_called(this, "_ZN7S6795C13v12Ev");}
void  S6795C1 ::v13(){vfunc_called(this, "_ZN7S6795C13v13Ev");}
void  S6795C1 ::v14(){vfunc_called(this, "_ZN7S6795C13v14Ev");}
void  S6795C1 ::v15(){vfunc_called(this, "_ZN7S6795C13v15Ev");}
void  S6795C1 ::v16(){vfunc_called(this, "_ZN7S6795C13v16Ev");}
void  S6795C1 ::v17(){vfunc_called(this, "_ZN7S6795C13v17Ev");}
void  S6795C1 ::v18(){vfunc_called(this, "_ZN7S6795C13v18Ev");}
void  S6795C1 ::v19(){vfunc_called(this, "_ZN7S6795C13v19Ev");}
void  S6795C1 ::v20(){vfunc_called(this, "_ZN7S6795C13v20Ev");}
void  S6795C1 ::v21(){vfunc_called(this, "_ZN7S6795C13v21Ev");}
void  S6795C1 ::v22(){vfunc_called(this, "_ZN7S6795C13v22Ev");}
void  S6795C1 ::v23(){vfunc_called(this, "_ZN7S6795C13v23Ev");}
void  S6795C1 ::v24(){vfunc_called(this, "_ZN7S6795C13v24Ev");}
void  S6795C1 ::v25(){vfunc_called(this, "_ZN7S6795C13v25Ev");}
void  S6795C1 ::v26(){vfunc_called(this, "_ZN7S6795C13v26Ev");}
void  S6795C1 ::v27(){vfunc_called(this, "_ZN7S6795C13v27Ev");}
void  S6795C1 ::v28(){vfunc_called(this, "_ZN7S6795C13v28Ev");}
void  S6795C1 ::v29(){vfunc_called(this, "_ZN7S6795C13v29Ev");}
void  S6795C1 ::v30(){vfunc_called(this, "_ZN7S6795C13v30Ev");}
void  S6795C1 ::v31(){vfunc_called(this, "_ZN7S6795C13v31Ev");}
void  S6795C1 ::v32(){vfunc_called(this, "_ZN7S6795C13v32Ev");}
void  S6795C1 ::v33(){vfunc_called(this, "_ZN7S6795C13v33Ev");}
S6795C1 ::S6795C1(){ note_ctor("S6795C1", this);} // tgen

static void Test_S6795C1()
{
  extern Class_Descriptor cd_S6795C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(54,77)];
    init_test(&cd_S6795C1, buf);
    S6795C1 *dp, &lv = *(dp=new (buf) S6795C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(424,304), "sizeof(S6795C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6795C1)");
    check_base_class_offset(lv, (S6795C2*), 0, "S6795C1");
    check_field_offset(lv, s6795c1f0, ABISELECT(8,4), "S6795C1.s6795c1f0");
    check_field_offset(lv, s6795c1f1, ABISELECT(48,24), "S6795C1.s6795c1f1");
    check_field_offset(lv, s6795c1f2, ABISELECT(64,36), "S6795C1.s6795c1f2");
    check_field_offset(lv, s6795c1f3, ABISELECT(72,40), "S6795C1.s6795c1f3");
    check_field_offset(lv, s6795c1f4, ABISELECT(96,52), "S6795C1.s6795c1f4");
    check_field_offset(lv, s6795c1f5, ABISELECT(112,60), "S6795C1.s6795c1f5");
    check_field_offset(lv, s6795c1f6, ABISELECT(120,64), "S6795C1.s6795c1f6");
    check_field_offset(lv, s6795c1f7, ABISELECT(280,220), "S6795C1.s6795c1f7");
    check_field_offset(lv, s6795c1f8, ABISELECT(288,224), "S6795C1.s6795c1f8");
    check_field_offset(lv, s6795c1f9, ABISELECT(304,232), "S6795C1.s6795c1f9");
    check_field_offset(lv, s6795c1f10, ABISELECT(320,240), "S6795C1.s6795c1f10");
    check_field_offset(lv, s6795c1f11, ABISELECT(328,244), "S6795C1.s6795c1f11");
    check_field_offset(lv, s6795c1f12, ABISELECT(332,248), "S6795C1.s6795c1f12");
    check_field_offset(lv, s6795c1f13, ABISELECT(344,256), "S6795C1.s6795c1f13");
    check_field_offset(lv, s6795c1f14, ABISELECT(376,272), "S6795C1.s6795c1f14");
    check_field_offset(lv, s6795c1f15, ABISELECT(384,276), "S6795C1.s6795c1f15");
    check_field_offset(lv, s6795c1f16, ABISELECT(392,280), "S6795C1.s6795c1f16");
    check_field_offset(lv, s6795c1f17, ABISELECT(396,284), "S6795C1.s6795c1f17");
    check_field_offset(lv, s6795c1f18, ABISELECT(416,300), "S6795C1.s6795c1f18");
    test_class_info(&lv, &cd_S6795C1);
    dp->~S6795C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6795C1(Test_S6795C1, "S6795C1", ABISELECT(424,304));

#else // __cplusplus

extern void _ZN7S6795C1C1Ev();
extern void _ZN7S6795C1D1Ev();
Name_Map name_map_S6795C1[] = {
  NSPAIR(_ZN7S6795C1C1Ev),
  NSPAIR(_ZN7S6795C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6795C2;
extern VTBL_ENTRY _ZTI7S6795C2[];
extern  VTBL_ENTRY _ZTV7S6795C2[];
static Base_Class bases_S6795C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6795C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6795C1[];
extern void _ZN7S6795C1D1Ev();
extern void _ZN7S6795C1D0Ev();
extern void _ZN7S6795C23v34Ev();
extern void _ZN7S6795C23v35Ev();
extern void _ZN7S6795C23v36Ev();
extern void _ZN7S6795C23v37Ev();
extern void _ZN7S6795C23v38Ev();
extern void _ZN7S6795C23v39Ev();
extern void _ZN7S6795C23v40Ev();
extern void _ZN7S6795C23v41Ev();
extern void _ZN7S6795C23v42Ev();
extern void _ZN7S6795C23v43Ev();
extern void _ZN7S6795C23v44Ev();
extern void _ZN7S6795C23v45Ev();
extern void _ZN7S6795C23v46Ev();
extern void _ZN7S6795C23v47Ev();
extern void _ZN7S6795C23v48Ev();
extern void _ZN7S6795C23v49Ev();
extern void _ZN7S6795C23v50Ev();
extern void _ZN7S6795C23v51Ev();
extern void _ZN7S6795C23v52Ev();
extern void _ZN7S6795C23v53Ev();
extern void _ZN7S6795C23v54Ev();
extern void _ZN7S6795C23v55Ev();
extern void _ZN7S6795C23v56Ev();
extern void _ZN7S6795C23v57Ev();
extern void _ZN7S6795C23v58Ev();
extern void _ZN7S6795C23v59Ev();
extern void _ZN7S6795C23v60Ev();
extern void _ZN7S6795C23v61Ev();
extern void _ZN7S6795C23v62Ev();
extern void _ZN7S6795C23v63Ev();
extern void _ZN7S6795C12v1Ev();
extern void _ZN7S6795C12v2Ev();
extern void _ZN7S6795C12v3Ev();
extern void _ZN7S6795C12v4Ev();
extern void _ZN7S6795C12v5Ev();
extern void _ZN7S6795C12v6Ev();
extern void _ZN7S6795C12v7Ev();
extern void _ZN7S6795C12v8Ev();
extern void _ZN7S6795C12v9Ev();
extern void _ZN7S6795C13v10Ev();
extern void _ZN7S6795C13v11Ev();
extern void _ZN7S6795C13v12Ev();
extern void _ZN7S6795C13v13Ev();
extern void _ZN7S6795C13v14Ev();
extern void _ZN7S6795C13v15Ev();
extern void _ZN7S6795C13v16Ev();
extern void _ZN7S6795C13v17Ev();
extern void _ZN7S6795C13v18Ev();
extern void _ZN7S6795C13v19Ev();
extern void _ZN7S6795C13v20Ev();
extern void _ZN7S6795C13v21Ev();
extern void _ZN7S6795C13v22Ev();
extern void _ZN7S6795C13v23Ev();
extern void _ZN7S6795C13v24Ev();
extern void _ZN7S6795C13v25Ev();
extern void _ZN7S6795C13v26Ev();
extern void _ZN7S6795C13v27Ev();
extern void _ZN7S6795C13v28Ev();
extern void _ZN7S6795C13v29Ev();
extern void _ZN7S6795C13v30Ev();
extern void _ZN7S6795C13v31Ev();
extern void _ZN7S6795C13v32Ev();
extern void _ZN7S6795C13v33Ev();
static  VTBL_ENTRY vtc_S6795C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6795C1[0]),
  (VTBL_ENTRY)&_ZN7S6795C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6795C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v34Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v35Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v36Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v37Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v38Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v39Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v40Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v41Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v42Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v43Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v44Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v45Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v46Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v47Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v48Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v49Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v50Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v51Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v52Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v53Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v54Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v55Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v56Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v57Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v58Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v59Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v60Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v61Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v62Ev,
  (VTBL_ENTRY)&_ZN7S6795C23v63Ev,
  (VTBL_ENTRY)&_ZN7S6795C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6795C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6795C12v3Ev,
  (VTBL_ENTRY)&_ZN7S6795C12v4Ev,
  (VTBL_ENTRY)&_ZN7S6795C12v5Ev,
  (VTBL_ENTRY)&_ZN7S6795C12v6Ev,
  (VTBL_ENTRY)&_ZN7S6795C12v7Ev,
  (VTBL_ENTRY)&_ZN7S6795C12v8Ev,
  (VTBL_ENTRY)&_ZN7S6795C12v9Ev,
  (VTBL_ENTRY)&_ZN7S6795C13v10Ev,
  (VTBL_ENTRY)&_ZN7S6795C13v11Ev,
  (VTBL_ENTRY)&_ZN7S6795C13v12Ev,
  (VTBL_ENTRY)&_ZN7S6795C13v13Ev,
  (VTBL_ENTRY)&_ZN7S6795C13v14Ev,
  (VTBL_ENTRY)&_ZN7S6795C13v15Ev,
  (VTBL_ENTRY)&_ZN7S6795C13v16Ev,
  (VTBL_ENTRY)&_ZN7S6795C13v17Ev,
  (VTBL_ENTRY)&_ZN7S6795C13v18Ev,
  (VTBL_ENTRY)&_ZN7S6795C13v19Ev,
  (VTBL_ENTRY)&_ZN7S6795C13v20Ev,
  (VTBL_ENTRY)&_ZN7S6795C13v21Ev,
  (VTBL_ENTRY)&_ZN7S6795C13v22Ev,
  (VTBL_ENTRY)&_ZN7S6795C13v23Ev,
  (VTBL_ENTRY)&_ZN7S6795C13v24Ev,
  (VTBL_ENTRY)&_ZN7S6795C13v25Ev,
  (VTBL_ENTRY)&_ZN7S6795C13v26Ev,
  (VTBL_ENTRY)&_ZN7S6795C13v27Ev,
  (VTBL_ENTRY)&_ZN7S6795C13v28Ev,
  (VTBL_ENTRY)&_ZN7S6795C13v29Ev,
  (VTBL_ENTRY)&_ZN7S6795C13v30Ev,
  (VTBL_ENTRY)&_ZN7S6795C13v31Ev,
  (VTBL_ENTRY)&_ZN7S6795C13v32Ev,
  (VTBL_ENTRY)&_ZN7S6795C13v33Ev,
};
extern VTBL_ENTRY _ZTI7S6795C1[];
extern  VTBL_ENTRY _ZTV7S6795C1[];
Class_Descriptor cd_S6795C1 = {  "S6795C1", // class name
  bases_S6795C1, 1,
  &(vtc_S6795C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(424,304), // object size
  NSPAIRA(_ZTI7S6795C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6795C1),67, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6794C2  {
  virtual  ~S6794C2(); // _ZN7S6794C2D1Ev
  virtual void  v34(); // _ZN7S6794C23v34Ev
  virtual void  v35(); // _ZN7S6794C23v35Ev
  virtual void  v36(); // _ZN7S6794C23v36Ev
  virtual void  v37(); // _ZN7S6794C23v37Ev
  virtual void  v38(); // _ZN7S6794C23v38Ev
  virtual void  v39(); // _ZN7S6794C23v39Ev
  virtual void  v40(); // _ZN7S6794C23v40Ev
  virtual void  v41(); // _ZN7S6794C23v41Ev
  virtual void  v42(); // _ZN7S6794C23v42Ev
  virtual void  v43(); // _ZN7S6794C23v43Ev
  virtual void  v44(); // _ZN7S6794C23v44Ev
  virtual void  v45(); // _ZN7S6794C23v45Ev
  virtual void  v46(); // _ZN7S6794C23v46Ev
  virtual void  v47(); // _ZN7S6794C23v47Ev
  virtual void  v48(); // _ZN7S6794C23v48Ev
  virtual void  v49(); // _ZN7S6794C23v49Ev
  virtual void  v50(); // _ZN7S6794C23v50Ev
  virtual void  v51(); // _ZN7S6794C23v51Ev
  virtual void  v52(); // _ZN7S6794C23v52Ev
  virtual void  v53(); // _ZN7S6794C23v53Ev
  virtual void  v54(); // _ZN7S6794C23v54Ev
  virtual void  v55(); // _ZN7S6794C23v55Ev
  virtual void  v56(); // _ZN7S6794C23v56Ev
  virtual void  v57(); // _ZN7S6794C23v57Ev
  virtual void  v58(); // _ZN7S6794C23v58Ev
  virtual void  v59(); // _ZN7S6794C23v59Ev
  virtual void  v60(); // _ZN7S6794C23v60Ev
  virtual void  v61(); // _ZN7S6794C23v61Ev
  virtual void  v62(); // _ZN7S6794C23v62Ev
  virtual void  v63(); // _ZN7S6794C23v63Ev
  S6794C2(); // tgen
};
//SIG(-1 S6794C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30}


 S6794C2 ::~S6794C2(){ note_dtor("S6794C2", this);}
void  S6794C2 ::v34(){vfunc_called(this, "_ZN7S6794C23v34Ev");}
void  S6794C2 ::v35(){vfunc_called(this, "_ZN7S6794C23v35Ev");}
void  S6794C2 ::v36(){vfunc_called(this, "_ZN7S6794C23v36Ev");}
void  S6794C2 ::v37(){vfunc_called(this, "_ZN7S6794C23v37Ev");}
void  S6794C2 ::v38(){vfunc_called(this, "_ZN7S6794C23v38Ev");}
void  S6794C2 ::v39(){vfunc_called(this, "_ZN7S6794C23v39Ev");}
void  S6794C2 ::v40(){vfunc_called(this, "_ZN7S6794C23v40Ev");}
void  S6794C2 ::v41(){vfunc_called(this, "_ZN7S6794C23v41Ev");}
void  S6794C2 ::v42(){vfunc_called(this, "_ZN7S6794C23v42Ev");}
void  S6794C2 ::v43(){vfunc_called(this, "_ZN7S6794C23v43Ev");}
void  S6794C2 ::v44(){vfunc_called(this, "_ZN7S6794C23v44Ev");}
void  S6794C2 ::v45(){vfunc_called(this, "_ZN7S6794C23v45Ev");}
void  S6794C2 ::v46(){vfunc_called(this, "_ZN7S6794C23v46Ev");}
void  S6794C2 ::v47(){vfunc_called(this, "_ZN7S6794C23v47Ev");}
void  S6794C2 ::v48(){vfunc_called(this, "_ZN7S6794C23v48Ev");}
void  S6794C2 ::v49(){vfunc_called(this, "_ZN7S6794C23v49Ev");}
void  S6794C2 ::v50(){vfunc_called(this, "_ZN7S6794C23v50Ev");}
void  S6794C2 ::v51(){vfunc_called(this, "_ZN7S6794C23v51Ev");}
void  S6794C2 ::v52(){vfunc_called(this, "_ZN7S6794C23v52Ev");}
void  S6794C2 ::v53(){vfunc_called(this, "_ZN7S6794C23v53Ev");}
void  S6794C2 ::v54(){vfunc_called(this, "_ZN7S6794C23v54Ev");}
void  S6794C2 ::v55(){vfunc_called(this, "_ZN7S6794C23v55Ev");}
void  S6794C2 ::v56(){vfunc_called(this, "_ZN7S6794C23v56Ev");}
void  S6794C2 ::v57(){vfunc_called(this, "_ZN7S6794C23v57Ev");}
void  S6794C2 ::v58(){vfunc_called(this, "_ZN7S6794C23v58Ev");}
void  S6794C2 ::v59(){vfunc_called(this, "_ZN7S6794C23v59Ev");}
void  S6794C2 ::v60(){vfunc_called(this, "_ZN7S6794C23v60Ev");}
void  S6794C2 ::v61(){vfunc_called(this, "_ZN7S6794C23v61Ev");}
void  S6794C2 ::v62(){vfunc_called(this, "_ZN7S6794C23v62Ev");}
void  S6794C2 ::v63(){vfunc_called(this, "_ZN7S6794C23v63Ev");}
S6794C2 ::S6794C2(){ note_ctor("S6794C2", this);} // tgen

static void Test_S6794C2()
{
  extern Class_Descriptor cd_S6794C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S6794C2, buf);
    S6794C2 *dp, &lv = *(dp=new (buf) S6794C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S6794C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6794C2)");
    test_class_info(&lv, &cd_S6794C2);
    dp->~S6794C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6794C2(Test_S6794C2, "S6794C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S6794C2C1Ev();
extern void _ZN7S6794C2D1Ev();
Name_Map name_map_S6794C2[] = {
  NSPAIR(_ZN7S6794C2C1Ev),
  NSPAIR(_ZN7S6794C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6794C2[];
extern void _ZN7S6794C2D1Ev();
extern void _ZN7S6794C2D0Ev();
extern void _ZN7S6794C23v34Ev();
extern void _ZN7S6794C23v35Ev();
extern void _ZN7S6794C23v36Ev();
extern void _ZN7S6794C23v37Ev();
extern void _ZN7S6794C23v38Ev();
extern void _ZN7S6794C23v39Ev();
extern void _ZN7S6794C23v40Ev();
extern void _ZN7S6794C23v41Ev();
extern void _ZN7S6794C23v42Ev();
extern void _ZN7S6794C23v43Ev();
extern void _ZN7S6794C23v44Ev();
extern void _ZN7S6794C23v45Ev();
extern void _ZN7S6794C23v46Ev();
extern void _ZN7S6794C23v47Ev();
extern void _ZN7S6794C23v48Ev();
extern void _ZN7S6794C23v49Ev();
extern void _ZN7S6794C23v50Ev();
extern void _ZN7S6794C23v51Ev();
extern void _ZN7S6794C23v52Ev();
extern void _ZN7S6794C23v53Ev();
extern void _ZN7S6794C23v54Ev();
extern void _ZN7S6794C23v55Ev();
extern void _ZN7S6794C23v56Ev();
extern void _ZN7S6794C23v57Ev();
extern void _ZN7S6794C23v58Ev();
extern void _ZN7S6794C23v59Ev();
extern void _ZN7S6794C23v60Ev();
extern void _ZN7S6794C23v61Ev();
extern void _ZN7S6794C23v62Ev();
extern void _ZN7S6794C23v63Ev();
static  VTBL_ENTRY vtc_S6794C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6794C2[0]),
  (VTBL_ENTRY)&_ZN7S6794C2D1Ev,
  (VTBL_ENTRY)&_ZN7S6794C2D0Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v34Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v35Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v36Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v37Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v38Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v39Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v40Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v41Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v42Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v43Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v44Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v45Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v46Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v47Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v48Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v49Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v50Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v51Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v52Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v53Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v54Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v55Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v56Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v57Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v58Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v59Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v60Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v61Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v62Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v63Ev,
};
extern VTBL_ENTRY _ZTI7S6794C2[];
extern  VTBL_ENTRY _ZTV7S6794C2[];
Class_Descriptor cd_S6794C2 = {  "S6794C2", // class name
  0,0,//no base classes
  &(vtc_S6794C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6794C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6794C2),34, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6794C7  {
  long s6794c7f0;
  int s6794c7f1[5];
  char s6794c7f2[128];
};
//SIG(-1 S6794C7) C1{ Fl Fi[5] Fc[128]}



static void Test_S6794C7()
{
  {
    init_simple_test("S6794C7");
    S6794C7 lv;
    check2(sizeof(lv), ABISELECT(160,152), "sizeof(S6794C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6794C7)");
    check_field_offset(lv, s6794c7f0, 0, "S6794C7.s6794c7f0");
    check_field_offset(lv, s6794c7f1, ABISELECT(8,4), "S6794C7.s6794c7f1");
    check_field_offset(lv, s6794c7f2, ABISELECT(28,24), "S6794C7.s6794c7f2");
  }
}
static Arrange_To_Call_Me vS6794C7(Test_S6794C7, "S6794C7", ABISELECT(160,152));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6794C1  : S6794C2 {
  void *s6794c1f0[5];
  ::S5266C25 s6794c1f1;
  void *s6794c1f2;
  ::S6795C6_nt s6794c1f3;
  void *s6794c1f4[2];
  int s6794c1f5;
  ::S6794C7 s6794c1f6;
  void *s6794c1f7;
  ::S6795C8_nt s6794c1f8;
  ::S79C38_nt s6794c1f9;
  void *s6794c1f10;
  int s6794c1f11;
  char s6794c1f12[5];
  void *s6794c1f13[4];
  int s6794c1f14;
  void *s6794c1f15;
  char s6794c1f16;
  ::S6795C10_nt s6794c1f17;
  void *s6794c1f18;
  virtual  ~S6794C1(); // _ZN7S6794C1D1Ev
  virtual void  v1(); // _ZN7S6794C12v1Ev
  virtual void  v2(); // _ZN7S6794C12v2Ev
  virtual void  v3(); // _ZN7S6794C12v3Ev
  virtual void  v4(); // _ZN7S6794C12v4Ev
  virtual void  v5(); // _ZN7S6794C12v5Ev
  virtual void  v6(); // _ZN7S6794C12v6Ev
  virtual void  v7(); // _ZN7S6794C12v7Ev
  virtual void  v8(); // _ZN7S6794C12v8Ev
  virtual void  v9(); // _ZN7S6794C12v9Ev
  virtual void  v10(); // _ZN7S6794C13v10Ev
  virtual void  v11(); // _ZN7S6794C13v11Ev
  virtual void  v12(); // _ZN7S6794C13v12Ev
  virtual void  v13(); // _ZN7S6794C13v13Ev
  virtual void  v14(); // _ZN7S6794C13v14Ev
  virtual void  v15(); // _ZN7S6794C13v15Ev
  virtual void  v16(); // _ZN7S6794C13v16Ev
  virtual void  v17(); // _ZN7S6794C13v17Ev
  virtual void  v18(); // _ZN7S6794C13v18Ev
  virtual void  v19(); // _ZN7S6794C13v19Ev
  virtual void  v20(); // _ZN7S6794C13v20Ev
  virtual void  v21(); // _ZN7S6794C13v21Ev
  virtual void  v22(); // _ZN7S6794C13v22Ev
  virtual void  v23(); // _ZN7S6794C13v23Ev
  virtual void  v24(); // _ZN7S6794C13v24Ev
  virtual void  v25(); // _ZN7S6794C13v25Ev
  virtual void  v26(); // _ZN7S6794C13v26Ev
  virtual void  v27(); // _ZN7S6794C13v27Ev
  virtual void  v28(); // _ZN7S6794C13v28Ev
  virtual void  v29(); // _ZN7S6794C13v29Ev
  virtual void  v30(); // _ZN7S6794C13v30Ev
  virtual void  v31(); // _ZN7S6794C13v31Ev
  virtual void  v32(); // _ZN7S6794C13v32Ev
  virtual void  v33(); // _ZN7S6794C13v33Ev
  S6794C1(); // tgen
};
//SIG(1 S6794C1) C1{ BC2{ vd v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 Fp[5] FC3{ m Fp Fi FC4{ m} FC4} Fp FC5{ m Fp Fi Fp} Fp[2] Fi FC6{ Fl Fi[5] Fc[128]} Fp FC7{ vd m Fp} FC8{ m Fp[2]} Fp Fi Fc[5] Fp[4] Fi Fp Fc FC9{ Fi[4]} Fp}


 S6794C1 ::~S6794C1(){ note_dtor("S6794C1", this);}
void  S6794C1 ::v1(){vfunc_called(this, "_ZN7S6794C12v1Ev");}
void  S6794C1 ::v2(){vfunc_called(this, "_ZN7S6794C12v2Ev");}
void  S6794C1 ::v3(){vfunc_called(this, "_ZN7S6794C12v3Ev");}
void  S6794C1 ::v4(){vfunc_called(this, "_ZN7S6794C12v4Ev");}
void  S6794C1 ::v5(){vfunc_called(this, "_ZN7S6794C12v5Ev");}
void  S6794C1 ::v6(){vfunc_called(this, "_ZN7S6794C12v6Ev");}
void  S6794C1 ::v7(){vfunc_called(this, "_ZN7S6794C12v7Ev");}
void  S6794C1 ::v8(){vfunc_called(this, "_ZN7S6794C12v8Ev");}
void  S6794C1 ::v9(){vfunc_called(this, "_ZN7S6794C12v9Ev");}
void  S6794C1 ::v10(){vfunc_called(this, "_ZN7S6794C13v10Ev");}
void  S6794C1 ::v11(){vfunc_called(this, "_ZN7S6794C13v11Ev");}
void  S6794C1 ::v12(){vfunc_called(this, "_ZN7S6794C13v12Ev");}
void  S6794C1 ::v13(){vfunc_called(this, "_ZN7S6794C13v13Ev");}
void  S6794C1 ::v14(){vfunc_called(this, "_ZN7S6794C13v14Ev");}
void  S6794C1 ::v15(){vfunc_called(this, "_ZN7S6794C13v15Ev");}
void  S6794C1 ::v16(){vfunc_called(this, "_ZN7S6794C13v16Ev");}
void  S6794C1 ::v17(){vfunc_called(this, "_ZN7S6794C13v17Ev");}
void  S6794C1 ::v18(){vfunc_called(this, "_ZN7S6794C13v18Ev");}
void  S6794C1 ::v19(){vfunc_called(this, "_ZN7S6794C13v19Ev");}
void  S6794C1 ::v20(){vfunc_called(this, "_ZN7S6794C13v20Ev");}
void  S6794C1 ::v21(){vfunc_called(this, "_ZN7S6794C13v21Ev");}
void  S6794C1 ::v22(){vfunc_called(this, "_ZN7S6794C13v22Ev");}
void  S6794C1 ::v23(){vfunc_called(this, "_ZN7S6794C13v23Ev");}
void  S6794C1 ::v24(){vfunc_called(this, "_ZN7S6794C13v24Ev");}
void  S6794C1 ::v25(){vfunc_called(this, "_ZN7S6794C13v25Ev");}
void  S6794C1 ::v26(){vfunc_called(this, "_ZN7S6794C13v26Ev");}
void  S6794C1 ::v27(){vfunc_called(this, "_ZN7S6794C13v27Ev");}
void  S6794C1 ::v28(){vfunc_called(this, "_ZN7S6794C13v28Ev");}
void  S6794C1 ::v29(){vfunc_called(this, "_ZN7S6794C13v29Ev");}
void  S6794C1 ::v30(){vfunc_called(this, "_ZN7S6794C13v30Ev");}
void  S6794C1 ::v31(){vfunc_called(this, "_ZN7S6794C13v31Ev");}
void  S6794C1 ::v32(){vfunc_called(this, "_ZN7S6794C13v32Ev");}
void  S6794C1 ::v33(){vfunc_called(this, "_ZN7S6794C13v33Ev");}
S6794C1 ::S6794C1(){ note_ctor("S6794C1", this);} // tgen

static void Test_S6794C1()
{
  extern Class_Descriptor cd_S6794C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(54,76)];
    init_test(&cd_S6794C1, buf);
    S6794C1 *dp, &lv = *(dp=new (buf) S6794C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(424,300), "sizeof(S6794C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6794C1)");
    check_base_class_offset(lv, (S6794C2*), 0, "S6794C1");
    check_field_offset(lv, s6794c1f0, ABISELECT(8,4), "S6794C1.s6794c1f0");
    check_field_offset(lv, s6794c1f1, ABISELECT(48,24), "S6794C1.s6794c1f1");
    check_field_offset(lv, s6794c1f2, ABISELECT(64,36), "S6794C1.s6794c1f2");
    check_field_offset(lv, s6794c1f3, ABISELECT(72,40), "S6794C1.s6794c1f3");
    check_field_offset(lv, s6794c1f4, ABISELECT(96,52), "S6794C1.s6794c1f4");
    check_field_offset(lv, s6794c1f5, ABISELECT(112,60), "S6794C1.s6794c1f5");
    check_field_offset(lv, s6794c1f6, ABISELECT(120,64), "S6794C1.s6794c1f6");
    check_field_offset(lv, s6794c1f7, ABISELECT(280,216), "S6794C1.s6794c1f7");
    check_field_offset(lv, s6794c1f8, ABISELECT(288,220), "S6794C1.s6794c1f8");
    check_field_offset(lv, s6794c1f9, ABISELECT(304,228), "S6794C1.s6794c1f9");
    check_field_offset(lv, s6794c1f10, ABISELECT(320,236), "S6794C1.s6794c1f10");
    check_field_offset(lv, s6794c1f11, ABISELECT(328,240), "S6794C1.s6794c1f11");
    check_field_offset(lv, s6794c1f12, ABISELECT(332,244), "S6794C1.s6794c1f12");
    check_field_offset(lv, s6794c1f13, ABISELECT(344,252), "S6794C1.s6794c1f13");
    check_field_offset(lv, s6794c1f14, ABISELECT(376,268), "S6794C1.s6794c1f14");
    check_field_offset(lv, s6794c1f15, ABISELECT(384,272), "S6794C1.s6794c1f15");
    check_field_offset(lv, s6794c1f16, ABISELECT(392,276), "S6794C1.s6794c1f16");
    check_field_offset(lv, s6794c1f17, ABISELECT(396,280), "S6794C1.s6794c1f17");
    check_field_offset(lv, s6794c1f18, ABISELECT(416,296), "S6794C1.s6794c1f18");
    test_class_info(&lv, &cd_S6794C1);
    dp->~S6794C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6794C1(Test_S6794C1, "S6794C1", ABISELECT(424,300));

#else // __cplusplus

extern void _ZN7S6794C1C1Ev();
extern void _ZN7S6794C1D1Ev();
Name_Map name_map_S6794C1[] = {
  NSPAIR(_ZN7S6794C1C1Ev),
  NSPAIR(_ZN7S6794C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6794C2;
extern VTBL_ENTRY _ZTI7S6794C2[];
extern  VTBL_ENTRY _ZTV7S6794C2[];
static Base_Class bases_S6794C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6794C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6794C1[];
extern void _ZN7S6794C1D1Ev();
extern void _ZN7S6794C1D0Ev();
extern void _ZN7S6794C23v34Ev();
extern void _ZN7S6794C23v35Ev();
extern void _ZN7S6794C23v36Ev();
extern void _ZN7S6794C23v37Ev();
extern void _ZN7S6794C23v38Ev();
extern void _ZN7S6794C23v39Ev();
extern void _ZN7S6794C23v40Ev();
extern void _ZN7S6794C23v41Ev();
extern void _ZN7S6794C23v42Ev();
extern void _ZN7S6794C23v43Ev();
extern void _ZN7S6794C23v44Ev();
extern void _ZN7S6794C23v45Ev();
extern void _ZN7S6794C23v46Ev();
extern void _ZN7S6794C23v47Ev();
extern void _ZN7S6794C23v48Ev();
extern void _ZN7S6794C23v49Ev();
extern void _ZN7S6794C23v50Ev();
extern void _ZN7S6794C23v51Ev();
extern void _ZN7S6794C23v52Ev();
extern void _ZN7S6794C23v53Ev();
extern void _ZN7S6794C23v54Ev();
extern void _ZN7S6794C23v55Ev();
extern void _ZN7S6794C23v56Ev();
extern void _ZN7S6794C23v57Ev();
extern void _ZN7S6794C23v58Ev();
extern void _ZN7S6794C23v59Ev();
extern void _ZN7S6794C23v60Ev();
extern void _ZN7S6794C23v61Ev();
extern void _ZN7S6794C23v62Ev();
extern void _ZN7S6794C23v63Ev();
extern void _ZN7S6794C12v1Ev();
extern void _ZN7S6794C12v2Ev();
extern void _ZN7S6794C12v3Ev();
extern void _ZN7S6794C12v4Ev();
extern void _ZN7S6794C12v5Ev();
extern void _ZN7S6794C12v6Ev();
extern void _ZN7S6794C12v7Ev();
extern void _ZN7S6794C12v8Ev();
extern void _ZN7S6794C12v9Ev();
extern void _ZN7S6794C13v10Ev();
extern void _ZN7S6794C13v11Ev();
extern void _ZN7S6794C13v12Ev();
extern void _ZN7S6794C13v13Ev();
extern void _ZN7S6794C13v14Ev();
extern void _ZN7S6794C13v15Ev();
extern void _ZN7S6794C13v16Ev();
extern void _ZN7S6794C13v17Ev();
extern void _ZN7S6794C13v18Ev();
extern void _ZN7S6794C13v19Ev();
extern void _ZN7S6794C13v20Ev();
extern void _ZN7S6794C13v21Ev();
extern void _ZN7S6794C13v22Ev();
extern void _ZN7S6794C13v23Ev();
extern void _ZN7S6794C13v24Ev();
extern void _ZN7S6794C13v25Ev();
extern void _ZN7S6794C13v26Ev();
extern void _ZN7S6794C13v27Ev();
extern void _ZN7S6794C13v28Ev();
extern void _ZN7S6794C13v29Ev();
extern void _ZN7S6794C13v30Ev();
extern void _ZN7S6794C13v31Ev();
extern void _ZN7S6794C13v32Ev();
extern void _ZN7S6794C13v33Ev();
static  VTBL_ENTRY vtc_S6794C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6794C1[0]),
  (VTBL_ENTRY)&_ZN7S6794C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6794C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v34Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v35Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v36Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v37Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v38Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v39Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v40Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v41Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v42Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v43Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v44Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v45Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v46Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v47Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v48Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v49Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v50Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v51Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v52Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v53Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v54Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v55Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v56Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v57Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v58Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v59Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v60Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v61Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v62Ev,
  (VTBL_ENTRY)&_ZN7S6794C23v63Ev,
  (VTBL_ENTRY)&_ZN7S6794C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6794C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6794C12v3Ev,
  (VTBL_ENTRY)&_ZN7S6794C12v4Ev,
  (VTBL_ENTRY)&_ZN7S6794C12v5Ev,
  (VTBL_ENTRY)&_ZN7S6794C12v6Ev,
  (VTBL_ENTRY)&_ZN7S6794C12v7Ev,
  (VTBL_ENTRY)&_ZN7S6794C12v8Ev,
  (VTBL_ENTRY)&_ZN7S6794C12v9Ev,
  (VTBL_ENTRY)&_ZN7S6794C13v10Ev,
  (VTBL_ENTRY)&_ZN7S6794C13v11Ev,
  (VTBL_ENTRY)&_ZN7S6794C13v12Ev,
  (VTBL_ENTRY)&_ZN7S6794C13v13Ev,
  (VTBL_ENTRY)&_ZN7S6794C13v14Ev,
  (VTBL_ENTRY)&_ZN7S6794C13v15Ev,
  (VTBL_ENTRY)&_ZN7S6794C13v16Ev,
  (VTBL_ENTRY)&_ZN7S6794C13v17Ev,
  (VTBL_ENTRY)&_ZN7S6794C13v18Ev,
  (VTBL_ENTRY)&_ZN7S6794C13v19Ev,
  (VTBL_ENTRY)&_ZN7S6794C13v20Ev,
  (VTBL_ENTRY)&_ZN7S6794C13v21Ev,
  (VTBL_ENTRY)&_ZN7S6794C13v22Ev,
  (VTBL_ENTRY)&_ZN7S6794C13v23Ev,
  (VTBL_ENTRY)&_ZN7S6794C13v24Ev,
  (VTBL_ENTRY)&_ZN7S6794C13v25Ev,
  (VTBL_ENTRY)&_ZN7S6794C13v26Ev,
  (VTBL_ENTRY)&_ZN7S6794C13v27Ev,
  (VTBL_ENTRY)&_ZN7S6794C13v28Ev,
  (VTBL_ENTRY)&_ZN7S6794C13v29Ev,
  (VTBL_ENTRY)&_ZN7S6794C13v30Ev,
  (VTBL_ENTRY)&_ZN7S6794C13v31Ev,
  (VTBL_ENTRY)&_ZN7S6794C13v32Ev,
  (VTBL_ENTRY)&_ZN7S6794C13v33Ev,
};
extern VTBL_ENTRY _ZTI7S6794C1[];
extern  VTBL_ENTRY _ZTV7S6794C1[];
Class_Descriptor cd_S6794C1 = {  "S6794C1", // class name
  bases_S6794C1, 1,
  &(vtc_S6794C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(424,300), // object size
  NSPAIRA(_ZTI7S6794C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6794C1),67, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6850C2  {
  int s6850c2f0;
  __tsi64 s6850c2f1;
  void *s6850c2f2[4];
  int s6850c2f3[2];
  void *s6850c2f4;
  ::S79C8_nt s6850c2f5;
  void *s6850c2f6[2];
  virtual  ~S6850C2(); // _ZN7S6850C2D1Ev
  virtual void  v4(); // _ZN7S6850C22v4Ev
  virtual void  v5(); // _ZN7S6850C22v5Ev
  virtual void  v6(); // _ZN7S6850C22v6Ev
  virtual void  v7(); // _ZN7S6850C22v7Ev
  virtual void  v8(); // _ZN7S6850C22v8Ev
  virtual void  v9(); // _ZN7S6850C22v9Ev
  virtual void  v10(); // _ZN7S6850C23v10Ev
  virtual void  v11(); // _ZN7S6850C23v11Ev
  virtual void  v12(); // _ZN7S6850C23v12Ev
  virtual void  v13(); // _ZN7S6850C23v13Ev
  virtual void  v14(); // _ZN7S6850C23v14Ev
  virtual void  v15(); // _ZN7S6850C23v15Ev
  virtual void  v16(); // _ZN7S6850C23v16Ev
  virtual void  v17(); // _ZN7S6850C23v17Ev
  virtual void  v18(); // _ZN7S6850C23v18Ev
  virtual void  v19(); // _ZN7S6850C23v19Ev
  virtual void  v20(); // _ZN7S6850C23v20Ev
  virtual void  v21(); // _ZN7S6850C23v21Ev
  virtual void  v22(); // _ZN7S6850C23v22Ev
  virtual void  v23(); // _ZN7S6850C23v23Ev
  virtual void  v24(); // _ZN7S6850C23v24Ev
  virtual void  v25(); // _ZN7S6850C23v25Ev
  virtual void  v26(); // _ZN7S6850C23v26Ev
  virtual void  v27(); // _ZN7S6850C23v27Ev
  virtual void  v28(); // _ZN7S6850C23v28Ev
  virtual void  v29(); // _ZN7S6850C23v29Ev
  virtual void  v30(); // _ZN7S6850C23v30Ev
  virtual void  v31(); // _ZN7S6850C23v31Ev
  virtual void  v32(); // _ZN7S6850C23v32Ev
  virtual void  v33(); // _ZN7S6850C23v33Ev
  virtual void  v34(); // _ZN7S6850C23v34Ev
  virtual void  v35(); // _ZN7S6850C23v35Ev
  virtual void  v36(); // _ZN7S6850C23v36Ev
  virtual void  v37(); // _ZN7S6850C23v37Ev
  virtual void  v38(); // _ZN7S6850C23v38Ev
  virtual void  v39(); // _ZN7S6850C23v39Ev
  virtual void  v40(); // _ZN7S6850C23v40Ev
  virtual void  v41(); // _ZN7S6850C23v41Ev
  virtual void  v42(); // _ZN7S6850C23v42Ev
  virtual void  v43(); // _ZN7S6850C23v43Ev
  virtual void  v44(); // _ZN7S6850C23v44Ev
  virtual void  v45(); // _ZN7S6850C23v45Ev
  virtual void  v46(); // _ZN7S6850C23v46Ev
  virtual void  v47(); // _ZN7S6850C23v47Ev
  virtual void  v48(); // _ZN7S6850C23v48Ev
  virtual void  v49(); // _ZN7S6850C23v49Ev
  virtual void  v50(); // _ZN7S6850C23v50Ev
  virtual void  v51(); // _ZN7S6850C23v51Ev
  virtual void  v52(); // _ZN7S6850C23v52Ev
  virtual void  v53(); // _ZN7S6850C23v53Ev
  virtual void  v54(); // _ZN7S6850C23v54Ev
  virtual void  v55(); // _ZN7S6850C23v55Ev
  virtual void  v56(); // _ZN7S6850C23v56Ev
  virtual void  v57(); // _ZN7S6850C23v57Ev
  virtual void  v58(); // _ZN7S6850C23v58Ev
  virtual void  v59(); // _ZN7S6850C23v59Ev
  virtual void  v60(); // _ZN7S6850C23v60Ev
  virtual void  v61(); // _ZN7S6850C23v61Ev
  virtual void  v62(); // _ZN7S6850C23v62Ev
  virtual void  v63(); // _ZN7S6850C23v63Ev
  virtual void  v64(); // _ZN7S6850C23v64Ev
  virtual void  v65(); // _ZN7S6850C23v65Ev
  virtual void  v66(); // _ZN7S6850C23v66Ev
  virtual void  v67(); // _ZN7S6850C23v67Ev
  S6850C2(); // tgen
};
//SIG(-1 S6850C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 Fi FL Fp[4] Fi[2] Fp FC2{ m Fi[2]} Fp[2]}


 S6850C2 ::~S6850C2(){ note_dtor("S6850C2", this);}
void  S6850C2 ::v4(){vfunc_called(this, "_ZN7S6850C22v4Ev");}
void  S6850C2 ::v5(){vfunc_called(this, "_ZN7S6850C22v5Ev");}
void  S6850C2 ::v6(){vfunc_called(this, "_ZN7S6850C22v6Ev");}
void  S6850C2 ::v7(){vfunc_called(this, "_ZN7S6850C22v7Ev");}
void  S6850C2 ::v8(){vfunc_called(this, "_ZN7S6850C22v8Ev");}
void  S6850C2 ::v9(){vfunc_called(this, "_ZN7S6850C22v9Ev");}
void  S6850C2 ::v10(){vfunc_called(this, "_ZN7S6850C23v10Ev");}
void  S6850C2 ::v11(){vfunc_called(this, "_ZN7S6850C23v11Ev");}
void  S6850C2 ::v12(){vfunc_called(this, "_ZN7S6850C23v12Ev");}
void  S6850C2 ::v13(){vfunc_called(this, "_ZN7S6850C23v13Ev");}
void  S6850C2 ::v14(){vfunc_called(this, "_ZN7S6850C23v14Ev");}
void  S6850C2 ::v15(){vfunc_called(this, "_ZN7S6850C23v15Ev");}
void  S6850C2 ::v16(){vfunc_called(this, "_ZN7S6850C23v16Ev");}
void  S6850C2 ::v17(){vfunc_called(this, "_ZN7S6850C23v17Ev");}
void  S6850C2 ::v18(){vfunc_called(this, "_ZN7S6850C23v18Ev");}
void  S6850C2 ::v19(){vfunc_called(this, "_ZN7S6850C23v19Ev");}
void  S6850C2 ::v20(){vfunc_called(this, "_ZN7S6850C23v20Ev");}
void  S6850C2 ::v21(){vfunc_called(this, "_ZN7S6850C23v21Ev");}
void  S6850C2 ::v22(){vfunc_called(this, "_ZN7S6850C23v22Ev");}
void  S6850C2 ::v23(){vfunc_called(this, "_ZN7S6850C23v23Ev");}
void  S6850C2 ::v24(){vfunc_called(this, "_ZN7S6850C23v24Ev");}
void  S6850C2 ::v25(){vfunc_called(this, "_ZN7S6850C23v25Ev");}
void  S6850C2 ::v26(){vfunc_called(this, "_ZN7S6850C23v26Ev");}
void  S6850C2 ::v27(){vfunc_called(this, "_ZN7S6850C23v27Ev");}
void  S6850C2 ::v28(){vfunc_called(this, "_ZN7S6850C23v28Ev");}
void  S6850C2 ::v29(){vfunc_called(this, "_ZN7S6850C23v29Ev");}
void  S6850C2 ::v30(){vfunc_called(this, "_ZN7S6850C23v30Ev");}
void  S6850C2 ::v31(){vfunc_called(this, "_ZN7S6850C23v31Ev");}
void  S6850C2 ::v32(){vfunc_called(this, "_ZN7S6850C23v32Ev");}
void  S6850C2 ::v33(){vfunc_called(this, "_ZN7S6850C23v33Ev");}
void  S6850C2 ::v34(){vfunc_called(this, "_ZN7S6850C23v34Ev");}
void  S6850C2 ::v35(){vfunc_called(this, "_ZN7S6850C23v35Ev");}
void  S6850C2 ::v36(){vfunc_called(this, "_ZN7S6850C23v36Ev");}
void  S6850C2 ::v37(){vfunc_called(this, "_ZN7S6850C23v37Ev");}
void  S6850C2 ::v38(){vfunc_called(this, "_ZN7S6850C23v38Ev");}
void  S6850C2 ::v39(){vfunc_called(this, "_ZN7S6850C23v39Ev");}
void  S6850C2 ::v40(){vfunc_called(this, "_ZN7S6850C23v40Ev");}
void  S6850C2 ::v41(){vfunc_called(this, "_ZN7S6850C23v41Ev");}
void  S6850C2 ::v42(){vfunc_called(this, "_ZN7S6850C23v42Ev");}
void  S6850C2 ::v43(){vfunc_called(this, "_ZN7S6850C23v43Ev");}
void  S6850C2 ::v44(){vfunc_called(this, "_ZN7S6850C23v44Ev");}
void  S6850C2 ::v45(){vfunc_called(this, "_ZN7S6850C23v45Ev");}
void  S6850C2 ::v46(){vfunc_called(this, "_ZN7S6850C23v46Ev");}
void  S6850C2 ::v47(){vfunc_called(this, "_ZN7S6850C23v47Ev");}
void  S6850C2 ::v48(){vfunc_called(this, "_ZN7S6850C23v48Ev");}
void  S6850C2 ::v49(){vfunc_called(this, "_ZN7S6850C23v49Ev");}
void  S6850C2 ::v50(){vfunc_called(this, "_ZN7S6850C23v50Ev");}
void  S6850C2 ::v51(){vfunc_called(this, "_ZN7S6850C23v51Ev");}
void  S6850C2 ::v52(){vfunc_called(this, "_ZN7S6850C23v52Ev");}
void  S6850C2 ::v53(){vfunc_called(this, "_ZN7S6850C23v53Ev");}
void  S6850C2 ::v54(){vfunc_called(this, "_ZN7S6850C23v54Ev");}
void  S6850C2 ::v55(){vfunc_called(this, "_ZN7S6850C23v55Ev");}
void  S6850C2 ::v56(){vfunc_called(this, "_ZN7S6850C23v56Ev");}
void  S6850C2 ::v57(){vfunc_called(this, "_ZN7S6850C23v57Ev");}
void  S6850C2 ::v58(){vfunc_called(this, "_ZN7S6850C23v58Ev");}
void  S6850C2 ::v59(){vfunc_called(this, "_ZN7S6850C23v59Ev");}
void  S6850C2 ::v60(){vfunc_called(this, "_ZN7S6850C23v60Ev");}
void  S6850C2 ::v61(){vfunc_called(this, "_ZN7S6850C23v61Ev");}
void  S6850C2 ::v62(){vfunc_called(this, "_ZN7S6850C23v62Ev");}
void  S6850C2 ::v63(){vfunc_called(this, "_ZN7S6850C23v63Ev");}
void  S6850C2 ::v64(){vfunc_called(this, "_ZN7S6850C23v64Ev");}
void  S6850C2 ::v65(){vfunc_called(this, "_ZN7S6850C23v65Ev");}
void  S6850C2 ::v66(){vfunc_called(this, "_ZN7S6850C23v66Ev");}
void  S6850C2 ::v67(){vfunc_called(this, "_ZN7S6850C23v67Ev");}
S6850C2 ::S6850C2(){ note_ctor("S6850C2", this);} // tgen

static void Test_S6850C2()
{
  extern Class_Descriptor cd_S6850C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S6850C2, buf);
    S6850C2 *dp, &lv = *(dp=new (buf) S6850C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S6850C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6850C2)");
    check_field_offset(lv, s6850c2f0, ABISELECT(8,4), "S6850C2.s6850c2f0");
    check_field_offset(lv, s6850c2f1, ABISELECT(16,8), "S6850C2.s6850c2f1");
    check_field_offset(lv, s6850c2f2, ABISELECT(24,16), "S6850C2.s6850c2f2");
    check_field_offset(lv, s6850c2f3, ABISELECT(56,32), "S6850C2.s6850c2f3");
    check_field_offset(lv, s6850c2f4, ABISELECT(64,40), "S6850C2.s6850c2f4");
    check_field_offset(lv, s6850c2f5, ABISELECT(72,44), "S6850C2.s6850c2f5");
    check_field_offset(lv, s6850c2f6, ABISELECT(80,52), "S6850C2.s6850c2f6");
    test_class_info(&lv, &cd_S6850C2);
    dp->~S6850C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6850C2(Test_S6850C2, "S6850C2", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S6850C2C1Ev();
extern void _ZN7S6850C2D1Ev();
Name_Map name_map_S6850C2[] = {
  NSPAIR(_ZN7S6850C2C1Ev),
  NSPAIR(_ZN7S6850C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6850C2[];
extern void _ZN7S6850C2D1Ev();
extern void _ZN7S6850C2D0Ev();
extern void _ZN7S6850C22v4Ev();
extern void _ZN7S6850C22v5Ev();
extern void _ZN7S6850C22v6Ev();
extern void _ZN7S6850C22v7Ev();
extern void _ZN7S6850C22v8Ev();
extern void _ZN7S6850C22v9Ev();
extern void _ZN7S6850C23v10Ev();
extern void _ZN7S6850C23v11Ev();
extern void _ZN7S6850C23v12Ev();
extern void _ZN7S6850C23v13Ev();
extern void _ZN7S6850C23v14Ev();
extern void _ZN7S6850C23v15Ev();
extern void _ZN7S6850C23v16Ev();
extern void _ZN7S6850C23v17Ev();
extern void _ZN7S6850C23v18Ev();
extern void _ZN7S6850C23v19Ev();
extern void _ZN7S6850C23v20Ev();
extern void _ZN7S6850C23v21Ev();
extern void _ZN7S6850C23v22Ev();
extern void _ZN7S6850C23v23Ev();
extern void _ZN7S6850C23v24Ev();
extern void _ZN7S6850C23v25Ev();
extern void _ZN7S6850C23v26Ev();
extern void _ZN7S6850C23v27Ev();
extern void _ZN7S6850C23v28Ev();
extern void _ZN7S6850C23v29Ev();
extern void _ZN7S6850C23v30Ev();
extern void _ZN7S6850C23v31Ev();
extern void _ZN7S6850C23v32Ev();
extern void _ZN7S6850C23v33Ev();
extern void _ZN7S6850C23v34Ev();
extern void _ZN7S6850C23v35Ev();
extern void _ZN7S6850C23v36Ev();
extern void _ZN7S6850C23v37Ev();
extern void _ZN7S6850C23v38Ev();
extern void _ZN7S6850C23v39Ev();
extern void _ZN7S6850C23v40Ev();
extern void _ZN7S6850C23v41Ev();
extern void _ZN7S6850C23v42Ev();
extern void _ZN7S6850C23v43Ev();
extern void _ZN7S6850C23v44Ev();
extern void _ZN7S6850C23v45Ev();
extern void _ZN7S6850C23v46Ev();
extern void _ZN7S6850C23v47Ev();
extern void _ZN7S6850C23v48Ev();
extern void _ZN7S6850C23v49Ev();
extern void _ZN7S6850C23v50Ev();
extern void _ZN7S6850C23v51Ev();
extern void _ZN7S6850C23v52Ev();
extern void _ZN7S6850C23v53Ev();
extern void _ZN7S6850C23v54Ev();
extern void _ZN7S6850C23v55Ev();
extern void _ZN7S6850C23v56Ev();
extern void _ZN7S6850C23v57Ev();
extern void _ZN7S6850C23v58Ev();
extern void _ZN7S6850C23v59Ev();
extern void _ZN7S6850C23v60Ev();
extern void _ZN7S6850C23v61Ev();
extern void _ZN7S6850C23v62Ev();
extern void _ZN7S6850C23v63Ev();
extern void _ZN7S6850C23v64Ev();
extern void _ZN7S6850C23v65Ev();
extern void _ZN7S6850C23v66Ev();
extern void _ZN7S6850C23v67Ev();
static  VTBL_ENTRY vtc_S6850C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6850C2[0]),
  (VTBL_ENTRY)&_ZN7S6850C2D1Ev,
  (VTBL_ENTRY)&_ZN7S6850C2D0Ev,
  (VTBL_ENTRY)&_ZN7S6850C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6850C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6850C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6850C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6850C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6850C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v11Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v12Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v13Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v27Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v28Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v29Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v30Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v31Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v32Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v33Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v34Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v35Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v36Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v37Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v38Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v39Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v40Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v41Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v42Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v43Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v44Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v45Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v46Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v47Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v48Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v49Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v50Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v51Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v52Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v53Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v54Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v55Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v56Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v57Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v58Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v59Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v60Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v61Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v62Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v63Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v64Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v65Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v66Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v67Ev,
};
extern VTBL_ENTRY _ZTI7S6850C2[];
extern  VTBL_ENTRY _ZTV7S6850C2[];
Class_Descriptor cd_S6850C2 = {  "S6850C2", // class name
  0,0,//no base classes
  &(vtc_S6850C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S6850C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6850C2),68, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6850C1  : S6850C2 {
  int s6850c1f0[5];
  ::S79C8_nt s6850c1f1;
  int s6850c1f2[2];
  ::S79C23_nt s6850c1f3;
  int s6850c1f4;
  ::S79C45 s6850c1f5;
  int s6850c1f6;
  ::S79C41 s6850c1f7;
  ::S79C8_nt s6850c1f8;
  int s6850c1f9;
  void *s6850c1f10;
  virtual  ~S6850C1(); // _ZN7S6850C1D1Ev
  virtual void  v1(); // _ZN7S6850C12v1Ev
  virtual void  v2(); // _ZN7S6850C12v2Ev
  virtual void  v3(); // _ZN7S6850C12v3Ev
  S6850C1(); // tgen
};
//SIG(1 S6850C1) C1{ BC2{ vd v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2 v3 Fi[5] FC3 Fi[2] FC4{ m Fi[4]} Fi FC5{ BC6{ m Fp Fi[2]}} Fi FC7{ BC6} FC3 Fi Fp}


 S6850C1 ::~S6850C1(){ note_dtor("S6850C1", this);}
void  S6850C1 ::v1(){vfunc_called(this, "_ZN7S6850C12v1Ev");}
void  S6850C1 ::v2(){vfunc_called(this, "_ZN7S6850C12v2Ev");}
void  S6850C1 ::v3(){vfunc_called(this, "_ZN7S6850C12v3Ev");}
S6850C1 ::S6850C1(){ note_ctor("S6850C1", this);} // tgen

static void Test_S6850C1()
{
  extern Class_Descriptor cd_S6850C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(28,41)];
    init_test(&cd_S6850C1, buf);
    S6850C1 *dp, &lv = *(dp=new (buf) S6850C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(216,160), "sizeof(S6850C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6850C1)");
    check_base_class_offset(lv, (S6850C2*), 0, "S6850C1");
    check_field_offset(lv, s6850c1f0, ABISELECT(96,60), "S6850C1.s6850c1f0");
    check_field_offset(lv, s6850c1f1, ABISELECT(116,80), "S6850C1.s6850c1f1");
    check_field_offset(lv, s6850c1f2, ABISELECT(124,88), "S6850C1.s6850c1f2");
    check_field_offset(lv, s6850c1f3, ABISELECT(132,96), "S6850C1.s6850c1f3");
    check_field_offset(lv, s6850c1f4, ABISELECT(148,112), "S6850C1.s6850c1f4");
    check_field_offset(lv, s6850c1f5, ABISELECT(152,116), "S6850C1.s6850c1f5");
    check_field_offset(lv, s6850c1f6, ABISELECT(168,128), "S6850C1.s6850c1f6");
    check_field_offset(lv, s6850c1f7, ABISELECT(176,132), "S6850C1.s6850c1f7");
    check_field_offset(lv, s6850c1f8, ABISELECT(192,144), "S6850C1.s6850c1f8");
    check_field_offset(lv, s6850c1f9, ABISELECT(200,152), "S6850C1.s6850c1f9");
    check_field_offset(lv, s6850c1f10, ABISELECT(208,156), "S6850C1.s6850c1f10");
    test_class_info(&lv, &cd_S6850C1);
    dp->~S6850C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6850C1(Test_S6850C1, "S6850C1", ABISELECT(216,160));

#else // __cplusplus

extern void _ZN7S6850C1C1Ev();
extern void _ZN7S6850C1D1Ev();
Name_Map name_map_S6850C1[] = {
  NSPAIR(_ZN7S6850C1C1Ev),
  NSPAIR(_ZN7S6850C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6850C2;
extern VTBL_ENTRY _ZTI7S6850C2[];
extern  VTBL_ENTRY _ZTV7S6850C2[];
static Base_Class bases_S6850C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6850C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6850C1[];
extern void _ZN7S6850C1D1Ev();
extern void _ZN7S6850C1D0Ev();
extern void _ZN7S6850C22v4Ev();
extern void _ZN7S6850C22v5Ev();
extern void _ZN7S6850C22v6Ev();
extern void _ZN7S6850C22v7Ev();
extern void _ZN7S6850C22v8Ev();
extern void _ZN7S6850C22v9Ev();
extern void _ZN7S6850C23v10Ev();
extern void _ZN7S6850C23v11Ev();
extern void _ZN7S6850C23v12Ev();
extern void _ZN7S6850C23v13Ev();
extern void _ZN7S6850C23v14Ev();
extern void _ZN7S6850C23v15Ev();
extern void _ZN7S6850C23v16Ev();
extern void _ZN7S6850C23v17Ev();
extern void _ZN7S6850C23v18Ev();
extern void _ZN7S6850C23v19Ev();
extern void _ZN7S6850C23v20Ev();
extern void _ZN7S6850C23v21Ev();
extern void _ZN7S6850C23v22Ev();
extern void _ZN7S6850C23v23Ev();
extern void _ZN7S6850C23v24Ev();
extern void _ZN7S6850C23v25Ev();
extern void _ZN7S6850C23v26Ev();
extern void _ZN7S6850C23v27Ev();
extern void _ZN7S6850C23v28Ev();
extern void _ZN7S6850C23v29Ev();
extern void _ZN7S6850C23v30Ev();
extern void _ZN7S6850C23v31Ev();
extern void _ZN7S6850C23v32Ev();
extern void _ZN7S6850C23v33Ev();
extern void _ZN7S6850C23v34Ev();
extern void _ZN7S6850C23v35Ev();
extern void _ZN7S6850C23v36Ev();
extern void _ZN7S6850C23v37Ev();
extern void _ZN7S6850C23v38Ev();
extern void _ZN7S6850C23v39Ev();
extern void _ZN7S6850C23v40Ev();
extern void _ZN7S6850C23v41Ev();
extern void _ZN7S6850C23v42Ev();
extern void _ZN7S6850C23v43Ev();
extern void _ZN7S6850C23v44Ev();
extern void _ZN7S6850C23v45Ev();
extern void _ZN7S6850C23v46Ev();
extern void _ZN7S6850C23v47Ev();
extern void _ZN7S6850C23v48Ev();
extern void _ZN7S6850C23v49Ev();
extern void _ZN7S6850C23v50Ev();
extern void _ZN7S6850C23v51Ev();
extern void _ZN7S6850C23v52Ev();
extern void _ZN7S6850C23v53Ev();
extern void _ZN7S6850C23v54Ev();
extern void _ZN7S6850C23v55Ev();
extern void _ZN7S6850C23v56Ev();
extern void _ZN7S6850C23v57Ev();
extern void _ZN7S6850C23v58Ev();
extern void _ZN7S6850C23v59Ev();
extern void _ZN7S6850C23v60Ev();
extern void _ZN7S6850C23v61Ev();
extern void _ZN7S6850C23v62Ev();
extern void _ZN7S6850C23v63Ev();
extern void _ZN7S6850C23v64Ev();
extern void _ZN7S6850C23v65Ev();
extern void _ZN7S6850C23v66Ev();
extern void _ZN7S6850C23v67Ev();
extern void _ZN7S6850C12v1Ev();
extern void _ZN7S6850C12v2Ev();
extern void _ZN7S6850C12v3Ev();
static  VTBL_ENTRY vtc_S6850C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6850C1[0]),
  (VTBL_ENTRY)&_ZN7S6850C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6850C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6850C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6850C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6850C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6850C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6850C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6850C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v11Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v12Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v13Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v27Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v28Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v29Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v30Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v31Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v32Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v33Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v34Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v35Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v36Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v37Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v38Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v39Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v40Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v41Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v42Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v43Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v44Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v45Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v46Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v47Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v48Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v49Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v50Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v51Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v52Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v53Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v54Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v55Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v56Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v57Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v58Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v59Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v60Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v61Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v62Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v63Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v64Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v65Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v66Ev,
  (VTBL_ENTRY)&_ZN7S6850C23v67Ev,
  (VTBL_ENTRY)&_ZN7S6850C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6850C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6850C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S6850C1[];
extern  VTBL_ENTRY _ZTV7S6850C1[];
Class_Descriptor cd_S6850C1 = {  "S6850C1", // class name
  bases_S6850C1, 1,
  &(vtc_S6850C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(216,160), // object size
  NSPAIRA(_ZTI7S6850C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6850C1),71, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17777C5_nt  {
  void *s17777c5f0[3];
  void  mf17777c5(); // _ZN11S17777C5_nt9mf17777c5Ev
};
//SIG(-1 S17777C5_nt) C1{ m Fp[3]}


void  S17777C5_nt ::mf17777c5(){}

//skip512 S17777C5_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17777C4_nt  {
  ::S17777C5_nt s17777c4f0;
  unsigned int s17777c4f1:1;
  virtual  ~S17777C4_nt(); // _ZN11S17777C4_ntD1Ev
  virtual void  v5(); // _ZN11S17777C4_nt2v5Ev
  virtual void  v6(); // _ZN11S17777C4_nt2v6Ev
  virtual void  v7(); // _ZN11S17777C4_nt2v7Ev
  virtual void  v8(); // _ZN11S17777C4_nt2v8Ev
  virtual void  v9(); // _ZN11S17777C4_nt2v9Ev
  virtual void  v10(); // _ZN11S17777C4_nt3v10Ev
  virtual void  v11(); // _ZN11S17777C4_nt3v11Ev
  S17777C4_nt(); // tgen
};
//SIG(-1 S17777C4_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7 FC2{ m Fp[3]} Fi:1}


 S17777C4_nt ::~S17777C4_nt(){ note_dtor("S17777C4_nt", this);}
void  S17777C4_nt ::v5(){vfunc_called(this, "_ZN11S17777C4_nt2v5Ev");}
void  S17777C4_nt ::v6(){vfunc_called(this, "_ZN11S17777C4_nt2v6Ev");}
void  S17777C4_nt ::v7(){vfunc_called(this, "_ZN11S17777C4_nt2v7Ev");}
void  S17777C4_nt ::v8(){vfunc_called(this, "_ZN11S17777C4_nt2v8Ev");}
void  S17777C4_nt ::v9(){vfunc_called(this, "_ZN11S17777C4_nt2v9Ev");}
void  S17777C4_nt ::v10(){vfunc_called(this, "_ZN11S17777C4_nt3v10Ev");}
void  S17777C4_nt ::v11(){vfunc_called(this, "_ZN11S17777C4_nt3v11Ev");}
S17777C4_nt ::S17777C4_nt(){ note_ctor("S17777C4_nt", this);} // tgen

//skip512 S17777C4_nt

#else // __cplusplus

extern void _ZN11S17777C4_ntC1Ev();
extern void _ZN11S17777C4_ntD1Ev();
Name_Map name_map_S17777C4_nt[] = {
  NSPAIR(_ZN11S17777C4_ntC1Ev),
  NSPAIR(_ZN11S17777C4_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S17777C4_nt[];
extern void _ZN11S17777C4_ntD1Ev();
extern void _ZN11S17777C4_ntD0Ev();
extern void _ZN11S17777C4_nt2v5Ev();
extern void _ZN11S17777C4_nt2v6Ev();
extern void _ZN11S17777C4_nt2v7Ev();
extern void _ZN11S17777C4_nt2v8Ev();
extern void _ZN11S17777C4_nt2v9Ev();
extern void _ZN11S17777C4_nt3v10Ev();
extern void _ZN11S17777C4_nt3v11Ev();
static  VTBL_ENTRY vtc_S17777C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S17777C4_nt[0]),
  (VTBL_ENTRY)&_ZN11S17777C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S17777C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S17777C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S17777C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S17777C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S17777C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S17777C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S17777C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S17777C4_nt3v11Ev,
};
extern VTBL_ENTRY _ZTI11S17777C4_nt[];
VTBL_ENTRY *P__ZTI11S17777C4_nt = _ZTI11S17777C4_nt; 
extern  VTBL_ENTRY _ZTV11S17777C4_nt[];
Class_Descriptor cd_S17777C4_nt = {  "S17777C4_nt", // class name
  0,0,//no base classes
  &(vtc_S17777C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI11S17777C4_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S17777C4_nt),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17777C6_nt  {
  void *s17777c6f0;
  void  mf17777c6(); // _ZN11S17777C6_nt9mf17777c6Ev
};
//SIG(-1 S17777C6_nt) C1{ m Fp}


void  S17777C6_nt ::mf17777c6(){}

//skip512 S17777C6_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI11S17777C6_nt[];
VTBL_ENTRY *P__ZTI11S17777C6_nt = _ZTI11S17777C6_nt; 
Class_Descriptor cd_S17777C6_nt = {  "S17777C6_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S17777C6_nt),ABISELECT(16,8), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17777C3_nt  : S17777C4_nt {
  ::S17777C6_nt s17777c3f0;
  virtual  ~S17777C3_nt(); // _ZN11S17777C3_ntD1Ev
  virtual void  v12(); // _ZN11S17777C3_nt3v12Ev
  virtual void  v13(); // _ZN11S17777C3_nt3v13Ev
  S17777C3_nt(); // tgen
};
//SIG(-1 S17777C3_nt) C1{ BC2{ vd v3 v4 v5 v6 v7 v8 v9 FC3{ m Fp[3]} Fi:1} vd v1 v2 FC4{ m Fp}}


 S17777C3_nt ::~S17777C3_nt(){ note_dtor("S17777C3_nt", this);}
void  S17777C3_nt ::v12(){vfunc_called(this, "_ZN11S17777C3_nt3v12Ev");}
void  S17777C3_nt ::v13(){vfunc_called(this, "_ZN11S17777C3_nt3v13Ev");}
S17777C3_nt ::S17777C3_nt(){ note_ctor("S17777C3_nt", this);} // tgen

//skip512 S17777C3_nt

#else // __cplusplus

extern void _ZN11S17777C3_ntC1Ev();
extern void _ZN11S17777C3_ntD1Ev();
Name_Map name_map_S17777C3_nt[] = {
  NSPAIR(_ZN11S17777C3_ntC1Ev),
  NSPAIR(_ZN11S17777C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S17777C4_nt;
extern VTBL_ENTRY _ZTI11S17777C4_nt[];
extern  VTBL_ENTRY _ZTV11S17777C4_nt[];
static Base_Class bases_S17777C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S17777C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI11S17777C3_nt[];
extern void _ZN11S17777C3_ntD1Ev();
extern void _ZN11S17777C3_ntD0Ev();
extern void _ZN11S17777C4_nt2v5Ev();
extern void _ZN11S17777C4_nt2v6Ev();
extern void _ZN11S17777C4_nt2v7Ev();
extern void _ZN11S17777C4_nt2v8Ev();
extern void _ZN11S17777C4_nt2v9Ev();
extern void _ZN11S17777C4_nt3v10Ev();
extern void _ZN11S17777C4_nt3v11Ev();
extern void _ZN11S17777C3_nt3v12Ev();
extern void _ZN11S17777C3_nt3v13Ev();
static  VTBL_ENTRY vtc_S17777C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S17777C3_nt[0]),
  (VTBL_ENTRY)&_ZN11S17777C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S17777C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S17777C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S17777C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S17777C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S17777C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S17777C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S17777C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S17777C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S17777C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S17777C3_nt3v13Ev,
};
extern VTBL_ENTRY _ZTI11S17777C3_nt[];
VTBL_ENTRY *P__ZTI11S17777C3_nt = _ZTI11S17777C3_nt; 
extern  VTBL_ENTRY _ZTV11S17777C3_nt[];
Class_Descriptor cd_S17777C3_nt = {  "S17777C3_nt", // class name
  bases_S17777C3_nt, 1,
  &(vtc_S17777C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI11S17777C3_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV11S17777C3_nt),13, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17777C10_nt  {
  void *s17777c10f0;
  int s17777c10f1[2];
};
//SIG(1 S17777C10_nt) C1{ Fp Fi[2]}



//skip512 S17777C10_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17777C9_nt  {
  ::S17777C10_nt s17777c9f0[16];
  int s17777c9f1;
  void  mf17777c9(); // _ZN11S17777C9_nt9mf17777c9Ev
};
//SIG(-1 S17777C9_nt) C1{ m FC2{ Fp Fi[2]}[16] Fi}


void  S17777C9_nt ::mf17777c9(){}

//skip512 S17777C9_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17777C13_nt  {
  char s17777c13f0[3];
  int s17777c13f1;
};
//SIG(-1 S17777C13_nt) C1{ Fc[3] Fi}



//skip512 S17777C13_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17777C12_nt  {
  ::S17777C13_nt s17777c12f0;
  int s17777c12f1[2];
  void  mf17777c12(); // _ZN12S17777C12_nt10mf17777c12Ev
};
//SIG(-1 S17777C12_nt) C1{ m FC2{ Fc[3] Fi} Fi[2]}


void  S17777C12_nt ::mf17777c12(){}

//skip512 S17777C12_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17777C8_nt  : S17777C4_nt {
  ::S17777C9_nt s17777c8f0;
  ::S17777C9_nt s17777c8f1;
  ::S17777C6_nt s17777c8f2;
  ::S17777C6_nt s17777c8f3;
  ::S17777C6_nt s17777c8f4;
  ::S17777C6_nt s17777c8f5;
  ::S17777C6_nt s17777c8f6;
  ::S17777C12_nt s17777c8f7;
  virtual void  v16(); // _ZN11S17777C8_nt3v16Ev
  virtual void  v17(); // _ZN11S17777C8_nt3v17Ev
  virtual void  v18(); // _ZN11S17777C8_nt3v18Ev
  ~S17777C8_nt(); // tgen
  S17777C8_nt(); // tgen
};
//SIG(-1 S17777C8_nt) C1{ BC2{ vd v4 v5 v6 v7 v8 v9 v10 FC3{ m Fp[3]} Fi:1} v1 v2 v3 FC4{ m FC5{ Fp Fi[2]}[16] Fi} FC4 FC6{ m Fp} FC6 FC6 FC6 FC6 FC7{ m FC8{ Fc[3] Fi} Fi[2]}}


void  S17777C8_nt ::v16(){vfunc_called(this, "_ZN11S17777C8_nt3v16Ev");}
void  S17777C8_nt ::v17(){vfunc_called(this, "_ZN11S17777C8_nt3v17Ev");}
void  S17777C8_nt ::v18(){vfunc_called(this, "_ZN11S17777C8_nt3v18Ev");}
S17777C8_nt ::~S17777C8_nt(){ note_dtor("S17777C8_nt", this);} // tgen
S17777C8_nt ::S17777C8_nt(){ note_ctor("S17777C8_nt", this);} // tgen

//skip512 S17777C8_nt

#else // __cplusplus

extern void _ZN11S17777C8_ntC1Ev();
extern void _ZN11S17777C8_ntD1Ev();
Name_Map name_map_S17777C8_nt[] = {
  NSPAIR(_ZN11S17777C8_ntC1Ev),
  NSPAIR(_ZN11S17777C8_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S17777C4_nt;
extern VTBL_ENTRY _ZTI11S17777C4_nt[];
extern  VTBL_ENTRY _ZTV11S17777C4_nt[];
static Base_Class bases_S17777C8_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S17777C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI11S17777C8_nt[];
extern void _ZN11S17777C8_ntD1Ev();
extern void _ZN11S17777C8_ntD0Ev();
extern void _ZN11S17777C4_nt2v5Ev();
extern void _ZN11S17777C4_nt2v6Ev();
extern void _ZN11S17777C4_nt2v7Ev();
extern void _ZN11S17777C4_nt2v8Ev();
extern void _ZN11S17777C4_nt2v9Ev();
extern void _ZN11S17777C4_nt3v10Ev();
extern void _ZN11S17777C4_nt3v11Ev();
extern void _ZN11S17777C8_nt3v16Ev();
extern void _ZN11S17777C8_nt3v17Ev();
extern void _ZN11S17777C8_nt3v18Ev();
static  VTBL_ENTRY vtc_S17777C8_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S17777C8_nt[0]),
  (VTBL_ENTRY)&_ZN11S17777C8_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S17777C8_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S17777C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S17777C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S17777C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S17777C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S17777C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S17777C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S17777C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S17777C8_nt3v16Ev,
  (VTBL_ENTRY)&_ZN11S17777C8_nt3v17Ev,
  (VTBL_ENTRY)&_ZN11S17777C8_nt3v18Ev,
};
extern VTBL_ENTRY _ZTI11S17777C8_nt[];
VTBL_ENTRY *P__ZTI11S17777C8_nt = _ZTI11S17777C8_nt; 
extern  VTBL_ENTRY _ZTV11S17777C8_nt[];
Class_Descriptor cd_S17777C8_nt = {  "S17777C8_nt", // class name
  bases_S17777C8_nt, 1,
  &(vtc_S17777C8_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(624,448), // object size
  NSPAIRA(_ZTI11S17777C8_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV11S17777C8_nt),14, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17777C15_nt  {
  void *s17777c15f0;
  char s17777c15f1[3];
  int s17777c15f2;
  void  mf17777c15(); // _ZN12S17777C15_nt10mf17777c15Ev
};
//SIG(-1 S17777C15_nt) C1{ m Fp Fc[3] Fi}


void  S17777C15_nt ::mf17777c15(){}

//skip512 S17777C15_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17777C14_nt  {
  ::S17777C15_nt s17777c14f0;
  ::S17777C15_nt s17777c14f1;
  int s17777c14f2;
  void  mf17777c14(); // _ZN12S17777C14_nt10mf17777c14Ev
};
//SIG(-1 S17777C14_nt) C1{ m FC2{ m Fp Fc[3] Fi} FC2 Fi}


void  S17777C14_nt ::mf17777c14(){}

//skip512 S17777C14_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17777C7_nt  : S17777C8_nt {
  ::S17777C14_nt s17777c7f0;
  virtual void  v14(); // _ZN11S17777C7_nt3v14Ev
  virtual void  v15(); // _ZN11S17777C7_nt3v15Ev
  ~S17777C7_nt(); // tgen
  S17777C7_nt(); // tgen
};
//SIG(-1 S17777C7_nt) C1{ BC2{ BC3{ vd v3 v4 v5 v6 v7 v8 v9 FC4{ m Fp[3]} Fi:1} v10 v11 v12 FC5{ m FC6{ Fp Fi[2]}[16] Fi} FC5 FC7{ m Fp} FC7 FC7 FC7 FC7 FC8{ m FC9{ Fc[3] Fi} Fi[2]}} v1 v2 FC10{ m FC11{ m Fp Fc[3] Fi} FC11 Fi}}


void  S17777C7_nt ::v14(){vfunc_called(this, "_ZN11S17777C7_nt3v14Ev");}
void  S17777C7_nt ::v15(){vfunc_called(this, "_ZN11S17777C7_nt3v15Ev");}
S17777C7_nt ::~S17777C7_nt(){ note_dtor("S17777C7_nt", this);} // tgen
S17777C7_nt ::S17777C7_nt(){ note_ctor("S17777C7_nt", this);} // tgen

//skip512 S17777C7_nt

#else // __cplusplus

extern void _ZN11S17777C7_ntC1Ev();
extern void _ZN11S17777C7_ntD1Ev();
Name_Map name_map_S17777C7_nt[] = {
  NSPAIR(_ZN11S17777C7_ntC1Ev),
  NSPAIR(_ZN11S17777C7_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S17777C4_nt;
extern VTBL_ENTRY _ZTI11S17777C4_nt[];
extern  VTBL_ENTRY _ZTV11S17777C4_nt[];
extern Class_Descriptor cd_S17777C8_nt;
extern VTBL_ENTRY _ZTI11S17777C8_nt[];
extern  VTBL_ENTRY _ZTV11S17777C8_nt[];
static Base_Class bases_S17777C7_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S17777C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S17777C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI11S17777C7_nt[];
extern void _ZN11S17777C7_ntD1Ev();
extern void _ZN11S17777C7_ntD0Ev();
extern void _ZN11S17777C4_nt2v5Ev();
extern void _ZN11S17777C4_nt2v6Ev();
extern void _ZN11S17777C4_nt2v7Ev();
extern void _ZN11S17777C4_nt2v8Ev();
extern void _ZN11S17777C4_nt2v9Ev();
extern void _ZN11S17777C4_nt3v10Ev();
extern void _ZN11S17777C4_nt3v11Ev();
extern void _ZN11S17777C8_nt3v16Ev();
extern void _ZN11S17777C8_nt3v17Ev();
extern void _ZN11S17777C8_nt3v18Ev();
extern void _ZN11S17777C7_nt3v14Ev();
extern void _ZN11S17777C7_nt3v15Ev();
static  VTBL_ENTRY vtc_S17777C7_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S17777C7_nt[0]),
  (VTBL_ENTRY)&_ZN11S17777C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S17777C7_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S17777C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S17777C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S17777C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S17777C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S17777C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S17777C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S17777C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S17777C8_nt3v16Ev,
  (VTBL_ENTRY)&_ZN11S17777C8_nt3v17Ev,
  (VTBL_ENTRY)&_ZN11S17777C8_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S17777C7_nt3v14Ev,
  (VTBL_ENTRY)&_ZN11S17777C7_nt3v15Ev,
};
extern VTBL_ENTRY _ZTI11S17777C7_nt[];
VTBL_ENTRY *P__ZTI11S17777C7_nt = _ZTI11S17777C7_nt; 
extern  VTBL_ENTRY _ZTV11S17777C7_nt[];
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17777C2_nt  : S17777C3_nt {
  int s17777c2f0[2];
  ::S17777C7_nt s17777c2f1;
  virtual void  v1(); // _ZN11S17777C2_nt2v1Ev
  virtual void  v2(); // _ZN11S17777C2_nt2v2Ev
  virtual void  v3(); // _ZN11S17777C2_nt2v3Ev
  virtual void  v4(); // _ZN11S17777C2_nt2v4Ev
  ~S17777C2_nt(); // tgen
  S17777C2_nt(); // tgen
};
//SIG(-1 S17777C2_nt) C1{ BC2{ BC3{ vd v5 v6 v7 v8 v9 v10 v11 FC4{ m Fp[3]} Fi:1} vd v12 v13 FC5{ m Fp}} v1 v2 v3 v4 Fi[2] FC6{ BC7{ BC3 v16 v17 v18 FC8{ m FC9{ Fp Fi[2]}[16] Fi} FC8 FC5 FC5 FC5 FC5 FC5 FC10{ m FC11{ Fc[3] Fi} Fi[2]}} v14 v15 FC12{ m FC13{ m Fp Fc[3] Fi} FC13 Fi}}}


void  S17777C2_nt ::v1(){vfunc_called(this, "_ZN11S17777C2_nt2v1Ev");}
void  S17777C2_nt ::v2(){vfunc_called(this, "_ZN11S17777C2_nt2v2Ev");}
void  S17777C2_nt ::v3(){vfunc_called(this, "_ZN11S17777C2_nt2v3Ev");}
void  S17777C2_nt ::v4(){vfunc_called(this, "_ZN11S17777C2_nt2v4Ev");}
S17777C2_nt ::~S17777C2_nt(){ note_dtor("S17777C2_nt", this);} // tgen
S17777C2_nt ::S17777C2_nt(){ note_ctor("S17777C2_nt", this);} // tgen

//skip512 S17777C2_nt

#else // __cplusplus

extern void _ZN11S17777C2_ntC1Ev();
extern void _ZN11S17777C2_ntD1Ev();
Name_Map name_map_S17777C2_nt[] = {
  NSPAIR(_ZN11S17777C2_ntC1Ev),
  NSPAIR(_ZN11S17777C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S17777C4_nt;
extern VTBL_ENTRY _ZTI11S17777C4_nt[];
extern  VTBL_ENTRY _ZTV11S17777C4_nt[];
extern Class_Descriptor cd_S17777C3_nt;
extern VTBL_ENTRY _ZTI11S17777C3_nt[];
extern  VTBL_ENTRY _ZTV11S17777C3_nt[];
static Base_Class bases_S17777C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S17777C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S17777C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI11S17777C2_nt[];
extern void _ZN11S17777C2_ntD1Ev();
extern void _ZN11S17777C2_ntD0Ev();
extern void _ZN11S17777C4_nt2v5Ev();
extern void _ZN11S17777C4_nt2v6Ev();
extern void _ZN11S17777C4_nt2v7Ev();
extern void _ZN11S17777C4_nt2v8Ev();
extern void _ZN11S17777C4_nt2v9Ev();
extern void _ZN11S17777C4_nt3v10Ev();
extern void _ZN11S17777C4_nt3v11Ev();
extern void _ZN11S17777C3_nt3v12Ev();
extern void _ZN11S17777C3_nt3v13Ev();
extern void _ZN11S17777C2_nt2v1Ev();
extern void _ZN11S17777C2_nt2v2Ev();
extern void _ZN11S17777C2_nt2v3Ev();
extern void _ZN11S17777C2_nt2v4Ev();
static  VTBL_ENTRY vtc_S17777C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S17777C2_nt[0]),
  (VTBL_ENTRY)&_ZN11S17777C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S17777C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S17777C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S17777C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S17777C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S17777C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S17777C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S17777C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S17777C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S17777C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S17777C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S17777C2_nt2v1Ev,
  (VTBL_ENTRY)&_ZN11S17777C2_nt2v2Ev,
  (VTBL_ENTRY)&_ZN11S17777C2_nt2v3Ev,
  (VTBL_ENTRY)&_ZN11S17777C2_nt2v4Ev,
};
extern VTBL_ENTRY _ZTI11S17777C2_nt[];
VTBL_ENTRY *P__ZTI11S17777C2_nt = _ZTI11S17777C2_nt; 
extern  VTBL_ENTRY _ZTV11S17777C2_nt[];
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17777C16_nt  : S17777C3_nt {
  int s17777c16f0;
  void *s17777c16f1;
  virtual void  v19(); // _ZN12S17777C16_nt3v19Ev
  virtual void  v20(); // _ZN12S17777C16_nt3v20Ev
  virtual void  v21(); // _ZN12S17777C16_nt3v21Ev
  ~S17777C16_nt(); // tgen
  S17777C16_nt(); // tgen
};
//SIG(-1 S17777C16_nt) C1{ BC2{ BC3{ vd v4 v5 v6 v7 v8 v9 v10 FC4{ m Fp[3]} Fi:1} vd v11 v12 FC5{ m Fp}} v1 v2 v3 Fi Fp}


void  S17777C16_nt ::v19(){vfunc_called(this, "_ZN12S17777C16_nt3v19Ev");}
void  S17777C16_nt ::v20(){vfunc_called(this, "_ZN12S17777C16_nt3v20Ev");}
void  S17777C16_nt ::v21(){vfunc_called(this, "_ZN12S17777C16_nt3v21Ev");}
S17777C16_nt ::~S17777C16_nt(){ note_dtor("S17777C16_nt", this);} // tgen
S17777C16_nt ::S17777C16_nt(){ note_ctor("S17777C16_nt", this);} // tgen

//skip512 S17777C16_nt

#else // __cplusplus

extern void _ZN12S17777C16_ntC1Ev();
extern void _ZN12S17777C16_ntD1Ev();
Name_Map name_map_S17777C16_nt[] = {
  NSPAIR(_ZN12S17777C16_ntC1Ev),
  NSPAIR(_ZN12S17777C16_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S17777C4_nt;
extern VTBL_ENTRY _ZTI11S17777C4_nt[];
extern  VTBL_ENTRY _ZTV11S17777C4_nt[];
extern Class_Descriptor cd_S17777C3_nt;
extern VTBL_ENTRY _ZTI11S17777C3_nt[];
extern  VTBL_ENTRY _ZTV11S17777C3_nt[];
static Base_Class bases_S17777C16_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S17777C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S17777C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI12S17777C16_nt[];
extern void _ZN12S17777C16_ntD1Ev();
extern void _ZN12S17777C16_ntD0Ev();
extern void _ZN11S17777C4_nt2v5Ev();
extern void _ZN11S17777C4_nt2v6Ev();
extern void _ZN11S17777C4_nt2v7Ev();
extern void _ZN11S17777C4_nt2v8Ev();
extern void _ZN11S17777C4_nt2v9Ev();
extern void _ZN11S17777C4_nt3v10Ev();
extern void _ZN11S17777C4_nt3v11Ev();
extern void _ZN11S17777C3_nt3v12Ev();
extern void _ZN11S17777C3_nt3v13Ev();
extern void _ZN12S17777C16_nt3v19Ev();
extern void _ZN12S17777C16_nt3v20Ev();
extern void _ZN12S17777C16_nt3v21Ev();
static  VTBL_ENTRY vtc_S17777C16_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI12S17777C16_nt[0]),
  (VTBL_ENTRY)&_ZN12S17777C16_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S17777C16_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S17777C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S17777C4_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S17777C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S17777C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S17777C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S17777C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S17777C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S17777C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S17777C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN12S17777C16_nt3v19Ev,
  (VTBL_ENTRY)&_ZN12S17777C16_nt3v20Ev,
  (VTBL_ENTRY)&_ZN12S17777C16_nt3v21Ev,
};
extern VTBL_ENTRY _ZTI12S17777C16_nt[];
VTBL_ENTRY *P__ZTI12S17777C16_nt = _ZTI12S17777C16_nt; 
extern  VTBL_ENTRY _ZTV12S17777C16_nt[];
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17777C22  : S5266C29 {
  void *s17777c22f0;
};
//SIG(-1 S17777C22) C1{ BC2{ m} Fp}



static void Test_S17777C22()
{
  extern Class_Descriptor cd_S17777C22;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S17777C22, buf);
    S17777C22 &lv = *(new (buf) S17777C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S17777C22)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17777C22)");
    check_base_class_offset(lv, (S5266C29*), 0, "S17777C22");
    check_field_offset(lv, s17777c22f0, 0, "S17777C22.s17777c22f0");
    test_class_info(&lv, &cd_S17777C22);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS17777C22(Test_S17777C22, "S17777C22", ABISELECT(8,4));

#else // __cplusplus

extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
static Base_Class bases_S17777C22[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S17777C22 = {  "S17777C22", // class name
  bases_S17777C22, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(8,4), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17777C1  {
  void *s17777c1f0;
  int s17777c1f1[2];
  ::S17777C2_nt s17777c1f2;
  ::S17777C16_nt s17777c1f3;
  ::S79C45 s17777c1f4;
  ::S79C41 s17777c1f5;
  ::S79C20 s17777c1f6;
  ::S79C16 s17777c1f7;
  ::S17777C22 s17777c1f8;
  ::S17777C22 s17777c1f9;
  void  mf17777c1(); // _ZN8S17777C19mf17777c1Ev
};
//SIG(1 S17777C1) C1{ m Fp Fi[2] FC2{ BC3{ BC4{ vd v5 v6 v7 v8 v9 v10 v11 FC5{ m Fp[3]} Fi:1} vd v12 v13 FC6{ m Fp}} v1 v2 v3 v4 Fi[2] FC7{ BC8{ BC4 v16 v17 v18 FC9{ m FC10{ Fp Fi[2]}[16] Fi} FC9 FC6 FC6 FC6 FC6 FC6 FC11{ m FC12{ Fc[3] Fi} Fi[2]}} v14 v15 FC13{ m FC14{ m Fp Fc[3] Fi} FC14 Fi}}} FC15{ BC3 v19 v20 v21 Fi Fp} FC16{ BC17{ m Fp Fi[2]}} FC18{ BC17} FC19{ BC17} FC20{ BC17} FC21{ BC22{ m} Fp} FC21}


void  S17777C1 ::mf17777c1(){}

static void Test_S17777C1()
{
  {
    init_simple_test("S17777C1");
    static S17777C1 lv;
    check2(sizeof(lv), ABISELECT(880,608), "sizeof(S17777C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17777C1)");
    check_field_offset(lv, s17777c1f0, 0, "S17777C1.s17777c1f0");
    check_field_offset(lv, s17777c1f1, ABISELECT(8,4), "S17777C1.s17777c1f1");
    check_field_offset(lv, s17777c1f2, ABISELECT(16,12), "S17777C1.s17777c1f2");
    check_field_offset(lv, s17777c1f3, ABISELECT(736,520), "S17777C1.s17777c1f3");
    check_field_offset(lv, s17777c1f4, ABISELECT(800,552), "S17777C1.s17777c1f4");
    check_field_offset(lv, s17777c1f5, ABISELECT(816,564), "S17777C1.s17777c1f5");
    check_field_offset(lv, s17777c1f6, ABISELECT(832,576), "S17777C1.s17777c1f6");
    check_field_offset(lv, s17777c1f7, ABISELECT(848,588), "S17777C1.s17777c1f7");
    check_field_offset(lv, s17777c1f8, ABISELECT(864,600), "S17777C1.s17777c1f8");
    check_field_offset(lv, s17777c1f9, ABISELECT(872,604), "S17777C1.s17777c1f9");
  }
}
static Arrange_To_Call_Me vS17777C1(Test_S17777C1, "S17777C1", ABISELECT(880,608));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19905C5_nt  {
  void  mf19905c5(); // _ZN11S19905C5_nt9mf19905c5Ev
  virtual  ~S19905C5_nt(); // _ZN11S19905C5_ntD1Ev
  S19905C5_nt(); // tgen
};
//SIG(-1 S19905C5_nt) C1{ vd m}


void  S19905C5_nt ::mf19905c5(){}
 S19905C5_nt ::~S19905C5_nt(){ note_dtor("S19905C5_nt", this);}
S19905C5_nt ::S19905C5_nt(){ note_ctor("S19905C5_nt", this);} // tgen

//skip512 S19905C5_nt

#else // __cplusplus

extern void _ZN11S19905C5_ntC1Ev();
extern void _ZN11S19905C5_ntD1Ev();
Name_Map name_map_S19905C5_nt[] = {
  NSPAIR(_ZN11S19905C5_ntC1Ev),
  NSPAIR(_ZN11S19905C5_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S19905C5_nt[];
extern void _ZN11S19905C5_ntD1Ev();
extern void _ZN11S19905C5_ntD0Ev();
static  VTBL_ENTRY vtc_S19905C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S19905C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S19905C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S19905C5_ntD0Ev,
};
extern VTBL_ENTRY _ZTI11S19905C5_nt[];
VTBL_ENTRY *P__ZTI11S19905C5_nt = _ZTI11S19905C5_nt; 
extern  VTBL_ENTRY _ZTV11S19905C5_nt[];
Class_Descriptor cd_S19905C5_nt = {  "S19905C5_nt", // class name
  0,0,//no base classes
  &(vtc_S19905C5_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S19905C5_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S19905C5_nt),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19905C7  : virtual S19905C5_nt {
  long double s19905c7f0;
  char s19905c7f1;
  short s19905c7f2[4];
  ~S19905C7(); // tgen
  S19905C7(); // tgen
};
//SIG(-1 S19905C7) C1{ VBC2{ vd m} FD Fc Fs[4]}


S19905C7 ::~S19905C7(){ note_dtor("S19905C7", this);} // tgen
S19905C7 ::S19905C7(){ note_ctor("S19905C7", this);} // tgen

static void Test_S19905C7()
{
  extern Class_Descriptor cd_S19905C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,8)];
    init_test(&cd_S19905C7, buf);
    S19905C7 *dp, &lv = *(dp=new (buf) S19905C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S19905C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19905C7)");
    check_base_class_offset(lv, (S19905C5_nt*), 0, "S19905C7");
    check_field_offset(lv, s19905c7f0, ABISELECT(16,4), "S19905C7.s19905c7f0");
    check_field_offset(lv, s19905c7f1, ABISELECT(32,16), "S19905C7.s19905c7f1");
    check_field_offset(lv, s19905c7f2, ABISELECT(34,18), "S19905C7.s19905c7f2");
    test_class_info(&lv, &cd_S19905C7);
    dp->~S19905C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19905C7(Test_S19905C7, "S19905C7", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN8S19905C7C1Ev();
extern void _ZN8S19905C7D1Ev();
Name_Map name_map_S19905C7[] = {
  NSPAIR(_ZN8S19905C7C1Ev),
  NSPAIR(_ZN8S19905C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19905C5_nt;
extern VTBL_ENTRY _ZTI11S19905C5_nt[];
extern  VTBL_ENTRY _ZTV11S19905C5_nt[];
static Base_Class bases_S19905C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19905C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19905C7[];
extern void _ZN8S19905C7D1Ev();
extern void _ZN8S19905C7D0Ev();
static  VTBL_ENTRY vtc_S19905C7[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&_ZN8S19905C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19905C7D0Ev,
};
extern VTBL_ENTRY _ZTV8S19905C7[];
static  VTT_ENTRY vtt_S19905C7[] = {
  {&(_ZTV8S19905C7[4]),  4,6},
  {&(_ZTV8S19905C7[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S19905C7[];
extern  VTBL_ENTRY _ZTV8S19905C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C7[];
Class_Descriptor cd_S19905C7 = {  "S19905C7", // class name
  bases_S19905C7, 1,
  &(vtc_S19905C7[0]), // expected_vtbl_contents
  &(vtt_S19905C7[0]), // expected_vtt_contents
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI8S19905C7),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19905C7),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19905C7),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19905C6  : virtual S19905C5_nt , virtual S19905C7 {
  int s19905c6f0;
  virtual  ~S19905C6(); // _ZN8S19905C6D2Ev
  S19905C6(); // tgen
};
//SIG(-1 S19905C6) C1{ VBC2{ vd m} VBC3{ VBC2 FD Fc Fs[4]} vd Fi}


 S19905C6 ::~S19905C6(){ note_dtor("S19905C6", this);}
S19905C6 ::S19905C6(){ note_ctor("S19905C6", this);} // tgen

static void Test_S19905C6()
{
  extern Class_Descriptor cd_S19905C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,10)];
    init_test(&cd_S19905C6, buf);
    S19905C6 *dp, &lv = *(dp=new (buf) S19905C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S19905C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19905C6)");
    check_base_class_offset(lv, (S19905C5_nt*), 0, "S19905C6");
    check_base_class_offset(lv, (S19905C5_nt*)(S19905C7*), 0, "S19905C6");
    check_base_class_offset(lv, (S19905C7*), ABISELECT(16,8), "S19905C6");
    check_field_offset(lv, s19905c6f0, ABISELECT(8,4), "S19905C6.s19905c6f0");
    test_class_info(&lv, &cd_S19905C6);
    dp->~S19905C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19905C6(Test_S19905C6, "S19905C6", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN8S19905C6C1Ev();
extern void _ZN8S19905C6D2Ev();
Name_Map name_map_S19905C6[] = {
  NSPAIR(_ZN8S19905C6C1Ev),
  NSPAIR(_ZN8S19905C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19905C5_nt;
extern VTBL_ENTRY _ZTI11S19905C5_nt[];
extern  VTBL_ENTRY _ZTV11S19905C5_nt[];
extern Class_Descriptor cd_S19905C7;
extern VTBL_ENTRY _ZTI8S19905C7[];
extern  VTBL_ENTRY _ZTV8S19905C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C7[];
static Base_Class bases_S19905C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19905C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19905C7,    ABISELECT(16,8), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19905C6[];
extern void _ZN8S19905C6D1Ev();
extern void _ZN8S19905C6D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S19905C6D1Ev,_ZThn8_N8S19905C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
extern void ABISELECT(_ZThn16_N8S19905C6D0Ev,_ZThn8_N8S19905C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19905C6[] = {
  ABISELECT(16,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&_ZN8S19905C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19905C6D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S19905C6[];
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void _ZN8S19905C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
extern void _ZN8S19905C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C6[] = {
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C7__8S19905C6[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
static  VTT_ENTRY vtt_S19905C6[] = {
  {&(_ZTV8S19905C6[5]),  5,13},
  {&(_ZTV8S19905C6[5]),  5,13},
  {&(_ZTV8S19905C6[11]),  11,13},
  {&(_tg__ZTV8S19905C7__8S19905C6[4]),  4,6},
  {&(_tg__ZTV11S19905C5_nt__8S19905C7__8S19905C6[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19905C6[];
extern  VTBL_ENTRY _ZTV8S19905C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C6[];
static VTBL_ENTRY alt_thunk_names1[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S19905C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S19905C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19905C6D0Ev,_ZThn8_N8S19905C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19905C6D1Ev,_ZThn8_N8S19905C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19905C6 = {  "S19905C6", // class name
  bases_S19905C6, 2,
  &(vtc_S19905C6[0]), // expected_vtbl_contents
  &(vtt_S19905C6[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI8S19905C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19905C6),13, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19905C6),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names1,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19905C4  : virtual S19905C5_nt , S19905C6 , S17777C6_nt {
  short s19905c4f0;
  __tsi64 s19905c4f1;
  void *s19905c4f2;
  __tsi64 s19905c4f3;
  virtual  ~S19905C4(); // _ZN8S19905C4D2Ev
  S19905C4(); // tgen
};
//SIG(-1 S19905C4) C1{ VBC2{ vd m} BC3{ VBC2 VBC4{ VBC2 FD Fc Fs[4]} vd Fi} BC5{ m Fp} vd Fs FL Fp FL}


 S19905C4 ::~S19905C4(){ note_dtor("S19905C4", this);}
S19905C4 ::S19905C4(){ note_ctor("S19905C4", this);} // tgen

static void Test_S19905C4()
{
  extern Class_Descriptor cd_S19905C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(8,17)];
    init_test(&cd_S19905C4, buf);
    S19905C4 *dp, &lv = *(dp=new (buf) S19905C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,64), "sizeof(S19905C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19905C4)");
    check_base_class_offset(lv, (S19905C5_nt*), 0, "S19905C4");
    check_base_class_offset(lv, (S19905C5_nt*)(S19905C6*), 0, "S19905C4");
    check_base_class_offset(lv, (S19905C5_nt*)(S19905C7*), 0, "S19905C4");
    check_base_class_offset(lv, (S19905C7*)(S19905C6*), ABISELECT(64,36), "S19905C4");
    check_base_class_offset(lv, (S19905C6*), 0, "S19905C4");
    check_base_class_offset(lv, (S17777C6_nt*), ABISELECT(16,8), "S19905C4");
    check_field_offset(lv, s19905c4f0, ABISELECT(24,12), "S19905C4.s19905c4f0");
    check_field_offset(lv, s19905c4f1, ABISELECT(32,16), "S19905C4.s19905c4f1");
    check_field_offset(lv, s19905c4f2, ABISELECT(40,24), "S19905C4.s19905c4f2");
    check_field_offset(lv, s19905c4f3, ABISELECT(48,28), "S19905C4.s19905c4f3");
    test_class_info(&lv, &cd_S19905C4);
    dp->~S19905C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19905C4(Test_S19905C4, "S19905C4", ABISELECT(112,64));

#else // __cplusplus

extern void _ZN8S19905C4C1Ev();
extern void _ZN8S19905C4D2Ev();
Name_Map name_map_S19905C4[] = {
  NSPAIR(_ZN8S19905C4C1Ev),
  NSPAIR(_ZN8S19905C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19905C5_nt;
extern VTBL_ENTRY _ZTI11S19905C5_nt[];
extern  VTBL_ENTRY _ZTV11S19905C5_nt[];
extern Class_Descriptor cd_S19905C7;
extern VTBL_ENTRY _ZTI8S19905C7[];
extern  VTBL_ENTRY _ZTV8S19905C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C7[];
extern Class_Descriptor cd_S19905C6;
extern VTBL_ENTRY _ZTI8S19905C6[];
extern  VTBL_ENTRY _ZTV8S19905C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C6[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
static Base_Class bases_S19905C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19905C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19905C7,    ABISELECT(64,36), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19905C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S17777C6_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19905C4[];
extern void _ZN8S19905C4D1Ev();
extern void _ZN8S19905C4D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev)();
extern void ABISELECT(_ZThn64_N8S19905C4D1Ev,_ZThn36_N8S19905C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev)();
extern void ABISELECT(_ZThn64_N8S19905C4D0Ev,_ZThn36_N8S19905C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19905C4[] = {
  ABISELECT(64,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&_ZN8S19905C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19905C4D0Ev,
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S19905C4[];
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void _ZN8S19905C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
extern void _ZN8S19905C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C6__8S19905C4[] = {
  ABISELECT(64,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void ABISELECT(_ZThn64_N8S19905C6D1Ev,_ZThn36_N8S19905C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
extern void ABISELECT(_ZThn64_N8S19905C6D0Ev,_ZThn36_N8S19905C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C6__8S19905C4[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void _ZN8S19905C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
extern void _ZN8S19905C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C4[] = {
  ABISELECT(-64,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C7__8S19905C4[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
static  VTT_ENTRY vtt_S19905C4[] = {
  {&(_ZTV8S19905C4[5]),  5,13},
  {&(_tg__ZTV8S19905C6__8S19905C4[5]),  5,7},
  {&(_tg__ZTV8S19905C6__8S19905C4[5]),  5,7},
  {&(_tg__ZTV8S19905C7__8S19905C6__8S19905C4[4]),  4,6},
  {&(_ZTV8S19905C4[5]),  5,13},
  {&(_ZTV8S19905C4[11]),  11,13},
  {&(_tg__ZTV8S19905C7__8S19905C4[4]),  4,6},
  {&(_tg__ZTV11S19905C5_nt__8S19905C7__8S19905C4[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19905C4[];
extern  VTBL_ENTRY _ZTV8S19905C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C4[];
static VTBL_ENTRY alt_thunk_names2[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S19905C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S19905C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19905C6D0Ev,_ZThn36_N8S19905C6D0Ev),
  (VTBL_ENTRY)_ZN8S19905C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19905C6D1Ev,_ZThn36_N8S19905C6D1Ev),
  (VTBL_ENTRY)_ZN8S19905C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19905C4D0Ev,_ZThn36_N8S19905C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19905C4D1Ev,_ZThn36_N8S19905C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19905C4 = {  "S19905C4", // class name
  bases_S19905C4, 4,
  &(vtc_S19905C4[0]), // expected_vtbl_contents
  &(vtt_S19905C4[0]), // expected_vtt_contents
  ABISELECT(112,64), // object size
  NSPAIRA(_ZTI8S19905C4),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19905C4),13, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19905C4),8, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names2,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19905C3  : virtual S19905C4 , S17777C6_nt , S19905C5_nt , S19905C7 {
  int s19905c3f0;
  virtual  ~S19905C3(); // _ZN8S19905C3D2Ev
  S19905C3(); // tgen
};
//SIG(-1 S19905C3) C1{ VBC2{ VBC3{ vd m} BC4{ VBC3 VBC5{ VBC3 FD Fc Fs[4]} vd Fi} BC6{ m Fp} vd Fs FL Fp FL} BC6 BC3 BC5 vd Fi}


 S19905C3 ::~S19905C3(){ note_dtor("S19905C3", this);}
S19905C3 ::S19905C3(){ note_ctor("S19905C3", this);} // tgen

static void Test_S19905C3()
{
  extern Class_Descriptor cd_S19905C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,27)];
    init_test(&cd_S19905C3, buf);
    S19905C3 *dp, &lv = *(dp=new (buf) S19905C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,104), "sizeof(S19905C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19905C3)");
    check_base_class_offset(lv, (S19905C5_nt*)(S19905C4*), ABISELECT(64,40), "S19905C3");
    check_base_class_offset(lv, (S19905C5_nt*)(S19905C6*)(S19905C4*), ABISELECT(64,40), "S19905C3");
    /*is_ambiguous_... S19905C3::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C7*), ABISELECT(64,40), "S19905C3");
    /*is_ambiguous_... S19905C3::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C7*), ABISELECT(64,40), "S19905C3");
    check_base_class_offset(lv, (S19905C7*)(S19905C6*)(S19905C4*), ABISELECT(128,76), "S19905C3");
    check_base_class_offset(lv, (S19905C6*)(S19905C4*), ABISELECT(64,40), "S19905C3");
    check_base_class_offset(lv, (S17777C6_nt*)(S19905C4*), ABISELECT(80,48), "S19905C3");
    check_base_class_offset(lv, (S19905C4*), ABISELECT(64,40), "S19905C3");
    /*is_ambiguous_... S19905C3::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*), ABISELECT(8,4), "S19905C3");
    /*is_ambiguous_... S19905C3::S19905C5_nt */ AMB_check_base_class_offset(lv, (S19905C5_nt*), 0, "S19905C3");
    /*is_ambiguous_... S19905C3::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C7*), ABISELECT(16,8), "S19905C3");
    check_field_offset(lv, s19905c3f0, ABISELECT(60,36), "S19905C3.s19905c3f0");
    test_class_info(&lv, &cd_S19905C3);
    dp->~S19905C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19905C3(Test_S19905C3, "S19905C3", ABISELECT(176,104));

#else // __cplusplus

extern void _ZN8S19905C3C1Ev();
extern void _ZN8S19905C3D2Ev();
Name_Map name_map_S19905C3[] = {
  NSPAIR(_ZN8S19905C3C1Ev),
  NSPAIR(_ZN8S19905C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19905C5_nt;
extern VTBL_ENTRY _ZTI11S19905C5_nt[];
extern  VTBL_ENTRY _ZTV11S19905C5_nt[];
extern Class_Descriptor cd_S19905C7;
extern VTBL_ENTRY _ZTI8S19905C7[];
extern  VTBL_ENTRY _ZTV8S19905C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C7[];
extern Class_Descriptor cd_S19905C6;
extern VTBL_ENTRY _ZTI8S19905C6[];
extern  VTBL_ENTRY _ZTV8S19905C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C6[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C4;
extern VTBL_ENTRY _ZTI8S19905C4[];
extern  VTBL_ENTRY _ZTV8S19905C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C4[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C5_nt;
extern VTBL_ENTRY _ZTI11S19905C5_nt[];
extern  VTBL_ENTRY _ZTV11S19905C5_nt[];
extern Class_Descriptor cd_S19905C7;
extern VTBL_ENTRY _ZTI8S19905C7[];
extern  VTBL_ENTRY _ZTV8S19905C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C7[];
static Base_Class bases_S19905C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19905C5_nt,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19905C7,    ABISELECT(128,76), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19905C6,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19905C4,    ABISELECT(64,40), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S17777C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19905C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19905C7,    ABISELECT(16,8), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19905C3[];
extern void _ZN8S19905C3D1Ev();
extern void _ZN8S19905C3D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S19905C3D1Ev,_ZThn8_N8S19905C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S19905C3D0Ev,_ZThn8_N8S19905C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev)();
extern void ABISELECT(_ZThn64_N8S19905C3D1Ev,_ZThn40_N8S19905C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev)();
extern void ABISELECT(_ZThn64_N8S19905C3D0Ev,_ZThn40_N8S19905C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev)();
extern void ABISELECT(_ZThn128_N8S19905C3D1Ev,_ZThn76_N8S19905C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev)();
extern void ABISELECT(_ZThn128_N8S19905C3D0Ev,_ZThn76_N8S19905C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19905C3[] = {
  ABISELECT(128,76),
  ABISELECT(64,40),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C3[0]),
  (VTBL_ENTRY)&_ZN8S19905C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19905C3D0Ev,
  ABISELECT(48,32),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19905C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev),
  ABISELECT(64,36),
  0,
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19905C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S19905C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S19905C3[];
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void _ZN8S19905C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
extern void _ZN8S19905C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__A__8S19905C3[] = {
  ABISELECT(48,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void ABISELECT(_ZThn48_N8S19905C7D1Ev,_ZThn32_N8S19905C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
extern void ABISELECT(_ZThn48_N8S19905C7D0Ev,_ZThn32_N8S19905C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C7__A__8S19905C3[] = {
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev)();
extern void _ZN8S19905C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev)();
extern void _ZN8S19905C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C4__8S19905C3[] = {
  ABISELECT(64,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void _ZN8S19905C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
extern void _ZN8S19905C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C68S19905C4__8S19905C3[] = {
  ABISELECT(64,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void ABISELECT(_ZThn64_N8S19905C6D1Ev,_ZThn36_N8S19905C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
extern void ABISELECT(_ZThn64_N8S19905C6D0Ev,_ZThn36_N8S19905C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C68S19905C4__8S19905C3[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev)();
extern void ABISELECT(_ZThn64_N8S19905C4D1Ev,_ZThn36_N8S19905C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev)();
extern void ABISELECT(_ZThn64_N8S19905C4D0Ev,_ZThn36_N8S19905C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C4__8S19905C3[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void _ZN8S19905C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
extern void _ZN8S19905C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C3[] = {
  ABISELECT(-64,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C7__8S19905C3[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
static  VTT_ENTRY vtt_S19905C3[] = {
  {&(_ZTV8S19905C3[5]),  5,26},
  {&(_tg__ZTV8S19905C7__A__8S19905C3[4]),  4,6},
  {&(_tg__ZTV11S19905C5_nt__8S19905C7__A__8S19905C3[3]),  3,5},
  {&(_ZTV8S19905C3[18]),  18,26},
  {&(_ZTV8S19905C3[18]),  18,26},
  {&(_ZTV8S19905C3[24]),  24,26},
  {&(_ZTV8S19905C3[11]),  11,26},
  {&(_tg__ZTV8S19905C4__8S19905C3[5]),  5,7},
  {&(_tg__ZTV8S19905C68S19905C4__8S19905C3[5]),  5,7},
  {&(_tg__ZTV8S19905C68S19905C4__8S19905C3[5]),  5,7},
  {&(_tg__ZTV8S19905C7__8S19905C68S19905C4__8S19905C3[4]),  4,6},
  {&(_tg__ZTV8S19905C4__8S19905C3[5]),  5,7},
  {&(_tg__ZTV8S19905C7__8S19905C4__8S19905C3[4]),  4,6},
  {&(_tg__ZTV8S19905C7__8S19905C3[4]),  4,6},
  {&(_tg__ZTV11S19905C5_nt__8S19905C7__8S19905C3[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19905C3[];
extern  VTBL_ENTRY _ZTV8S19905C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C3[];
static VTBL_ENTRY alt_thunk_names3[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19905C6D0Ev,_ZThn36_N8S19905C6D0Ev),
  (VTBL_ENTRY)_ZN8S19905C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19905C6D1Ev,_ZThn36_N8S19905C6D1Ev),
  (VTBL_ENTRY)_ZN8S19905C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19905C4D0Ev,_ZThn36_N8S19905C4D0Ev),
  (VTBL_ENTRY)_ZN8S19905C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19905C4D1Ev,_ZThn36_N8S19905C4D1Ev),
  (VTBL_ENTRY)_ZN8S19905C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S19905C7D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19905C7D0Ev,_ZThn32_N8S19905C7D0Ev),
  (VTBL_ENTRY)_ZN8S19905C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S19905C7D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19905C7D1Ev,_ZThn32_N8S19905C7D1Ev),
  (VTBL_ENTRY)_ZN8S19905C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19905C3D0Ev,_ZThn76_N8S19905C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19905C3D0Ev,_ZThn40_N8S19905C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19905C3D0Ev,_ZThn8_N8S19905C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19905C3D1Ev,_ZThn76_N8S19905C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19905C3D1Ev,_ZThn40_N8S19905C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19905C3D1Ev,_ZThn8_N8S19905C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19905C3 = {  "S19905C3", // class name
  bases_S19905C3, 8,
  &(vtc_S19905C3[0]), // expected_vtbl_contents
  &(vtt_S19905C3[0]), // expected_vtt_contents
  ABISELECT(176,104), // object size
  NSPAIRA(_ZTI8S19905C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19905C3),26, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19905C3),15, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names3,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19905C12  : virtual S5266C29 , virtual S19905C3 , S19905C7 {
  short s19905c12f0;
  virtual  ~S19905C12(); // _ZN9S19905C12D2Ev
  S19905C12(); // tgen
};
//SIG(-1 S19905C12) C1{ VBC2{ m} VBC3{ VBC4{ VBC5{ vd m} BC6{ VBC5 VBC7{ VBC5 FD Fc Fs[4]} vd Fi} BC8{ m Fp} vd Fs FL Fp FL} BC8 BC5 BC7 vd Fi} BC7 vd Fs}


 S19905C12 ::~S19905C12(){ note_dtor("S19905C12", this);}
S19905C12 ::S19905C12(){ note_ctor("S19905C12", this);} // tgen

static void Test_S19905C12()
{
  extern Class_Descriptor cd_S19905C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(15,34)];
    init_test(&cd_S19905C12, buf);
    S19905C12 *dp, &lv = *(dp=new (buf) S19905C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,132), "sizeof(S19905C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19905C12)");
    check_base_class_offset(lv, (S5266C29*), 0, "S19905C12");
    check_base_class_offset(lv, (S19905C5_nt*)(S19905C4*), ABISELECT(112,68), "S19905C12");
    check_base_class_offset(lv, (S19905C5_nt*)(S19905C6*)(S19905C4*), ABISELECT(112,68), "S19905C12");
    /*is_ambiguous_... S19905C12::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C7*), ABISELECT(112,68), "S19905C12");
    /*is_ambiguous_... S19905C3::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C7*)(S19905C3*), ABISELECT(112,68), "S19905C12");
    /*is_ambiguous_... S19905C12::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C7*), ABISELECT(112,68), "S19905C12");
    check_base_class_offset(lv, (S19905C7*)(S19905C6*)(S19905C4*), ABISELECT(176,104), "S19905C12");
    check_base_class_offset(lv, (S19905C6*)(S19905C4*), ABISELECT(112,68), "S19905C12");
    check_base_class_offset(lv, (S17777C6_nt*)(S19905C4*), ABISELECT(128,76), "S19905C12");
    check_base_class_offset(lv, (S19905C4*)(S19905C3*), ABISELECT(112,68), "S19905C12");
    /*is_ambiguous_... S19905C3::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S19905C3*), ABISELECT(56,32), "S19905C12");
    /*is_ambiguous_... S19905C3::S19905C5_nt */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C3*), ABISELECT(48,28), "S19905C12");
    /*is_ambiguous_... S19905C3::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C7*)(S19905C3*), ABISELECT(64,36), "S19905C12");
    check_base_class_offset(lv, (S19905C3*), ABISELECT(48,28), "S19905C12");
    /*is_ambiguous_... S19905C12::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C7*), 0, "S19905C12");
    check_field_offset(lv, s19905c12f0, ABISELECT(42,26), "S19905C12.s19905c12f0");
    test_class_info(&lv, &cd_S19905C12);
    dp->~S19905C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19905C12(Test_S19905C12, "S19905C12", ABISELECT(224,132));

#else // __cplusplus

extern void _ZN9S19905C12C1Ev();
extern void _ZN9S19905C12D2Ev();
Name_Map name_map_S19905C12[] = {
  NSPAIR(_ZN9S19905C12C1Ev),
  NSPAIR(_ZN9S19905C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S19905C5_nt;
extern VTBL_ENTRY _ZTI11S19905C5_nt[];
extern  VTBL_ENTRY _ZTV11S19905C5_nt[];
extern Class_Descriptor cd_S19905C7;
extern VTBL_ENTRY _ZTI8S19905C7[];
extern  VTBL_ENTRY _ZTV8S19905C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C7[];
extern Class_Descriptor cd_S19905C6;
extern VTBL_ENTRY _ZTI8S19905C6[];
extern  VTBL_ENTRY _ZTV8S19905C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C6[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C4;
extern VTBL_ENTRY _ZTI8S19905C4[];
extern  VTBL_ENTRY _ZTV8S19905C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C4[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C5_nt;
extern VTBL_ENTRY _ZTI11S19905C5_nt[];
extern  VTBL_ENTRY _ZTV11S19905C5_nt[];
extern Class_Descriptor cd_S19905C7;
extern VTBL_ENTRY _ZTI8S19905C7[];
extern  VTBL_ENTRY _ZTV8S19905C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C7[];
extern Class_Descriptor cd_S19905C3;
extern VTBL_ENTRY _ZTI8S19905C3[];
extern  VTBL_ENTRY _ZTV8S19905C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C3[];
extern Class_Descriptor cd_S19905C7;
extern VTBL_ENTRY _ZTI8S19905C7[];
extern  VTBL_ENTRY _ZTV8S19905C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C7[];
static Base_Class bases_S19905C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19905C5_nt,    ABISELECT(112,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19905C7,    ABISELECT(176,104), //bcp->offset
    31, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19905C6,    ABISELECT(112,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(128,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19905C4,    ABISELECT(112,68), //bcp->offset
    24, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S17777C6_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19905C5_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19905C7,    ABISELECT(64,36), //bcp->offset
    18, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19905C3,    ABISELECT(48,28), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19905C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19905C12[];
extern void ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev)();
extern void _ZN9S19905C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev)();
extern void _ZN9S19905C12D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19905C12D1Ev,_ZTv0_n24_N9S19905C12D1Ev)();
extern void ABISELECT(_ZThn48_N9S19905C12D1Ev,_ZThn28_N9S19905C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19905C12D0Ev,_ZTv0_n24_N9S19905C12D0Ev)();
extern void ABISELECT(_ZThn48_N9S19905C12D0Ev,_ZThn28_N9S19905C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S19905C12D1Ev,_ZThn36_N9S19905C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev)();
extern void ABISELECT(_ZThn64_N9S19905C12D0Ev,_ZThn36_N9S19905C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev)();
extern void ABISELECT(_ZThn112_N9S19905C12D1Ev,_ZThn68_N9S19905C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev)();
extern void ABISELECT(_ZThn112_N9S19905C12D0Ev,_ZThn68_N9S19905C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev)();
extern void ABISELECT(_ZThn176_N9S19905C12D1Ev,_ZThn104_N9S19905C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev)();
extern void ABISELECT(_ZThn176_N9S19905C12D0Ev,_ZThn104_N9S19905C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19905C12[] = {
  ABISELECT(176,104),
  ABISELECT(112,68),
  ABISELECT(48,28),
  0,
  ABISELECT(112,68),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19905C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(128,76),
  ABISELECT(64,40),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19905C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19905C12D1Ev,_ZTv0_n24_N9S19905C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19905C12D0Ev,_ZTv0_n24_N9S19905C12D0Ev),
  ABISELECT(48,32),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19905C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev),
  ABISELECT(64,36),
  0,
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI9S19905C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI9S19905C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev),
};
extern VTBL_ENTRY _ZTV9S19905C12[];
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void _ZN8S19905C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
extern void _ZN8S19905C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__A__9S19905C12[] = {
  ABISELECT(112,68),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void ABISELECT(_ZThn112_N8S19905C7D1Ev,_ZThn68_N8S19905C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
extern void ABISELECT(_ZThn112_N8S19905C7D0Ev,_ZThn68_N8S19905C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C7__A__9S19905C12[] = {
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void _ZN8S19905C3D1Ev();
extern void _ZN8S19905C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19905C3__9S19905C12[] = {
  ABISELECT(128,76),
  ABISELECT(64,40),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C3[0]),
  (VTBL_ENTRY)&_ZN8S19905C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19905C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void _ZN8S19905C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
extern void _ZN8S19905C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C78S19905C3__A1__9S19905C12[] = {
  ABISELECT(48,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void ABISELECT(_ZThn48_N8S19905C7D1Ev,_ZThn32_N8S19905C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
extern void ABISELECT(_ZThn48_N8S19905C7D0Ev,_ZThn32_N8S19905C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C78S19905C3__A1__9S19905C12[] = {
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev)();
extern void ABISELECT(_ZThn64_N8S19905C3D1Ev,_ZThn40_N8S19905C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev)();
extern void ABISELECT(_ZThn64_N8S19905C3D0Ev,_ZThn40_N8S19905C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C4__8S19905C3__9S19905C12[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19905C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev)();
extern void ABISELECT(_ZThn128_N8S19905C3D1Ev,_ZThn76_N8S19905C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev)();
extern void ABISELECT(_ZThn128_N8S19905C3D0Ev,_ZThn76_N8S19905C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C3__9S19905C12[] = {
  ABISELECT(-64,-36),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S19905C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S19905C3D1Ev,_ZThn8_N8S19905C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S19905C3D0Ev,_ZThn8_N8S19905C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__A__8S19905C3__9S19905C12[] = {
  ABISELECT(48,32),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19905C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev)();
extern void _ZN8S19905C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev)();
extern void _ZN8S19905C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C4__9S19905C12[] = {
  ABISELECT(64,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void _ZN8S19905C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
extern void _ZN8S19905C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C68S19905C4__9S19905C12[] = {
  ABISELECT(64,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void ABISELECT(_ZThn64_N8S19905C6D1Ev,_ZThn36_N8S19905C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
extern void ABISELECT(_ZThn64_N8S19905C6D0Ev,_ZThn36_N8S19905C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C68S19905C4__9S19905C12[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev)();
extern void ABISELECT(_ZThn64_N8S19905C4D1Ev,_ZThn36_N8S19905C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev)();
extern void ABISELECT(_ZThn64_N8S19905C4D0Ev,_ZThn36_N8S19905C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C4__9S19905C12[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void _ZN8S19905C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
extern void _ZN8S19905C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__9S19905C12[] = {
  ABISELECT(-64,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C7__9S19905C12[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
static  VTT_ENTRY vtt_S19905C12[] = {
  {&(_ZTV9S19905C12[8]),  8,37},
  {&(_tg__ZTV8S19905C7__A__9S19905C12[4]),  4,6},
  {&(_tg__ZTV11S19905C5_nt__8S19905C7__A__9S19905C12[3]),  3,5},
  {&(_ZTV9S19905C12[16]),  16,37},
  {&(_ZTV9S19905C12[29]),  29,37},
  {&(_ZTV9S19905C12[29]),  29,37},
  {&(_ZTV9S19905C12[35]),  35,37},
  {&(_ZTV9S19905C12[22]),  22,37},
  {&(_tg__ZTV8S19905C3__9S19905C12[5]),  5,7},
  {&(_tg__ZTV8S19905C78S19905C3__A1__9S19905C12[4]),  4,6},
  {&(_tg__ZTV11S19905C5_nt__8S19905C78S19905C3__A1__9S19905C12[3]),  3,5},
  {&(_tg__ZTV8S19905C4__8S19905C3__9S19905C12[5]),  5,7},
  {&(_tg__ZTV8S19905C4__8S19905C3__9S19905C12[5]),  5,7},
  {&(_tg__ZTV8S19905C7__8S19905C3__9S19905C12[4]),  4,6},
  {&(_tg__ZTV8S19905C7__A__8S19905C3__9S19905C12[4]),  4,6},
  {&(_tg__ZTV8S19905C4__9S19905C12[5]),  5,7},
  {&(_tg__ZTV8S19905C68S19905C4__9S19905C12[5]),  5,7},
  {&(_tg__ZTV8S19905C68S19905C4__9S19905C12[5]),  5,7},
  {&(_tg__ZTV8S19905C7__8S19905C68S19905C4__9S19905C12[4]),  4,6},
  {&(_tg__ZTV8S19905C4__9S19905C12[5]),  5,7},
  {&(_tg__ZTV8S19905C7__8S19905C4__9S19905C12[4]),  4,6},
  {&(_tg__ZTV8S19905C7__9S19905C12[4]),  4,6},
  {&(_tg__ZTV11S19905C5_nt__8S19905C7__9S19905C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19905C12[];
extern  VTBL_ENTRY _ZTV9S19905C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19905C12[];
static VTBL_ENTRY alt_thunk_names4[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19905C6D0Ev,_ZThn36_N8S19905C6D0Ev),
  (VTBL_ENTRY)_ZN8S19905C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19905C6D1Ev,_ZThn36_N8S19905C6D1Ev),
  (VTBL_ENTRY)_ZN8S19905C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19905C4D0Ev,_ZThn36_N8S19905C4D0Ev),
  (VTBL_ENTRY)_ZN8S19905C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19905C4D1Ev,_ZThn36_N8S19905C4D1Ev),
  (VTBL_ENTRY)_ZN8S19905C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19905C3D0Ev,_ZThn8_N8S19905C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19905C3D0Ev,_ZThn76_N8S19905C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19905C3D0Ev,_ZThn40_N8S19905C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19905C3D1Ev,_ZThn8_N8S19905C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19905C3D1Ev,_ZThn76_N8S19905C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19905C3D1Ev,_ZThn40_N8S19905C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S19905C7D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19905C7D0Ev,_ZThn32_N8S19905C7D0Ev),
  (VTBL_ENTRY)_ZN8S19905C7D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19905C7D0Ev,_ZThn68_N8S19905C7D0Ev),
  (VTBL_ENTRY)_ZN8S19905C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S19905C7D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19905C7D1Ev,_ZThn32_N8S19905C7D1Ev),
  (VTBL_ENTRY)_ZN8S19905C7D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19905C7D1Ev,_ZThn68_N8S19905C7D1Ev),
  (VTBL_ENTRY)_ZN8S19905C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19905C12D0Ev,_ZTv0_n24_N9S19905C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19905C12D0Ev,_ZThn28_N9S19905C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19905C12D1Ev,_ZTv0_n24_N9S19905C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19905C12D1Ev,_ZThn28_N9S19905C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S19905C12D0Ev,_ZThn104_N9S19905C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19905C12D0Ev,_ZThn68_N9S19905C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19905C12D0Ev,_ZThn36_N9S19905C12D0Ev),
  (VTBL_ENTRY)_ZN9S19905C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S19905C12D1Ev,_ZThn104_N9S19905C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19905C12D1Ev,_ZThn68_N9S19905C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19905C12D1Ev,_ZThn36_N9S19905C12D1Ev),
  (VTBL_ENTRY)_ZN9S19905C12D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19905C12 = {  "S19905C12", // class name
  bases_S19905C12, 11,
  &(vtc_S19905C12[0]), // expected_vtbl_contents
  &(vtt_S19905C12[0]), // expected_vtt_contents
  ABISELECT(224,132), // object size
  NSPAIRA(_ZTI9S19905C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19905C12),37, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19905C12),23, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names4,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19905C10  : virtual S19905C7 , virtual S19905C6 , virtual S5266C26 , virtual S19905C12 , S19905C4 {
  ::S19905C3 s19905c10f0;
  int s19905c10f1;
  short s19905c10f2;
  virtual  ~S19905C10(); // _ZN9S19905C10D2Ev
  S19905C10(); // tgen
};
//SIG(-1 S19905C10) C1{ VBC2{ VBC3{ vd m} FD Fc Fs[4]} VBC4{ VBC3 VBC2 vd Fi} VBC5{ m} VBC6{ VBC7{ m} VBC8{ VBC9{ VBC3 BC4 BC10{ m Fp} vd Fs FL Fp FL} BC10 BC3 BC2 vd Fi} BC2 vd Fs} BC9 vd FC8 Fi Fs}


 S19905C10 ::~S19905C10(){ note_dtor("S19905C10", this);}
S19905C10 ::S19905C10(){ note_ctor("S19905C10", this);} // tgen

static void Test_S19905C10()
{
  extern Class_Descriptor cd_S19905C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(32,73)];
    init_test(&cd_S19905C10, buf);
    S19905C10 *dp, &lv = *(dp=new (buf) S19905C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(496,288), "sizeof(S19905C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19905C10)");
    /*is_ambiguous_... S19905C10::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C7*), ABISELECT(256,148), "S19905C10");
    /*is_ambiguous_... S19905C10::S19905C6 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C6*), ABISELECT(256,148), "S19905C10");
    /*is_ambiguous_... S19905C10::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C4*), ABISELECT(256,148), "S19905C10");
    /*is_ambiguous_... S19905C10::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C6*)(S19905C4*), ABISELECT(256,148), "S19905C10");
    /*is_ambiguous_... S19905C3::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C7*)(S19905C3*), ABISELECT(256,148), "S19905C10");
    /*is_ambiguous_... S19905C12::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C7*)(S19905C12*), ABISELECT(256,148), "S19905C10");
    /*is_ambiguous_... S19905C10::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C4*), ABISELECT(256,148), "S19905C10");
    /*is_ambiguous_... S19905C10::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C6*)(S19905C4*), ABISELECT(256,148), "S19905C10");
    /*is_ambiguous_... S19905C10::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C7*), ABISELECT(256,148), "S19905C10");
    /*is_ambiguous_... S19905C10::S19905C6 */ AMB_check_base_class_offset(lv, (S19905C7*)(S19905C6*), ABISELECT(256,148), "S19905C10");
    /*is_ambiguous_... S19905C10::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C7*)(S19905C6*)(S19905C4*), ABISELECT(256,148), "S19905C10");
    /*is_ambiguous_... S19905C10::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C7*)(S19905C6*)(S19905C4*), ABISELECT(256,148), "S19905C10");
    /*is_ambiguous_... S19905C10::S19905C6 */ AMB_check_base_class_offset(lv, (S19905C6*), ABISELECT(304,176), "S19905C10");
    check_base_class_offset(lv, (S5266C26*), 0, "S19905C10");
    check_base_class_offset(lv, (S5266C29*)(S19905C12*), 0, "S19905C10");
    /*is_ambiguous_... S19905C10::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C6*)(S19905C4*), ABISELECT(432,252), "S19905C10");
    /*is_ambiguous_... S19905C10::S19905C4 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S19905C4*), ABISELECT(448,260), "S19905C10");
    check_base_class_offset(lv, (S19905C4*)(S19905C3*), ABISELECT(432,252), "S19905C10");
    /*is_ambiguous_... S19905C3::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S19905C3*), ABISELECT(376,216), "S19905C10");
    /*is_ambiguous_... S19905C3::S19905C5_nt */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C3*), ABISELECT(368,212), "S19905C10");
    /*is_ambiguous_... S19905C3::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C7*)(S19905C3*), ABISELECT(384,220), "S19905C10");
    check_base_class_offset(lv, (S19905C3*)(S19905C12*), ABISELECT(368,212), "S19905C10");
    /*is_ambiguous_... S19905C12::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C7*)(S19905C12*), ABISELECT(320,184), "S19905C10");
    check_base_class_offset(lv, (S19905C12*), ABISELECT(320,184), "S19905C10");
    /*is_ambiguous_... S19905C10::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C6*)(S19905C4*), 0, "S19905C10");
    /*is_ambiguous_... S19905C10::S19905C4 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S19905C4*), ABISELECT(16,8), "S19905C10");
    /*is_ambiguous_... S19905C10::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C4*), 0, "S19905C10");
    check_field_offset(lv, s19905c10f0, ABISELECT(64,36), "S19905C10.s19905c10f0");
    check_field_offset(lv, s19905c10f1, ABISELECT(240,140), "S19905C10.s19905c10f1");
    check_field_offset(lv, s19905c10f2, ABISELECT(244,144), "S19905C10.s19905c10f2");
    test_class_info(&lv, &cd_S19905C10);
    dp->~S19905C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19905C10(Test_S19905C10, "S19905C10", ABISELECT(496,288));

#else // __cplusplus

extern void _ZN9S19905C10C1Ev();
extern void _ZN9S19905C10D2Ev();
Name_Map name_map_S19905C10[] = {
  NSPAIR(_ZN9S19905C10C1Ev),
  NSPAIR(_ZN9S19905C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19905C5_nt;
extern VTBL_ENTRY _ZTI11S19905C5_nt[];
extern  VTBL_ENTRY _ZTV11S19905C5_nt[];
extern Class_Descriptor cd_S19905C7;
extern VTBL_ENTRY _ZTI8S19905C7[];
extern  VTBL_ENTRY _ZTV8S19905C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C7[];
extern Class_Descriptor cd_S19905C6;
extern VTBL_ENTRY _ZTI8S19905C6[];
extern  VTBL_ENTRY _ZTV8S19905C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C6[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S19905C6;
extern VTBL_ENTRY _ZTI8S19905C6[];
extern  VTBL_ENTRY _ZTV8S19905C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C6[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C4;
extern VTBL_ENTRY _ZTI8S19905C4[];
extern  VTBL_ENTRY _ZTV8S19905C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C4[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C5_nt;
extern VTBL_ENTRY _ZTI11S19905C5_nt[];
extern  VTBL_ENTRY _ZTV11S19905C5_nt[];
extern Class_Descriptor cd_S19905C7;
extern VTBL_ENTRY _ZTI8S19905C7[];
extern  VTBL_ENTRY _ZTV8S19905C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C7[];
extern Class_Descriptor cd_S19905C3;
extern VTBL_ENTRY _ZTI8S19905C3[];
extern  VTBL_ENTRY _ZTV8S19905C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C3[];
extern Class_Descriptor cd_S19905C7;
extern VTBL_ENTRY _ZTI8S19905C7[];
extern  VTBL_ENTRY _ZTV8S19905C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C7[];
extern Class_Descriptor cd_S19905C12;
extern VTBL_ENTRY _ZTI9S19905C12[];
extern  VTBL_ENTRY _ZTV9S19905C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19905C12[];
extern Class_Descriptor cd_S19905C6;
extern VTBL_ENTRY _ZTI8S19905C6[];
extern  VTBL_ENTRY _ZTV8S19905C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C6[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C4;
extern VTBL_ENTRY _ZTI8S19905C4[];
extern  VTBL_ENTRY _ZTV8S19905C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C4[];
static Base_Class bases_S19905C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19905C5_nt,    ABISELECT(256,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19905C7,    ABISELECT(256,148), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19905C6,    ABISELECT(304,176), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19905C6,    ABISELECT(432,252), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(448,260), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19905C4,    ABISELECT(432,252), //bcp->offset
    50, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S17777C6_nt,    ABISELECT(376,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19905C5_nt,    ABISELECT(368,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19905C7,    ABISELECT(384,220), //bcp->offset
    44, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19905C3,    ABISELECT(368,212), //bcp->offset
    36, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19905C7,    ABISELECT(320,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19905C12,    ABISELECT(320,184), //bcp->offset
    26, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19905C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19905C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19905C10[];
extern void ABISELECT(_ZTv0_n24_N9S19905C10D1Ev,_ZTv0_n12_N9S19905C10D1Ev)();
extern void _ZN9S19905C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C10D0Ev,_ZTv0_n12_N9S19905C10D0Ev)();
extern void _ZN9S19905C10D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C10D1Ev,_ZTv0_n12_N9S19905C10D1Ev)();
extern void ABISELECT(_ZThn256_N9S19905C10D1Ev,_ZThn148_N9S19905C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C10D0Ev,_ZTv0_n12_N9S19905C10D0Ev)();
extern void ABISELECT(_ZThn256_N9S19905C10D0Ev,_ZThn148_N9S19905C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C10D1Ev,_ZTv0_n12_N9S19905C10D1Ev)();
extern void ABISELECT(_ZThn304_N9S19905C10D1Ev,_ZThn176_N9S19905C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C10D0Ev,_ZTv0_n12_N9S19905C10D0Ev)();
extern void ABISELECT(_ZThn304_N9S19905C10D0Ev,_ZThn176_N9S19905C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C10D1Ev,_ZTv0_n12_N9S19905C10D1Ev)();
extern void ABISELECT(_ZThn320_N9S19905C10D1Ev,_ZThn184_N9S19905C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C10D0Ev,_ZTv0_n12_N9S19905C10D0Ev)();
extern void ABISELECT(_ZThn320_N9S19905C10D0Ev,_ZThn184_N9S19905C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19905C10D1Ev,_ZTv0_n24_N9S19905C10D1Ev)();
extern void ABISELECT(_ZThn368_N9S19905C10D1Ev,_ZThn212_N9S19905C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19905C10D0Ev,_ZTv0_n24_N9S19905C10D0Ev)();
extern void ABISELECT(_ZThn368_N9S19905C10D0Ev,_ZThn212_N9S19905C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C10D1Ev,_ZTv0_n12_N9S19905C10D1Ev)();
extern void ABISELECT(_ZThn384_N9S19905C10D1Ev,_ZThn220_N9S19905C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C10D0Ev,_ZTv0_n12_N9S19905C10D0Ev)();
extern void ABISELECT(_ZThn384_N9S19905C10D0Ev,_ZThn220_N9S19905C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C10D1Ev,_ZTv0_n12_N9S19905C10D1Ev)();
extern void ABISELECT(_ZThn432_N9S19905C10D1Ev,_ZThn252_N9S19905C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C10D0Ev,_ZTv0_n12_N9S19905C10D0Ev)();
extern void ABISELECT(_ZThn432_N9S19905C10D0Ev,_ZThn252_N9S19905C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19905C10[] = {
  ABISELECT(432,252),
  ABISELECT(368,212),
  0,
  ABISELECT(320,184),
  0,
  ABISELECT(304,176),
  ABISELECT(256,148),
  ABISELECT(256,148),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19905C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C10D1Ev,_ZTv0_n12_N9S19905C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C10D0Ev,_ZTv0_n12_N9S19905C10D0Ev),
  0,
  ABISELECT(-256,-148),
  ABISELECT(-256,-148),
  (VTBL_ENTRY)&(_ZTI9S19905C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C10D1Ev,_ZTv0_n12_N9S19905C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C10D0Ev,_ZTv0_n12_N9S19905C10D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-304,-176),
  ABISELECT(-304,-176),
  (VTBL_ENTRY)&(_ZTI9S19905C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C10D1Ev,_ZTv0_n12_N9S19905C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C10D0Ev,_ZTv0_n12_N9S19905C10D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-320,-184),
  ABISELECT(-64,-36),
  ABISELECT(-320,-184),
  ABISELECT(-320,-184),
  (VTBL_ENTRY)&(_ZTI9S19905C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C10D1Ev,_ZTv0_n12_N9S19905C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C10D0Ev,_ZTv0_n12_N9S19905C10D0Ev),
  ABISELECT(-368,-212),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(64,40),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI9S19905C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19905C10D1Ev,_ZTv0_n24_N9S19905C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19905C10D0Ev,_ZTv0_n24_N9S19905C10D0Ev),
  ABISELECT(-128,-72),
  ABISELECT(-384,-220),
  ABISELECT(-384,-220),
  (VTBL_ENTRY)&(_ZTI9S19905C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C10D1Ev,_ZTv0_n12_N9S19905C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C10D0Ev,_ZTv0_n12_N9S19905C10D0Ev),
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  ABISELECT(-432,-252),
  ABISELECT(-432,-252),
  (VTBL_ENTRY)&(_ZTI9S19905C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C10D1Ev,_ZTv0_n12_N9S19905C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C10D0Ev,_ZTv0_n12_N9S19905C10D0Ev),
};
extern VTBL_ENTRY _ZTV9S19905C10[];
extern void ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev)();
extern void _ZN8S19905C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev)();
extern void _ZN8S19905C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C4__A__9S19905C10[] = {
  ABISELECT(256,148),
  ABISELECT(256,148),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void _ZN8S19905C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
extern void _ZN8S19905C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C68S19905C4__A2__9S19905C10[] = {
  ABISELECT(256,148),
  ABISELECT(256,148),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void ABISELECT(_ZThn256_N8S19905C6D1Ev,_ZThn148_N8S19905C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
extern void ABISELECT(_ZThn256_N8S19905C6D0Ev,_ZThn148_N8S19905C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C68S19905C4__A2__9S19905C10[] = {
  0,
  ABISELECT(-256,-148),
  ABISELECT(-256,-148),
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev)();
extern void ABISELECT(_ZThn256_N8S19905C4D1Ev,_ZThn148_N8S19905C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev)();
extern void ABISELECT(_ZThn256_N8S19905C4D0Ev,_ZThn148_N8S19905C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C4__A__9S19905C10[] = {
  0,
  ABISELECT(-256,-148),
  ABISELECT(-256,-148),
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void _ZN8S19905C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
extern void _ZN8S19905C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__9S19905C10[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void _ZN8S19905C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
extern void _ZN8S19905C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C6__9S19905C10[] = {
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C6__9S19905C10[] = {
  0,
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev)();
extern void _ZN9S19905C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev)();
extern void _ZN9S19905C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C12__9S19905C10[] = {
  ABISELECT(-64,-36),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-320,-184),
  ABISELECT(-64,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19905C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void _ZN8S19905C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
extern void _ZN8S19905C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C79S19905C12__A2__9S19905C10[] = {
  ABISELECT(-64,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C79S19905C12__A2__9S19905C10[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19905C12D1Ev,_ZTv0_n24_N9S19905C12D1Ev)();
extern void ABISELECT(_ZThn48_N9S19905C12D1Ev,_ZThn28_N9S19905C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19905C12D0Ev,_ZTv0_n24_N9S19905C12D0Ev)();
extern void ABISELECT(_ZThn48_N9S19905C12D0Ev,_ZThn28_N9S19905C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C3__9S19905C12__9S19905C10[] = {
  ABISELECT(-48,-28),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19905C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19905C12D1Ev,_ZTv0_n24_N9S19905C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19905C12D0Ev,_ZTv0_n24_N9S19905C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev)();
extern void ABISELECT(_ZThn112_N9S19905C12D1Ev,_ZThn68_N9S19905C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev)();
extern void ABISELECT(_ZThn112_N9S19905C12D0Ev,_ZThn68_N9S19905C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C4__9S19905C12__9S19905C10[] = {
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI9S19905C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C7__9S19905C12__9S19905C10[] = {
  0,
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI9S19905C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S19905C12D1Ev,_ZThn36_N9S19905C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev)();
extern void ABISELECT(_ZThn64_N9S19905C12D0Ev,_ZThn36_N9S19905C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C78S19905C3__A1__9S19905C12__9S19905C10[] = {
  ABISELECT(-128,-72),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19905C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev),
};
extern void _ZN8S19905C3D1Ev();
extern void _ZN8S19905C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19905C3__9S19905C10[] = {
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C3[0]),
  (VTBL_ENTRY)&_ZN8S19905C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19905C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void _ZN8S19905C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
extern void _ZN8S19905C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C78S19905C3__A1__9S19905C10[] = {
  ABISELECT(-128,-72),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C78S19905C3__A1__9S19905C10[] = {
  ABISELECT(128,72),
  ABISELECT(128,72),
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev)();
extern void ABISELECT(_ZThn64_N8S19905C3D1Ev,_ZThn40_N8S19905C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev)();
extern void ABISELECT(_ZThn64_N8S19905C3D0Ev,_ZThn40_N8S19905C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C4__8S19905C3__9S19905C10[] = {
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19905C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C3__9S19905C10[] = {
  0,
  ABISELECT(112,64),
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI8S19905C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S19905C3D1Ev,_ZThn8_N8S19905C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S19905C3D0Ev,_ZThn8_N8S19905C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__A__8S19905C3__9S19905C10[] = {
  ABISELECT(-128,-72),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19905C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev)();
extern void _ZN8S19905C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev)();
extern void _ZN8S19905C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C4__9S19905C10[] = {
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void _ZN8S19905C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
extern void _ZN8S19905C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C68S19905C4__A1__9S19905C10[] = {
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C68S19905C4__A1__9S19905C10[] = {
  0,
  ABISELECT(176,104),
  ABISELECT(176,104),
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C4__9S19905C10[] = {
  0,
  ABISELECT(176,104),
  ABISELECT(176,104),
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev),
};
static  VTT_ENTRY vtt_S19905C10[] = {
  {&(_ZTV9S19905C10[11]),  11,57},
  {&(_tg__ZTV8S19905C4__A__9S19905C10[5]),  5,7},
  {&(_tg__ZTV8S19905C68S19905C4__A2__9S19905C10[5]),  5,7},
  {&(_tg__ZTV8S19905C7__8S19905C68S19905C4__A2__9S19905C10[4]),  4,6},
  {&(_tg__ZTV8S19905C7__8S19905C68S19905C4__A2__9S19905C10[4]),  4,6},
  {&(_tg__ZTV8S19905C7__8S19905C4__A__9S19905C10[4]),  4,6},
  {&(_tg__ZTV8S19905C7__8S19905C4__A__9S19905C10[4]),  4,6},
  {&(_ZTV9S19905C10[17]),  17,57},
  {&(_ZTV9S19905C10[17]),  17,57},
  {&(_ZTV9S19905C10[24]),  24,57},
  {&(_ZTV9S19905C10[34]),  34,57},
  {&(_ZTV9S19905C10[42]),  42,57},
  {&(_ZTV9S19905C10[55]),  55,57},
  {&(_ZTV9S19905C10[48]),  48,57},
  {&(_tg__ZTV8S19905C7__9S19905C10[4]),  4,6},
  {&(_tg__ZTV8S19905C7__9S19905C10[4]),  4,6},
  {&(_tg__ZTV8S19905C6__9S19905C10[5]),  5,7},
  {&(_tg__ZTV8S19905C7__8S19905C6__9S19905C10[4]),  4,6},
  {&(_tg__ZTV8S19905C7__8S19905C6__9S19905C10[4]),  4,6},
  {&(_tg__ZTV9S19905C12__9S19905C10[8]),  8,10},
  {&(_tg__ZTV8S19905C79S19905C12__A2__9S19905C10[4]),  4,6},
  {&(_tg__ZTV11S19905C5_nt__8S19905C79S19905C12__A2__9S19905C10[3]),  3,5},
  {&(_tg__ZTV8S19905C3__9S19905C12__9S19905C10[6]),  6,8},
  {&(_tg__ZTV8S19905C4__9S19905C12__9S19905C10[5]),  5,7},
  {&(_tg__ZTV8S19905C7__9S19905C12__9S19905C10[4]),  4,6},
  {&(_tg__ZTV8S19905C7__9S19905C12__9S19905C10[4]),  4,6},
  {&(_tg__ZTV8S19905C78S19905C3__A1__9S19905C12__9S19905C10[4]),  4,6},
  {&(_tg__ZTV8S19905C3__9S19905C10[5]),  5,7},
  {&(_tg__ZTV8S19905C78S19905C3__A1__9S19905C10[4]),  4,6},
  {&(_tg__ZTV11S19905C5_nt__8S19905C78S19905C3__A1__9S19905C10[3]),  3,5},
  {&(_tg__ZTV8S19905C4__8S19905C3__9S19905C10[5]),  5,7},
  {&(_tg__ZTV8S19905C7__8S19905C3__9S19905C10[4]),  4,6},
  {&(_tg__ZTV8S19905C7__8S19905C3__9S19905C10[4]),  4,6},
  {&(_tg__ZTV8S19905C7__A__8S19905C3__9S19905C10[4]),  4,6},
  {&(_tg__ZTV8S19905C4__9S19905C10[5]),  5,7},
  {&(_tg__ZTV8S19905C68S19905C4__A1__9S19905C10[5]),  5,7},
  {&(_tg__ZTV8S19905C7__8S19905C68S19905C4__A1__9S19905C10[4]),  4,6},
  {&(_tg__ZTV8S19905C7__8S19905C68S19905C4__A1__9S19905C10[4]),  4,6},
  {&(_tg__ZTV8S19905C7__8S19905C4__9S19905C10[4]),  4,6},
  {&(_tg__ZTV8S19905C7__8S19905C4__9S19905C10[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S19905C10[];
extern  VTBL_ENTRY _ZTV9S19905C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19905C10[];
static VTBL_ENTRY alt_thunk_names5[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19905C3D0Ev,_ZThn8_N8S19905C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19905C3D0Ev,_ZThn40_N8S19905C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19905C3D1Ev,_ZThn8_N8S19905C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19905C3D1Ev,_ZThn40_N8S19905C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19905C12D0Ev,_ZTv0_n24_N9S19905C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19905C12D0Ev,_ZThn28_N9S19905C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19905C12D1Ev,_ZTv0_n24_N9S19905C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19905C12D1Ev,_ZThn28_N9S19905C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19905C12D0Ev,_ZThn36_N9S19905C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19905C12D0Ev,_ZThn68_N9S19905C12D0Ev),
  (VTBL_ENTRY)_ZN9S19905C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19905C12D1Ev,_ZThn36_N9S19905C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19905C12D1Ev,_ZThn68_N9S19905C12D1Ev),
  (VTBL_ENTRY)_ZN9S19905C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S19905C7D0Ev,
  (VTBL_ENTRY)_ZN8S19905C7D0Ev,
  (VTBL_ENTRY)_ZN8S19905C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S19905C7D1Ev,
  (VTBL_ENTRY)_ZN8S19905C7D1Ev,
  (VTBL_ENTRY)_ZN8S19905C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev), // 
  (VTBL_ENTRY)_ZN8S19905C6D0Ev,
  (VTBL_ENTRY)_ZN8S19905C6D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19905C6D0Ev,_ZThn148_N8S19905C6D0Ev),
  (VTBL_ENTRY)_ZN8S19905C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev), // 
  (VTBL_ENTRY)_ZN8S19905C6D1Ev,
  (VTBL_ENTRY)_ZN8S19905C6D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19905C6D1Ev,_ZThn148_N8S19905C6D1Ev),
  (VTBL_ENTRY)_ZN8S19905C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev), // 
  (VTBL_ENTRY)_ZN8S19905C4D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19905C4D0Ev,_ZThn148_N8S19905C4D0Ev),
  (VTBL_ENTRY)_ZN8S19905C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev), // 
  (VTBL_ENTRY)_ZN8S19905C4D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19905C4D1Ev,_ZThn148_N8S19905C4D1Ev),
  (VTBL_ENTRY)_ZN8S19905C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19905C10D0Ev,_ZTv0_n24_N9S19905C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19905C10D0Ev,_ZThn212_N9S19905C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19905C10D1Ev,_ZTv0_n24_N9S19905C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19905C10D1Ev,_ZThn212_N9S19905C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C10D0Ev,_ZTv0_n12_N9S19905C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn432_N9S19905C10D0Ev,_ZThn252_N9S19905C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S19905C10D0Ev,_ZThn220_N9S19905C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S19905C10D0Ev,_ZThn184_N9S19905C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S19905C10D0Ev,_ZThn176_N9S19905C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S19905C10D0Ev,_ZThn148_N9S19905C10D0Ev),
  (VTBL_ENTRY)_ZN9S19905C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C10D1Ev,_ZTv0_n12_N9S19905C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn432_N9S19905C10D1Ev,_ZThn252_N9S19905C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S19905C10D1Ev,_ZThn220_N9S19905C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S19905C10D1Ev,_ZThn184_N9S19905C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S19905C10D1Ev,_ZThn176_N9S19905C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S19905C10D1Ev,_ZThn148_N9S19905C10D1Ev),
  (VTBL_ENTRY)_ZN9S19905C10D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19905C10 = {  "S19905C10", // class name
  bases_S19905C10, 17,
  &(vtc_S19905C10[0]), // expected_vtbl_contents
  &(vtt_S19905C10[0]), // expected_vtt_contents
  ABISELECT(496,288), // object size
  NSPAIRA(_ZTI9S19905C10),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19905C10),57, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19905C10),40, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names5,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19905C15  : virtual S19905C5_nt , S19905C7 , virtual S19905C12 , S19905C4 {
  void *s19905c15f0;
  ~S19905C15(); // tgen
  S19905C15(); // tgen
};
//SIG(-1 S19905C15) C1{ VBC2{ vd m} BC3{ VBC2 FD Fc Fs[4]} VBC4{ VBC5{ m} VBC6{ VBC7{ VBC2 BC8{ VBC2 VBC3 vd Fi} BC9{ m Fp} vd Fs FL Fp FL} BC9 BC2 BC3 vd Fi} BC3 vd Fs} BC7 Fp}


S19905C15 ::~S19905C15(){ note_dtor("S19905C15", this);} // tgen
S19905C15 ::S19905C15(){ note_ctor("S19905C15", this);} // tgen

static void Test_S19905C15()
{
  extern Class_Descriptor cd_S19905C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(22,51)];
    init_test(&cd_S19905C15, buf);
    S19905C15 *dp, &lv = *(dp=new (buf) S19905C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(336,200), "sizeof(S19905C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19905C15)");
    /*is_ambiguous_... S19905C15::S19905C5_nt */ AMB_check_base_class_offset(lv, (S19905C5_nt*), 0, "S19905C15");
    /*is_ambiguous_... S19905C15::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C7*), 0, "S19905C15");
    /*is_ambiguous_... S19905C15::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C4*), 0, "S19905C15");
    /*is_ambiguous_... S19905C15::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C6*)(S19905C4*), 0, "S19905C15");
    /*is_ambiguous_... S19905C15::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C7*), 0, "S19905C15");
    /*is_ambiguous_... S19905C3::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C7*)(S19905C3*), 0, "S19905C15");
    /*is_ambiguous_... S19905C12::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C7*)(S19905C12*), 0, "S19905C15");
    /*is_ambiguous_... S19905C15::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C4*), 0, "S19905C15");
    /*is_ambiguous_... S19905C15::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C6*)(S19905C4*), 0, "S19905C15");
    /*is_ambiguous_... S19905C15::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C7*), 0, "S19905C15");
    check_base_class_offset(lv, (S5266C29*)(S19905C12*), 0, "S19905C15");
    /*is_ambiguous_... S19905C15::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C7*)(S19905C6*)(S19905C4*), ABISELECT(288,172), "S19905C15");
    /*is_ambiguous_... S19905C15::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C7*)(S19905C6*)(S19905C4*), ABISELECT(288,172), "S19905C15");
    /*is_ambiguous_... S19905C15::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C6*)(S19905C4*), ABISELECT(224,136), "S19905C15");
    /*is_ambiguous_... S19905C15::S19905C4 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S19905C4*), ABISELECT(240,144), "S19905C15");
    check_base_class_offset(lv, (S19905C4*)(S19905C3*), ABISELECT(224,136), "S19905C15");
    /*is_ambiguous_... S19905C3::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S19905C3*), ABISELECT(168,100), "S19905C15");
    /*is_ambiguous_... S19905C3::S19905C5_nt */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C3*), ABISELECT(160,96), "S19905C15");
    /*is_ambiguous_... S19905C3::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C7*)(S19905C3*), ABISELECT(176,104), "S19905C15");
    check_base_class_offset(lv, (S19905C3*)(S19905C12*), ABISELECT(160,96), "S19905C15");
    /*is_ambiguous_... S19905C12::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C7*)(S19905C12*), ABISELECT(112,68), "S19905C15");
    check_base_class_offset(lv, (S19905C12*), ABISELECT(112,68), "S19905C15");
    /*is_ambiguous_... S19905C15::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C6*)(S19905C4*), ABISELECT(48,28), "S19905C15");
    /*is_ambiguous_... S19905C15::S19905C4 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S19905C4*), ABISELECT(64,36), "S19905C15");
    /*is_ambiguous_... S19905C15::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C4*), ABISELECT(48,28), "S19905C15");
    check_field_offset(lv, s19905c15f0, ABISELECT(104,64), "S19905C15.s19905c15f0");
    test_class_info(&lv, &cd_S19905C15);
    dp->~S19905C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19905C15(Test_S19905C15, "S19905C15", ABISELECT(336,200));

#else // __cplusplus

extern void _ZN9S19905C15C1Ev();
extern void _ZN9S19905C15D1Ev();
Name_Map name_map_S19905C15[] = {
  NSPAIR(_ZN9S19905C15C1Ev),
  NSPAIR(_ZN9S19905C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19905C5_nt;
extern VTBL_ENTRY _ZTI11S19905C5_nt[];
extern  VTBL_ENTRY _ZTV11S19905C5_nt[];
extern Class_Descriptor cd_S19905C7;
extern VTBL_ENTRY _ZTI8S19905C7[];
extern  VTBL_ENTRY _ZTV8S19905C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C7[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S19905C7;
extern VTBL_ENTRY _ZTI8S19905C7[];
extern  VTBL_ENTRY _ZTV8S19905C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C7[];
extern Class_Descriptor cd_S19905C6;
extern VTBL_ENTRY _ZTI8S19905C6[];
extern  VTBL_ENTRY _ZTV8S19905C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C6[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C4;
extern VTBL_ENTRY _ZTI8S19905C4[];
extern  VTBL_ENTRY _ZTV8S19905C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C4[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C5_nt;
extern VTBL_ENTRY _ZTI11S19905C5_nt[];
extern  VTBL_ENTRY _ZTV11S19905C5_nt[];
extern Class_Descriptor cd_S19905C7;
extern VTBL_ENTRY _ZTI8S19905C7[];
extern  VTBL_ENTRY _ZTV8S19905C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C7[];
extern Class_Descriptor cd_S19905C3;
extern VTBL_ENTRY _ZTI8S19905C3[];
extern  VTBL_ENTRY _ZTV8S19905C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C3[];
extern Class_Descriptor cd_S19905C7;
extern VTBL_ENTRY _ZTI8S19905C7[];
extern  VTBL_ENTRY _ZTV8S19905C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C7[];
extern Class_Descriptor cd_S19905C12;
extern VTBL_ENTRY _ZTI9S19905C12[];
extern  VTBL_ENTRY _ZTV9S19905C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19905C12[];
extern Class_Descriptor cd_S19905C6;
extern VTBL_ENTRY _ZTI8S19905C6[];
extern  VTBL_ENTRY _ZTV8S19905C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C6[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C4;
extern VTBL_ENTRY _ZTI8S19905C4[];
extern  VTBL_ENTRY _ZTV8S19905C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C4[];
static Base_Class bases_S19905C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19905C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19905C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19905C7,    ABISELECT(288,172), //bcp->offset
    49, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19905C6,    ABISELECT(224,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(240,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19905C4,    ABISELECT(224,136), //bcp->offset
    42, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S17777C6_nt,    ABISELECT(168,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19905C5_nt,    ABISELECT(160,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19905C7,    ABISELECT(176,104), //bcp->offset
    36, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19905C3,    ABISELECT(160,96), //bcp->offset
    28, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19905C7,    ABISELECT(112,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19905C12,    ABISELECT(112,68), //bcp->offset
    18, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19905C6,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19905C4,    ABISELECT(48,28), //bcp->offset
    11, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19905C15[];
extern void ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev)();
extern void _ZN9S19905C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev)();
extern void _ZN9S19905C15D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev)();
extern void ABISELECT(_ZThn48_N9S19905C15D1Ev,_ZThn28_N9S19905C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev)();
extern void ABISELECT(_ZThn48_N9S19905C15D0Ev,_ZThn28_N9S19905C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev)();
extern void ABISELECT(_ZThn112_N9S19905C15D1Ev,_ZThn68_N9S19905C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev)();
extern void ABISELECT(_ZThn112_N9S19905C15D0Ev,_ZThn68_N9S19905C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19905C15D1Ev,_ZTv0_n24_N9S19905C15D1Ev)();
extern void ABISELECT(_ZThn160_N9S19905C15D1Ev,_ZThn96_N9S19905C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19905C15D0Ev,_ZTv0_n24_N9S19905C15D0Ev)();
extern void ABISELECT(_ZThn160_N9S19905C15D0Ev,_ZThn96_N9S19905C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev)();
extern void ABISELECT(_ZThn176_N9S19905C15D1Ev,_ZThn104_N9S19905C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev)();
extern void ABISELECT(_ZThn176_N9S19905C15D0Ev,_ZThn104_N9S19905C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev)();
extern void ABISELECT(_ZThn224_N9S19905C15D1Ev,_ZThn136_N9S19905C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev)();
extern void ABISELECT(_ZThn224_N9S19905C15D0Ev,_ZThn136_N9S19905C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev)();
extern void ABISELECT(_ZThn288_N9S19905C15D1Ev,_ZThn172_N9S19905C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev)();
extern void ABISELECT(_ZThn288_N9S19905C15D0Ev,_ZThn172_N9S19905C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19905C15[] = {
  ABISELECT(288,172),
  ABISELECT(224,136),
  ABISELECT(160,96),
  0,
  ABISELECT(112,68),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19905C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev),
  ABISELECT(240,144),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19905C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev),
  ABISELECT(176,104),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI9S19905C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev),
  ABISELECT(-160,-96),
  ABISELECT(128,76),
  ABISELECT(-160,-96),
  ABISELECT(64,40),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI9S19905C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19905C15D1Ev,_ZTv0_n24_N9S19905C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19905C15D0Ev,_ZTv0_n24_N9S19905C15D0Ev),
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI9S19905C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev),
  ABISELECT(64,36),
  ABISELECT(-224,-136),
  ABISELECT(-224,-136),
  ABISELECT(-224,-136),
  (VTBL_ENTRY)&(_ZTI9S19905C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev),
  ABISELECT(-288,-172),
  ABISELECT(-288,-172),
  ABISELECT(-288,-172),
  (VTBL_ENTRY)&(_ZTI9S19905C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev),
};
extern VTBL_ENTRY _ZTV9S19905C15[];
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void _ZN8S19905C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
extern void _ZN8S19905C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__A__9S19905C15[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev)();
extern void _ZN8S19905C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev)();
extern void _ZN8S19905C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C4__A__9S19905C15[] = {
  ABISELECT(240,144),
  ABISELECT(-48,-28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void _ZN8S19905C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
extern void _ZN8S19905C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C68S19905C4__A1__9S19905C15[] = {
  ABISELECT(240,144),
  ABISELECT(-48,-28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C68S19905C4__A1__9S19905C15[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void ABISELECT(_ZThn240_N8S19905C6D1Ev,_ZThn144_N8S19905C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
extern void ABISELECT(_ZThn240_N8S19905C6D0Ev,_ZThn144_N8S19905C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C68S19905C4__A1__9S19905C15[] = {
  ABISELECT(-288,-172),
  ABISELECT(-240,-144),
  ABISELECT(-240,-144),
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C4__A__9S19905C15[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev)();
extern void ABISELECT(_ZThn240_N8S19905C4D1Ev,_ZThn144_N8S19905C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev)();
extern void ABISELECT(_ZThn240_N8S19905C4D0Ev,_ZThn144_N8S19905C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C4__A__9S19905C15[] = {
  ABISELECT(-288,-172),
  ABISELECT(-240,-144),
  ABISELECT(-240,-144),
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev)();
extern void _ZN9S19905C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev)();
extern void _ZN9S19905C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C12__9S19905C15[] = {
  ABISELECT(176,104),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19905C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void _ZN8S19905C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
extern void _ZN8S19905C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C79S19905C12__A3__9S19905C15[] = {
  ABISELECT(-112,-68),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C79S19905C12__A3__9S19905C15[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19905C12D1Ev,_ZTv0_n24_N9S19905C12D1Ev)();
extern void ABISELECT(_ZThn48_N9S19905C12D1Ev,_ZThn28_N9S19905C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19905C12D0Ev,_ZTv0_n24_N9S19905C12D0Ev)();
extern void ABISELECT(_ZThn48_N9S19905C12D0Ev,_ZThn28_N9S19905C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C3__9S19905C12__9S19905C15[] = {
  ABISELECT(-48,-28),
  ABISELECT(128,76),
  ABISELECT(-160,-96),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19905C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19905C12D1Ev,_ZTv0_n24_N9S19905C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19905C12D0Ev,_ZTv0_n24_N9S19905C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev)();
extern void ABISELECT(_ZThn112_N9S19905C12D1Ev,_ZThn68_N9S19905C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev)();
extern void ABISELECT(_ZThn112_N9S19905C12D0Ev,_ZThn68_N9S19905C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C4__9S19905C12__9S19905C15[] = {
  ABISELECT(64,36),
  ABISELECT(-224,-136),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI9S19905C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__9S19905C12__9S19905C15[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI9S19905C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev)();
extern void ABISELECT(_ZThn176_N9S19905C12D1Ev,_ZThn104_N9S19905C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev)();
extern void ABISELECT(_ZThn176_N9S19905C12D0Ev,_ZThn104_N9S19905C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__9S19905C12__9S19905C15[] = {
  ABISELECT(-288,-172),
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI9S19905C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S19905C12D1Ev,_ZThn36_N9S19905C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev)();
extern void ABISELECT(_ZThn64_N9S19905C12D0Ev,_ZThn36_N9S19905C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C78S19905C3__A1__9S19905C12__9S19905C15[] = {
  ABISELECT(-176,-104),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19905C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev),
};
extern void _ZN8S19905C3D1Ev();
extern void _ZN8S19905C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19905C3__9S19905C15[] = {
  ABISELECT(128,76),
  ABISELECT(-160,-96),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C3[0]),
  (VTBL_ENTRY)&_ZN8S19905C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19905C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void _ZN8S19905C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
extern void _ZN8S19905C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C78S19905C3__A2__9S19905C15[] = {
  ABISELECT(-176,-104),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C78S19905C3__A2__9S19905C15[] = {
  ABISELECT(176,104),
  ABISELECT(176,104),
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev)();
extern void ABISELECT(_ZThn64_N8S19905C3D1Ev,_ZThn40_N8S19905C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev)();
extern void ABISELECT(_ZThn64_N8S19905C3D0Ev,_ZThn40_N8S19905C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C4__8S19905C3__9S19905C15[] = {
  ABISELECT(64,36),
  ABISELECT(-224,-136),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19905C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C3__9S19905C15[] = {
  ABISELECT(160,96),
  ABISELECT(160,96),
  (VTBL_ENTRY)&(_ZTI8S19905C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev)();
extern void ABISELECT(_ZThn128_N8S19905C3D1Ev,_ZThn76_N8S19905C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev)();
extern void ABISELECT(_ZThn128_N8S19905C3D0Ev,_ZThn76_N8S19905C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C3__9S19905C15[] = {
  ABISELECT(-288,-172),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S19905C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S19905C3D1Ev,_ZThn8_N8S19905C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S19905C3D0Ev,_ZThn8_N8S19905C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__A__8S19905C3__9S19905C15[] = {
  ABISELECT(-176,-104),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19905C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev)();
extern void _ZN8S19905C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev)();
extern void _ZN8S19905C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C4__9S19905C15[] = {
  ABISELECT(64,36),
  ABISELECT(-224,-136),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void _ZN8S19905C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
extern void _ZN8S19905C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C68S19905C4__9S19905C15[] = {
  ABISELECT(64,36),
  ABISELECT(-224,-136),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C68S19905C4__9S19905C15[] = {
  ABISELECT(224,136),
  ABISELECT(224,136),
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void ABISELECT(_ZThn64_N8S19905C6D1Ev,_ZThn36_N8S19905C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
extern void ABISELECT(_ZThn64_N8S19905C6D0Ev,_ZThn36_N8S19905C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C68S19905C4__9S19905C15[] = {
  ABISELECT(-288,-172),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C4__9S19905C15[] = {
  ABISELECT(224,136),
  ABISELECT(224,136),
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev)();
extern void ABISELECT(_ZThn64_N8S19905C4D1Ev,_ZThn36_N8S19905C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev)();
extern void ABISELECT(_ZThn64_N8S19905C4D0Ev,_ZThn36_N8S19905C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C4__9S19905C15[] = {
  ABISELECT(-288,-172),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void _ZN8S19905C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
extern void _ZN8S19905C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__A1__9S19905C15[] = {
  ABISELECT(-288,-172),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C7__A1__9S19905C15[] = {
  ABISELECT(288,172),
  ABISELECT(288,172),
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
static  VTT_ENTRY vtt_S19905C15[] = {
  {&(_ZTV9S19905C15[9]),  9,55},
  {&(_tg__ZTV8S19905C7__A__9S19905C15[4]),  4,6},
  {&(_tg__ZTV8S19905C7__A__9S19905C15[4]),  4,6},
  {&(_tg__ZTV8S19905C4__A__9S19905C15[5]),  5,7},
  {&(_tg__ZTV8S19905C68S19905C4__A1__9S19905C15[5]),  5,7},
  {&(_tg__ZTV11S19905C5_nt__8S19905C68S19905C4__A1__9S19905C15[3]),  3,5},
  {&(_tg__ZTV8S19905C7__8S19905C68S19905C4__A1__9S19905C15[4]),  4,6},
  {&(_tg__ZTV11S19905C5_nt__8S19905C4__A__9S19905C15[3]),  3,5},
  {&(_tg__ZTV8S19905C7__8S19905C4__A__9S19905C15[4]),  4,6},
  {&(_ZTV9S19905C15[9]),  9,55},
  {&(_ZTV9S19905C15[26]),  26,55},
  {&(_ZTV9S19905C15[34]),  34,55},
  {&(_ZTV9S19905C15[47]),  47,55},
  {&(_ZTV9S19905C15[53]),  53,55},
  {&(_ZTV9S19905C15[40]),  40,55},
  {&(_ZTV9S19905C15[16]),  16,55},
  {&(_tg__ZTV9S19905C12__9S19905C15[8]),  8,10},
  {&(_tg__ZTV8S19905C79S19905C12__A3__9S19905C15[4]),  4,6},
  {&(_tg__ZTV11S19905C5_nt__8S19905C79S19905C12__A3__9S19905C15[3]),  3,5},
  {&(_tg__ZTV8S19905C3__9S19905C12__9S19905C15[6]),  6,8},
  {&(_tg__ZTV8S19905C4__9S19905C12__9S19905C15[5]),  5,7},
  {&(_tg__ZTV11S19905C5_nt__9S19905C12__9S19905C15[3]),  3,5},
  {&(_tg__ZTV8S19905C7__9S19905C12__9S19905C15[4]),  4,6},
  {&(_tg__ZTV8S19905C78S19905C3__A1__9S19905C12__9S19905C15[4]),  4,6},
  {&(_tg__ZTV8S19905C3__9S19905C15[5]),  5,7},
  {&(_tg__ZTV8S19905C78S19905C3__A2__9S19905C15[4]),  4,6},
  {&(_tg__ZTV11S19905C5_nt__8S19905C78S19905C3__A2__9S19905C15[3]),  3,5},
  {&(_tg__ZTV8S19905C4__8S19905C3__9S19905C15[5]),  5,7},
  {&(_tg__ZTV11S19905C5_nt__8S19905C3__9S19905C15[3]),  3,5},
  {&(_tg__ZTV8S19905C7__8S19905C3__9S19905C15[4]),  4,6},
  {&(_tg__ZTV8S19905C7__A__8S19905C3__9S19905C15[4]),  4,6},
  {&(_tg__ZTV8S19905C4__9S19905C15[5]),  5,7},
  {&(_tg__ZTV8S19905C68S19905C4__9S19905C15[5]),  5,7},
  {&(_tg__ZTV11S19905C5_nt__8S19905C68S19905C4__9S19905C15[3]),  3,5},
  {&(_tg__ZTV8S19905C7__8S19905C68S19905C4__9S19905C15[4]),  4,6},
  {&(_tg__ZTV11S19905C5_nt__8S19905C4__9S19905C15[3]),  3,5},
  {&(_tg__ZTV8S19905C7__8S19905C4__9S19905C15[4]),  4,6},
  {&(_tg__ZTV8S19905C7__A1__9S19905C15[4]),  4,6},
  {&(_tg__ZTV11S19905C5_nt__8S19905C7__A1__9S19905C15[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19905C15[];
extern  VTBL_ENTRY _ZTV9S19905C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19905C15[];
static VTBL_ENTRY alt_thunk_names6[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19905C3D0Ev,_ZThn8_N8S19905C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19905C3D0Ev,_ZThn76_N8S19905C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19905C3D0Ev,_ZThn40_N8S19905C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19905C3D1Ev,_ZThn8_N8S19905C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19905C3D1Ev,_ZThn76_N8S19905C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19905C3D1Ev,_ZThn40_N8S19905C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19905C12D0Ev,_ZTv0_n24_N9S19905C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19905C12D0Ev,_ZThn28_N9S19905C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19905C12D1Ev,_ZTv0_n24_N9S19905C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19905C12D1Ev,_ZThn28_N9S19905C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19905C12D0Ev,_ZThn36_N9S19905C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S19905C12D0Ev,_ZThn104_N9S19905C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19905C12D0Ev,_ZThn68_N9S19905C12D0Ev),
  (VTBL_ENTRY)_ZN9S19905C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19905C12D1Ev,_ZThn36_N9S19905C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S19905C12D1Ev,_ZThn104_N9S19905C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19905C12D1Ev,_ZThn68_N9S19905C12D1Ev),
  (VTBL_ENTRY)_ZN9S19905C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19905C6D0Ev,_ZThn36_N8S19905C6D0Ev),
  (VTBL_ENTRY)_ZN8S19905C6D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19905C6D0Ev,_ZThn144_N8S19905C6D0Ev),
  (VTBL_ENTRY)_ZN8S19905C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19905C6D1Ev,_ZThn36_N8S19905C6D1Ev),
  (VTBL_ENTRY)_ZN8S19905C6D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19905C6D1Ev,_ZThn144_N8S19905C6D1Ev),
  (VTBL_ENTRY)_ZN8S19905C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19905C4D0Ev,_ZThn36_N8S19905C4D0Ev),
  (VTBL_ENTRY)_ZN8S19905C4D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19905C4D0Ev,_ZThn144_N8S19905C4D0Ev),
  (VTBL_ENTRY)_ZN8S19905C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19905C4D1Ev,_ZThn36_N8S19905C4D1Ev),
  (VTBL_ENTRY)_ZN8S19905C4D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19905C4D1Ev,_ZThn144_N8S19905C4D1Ev),
  (VTBL_ENTRY)_ZN8S19905C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S19905C7D0Ev,
  (VTBL_ENTRY)_ZN8S19905C7D0Ev,
  (VTBL_ENTRY)_ZN8S19905C7D0Ev,
  (VTBL_ENTRY)_ZN8S19905C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S19905C7D1Ev,
  (VTBL_ENTRY)_ZN8S19905C7D1Ev,
  (VTBL_ENTRY)_ZN8S19905C7D1Ev,
  (VTBL_ENTRY)_ZN8S19905C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19905C15D0Ev,_ZTv0_n24_N9S19905C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S19905C15D0Ev,_ZThn96_N9S19905C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19905C15D1Ev,_ZTv0_n24_N9S19905C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S19905C15D1Ev,_ZThn96_N9S19905C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S19905C15D0Ev,_ZThn172_N9S19905C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S19905C15D0Ev,_ZThn136_N9S19905C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S19905C15D0Ev,_ZThn104_N9S19905C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19905C15D0Ev,_ZThn68_N9S19905C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19905C15D0Ev,_ZThn28_N9S19905C15D0Ev),
  (VTBL_ENTRY)_ZN9S19905C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S19905C15D1Ev,_ZThn172_N9S19905C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S19905C15D1Ev,_ZThn136_N9S19905C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S19905C15D1Ev,_ZThn104_N9S19905C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19905C15D1Ev,_ZThn68_N9S19905C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19905C15D1Ev,_ZThn28_N9S19905C15D1Ev),
  (VTBL_ENTRY)_ZN9S19905C15D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19905C15 = {  "S19905C15", // class name
  bases_S19905C15, 16,
  &(vtc_S19905C15[0]), // expected_vtbl_contents
  &(vtt_S19905C15[0]), // expected_vtt_contents
  ABISELECT(336,200), // object size
  NSPAIRA(_ZTI9S19905C15),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19905C15),55, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19905C15),39, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names6,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19905C16  : S5266C26 , virtual S19905C4 , S17777C6_nt , virtual S5266C29 {
  ::S19905C6 s19905c16f0;
  short s19905c16f1;
  virtual  ~S19905C16(); // _ZN9S19905C16D2Ev
  S19905C16(); // tgen
};
//SIG(-1 S19905C16) C1{ BC2{ m} VBC3{ VBC4{ vd m} BC5{ VBC4 VBC6{ VBC4 FD Fc Fs[4]} vd Fi} BC7{ m Fp} vd Fs FL Fp FL} BC7 VBC8{ m} vd FC5 Fs}


 S19905C16 ::~S19905C16(){ note_dtor("S19905C16", this);}
S19905C16 ::S19905C16(){ note_ctor("S19905C16", this);} // tgen

static void Test_S19905C16()
{
  extern Class_Descriptor cd_S19905C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,29)];
    init_test(&cd_S19905C16, buf);
    S19905C16 *dp, &lv = *(dp=new (buf) S19905C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,112), "sizeof(S19905C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19905C16)");
    check_base_class_offset(lv, (S5266C26*), 0, "S19905C16");
    check_base_class_offset(lv, (S19905C5_nt*)(S19905C4*), 0, "S19905C16");
    check_base_class_offset(lv, (S19905C5_nt*)(S19905C6*)(S19905C4*), 0, "S19905C16");
    check_base_class_offset(lv, (S19905C5_nt*)(S19905C7*), 0, "S19905C16");
    check_base_class_offset(lv, (S19905C7*)(S19905C6*)(S19905C4*), ABISELECT(144,84), "S19905C16");
    check_base_class_offset(lv, (S19905C6*)(S19905C4*), ABISELECT(88,48), "S19905C16");
    check_base_class_offset(lv, (S17777C6_nt*)(S19905C4*), ABISELECT(104,56), "S19905C16");
    check_base_class_offset(lv, (S19905C4*), ABISELECT(88,48), "S19905C16");
    /*is_ambiguous_... S19905C16::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*), ABISELECT(8,4), "S19905C16");
    check_base_class_offset(lv, (S5266C29*), 0, "S19905C16");
    check_field_offset(lv, s19905c16f0, ABISELECT(16,8), "S19905C16.s19905c16f0");
    check_field_offset(lv, s19905c16f1, ABISELECT(80,44), "S19905C16.s19905c16f1");
    test_class_info(&lv, &cd_S19905C16);
    dp->~S19905C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19905C16(Test_S19905C16, "S19905C16", ABISELECT(192,112));

#else // __cplusplus

extern void _ZN9S19905C16C1Ev();
extern void _ZN9S19905C16D2Ev();
Name_Map name_map_S19905C16[] = {
  NSPAIR(_ZN9S19905C16C1Ev),
  NSPAIR(_ZN9S19905C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S19905C5_nt;
extern VTBL_ENTRY _ZTI11S19905C5_nt[];
extern  VTBL_ENTRY _ZTV11S19905C5_nt[];
extern Class_Descriptor cd_S19905C7;
extern VTBL_ENTRY _ZTI8S19905C7[];
extern  VTBL_ENTRY _ZTV8S19905C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C7[];
extern Class_Descriptor cd_S19905C6;
extern VTBL_ENTRY _ZTI8S19905C6[];
extern  VTBL_ENTRY _ZTV8S19905C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C6[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C4;
extern VTBL_ENTRY _ZTI8S19905C4[];
extern  VTBL_ENTRY _ZTV8S19905C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C4[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
static Base_Class bases_S19905C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19905C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19905C7,    ABISELECT(144,84), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19905C6,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19905C4,    ABISELECT(88,48), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S17777C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19905C16[];
extern void _ZN9S19905C16D1Ev();
extern void _ZN9S19905C16D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19905C16D1Ev,_ZTv0_n12_N9S19905C16D1Ev)();
extern void ABISELECT(_ZThn88_N9S19905C16D1Ev,_ZThn48_N9S19905C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C16D0Ev,_ZTv0_n12_N9S19905C16D0Ev)();
extern void ABISELECT(_ZThn88_N9S19905C16D0Ev,_ZThn48_N9S19905C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C16D1Ev,_ZTv0_n12_N9S19905C16D1Ev)();
extern void ABISELECT(_ZThn144_N9S19905C16D1Ev,_ZThn84_N9S19905C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C16D0Ev,_ZTv0_n12_N9S19905C16D0Ev)();
extern void ABISELECT(_ZThn144_N9S19905C16D0Ev,_ZThn84_N9S19905C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19905C16[] = {
  0,
  ABISELECT(144,84),
  0,
  ABISELECT(88,48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19905C16[0]),
  (VTBL_ENTRY)&_ZN9S19905C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19905C16D0Ev,
  ABISELECT(56,36),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S19905C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C16D1Ev,_ZTv0_n12_N9S19905C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C16D0Ev,_ZTv0_n12_N9S19905C16D0Ev),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S19905C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C16D1Ev,_ZTv0_n12_N9S19905C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C16D0Ev,_ZTv0_n12_N9S19905C16D0Ev),
};
extern VTBL_ENTRY _ZTV9S19905C16[];
extern void ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev)();
extern void _ZN8S19905C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev)();
extern void _ZN8S19905C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C4__9S19905C16[] = {
  ABISELECT(56,36),
  ABISELECT(-88,-48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void _ZN8S19905C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
extern void _ZN8S19905C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C68S19905C4__9S19905C16[] = {
  ABISELECT(56,36),
  ABISELECT(-88,-48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C68S19905C4__9S19905C16[] = {
  ABISELECT(88,48),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void ABISELECT(_ZThn56_N8S19905C6D1Ev,_ZThn36_N8S19905C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
extern void ABISELECT(_ZThn56_N8S19905C6D0Ev,_ZThn36_N8S19905C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C68S19905C4__9S19905C16[] = {
  ABISELECT(-144,-84),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C4__9S19905C16[] = {
  ABISELECT(88,48),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev)();
extern void ABISELECT(_ZThn56_N8S19905C4D1Ev,_ZThn36_N8S19905C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev)();
extern void ABISELECT(_ZThn56_N8S19905C4D0Ev,_ZThn36_N8S19905C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C4__9S19905C16[] = {
  ABISELECT(-144,-84),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void _ZN8S19905C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
extern void _ZN8S19905C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__9S19905C16[] = {
  ABISELECT(-144,-84),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C7__9S19905C16[] = {
  ABISELECT(144,84),
  ABISELECT(144,84),
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
static  VTT_ENTRY vtt_S19905C16[] = {
  {&(_ZTV9S19905C16[7]),  7,22},
  {&(_ZTV9S19905C16[14]),  14,22},
  {&(_ZTV9S19905C16[7]),  7,22},
  {&(_ZTV9S19905C16[20]),  20,22},
  {&(_tg__ZTV8S19905C4__9S19905C16[5]),  5,7},
  {&(_tg__ZTV8S19905C68S19905C4__9S19905C16[5]),  5,7},
  {&(_tg__ZTV11S19905C5_nt__8S19905C68S19905C4__9S19905C16[3]),  3,5},
  {&(_tg__ZTV8S19905C7__8S19905C68S19905C4__9S19905C16[4]),  4,6},
  {&(_tg__ZTV11S19905C5_nt__8S19905C4__9S19905C16[3]),  3,5},
  {&(_tg__ZTV8S19905C7__8S19905C4__9S19905C16[4]),  4,6},
  {&(_tg__ZTV8S19905C7__9S19905C16[4]),  4,6},
  {&(_tg__ZTV11S19905C5_nt__8S19905C7__9S19905C16[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19905C16[];
extern  VTBL_ENTRY _ZTV9S19905C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19905C16[];
static VTBL_ENTRY alt_thunk_names7[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S19905C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S19905C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19905C6D0Ev,_ZThn36_N8S19905C6D0Ev),
  (VTBL_ENTRY)_ZN8S19905C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19905C6D1Ev,_ZThn36_N8S19905C6D1Ev),
  (VTBL_ENTRY)_ZN8S19905C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19905C4D0Ev,_ZThn36_N8S19905C4D0Ev),
  (VTBL_ENTRY)_ZN8S19905C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19905C4D1Ev,_ZThn36_N8S19905C4D1Ev),
  (VTBL_ENTRY)_ZN8S19905C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C16D0Ev,_ZTv0_n12_N9S19905C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19905C16D0Ev,_ZThn84_N9S19905C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19905C16D0Ev,_ZThn48_N9S19905C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C16D1Ev,_ZTv0_n12_N9S19905C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19905C16D1Ev,_ZThn84_N9S19905C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19905C16D1Ev,_ZThn48_N9S19905C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19905C16 = {  "S19905C16", // class name
  bases_S19905C16, 8,
  &(vtc_S19905C16[0]), // expected_vtbl_contents
  &(vtt_S19905C16[0]), // expected_vtt_contents
  ABISELECT(192,112), // object size
  NSPAIRA(_ZTI9S19905C16),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19905C16),22, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19905C16),12, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names7,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19905C17_nt  {
};
//SIG(-1 S19905C17_nt) C1{}



//skip512 S19905C17_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19905C14  : virtual S19905C7 , virtual S19905C15 , virtual S17777C6_nt , S19905C16 {
  int s19905c14f0;
  ::S19905C17_nt s19905c14f1;
  virtual  ~S19905C14(); // _ZN9S19905C14D2Ev
  S19905C14(); // tgen
};
//SIG(-1 S19905C14) C1{ VBC2{ VBC3{ vd m} FD Fc Fs[4]} VBC4{ VBC3 BC2 VBC5{ VBC6{ m} VBC7{ VBC8{ VBC3 BC9{ VBC3 VBC2 vd Fi} BC10{ m Fp} vd Fs FL Fp FL} BC10 BC3 BC2 vd Fi} BC2 vd Fs} BC8 Fp} VBC10 BC11{ BC12{ m} VBC8 BC10 VBC6 vd FC9 Fs} vd Fi FC13{}}


 S19905C14 ::~S19905C14(){ note_dtor("S19905C14", this);}
S19905C14 ::S19905C14(){ note_ctor("S19905C14", this);} // tgen

static void Test_S19905C14()
{
  extern Class_Descriptor cd_S19905C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(28,66)];
    init_test(&cd_S19905C14, buf);
    S19905C14 *dp, &lv = *(dp=new (buf) S19905C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(432,260), "sizeof(S19905C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19905C14)");
    /*is_ambiguous_... S19905C14::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C7*), ABISELECT(96,56), "S19905C14");
    /*is_ambiguous_... S19905C15::S19905C5_nt */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C15*), ABISELECT(96,56), "S19905C14");
    /*is_ambiguous_... S19905C15::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C7*)(S19905C15*), ABISELECT(96,56), "S19905C14");
    /*is_ambiguous_... S19905C14::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C4*), ABISELECT(96,56), "S19905C14");
    /*is_ambiguous_... S19905C14::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C6*)(S19905C4*), ABISELECT(96,56), "S19905C14");
    /*is_ambiguous_... S19905C3::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C7*)(S19905C3*), ABISELECT(96,56), "S19905C14");
    /*is_ambiguous_... S19905C12::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C7*)(S19905C12*), ABISELECT(96,56), "S19905C14");
    /*is_ambiguous_... S19905C15::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C4*)(S19905C15*), ABISELECT(96,56), "S19905C14");
    /*is_ambiguous_... S19905C15::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C6*)(S19905C4*)(S19905C15*), ABISELECT(96,56), "S19905C14");
    /*is_ambiguous_... S19905C14::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C7*), ABISELECT(96,56), "S19905C14");
    /*is_ambiguous_... S19905C14::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C7*)(S19905C6*)(S19905C4*), ABISELECT(96,56), "S19905C14");
    /*is_ambiguous_... S19905C15::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C7*)(S19905C6*)(S19905C4*)(S19905C15*), ABISELECT(96,56), "S19905C14");
    /*is_ambiguous_... S19905C15::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C7*)(S19905C15*), ABISELECT(144,84), "S19905C14");
    check_base_class_offset(lv, (S5266C29*)(S19905C12*), 0, "S19905C14");
    check_base_class_offset(lv, (S5266C29*)(S19905C16*), 0, "S19905C14");
    /*is_ambiguous_... S19905C14::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C6*)(S19905C4*), ABISELECT(368,220), "S19905C14");
    /*is_ambiguous_... S19905C14::S19905C4 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S19905C4*), ABISELECT(384,228), "S19905C14");
    check_base_class_offset(lv, (S19905C4*)(S19905C3*), ABISELECT(368,220), "S19905C14");
    check_base_class_offset(lv, (S19905C4*)(S19905C16*), ABISELECT(368,220), "S19905C14");
    /*is_ambiguous_... S19905C3::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S19905C3*), ABISELECT(312,184), "S19905C14");
    /*is_ambiguous_... S19905C3::S19905C5_nt */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C3*), ABISELECT(304,180), "S19905C14");
    /*is_ambiguous_... S19905C3::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C7*)(S19905C3*), ABISELECT(320,188), "S19905C14");
    check_base_class_offset(lv, (S19905C3*)(S19905C12*), ABISELECT(304,180), "S19905C14");
    /*is_ambiguous_... S19905C12::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C7*)(S19905C12*), ABISELECT(256,152), "S19905C14");
    check_base_class_offset(lv, (S19905C12*)(S19905C15*), ABISELECT(256,152), "S19905C14");
    /*is_ambiguous_... S19905C15::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C6*)(S19905C4*)(S19905C15*), ABISELECT(192,112), "S19905C14");
    /*is_ambiguous_... S19905C15::S19905C4 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S19905C4*)(S19905C15*), ABISELECT(208,120), "S19905C14");
    /*is_ambiguous_... S19905C15::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C4*)(S19905C15*), ABISELECT(192,112), "S19905C14");
    check_base_class_offset(lv, (S19905C15*), ABISELECT(144,84), "S19905C14");
    /*is_ambiguous_... S19905C14::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*), ABISELECT(424,256), "S19905C14");
    check_base_class_offset(lv, (S5266C26*)(S19905C16*), 0, "S19905C14");
    /*is_ambiguous_... S19905C16::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S19905C16*), ABISELECT(8,4), "S19905C14");
    check_base_class_offset(lv, (S19905C16*), 0, "S19905C14");
    check_field_offset(lv, s19905c14f0, ABISELECT(84,48), "S19905C14.s19905c14f0");
    check_field_offset(lv, s19905c14f1, ABISELECT(88,52), "S19905C14.s19905c14f1");
    test_class_info(&lv, &cd_S19905C14);
    dp->~S19905C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19905C14(Test_S19905C14, "S19905C14", ABISELECT(432,260));

#else // __cplusplus

extern void _ZN9S19905C14C1Ev();
extern void _ZN9S19905C14D2Ev();
Name_Map name_map_S19905C14[] = {
  NSPAIR(_ZN9S19905C14C1Ev),
  NSPAIR(_ZN9S19905C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19905C5_nt;
extern VTBL_ENTRY _ZTI11S19905C5_nt[];
extern  VTBL_ENTRY _ZTV11S19905C5_nt[];
extern Class_Descriptor cd_S19905C7;
extern VTBL_ENTRY _ZTI8S19905C7[];
extern  VTBL_ENTRY _ZTV8S19905C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C7[];
extern Class_Descriptor cd_S19905C7;
extern VTBL_ENTRY _ZTI8S19905C7[];
extern  VTBL_ENTRY _ZTV8S19905C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C7[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S19905C6;
extern VTBL_ENTRY _ZTI8S19905C6[];
extern  VTBL_ENTRY _ZTV8S19905C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C6[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C4;
extern VTBL_ENTRY _ZTI8S19905C4[];
extern  VTBL_ENTRY _ZTV8S19905C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C4[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C5_nt;
extern VTBL_ENTRY _ZTI11S19905C5_nt[];
extern  VTBL_ENTRY _ZTV11S19905C5_nt[];
extern Class_Descriptor cd_S19905C7;
extern VTBL_ENTRY _ZTI8S19905C7[];
extern  VTBL_ENTRY _ZTV8S19905C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C7[];
extern Class_Descriptor cd_S19905C3;
extern VTBL_ENTRY _ZTI8S19905C3[];
extern  VTBL_ENTRY _ZTV8S19905C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C3[];
extern Class_Descriptor cd_S19905C7;
extern VTBL_ENTRY _ZTI8S19905C7[];
extern  VTBL_ENTRY _ZTV8S19905C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C7[];
extern Class_Descriptor cd_S19905C12;
extern VTBL_ENTRY _ZTI9S19905C12[];
extern  VTBL_ENTRY _ZTV9S19905C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19905C12[];
extern Class_Descriptor cd_S19905C6;
extern VTBL_ENTRY _ZTI8S19905C6[];
extern  VTBL_ENTRY _ZTV8S19905C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C6[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C4;
extern VTBL_ENTRY _ZTI8S19905C4[];
extern  VTBL_ENTRY _ZTV8S19905C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C4[];
extern Class_Descriptor cd_S19905C15;
extern VTBL_ENTRY _ZTI9S19905C15[];
extern  VTBL_ENTRY _ZTV9S19905C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19905C15[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C16;
extern VTBL_ENTRY _ZTI9S19905C16[];
extern  VTBL_ENTRY _ZTV9S19905C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19905C16[];
static Base_Class bases_S19905C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19905C5_nt,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19905C7,    ABISELECT(96,56), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19905C7,    ABISELECT(144,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19905C6,    ABISELECT(368,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(384,228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19905C4,    ABISELECT(368,220), //bcp->offset
    61, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S17777C6_nt,    ABISELECT(312,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19905C5_nt,    ABISELECT(304,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19905C7,    ABISELECT(320,188), //bcp->offset
    55, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19905C3,    ABISELECT(304,180), //bcp->offset
    47, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19905C7,    ABISELECT(256,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19905C12,    ABISELECT(256,152), //bcp->offset
    37, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19905C6,    ABISELECT(192,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(208,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19905C4,    ABISELECT(192,112), //bcp->offset
    30, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19905C15,    ABISELECT(144,84), //bcp->offset
    19, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S17777C6_nt,    ABISELECT(424,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19905C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19905C14[];
extern void ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev)();
extern void _ZN9S19905C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev)();
extern void _ZN9S19905C14D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev)();
extern void ABISELECT(_ZThn96_N9S19905C14D1Ev,_ZThn56_N9S19905C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev)();
extern void ABISELECT(_ZThn96_N9S19905C14D0Ev,_ZThn56_N9S19905C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev)();
extern void ABISELECT(_ZThn144_N9S19905C14D1Ev,_ZThn84_N9S19905C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev)();
extern void ABISELECT(_ZThn144_N9S19905C14D0Ev,_ZThn84_N9S19905C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev)();
extern void ABISELECT(_ZThn192_N9S19905C14D1Ev,_ZThn112_N9S19905C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev)();
extern void ABISELECT(_ZThn192_N9S19905C14D0Ev,_ZThn112_N9S19905C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev)();
extern void ABISELECT(_ZThn256_N9S19905C14D1Ev,_ZThn152_N9S19905C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev)();
extern void ABISELECT(_ZThn256_N9S19905C14D0Ev,_ZThn152_N9S19905C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19905C14D1Ev,_ZTv0_n24_N9S19905C14D1Ev)();
extern void ABISELECT(_ZThn304_N9S19905C14D1Ev,_ZThn180_N9S19905C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19905C14D0Ev,_ZTv0_n24_N9S19905C14D0Ev)();
extern void ABISELECT(_ZThn304_N9S19905C14D0Ev,_ZThn180_N9S19905C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev)();
extern void ABISELECT(_ZThn320_N9S19905C14D1Ev,_ZThn188_N9S19905C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev)();
extern void ABISELECT(_ZThn320_N9S19905C14D0Ev,_ZThn188_N9S19905C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev)();
extern void ABISELECT(_ZThn368_N9S19905C14D1Ev,_ZThn220_N9S19905C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev)();
extern void ABISELECT(_ZThn368_N9S19905C14D0Ev,_ZThn220_N9S19905C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19905C14[] = {
  ABISELECT(424,256),
  ABISELECT(304,180),
  ABISELECT(256,152),
  ABISELECT(144,84),
  0,
  ABISELECT(96,56),
  ABISELECT(96,56),
  ABISELECT(368,220),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19905C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev),
  0,
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S19905C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(224,136),
  ABISELECT(160,96),
  ABISELECT(-144,-84),
  ABISELECT(112,68),
  ABISELECT(-48,-28),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S19905C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev),
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI9S19905C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev),
  ABISELECT(-160,-96),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-256,-152),
  ABISELECT(-160,-96),
  ABISELECT(-256,-152),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI9S19905C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev),
  ABISELECT(-304,-180),
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  ABISELECT(64,40),
  ABISELECT(-304,-180),
  (VTBL_ENTRY)&(_ZTI9S19905C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19905C14D1Ev,_ZTv0_n24_N9S19905C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19905C14D0Ev,_ZTv0_n24_N9S19905C14D0Ev),
  ABISELECT(-224,-132),
  ABISELECT(-320,-188),
  ABISELECT(-320,-188),
  (VTBL_ENTRY)&(_ZTI9S19905C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev),
  ABISELECT(-272,-164),
  ABISELECT(-272,-164),
  ABISELECT(-368,-220),
  ABISELECT(-368,-220),
  (VTBL_ENTRY)&(_ZTI9S19905C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev),
};
extern VTBL_ENTRY _ZTV9S19905C14[];
extern void ABISELECT(_ZTv0_n24_N9S19905C16D1Ev,_ZTv0_n12_N9S19905C16D1Ev)();
extern void _ZN9S19905C16D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C16D0Ev,_ZTv0_n12_N9S19905C16D0Ev)();
extern void _ZN9S19905C16D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C16__9S19905C14[] = {
  0,
  ABISELECT(96,56),
  ABISELECT(96,56),
  ABISELECT(368,220),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19905C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C16D1Ev,_ZTv0_n12_N9S19905C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C16D0Ev,_ZTv0_n12_N9S19905C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C16D1Ev,_ZTv0_n12_N9S19905C16D1Ev)();
extern void ABISELECT(_ZThn368_N9S19905C16D1Ev,_ZThn220_N9S19905C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C16D0Ev,_ZTv0_n12_N9S19905C16D0Ev)();
extern void ABISELECT(_ZThn368_N9S19905C16D0Ev,_ZThn220_N9S19905C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C4__9S19905C16__9S19905C14[] = {
  ABISELECT(-272,-164),
  ABISELECT(-272,-164),
  ABISELECT(-368,-220),
  ABISELECT(-368,-220),
  (VTBL_ENTRY)&(_ZTI9S19905C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C16D1Ev,_ZTv0_n12_N9S19905C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C16D0Ev,_ZTv0_n12_N9S19905C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C16D1Ev,_ZTv0_n12_N9S19905C16D1Ev)();
extern void ABISELECT(_ZThn96_N9S19905C16D1Ev,_ZThn56_N9S19905C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C16D0Ev,_ZTv0_n12_N9S19905C16D0Ev)();
extern void ABISELECT(_ZThn96_N9S19905C16D0Ev,_ZThn56_N9S19905C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__9S19905C16__9S19905C14[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S19905C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C16D1Ev,_ZTv0_n12_N9S19905C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C16D0Ev,_ZTv0_n12_N9S19905C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void _ZN8S19905C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
extern void _ZN8S19905C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__9S19905C14[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev)();
extern void _ZN9S19905C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev)();
extern void _ZN9S19905C15D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C15__9S19905C14[] = {
  ABISELECT(-48,-28),
  ABISELECT(224,136),
  ABISELECT(160,96),
  ABISELECT(-144,-84),
  ABISELECT(112,68),
  ABISELECT(-48,-28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19905C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void _ZN8S19905C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
extern void _ZN8S19905C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C79S19905C15__A1__9S19905C14[] = {
  ABISELECT(-48,-28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C79S19905C15__A1__9S19905C14[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev)();
extern void _ZN8S19905C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev)();
extern void _ZN8S19905C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C49S19905C15__A1__9S19905C14[] = {
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void _ZN8S19905C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
extern void _ZN8S19905C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C68S19905C49S19905C15__A1__9S19905C14[] = {
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C68S19905C49S19905C15__A1__9S19905C14[] = {
  0,
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C49S19905C15__A1__9S19905C14[] = {
  0,
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C7__A1__9S19905C15__9S19905C14[] = {
  0,
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19905C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev)();
extern void ABISELECT(_ZThn112_N9S19905C15D1Ev,_ZThn68_N9S19905C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev)();
extern void ABISELECT(_ZThn112_N9S19905C15D0Ev,_ZThn68_N9S19905C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C12__9S19905C15__9S19905C14[] = {
  ABISELECT(-160,-96),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-256,-152),
  ABISELECT(-160,-96),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI9S19905C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19905C15D1Ev,_ZTv0_n24_N9S19905C15D1Ev)();
extern void ABISELECT(_ZThn160_N9S19905C15D1Ev,_ZThn96_N9S19905C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19905C15D0Ev,_ZTv0_n24_N9S19905C15D0Ev)();
extern void ABISELECT(_ZThn160_N9S19905C15D0Ev,_ZThn96_N9S19905C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C3__9S19905C15__9S19905C14[] = {
  ABISELECT(-160,-96),
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  ABISELECT(64,40),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI9S19905C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19905C15D1Ev,_ZTv0_n24_N9S19905C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19905C15D0Ev,_ZTv0_n24_N9S19905C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev)();
extern void ABISELECT(_ZThn224_N9S19905C15D1Ev,_ZThn136_N9S19905C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev)();
extern void ABISELECT(_ZThn224_N9S19905C15D0Ev,_ZThn136_N9S19905C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C4__9S19905C15__9S19905C14[] = {
  ABISELECT(-272,-164),
  ABISELECT(-272,-164),
  ABISELECT(-224,-136),
  ABISELECT(-224,-136),
  (VTBL_ENTRY)&(_ZTI9S19905C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev)();
extern void ABISELECT(_ZThn176_N9S19905C15D1Ev,_ZThn104_N9S19905C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev)();
extern void ABISELECT(_ZThn176_N9S19905C15D0Ev,_ZThn104_N9S19905C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C78S19905C3__A2__9S19905C15__9S19905C14[] = {
  ABISELECT(-224,-132),
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI9S19905C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev)();
extern void ABISELECT(_ZThn48_N9S19905C15D1Ev,_ZThn28_N9S19905C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev)();
extern void ABISELECT(_ZThn48_N9S19905C15D0Ev,_ZThn28_N9S19905C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C4__A__9S19905C15__9S19905C14[] = {
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19905C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev)();
extern void _ZN9S19905C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev)();
extern void _ZN9S19905C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C12__9S19905C14[] = {
  ABISELECT(-160,-96),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-256,-152),
  ABISELECT(-160,-96),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19905C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void _ZN8S19905C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
extern void _ZN8S19905C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C79S19905C12__A3__9S19905C14[] = {
  ABISELECT(-160,-96),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C79S19905C12__A3__9S19905C14[] = {
  ABISELECT(160,96),
  ABISELECT(160,96),
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19905C12D1Ev,_ZTv0_n24_N9S19905C12D1Ev)();
extern void ABISELECT(_ZThn48_N9S19905C12D1Ev,_ZThn28_N9S19905C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19905C12D0Ev,_ZTv0_n24_N9S19905C12D0Ev)();
extern void ABISELECT(_ZThn48_N9S19905C12D0Ev,_ZThn28_N9S19905C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C3__9S19905C12__9S19905C14[] = {
  ABISELECT(-48,-28),
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19905C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19905C12D1Ev,_ZTv0_n24_N9S19905C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19905C12D0Ev,_ZTv0_n24_N9S19905C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev)();
extern void ABISELECT(_ZThn112_N9S19905C12D1Ev,_ZThn68_N9S19905C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev)();
extern void ABISELECT(_ZThn112_N9S19905C12D0Ev,_ZThn68_N9S19905C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C4__9S19905C12__9S19905C14[] = {
  ABISELECT(-272,-164),
  ABISELECT(-272,-164),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI9S19905C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C7__9S19905C12__9S19905C14[] = {
  0,
  ABISELECT(160,96),
  ABISELECT(160,96),
  (VTBL_ENTRY)&(_ZTI9S19905C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S19905C12D1Ev,_ZThn36_N9S19905C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev)();
extern void ABISELECT(_ZThn64_N9S19905C12D0Ev,_ZThn36_N9S19905C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C78S19905C3__A1__9S19905C12__9S19905C14[] = {
  ABISELECT(-224,-132),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19905C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev),
};
extern void _ZN8S19905C3D1Ev();
extern void _ZN8S19905C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19905C3__9S19905C14[] = {
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C3[0]),
  (VTBL_ENTRY)&_ZN8S19905C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19905C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void _ZN8S19905C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
extern void _ZN8S19905C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C78S19905C3__A2__9S19905C14[] = {
  ABISELECT(-224,-132),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C78S19905C3__A2__9S19905C14[] = {
  ABISELECT(224,132),
  ABISELECT(224,132),
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev)();
extern void ABISELECT(_ZThn64_N8S19905C3D1Ev,_ZThn40_N8S19905C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev)();
extern void ABISELECT(_ZThn64_N8S19905C3D0Ev,_ZThn40_N8S19905C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C4__8S19905C3__9S19905C14[] = {
  ABISELECT(-272,-164),
  ABISELECT(-272,-164),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19905C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C3__9S19905C14[] = {
  0,
  ABISELECT(208,124),
  ABISELECT(208,124),
  (VTBL_ENTRY)&(_ZTI8S19905C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S19905C3D1Ev,_ZThn8_N8S19905C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S19905C3D0Ev,_ZThn8_N8S19905C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__A__8S19905C3__9S19905C14[] = {
  ABISELECT(-224,-132),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19905C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev)();
extern void _ZN8S19905C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev)();
extern void _ZN8S19905C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C4__9S19905C14[] = {
  ABISELECT(-272,-164),
  ABISELECT(-272,-164),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void _ZN8S19905C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
extern void _ZN8S19905C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C68S19905C4__9S19905C14[] = {
  ABISELECT(-272,-164),
  ABISELECT(-272,-164),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C68S19905C4__9S19905C14[] = {
  0,
  ABISELECT(272,164),
  ABISELECT(272,164),
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C4__9S19905C14[] = {
  0,
  ABISELECT(272,164),
  ABISELECT(272,164),
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev),
};
static  VTT_ENTRY vtt_S19905C14[] = {
  {&(_ZTV9S19905C14[11]),  11,68},
  {&(_tg__ZTV9S19905C16__9S19905C14[7]),  7,9},
  {&(_tg__ZTV8S19905C4__9S19905C16__9S19905C14[5]),  5,7},
  {&(_tg__ZTV8S19905C7__9S19905C16__9S19905C14[4]),  4,6},
  {&(_tg__ZTV8S19905C7__9S19905C16__9S19905C14[4]),  4,6},
  {&(_ZTV9S19905C14[17]),  17,68},
  {&(_ZTV9S19905C14[17]),  17,68},
  {&(_ZTV9S19905C14[28]),  28,68},
  {&(_ZTV9S19905C14[45]),  45,68},
  {&(_ZTV9S19905C14[53]),  53,68},
  {&(_ZTV9S19905C14[66]),  66,68},
  {&(_ZTV9S19905C14[59]),  59,68},
  {&(_ZTV9S19905C14[35]),  35,68},
  {&(_tg__ZTV8S19905C7__9S19905C14[4]),  4,6},
  {&(_tg__ZTV8S19905C7__9S19905C14[4]),  4,6},
  {&(_tg__ZTV9S19905C15__9S19905C14[9]),  9,11},
  {&(_tg__ZTV8S19905C79S19905C15__A1__9S19905C14[4]),  4,6},
  {&(_tg__ZTV11S19905C5_nt__8S19905C79S19905C15__A1__9S19905C14[3]),  3,5},
  {&(_tg__ZTV8S19905C49S19905C15__A1__9S19905C14[5]),  5,7},
  {&(_tg__ZTV8S19905C68S19905C49S19905C15__A1__9S19905C14[5]),  5,7},
  {&(_tg__ZTV8S19905C7__8S19905C68S19905C49S19905C15__A1__9S19905C14[4]),  4,6},
  {&(_tg__ZTV8S19905C7__8S19905C68S19905C49S19905C15__A1__9S19905C14[4]),  4,6},
  {&(_tg__ZTV8S19905C7__8S19905C49S19905C15__A1__9S19905C14[4]),  4,6},
  {&(_tg__ZTV8S19905C7__8S19905C49S19905C15__A1__9S19905C14[4]),  4,6},
  {&(_tg__ZTV8S19905C7__A1__9S19905C15__9S19905C14[4]),  4,6},
  {&(_tg__ZTV9S19905C12__9S19905C15__9S19905C14[8]),  8,10},
  {&(_tg__ZTV8S19905C3__9S19905C15__9S19905C14[6]),  6,8},
  {&(_tg__ZTV8S19905C4__9S19905C15__9S19905C14[5]),  5,7},
  {&(_tg__ZTV8S19905C7__A1__9S19905C15__9S19905C14[4]),  4,6},
  {&(_tg__ZTV8S19905C78S19905C3__A2__9S19905C15__9S19905C14[4]),  4,6},
  {&(_tg__ZTV8S19905C4__A__9S19905C15__9S19905C14[5]),  5,7},
  {&(_tg__ZTV9S19905C12__9S19905C14[8]),  8,10},
  {&(_tg__ZTV8S19905C79S19905C12__A3__9S19905C14[4]),  4,6},
  {&(_tg__ZTV11S19905C5_nt__8S19905C79S19905C12__A3__9S19905C14[3]),  3,5},
  {&(_tg__ZTV8S19905C3__9S19905C12__9S19905C14[6]),  6,8},
  {&(_tg__ZTV8S19905C4__9S19905C12__9S19905C14[5]),  5,7},
  {&(_tg__ZTV8S19905C7__9S19905C12__9S19905C14[4]),  4,6},
  {&(_tg__ZTV8S19905C7__9S19905C12__9S19905C14[4]),  4,6},
  {&(_tg__ZTV8S19905C78S19905C3__A1__9S19905C12__9S19905C14[4]),  4,6},
  {&(_tg__ZTV8S19905C3__9S19905C14[5]),  5,7},
  {&(_tg__ZTV8S19905C78S19905C3__A2__9S19905C14[4]),  4,6},
  {&(_tg__ZTV11S19905C5_nt__8S19905C78S19905C3__A2__9S19905C14[3]),  3,5},
  {&(_tg__ZTV8S19905C4__8S19905C3__9S19905C14[5]),  5,7},
  {&(_tg__ZTV8S19905C7__8S19905C3__9S19905C14[4]),  4,6},
  {&(_tg__ZTV8S19905C7__8S19905C3__9S19905C14[4]),  4,6},
  {&(_tg__ZTV8S19905C7__A__8S19905C3__9S19905C14[4]),  4,6},
  {&(_tg__ZTV8S19905C4__9S19905C14[5]),  5,7},
  {&(_tg__ZTV8S19905C68S19905C4__9S19905C14[5]),  5,7},
  {&(_tg__ZTV8S19905C7__8S19905C68S19905C4__9S19905C14[4]),  4,6},
  {&(_tg__ZTV8S19905C7__8S19905C68S19905C4__9S19905C14[4]),  4,6},
  {&(_tg__ZTV8S19905C7__8S19905C4__9S19905C14[4]),  4,6},
  {&(_tg__ZTV8S19905C7__8S19905C4__9S19905C14[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S19905C14[];
extern  VTBL_ENTRY _ZTV9S19905C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19905C14[];
static VTBL_ENTRY alt_thunk_names8[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19905C3D0Ev,_ZThn8_N8S19905C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19905C3D0Ev,_ZThn40_N8S19905C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19905C3D1Ev,_ZThn8_N8S19905C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19905C3D1Ev,_ZThn40_N8S19905C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19905C12D0Ev,_ZTv0_n24_N9S19905C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19905C12D0Ev,_ZThn28_N9S19905C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19905C12D1Ev,_ZTv0_n24_N9S19905C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19905C12D1Ev,_ZThn28_N9S19905C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19905C12D0Ev,_ZThn36_N9S19905C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19905C12D0Ev,_ZThn68_N9S19905C12D0Ev),
  (VTBL_ENTRY)_ZN9S19905C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19905C12D1Ev,_ZThn36_N9S19905C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19905C12D1Ev,_ZThn68_N9S19905C12D1Ev),
  (VTBL_ENTRY)_ZN9S19905C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19905C15D0Ev,_ZTv0_n24_N9S19905C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S19905C15D0Ev,_ZThn96_N9S19905C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19905C15D1Ev,_ZTv0_n24_N9S19905C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S19905C15D1Ev,_ZThn96_N9S19905C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev), // 
  (VTBL_ENTRY)_ZN8S19905C6D0Ev,
  (VTBL_ENTRY)_ZN8S19905C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev), // 
  (VTBL_ENTRY)_ZN8S19905C6D1Ev,
  (VTBL_ENTRY)_ZN8S19905C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev), // 
  (VTBL_ENTRY)_ZN8S19905C4D0Ev,
  (VTBL_ENTRY)_ZN8S19905C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev), // 
  (VTBL_ENTRY)_ZN8S19905C4D1Ev,
  (VTBL_ENTRY)_ZN8S19905C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19905C15D0Ev,_ZThn28_N9S19905C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S19905C15D0Ev,_ZThn104_N9S19905C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S19905C15D0Ev,_ZThn136_N9S19905C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19905C15D0Ev,_ZThn68_N9S19905C15D0Ev),
  (VTBL_ENTRY)_ZN9S19905C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19905C15D1Ev,_ZThn28_N9S19905C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S19905C15D1Ev,_ZThn104_N9S19905C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S19905C15D1Ev,_ZThn136_N9S19905C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19905C15D1Ev,_ZThn68_N9S19905C15D1Ev),
  (VTBL_ENTRY)_ZN9S19905C15D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S19905C7D0Ev,
  (VTBL_ENTRY)_ZN8S19905C7D0Ev,
  (VTBL_ENTRY)_ZN8S19905C7D0Ev,
  (VTBL_ENTRY)_ZN8S19905C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S19905C7D1Ev,
  (VTBL_ENTRY)_ZN8S19905C7D1Ev,
  (VTBL_ENTRY)_ZN8S19905C7D1Ev,
  (VTBL_ENTRY)_ZN8S19905C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C16D0Ev,_ZTv0_n12_N9S19905C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19905C16D0Ev,_ZThn56_N9S19905C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19905C16D0Ev,_ZThn220_N9S19905C16D0Ev),
  (VTBL_ENTRY)_ZN9S19905C16D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C16D1Ev,_ZTv0_n12_N9S19905C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19905C16D1Ev,_ZThn56_N9S19905C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19905C16D1Ev,_ZThn220_N9S19905C16D1Ev),
  (VTBL_ENTRY)_ZN9S19905C16D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19905C14D0Ev,_ZTv0_n24_N9S19905C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S19905C14D0Ev,_ZThn180_N9S19905C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19905C14D1Ev,_ZTv0_n24_N9S19905C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S19905C14D1Ev,_ZThn180_N9S19905C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19905C14D0Ev,_ZThn220_N9S19905C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S19905C14D0Ev,_ZThn188_N9S19905C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S19905C14D0Ev,_ZThn152_N9S19905C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19905C14D0Ev,_ZThn112_N9S19905C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19905C14D0Ev,_ZThn84_N9S19905C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19905C14D0Ev,_ZThn56_N9S19905C14D0Ev),
  (VTBL_ENTRY)_ZN9S19905C14D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19905C14D1Ev,_ZThn220_N9S19905C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S19905C14D1Ev,_ZThn188_N9S19905C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S19905C14D1Ev,_ZThn152_N9S19905C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19905C14D1Ev,_ZThn112_N9S19905C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19905C14D1Ev,_ZThn84_N9S19905C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19905C14D1Ev,_ZThn56_N9S19905C14D1Ev),
  (VTBL_ENTRY)_ZN9S19905C14D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19905C14 = {  "S19905C14", // class name
  bases_S19905C14, 21,
  &(vtc_S19905C14[0]), // expected_vtbl_contents
  &(vtt_S19905C14[0]), // expected_vtt_contents
  ABISELECT(432,260), // object size
  NSPAIRA(_ZTI9S19905C14),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19905C14),68, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19905C14),52, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names8,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19905C13  : virtual S5266C26 , S19905C14 , S5266C29 {
  virtual  ~S19905C13(); // _ZN9S19905C13D2Ev
  S19905C13(); // tgen
};
//SIG(-1 S19905C13) C1{ VBC2{ m} BC3{ VBC4{ VBC5{ vd m} FD Fc Fs[4]} VBC6{ VBC5 BC4 VBC7{ VBC8{ m} VBC9{ VBC10{ VBC5 BC11{ VBC5 VBC4 vd Fi} BC12{ m Fp} vd Fs FL Fp FL} BC12 BC5 BC4 vd Fi} BC4 vd Fs} BC10 Fp} VBC12 BC13{ BC2 VBC10 BC12 VBC8 vd FC11 Fs} vd Fi FC14{}} BC8 vd}


 S19905C13 ::~S19905C13(){ note_dtor("S19905C13", this);}
S19905C13 ::S19905C13(){ note_ctor("S19905C13", this);} // tgen

static void Test_S19905C13()
{
  extern Class_Descriptor cd_S19905C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(28,66)];
    init_test(&cd_S19905C13, buf);
    S19905C13 *dp, &lv = *(dp=new (buf) S19905C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(432,260), "sizeof(S19905C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19905C13)");
    /*is_ambiguous_... S19905C13::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*), ABISELECT(89,53), "S19905C13");
    /*is_ambiguous_... S19905C13::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C7*), ABISELECT(96,56), "S19905C13");
    /*is_ambiguous_... S19905C15::S19905C5_nt */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C15*), ABISELECT(96,56), "S19905C13");
    /*is_ambiguous_... S19905C15::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C7*)(S19905C15*), ABISELECT(96,56), "S19905C13");
    /*is_ambiguous_... S19905C13::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C4*), ABISELECT(96,56), "S19905C13");
    /*is_ambiguous_... S19905C13::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C6*)(S19905C4*), ABISELECT(96,56), "S19905C13");
    /*is_ambiguous_... S19905C3::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C7*)(S19905C3*), ABISELECT(96,56), "S19905C13");
    /*is_ambiguous_... S19905C12::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C7*)(S19905C12*), ABISELECT(96,56), "S19905C13");
    /*is_ambiguous_... S19905C15::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C4*)(S19905C15*), ABISELECT(96,56), "S19905C13");
    /*is_ambiguous_... S19905C15::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C6*)(S19905C4*)(S19905C15*), ABISELECT(96,56), "S19905C13");
    /*is_ambiguous_... S19905C14::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C7*)(S19905C14*), ABISELECT(96,56), "S19905C13");
    /*is_ambiguous_... S19905C13::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C7*)(S19905C6*)(S19905C4*), ABISELECT(96,56), "S19905C13");
    /*is_ambiguous_... S19905C15::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C7*)(S19905C6*)(S19905C4*)(S19905C15*), ABISELECT(96,56), "S19905C13");
    /*is_ambiguous_... S19905C15::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C7*)(S19905C15*), ABISELECT(144,84), "S19905C13");
    check_base_class_offset(lv, (S5266C29*)(S19905C12*), ABISELECT(300,180), "S19905C13");
    check_base_class_offset(lv, (S5266C29*)(S19905C16*)(S19905C14*), ABISELECT(300,180), "S19905C13");
    /*is_ambiguous_... S19905C13::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C6*)(S19905C4*), ABISELECT(368,220), "S19905C13");
    /*is_ambiguous_... S19905C13::S19905C4 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S19905C4*), ABISELECT(384,228), "S19905C13");
    check_base_class_offset(lv, (S19905C4*)(S19905C3*), ABISELECT(368,220), "S19905C13");
    check_base_class_offset(lv, (S19905C4*)(S19905C16*)(S19905C14*), ABISELECT(368,220), "S19905C13");
    /*is_ambiguous_... S19905C3::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S19905C3*), ABISELECT(312,184), "S19905C13");
    /*is_ambiguous_... S19905C3::S19905C5_nt */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C3*), ABISELECT(304,180), "S19905C13");
    /*is_ambiguous_... S19905C3::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C7*)(S19905C3*), ABISELECT(320,188), "S19905C13");
    check_base_class_offset(lv, (S19905C3*)(S19905C12*), ABISELECT(304,180), "S19905C13");
    /*is_ambiguous_... S19905C12::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C7*)(S19905C12*), ABISELECT(256,152), "S19905C13");
    check_base_class_offset(lv, (S19905C12*)(S19905C15*), ABISELECT(256,152), "S19905C13");
    /*is_ambiguous_... S19905C15::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C6*)(S19905C4*)(S19905C15*), ABISELECT(192,112), "S19905C13");
    /*is_ambiguous_... S19905C15::S19905C4 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S19905C4*)(S19905C15*), ABISELECT(208,120), "S19905C13");
    /*is_ambiguous_... S19905C15::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C4*)(S19905C15*), ABISELECT(192,112), "S19905C13");
    check_base_class_offset(lv, (S19905C15*)(S19905C14*), ABISELECT(144,84), "S19905C13");
    /*is_ambiguous_... S19905C14::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S19905C14*), ABISELECT(424,256), "S19905C13");
    check_base_class_offset(lv, (S5266C26*)(S19905C16*)(S19905C14*), 0, "S19905C13");
    /*is_ambiguous_... S19905C16::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S19905C16*)(S19905C14*), ABISELECT(8,4), "S19905C13");
    check_base_class_offset(lv, (S19905C16*)(S19905C14*), 0, "S19905C13");
    check_base_class_offset(lv, (S19905C14*), 0, "S19905C13");
    /*is_ambiguous_... S19905C13::S5266C29 */ AMB_check_base_class_offset(lv, (S5266C29*), 0, "S19905C13");
    test_class_info(&lv, &cd_S19905C13);
    dp->~S19905C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19905C13(Test_S19905C13, "S19905C13", ABISELECT(432,260));

#else // __cplusplus

extern void _ZN9S19905C13C1Ev();
extern void _ZN9S19905C13D2Ev();
Name_Map name_map_S19905C13[] = {
  NSPAIR(_ZN9S19905C13C1Ev),
  NSPAIR(_ZN9S19905C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S19905C5_nt;
extern VTBL_ENTRY _ZTI11S19905C5_nt[];
extern  VTBL_ENTRY _ZTV11S19905C5_nt[];
extern Class_Descriptor cd_S19905C7;
extern VTBL_ENTRY _ZTI8S19905C7[];
extern  VTBL_ENTRY _ZTV8S19905C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C7[];
extern Class_Descriptor cd_S19905C7;
extern VTBL_ENTRY _ZTI8S19905C7[];
extern  VTBL_ENTRY _ZTV8S19905C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C7[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S19905C6;
extern VTBL_ENTRY _ZTI8S19905C6[];
extern  VTBL_ENTRY _ZTV8S19905C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C6[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C4;
extern VTBL_ENTRY _ZTI8S19905C4[];
extern  VTBL_ENTRY _ZTV8S19905C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C4[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C5_nt;
extern VTBL_ENTRY _ZTI11S19905C5_nt[];
extern  VTBL_ENTRY _ZTV11S19905C5_nt[];
extern Class_Descriptor cd_S19905C7;
extern VTBL_ENTRY _ZTI8S19905C7[];
extern  VTBL_ENTRY _ZTV8S19905C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C7[];
extern Class_Descriptor cd_S19905C3;
extern VTBL_ENTRY _ZTI8S19905C3[];
extern  VTBL_ENTRY _ZTV8S19905C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C3[];
extern Class_Descriptor cd_S19905C7;
extern VTBL_ENTRY _ZTI8S19905C7[];
extern  VTBL_ENTRY _ZTV8S19905C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C7[];
extern Class_Descriptor cd_S19905C12;
extern VTBL_ENTRY _ZTI9S19905C12[];
extern  VTBL_ENTRY _ZTV9S19905C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19905C12[];
extern Class_Descriptor cd_S19905C6;
extern VTBL_ENTRY _ZTI8S19905C6[];
extern  VTBL_ENTRY _ZTV8S19905C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C6[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C4;
extern VTBL_ENTRY _ZTI8S19905C4[];
extern  VTBL_ENTRY _ZTV8S19905C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C4[];
extern Class_Descriptor cd_S19905C15;
extern VTBL_ENTRY _ZTI9S19905C15[];
extern  VTBL_ENTRY _ZTV9S19905C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19905C15[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C16;
extern VTBL_ENTRY _ZTI9S19905C16[];
extern  VTBL_ENTRY _ZTV9S19905C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19905C16[];
extern Class_Descriptor cd_S19905C14;
extern VTBL_ENTRY _ZTI9S19905C14[];
extern  VTBL_ENTRY _ZTV9S19905C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19905C14[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
static Base_Class bases_S19905C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C26,    ABISELECT(89,53), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19905C5_nt,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19905C7,    ABISELECT(96,56), //bcp->offset
    14, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19905C7,    ABISELECT(144,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S5266C29,    ABISELECT(300,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19905C6,    ABISELECT(368,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(384,228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19905C4,    ABISELECT(368,220), //bcp->offset
    62, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S17777C6_nt,    ABISELECT(312,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19905C5_nt,    ABISELECT(304,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19905C7,    ABISELECT(320,188), //bcp->offset
    56, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19905C3,    ABISELECT(304,180), //bcp->offset
    48, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19905C7,    ABISELECT(256,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19905C12,    ABISELECT(256,152), //bcp->offset
    38, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19905C6,    ABISELECT(192,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(208,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19905C4,    ABISELECT(192,112), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19905C15,    ABISELECT(144,84), //bcp->offset
    20, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S17777C6_nt,    ABISELECT(424,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19905C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19905C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19905C13[];
extern void ABISELECT(_ZTv0_n24_N9S19905C13D1Ev,_ZTv0_n12_N9S19905C13D1Ev)();
extern void _ZN9S19905C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C13D0Ev,_ZTv0_n12_N9S19905C13D0Ev)();
extern void _ZN9S19905C13D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C13D1Ev,_ZTv0_n12_N9S19905C13D1Ev)();
extern void ABISELECT(_ZThn96_N9S19905C13D1Ev,_ZThn56_N9S19905C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C13D0Ev,_ZTv0_n12_N9S19905C13D0Ev)();
extern void ABISELECT(_ZThn96_N9S19905C13D0Ev,_ZThn56_N9S19905C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C13D1Ev,_ZTv0_n12_N9S19905C13D1Ev)();
extern void ABISELECT(_ZThn144_N9S19905C13D1Ev,_ZThn84_N9S19905C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C13D0Ev,_ZTv0_n12_N9S19905C13D0Ev)();
extern void ABISELECT(_ZThn144_N9S19905C13D0Ev,_ZThn84_N9S19905C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C13D1Ev,_ZTv0_n12_N9S19905C13D1Ev)();
extern void ABISELECT(_ZThn192_N9S19905C13D1Ev,_ZThn112_N9S19905C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C13D0Ev,_ZTv0_n12_N9S19905C13D0Ev)();
extern void ABISELECT(_ZThn192_N9S19905C13D0Ev,_ZThn112_N9S19905C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C13D1Ev,_ZTv0_n12_N9S19905C13D1Ev)();
extern void ABISELECT(_ZThn256_N9S19905C13D1Ev,_ZThn152_N9S19905C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C13D0Ev,_ZTv0_n12_N9S19905C13D0Ev)();
extern void ABISELECT(_ZThn256_N9S19905C13D0Ev,_ZThn152_N9S19905C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19905C13D1Ev,_ZTv0_n24_N9S19905C13D1Ev)();
extern void ABISELECT(_ZThn304_N9S19905C13D1Ev,_ZThn180_N9S19905C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19905C13D0Ev,_ZTv0_n24_N9S19905C13D0Ev)();
extern void ABISELECT(_ZThn304_N9S19905C13D0Ev,_ZThn180_N9S19905C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C13D1Ev,_ZTv0_n12_N9S19905C13D1Ev)();
extern void ABISELECT(_ZThn320_N9S19905C13D1Ev,_ZThn188_N9S19905C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C13D0Ev,_ZTv0_n12_N9S19905C13D0Ev)();
extern void ABISELECT(_ZThn320_N9S19905C13D0Ev,_ZThn188_N9S19905C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C13D1Ev,_ZTv0_n12_N9S19905C13D1Ev)();
extern void ABISELECT(_ZThn368_N9S19905C13D1Ev,_ZThn220_N9S19905C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C13D0Ev,_ZTv0_n12_N9S19905C13D0Ev)();
extern void ABISELECT(_ZThn368_N9S19905C13D0Ev,_ZThn220_N9S19905C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19905C13[] = {
  ABISELECT(89,53),
  ABISELECT(424,256),
  ABISELECT(304,180),
  ABISELECT(256,152),
  ABISELECT(144,84),
  ABISELECT(300,180),
  ABISELECT(96,56),
  ABISELECT(96,56),
  ABISELECT(368,220),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19905C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C13D1Ev,_ZTv0_n12_N9S19905C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C13D0Ev,_ZTv0_n12_N9S19905C13D0Ev),
  0,
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S19905C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C13D1Ev,_ZTv0_n12_N9S19905C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C13D0Ev,_ZTv0_n12_N9S19905C13D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(224,136),
  ABISELECT(160,96),
  ABISELECT(156,96),
  ABISELECT(112,68),
  ABISELECT(-48,-28),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S19905C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C13D1Ev,_ZTv0_n12_N9S19905C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C13D0Ev,_ZTv0_n12_N9S19905C13D0Ev),
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI9S19905C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C13D1Ev,_ZTv0_n12_N9S19905C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C13D0Ev,_ZTv0_n12_N9S19905C13D0Ev),
  ABISELECT(-160,-96),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(44,28),
  ABISELECT(-160,-96),
  ABISELECT(-256,-152),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI9S19905C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C13D1Ev,_ZTv0_n12_N9S19905C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C13D0Ev,_ZTv0_n12_N9S19905C13D0Ev),
  ABISELECT(-304,-180),
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  ABISELECT(64,40),
  ABISELECT(-304,-180),
  (VTBL_ENTRY)&(_ZTI9S19905C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19905C13D1Ev,_ZTv0_n24_N9S19905C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19905C13D0Ev,_ZTv0_n24_N9S19905C13D0Ev),
  ABISELECT(-224,-132),
  ABISELECT(-320,-188),
  ABISELECT(-320,-188),
  (VTBL_ENTRY)&(_ZTI9S19905C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C13D1Ev,_ZTv0_n12_N9S19905C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C13D0Ev,_ZTv0_n12_N9S19905C13D0Ev),
  ABISELECT(-272,-164),
  ABISELECT(-272,-164),
  ABISELECT(-368,-220),
  ABISELECT(-368,-220),
  (VTBL_ENTRY)&(_ZTI9S19905C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C13D1Ev,_ZTv0_n12_N9S19905C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C13D0Ev,_ZTv0_n12_N9S19905C13D0Ev),
};
extern VTBL_ENTRY _ZTV9S19905C13[];
extern void ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev)();
extern void _ZN9S19905C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev)();
extern void _ZN9S19905C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C14__9S19905C13[] = {
  ABISELECT(424,256),
  ABISELECT(304,180),
  ABISELECT(256,152),
  ABISELECT(144,84),
  ABISELECT(300,180),
  ABISELECT(96,56),
  ABISELECT(96,56),
  ABISELECT(368,220),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19905C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C16D1Ev,_ZTv0_n12_N9S19905C16D1Ev)();
extern void _ZN9S19905C16D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C16D0Ev,_ZTv0_n12_N9S19905C16D0Ev)();
extern void _ZN9S19905C16D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C169S19905C14__9S19905C13[] = {
  ABISELECT(300,180),
  ABISELECT(96,56),
  ABISELECT(96,56),
  ABISELECT(368,220),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19905C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C16D1Ev,_ZTv0_n12_N9S19905C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C16D0Ev,_ZTv0_n12_N9S19905C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C16D1Ev,_ZTv0_n12_N9S19905C16D1Ev)();
extern void ABISELECT(_ZThn368_N9S19905C16D1Ev,_ZThn220_N9S19905C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C16D0Ev,_ZTv0_n12_N9S19905C16D0Ev)();
extern void ABISELECT(_ZThn368_N9S19905C16D0Ev,_ZThn220_N9S19905C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C4__9S19905C169S19905C14__9S19905C13[] = {
  ABISELECT(-272,-164),
  ABISELECT(-272,-164),
  ABISELECT(-368,-220),
  ABISELECT(-368,-220),
  (VTBL_ENTRY)&(_ZTI9S19905C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C16D1Ev,_ZTv0_n12_N9S19905C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C16D0Ev,_ZTv0_n12_N9S19905C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C16D1Ev,_ZTv0_n12_N9S19905C16D1Ev)();
extern void ABISELECT(_ZThn96_N9S19905C16D1Ev,_ZThn56_N9S19905C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C16D0Ev,_ZTv0_n12_N9S19905C16D0Ev)();
extern void ABISELECT(_ZThn96_N9S19905C16D0Ev,_ZThn56_N9S19905C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__9S19905C169S19905C14__9S19905C13[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S19905C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C16D1Ev,_ZTv0_n12_N9S19905C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C16D0Ev,_ZTv0_n12_N9S19905C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev)();
extern void ABISELECT(_ZThn96_N9S19905C14D1Ev,_ZThn56_N9S19905C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev)();
extern void ABISELECT(_ZThn96_N9S19905C14D0Ev,_ZThn56_N9S19905C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__9S19905C14__9S19905C13[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S19905C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev)();
extern void ABISELECT(_ZThn144_N9S19905C14D1Ev,_ZThn84_N9S19905C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev)();
extern void ABISELECT(_ZThn144_N9S19905C14D0Ev,_ZThn84_N9S19905C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C15__9S19905C14__9S19905C13[] = {
  ABISELECT(-48,-28),
  ABISELECT(224,136),
  ABISELECT(160,96),
  ABISELECT(156,96),
  ABISELECT(112,68),
  ABISELECT(-48,-28),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S19905C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev)();
extern void ABISELECT(_ZThn256_N9S19905C14D1Ev,_ZThn152_N9S19905C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev)();
extern void ABISELECT(_ZThn256_N9S19905C14D0Ev,_ZThn152_N9S19905C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C12__9S19905C14__9S19905C13[] = {
  ABISELECT(-160,-96),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(44,28),
  ABISELECT(-160,-96),
  ABISELECT(-256,-152),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI9S19905C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19905C14D1Ev,_ZTv0_n24_N9S19905C14D1Ev)();
extern void ABISELECT(_ZThn304_N9S19905C14D1Ev,_ZThn180_N9S19905C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19905C14D0Ev,_ZTv0_n24_N9S19905C14D0Ev)();
extern void ABISELECT(_ZThn304_N9S19905C14D0Ev,_ZThn180_N9S19905C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C3__9S19905C14__9S19905C13[] = {
  ABISELECT(-304,-180),
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  ABISELECT(64,40),
  ABISELECT(-304,-180),
  (VTBL_ENTRY)&(_ZTI9S19905C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19905C14D1Ev,_ZTv0_n24_N9S19905C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19905C14D0Ev,_ZTv0_n24_N9S19905C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev)();
extern void ABISELECT(_ZThn368_N9S19905C14D1Ev,_ZThn220_N9S19905C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev)();
extern void ABISELECT(_ZThn368_N9S19905C14D0Ev,_ZThn220_N9S19905C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C4__9S19905C14__9S19905C13[] = {
  ABISELECT(-272,-164),
  ABISELECT(-272,-164),
  ABISELECT(-368,-220),
  ABISELECT(-368,-220),
  (VTBL_ENTRY)&(_ZTI9S19905C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev)();
extern void ABISELECT(_ZThn320_N9S19905C14D1Ev,_ZThn188_N9S19905C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev)();
extern void ABISELECT(_ZThn320_N9S19905C14D0Ev,_ZThn188_N9S19905C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C78S19905C3__A2__9S19905C14__9S19905C13[] = {
  ABISELECT(-224,-132),
  ABISELECT(-320,-188),
  ABISELECT(-320,-188),
  (VTBL_ENTRY)&(_ZTI9S19905C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev)();
extern void ABISELECT(_ZThn192_N9S19905C14D1Ev,_ZThn112_N9S19905C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev)();
extern void ABISELECT(_ZThn192_N9S19905C14D0Ev,_ZThn112_N9S19905C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C49S19905C15__A1__9S19905C14__9S19905C13[] = {
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI9S19905C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void _ZN8S19905C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
extern void _ZN8S19905C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__9S19905C13[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev)();
extern void _ZN9S19905C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev)();
extern void _ZN9S19905C15D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C15__9S19905C13[] = {
  ABISELECT(-48,-28),
  ABISELECT(224,136),
  ABISELECT(160,96),
  ABISELECT(156,96),
  ABISELECT(112,68),
  ABISELECT(-48,-28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19905C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void _ZN8S19905C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
extern void _ZN8S19905C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C79S19905C15__A1__9S19905C13[] = {
  ABISELECT(-48,-28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C79S19905C15__A1__9S19905C13[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev)();
extern void _ZN8S19905C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev)();
extern void _ZN8S19905C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C49S19905C15__A1__9S19905C13[] = {
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void _ZN8S19905C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
extern void _ZN8S19905C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C68S19905C49S19905C15__A1__9S19905C13[] = {
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C68S19905C49S19905C15__A1__9S19905C13[] = {
  0,
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C49S19905C15__A1__9S19905C13[] = {
  0,
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C7__A1__9S19905C15__9S19905C13[] = {
  0,
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19905C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev)();
extern void ABISELECT(_ZThn112_N9S19905C15D1Ev,_ZThn68_N9S19905C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev)();
extern void ABISELECT(_ZThn112_N9S19905C15D0Ev,_ZThn68_N9S19905C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C12__9S19905C15__9S19905C13[] = {
  ABISELECT(-160,-96),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(44,28),
  ABISELECT(-160,-96),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI9S19905C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19905C15D1Ev,_ZTv0_n24_N9S19905C15D1Ev)();
extern void ABISELECT(_ZThn160_N9S19905C15D1Ev,_ZThn96_N9S19905C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19905C15D0Ev,_ZTv0_n24_N9S19905C15D0Ev)();
extern void ABISELECT(_ZThn160_N9S19905C15D0Ev,_ZThn96_N9S19905C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C3__9S19905C15__9S19905C13[] = {
  ABISELECT(-160,-96),
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  ABISELECT(64,40),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI9S19905C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19905C15D1Ev,_ZTv0_n24_N9S19905C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19905C15D0Ev,_ZTv0_n24_N9S19905C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev)();
extern void ABISELECT(_ZThn224_N9S19905C15D1Ev,_ZThn136_N9S19905C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev)();
extern void ABISELECT(_ZThn224_N9S19905C15D0Ev,_ZThn136_N9S19905C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C4__9S19905C15__9S19905C13[] = {
  ABISELECT(-272,-164),
  ABISELECT(-272,-164),
  ABISELECT(-224,-136),
  ABISELECT(-224,-136),
  (VTBL_ENTRY)&(_ZTI9S19905C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev)();
extern void ABISELECT(_ZThn176_N9S19905C15D1Ev,_ZThn104_N9S19905C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev)();
extern void ABISELECT(_ZThn176_N9S19905C15D0Ev,_ZThn104_N9S19905C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C78S19905C3__A2__9S19905C15__9S19905C13[] = {
  ABISELECT(-224,-132),
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI9S19905C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev)();
extern void ABISELECT(_ZThn48_N9S19905C15D1Ev,_ZThn28_N9S19905C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev)();
extern void ABISELECT(_ZThn48_N9S19905C15D0Ev,_ZThn28_N9S19905C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C4__A__9S19905C15__9S19905C13[] = {
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19905C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev)();
extern void _ZN9S19905C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev)();
extern void _ZN9S19905C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C12__9S19905C13[] = {
  ABISELECT(-160,-96),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(44,28),
  ABISELECT(-160,-96),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19905C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void _ZN8S19905C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
extern void _ZN8S19905C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C79S19905C12__A3__9S19905C13[] = {
  ABISELECT(-160,-96),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C79S19905C12__A3__9S19905C13[] = {
  ABISELECT(160,96),
  ABISELECT(160,96),
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19905C12D1Ev,_ZTv0_n24_N9S19905C12D1Ev)();
extern void ABISELECT(_ZThn48_N9S19905C12D1Ev,_ZThn28_N9S19905C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19905C12D0Ev,_ZTv0_n24_N9S19905C12D0Ev)();
extern void ABISELECT(_ZThn48_N9S19905C12D0Ev,_ZThn28_N9S19905C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C3__9S19905C12__9S19905C13[] = {
  ABISELECT(-48,-28),
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19905C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19905C12D1Ev,_ZTv0_n24_N9S19905C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19905C12D0Ev,_ZTv0_n24_N9S19905C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev)();
extern void ABISELECT(_ZThn112_N9S19905C12D1Ev,_ZThn68_N9S19905C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev)();
extern void ABISELECT(_ZThn112_N9S19905C12D0Ev,_ZThn68_N9S19905C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C4__9S19905C12__9S19905C13[] = {
  ABISELECT(-272,-164),
  ABISELECT(-272,-164),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI9S19905C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C7__9S19905C12__9S19905C13[] = {
  0,
  ABISELECT(160,96),
  ABISELECT(160,96),
  (VTBL_ENTRY)&(_ZTI9S19905C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S19905C12D1Ev,_ZThn36_N9S19905C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev)();
extern void ABISELECT(_ZThn64_N9S19905C12D0Ev,_ZThn36_N9S19905C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C78S19905C3__A1__9S19905C12__9S19905C13[] = {
  ABISELECT(-224,-132),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19905C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev),
};
extern void _ZN8S19905C3D1Ev();
extern void _ZN8S19905C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19905C3__9S19905C13[] = {
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C3[0]),
  (VTBL_ENTRY)&_ZN8S19905C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19905C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void _ZN8S19905C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
extern void _ZN8S19905C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C78S19905C3__A2__9S19905C13[] = {
  ABISELECT(-224,-132),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C78S19905C3__A2__9S19905C13[] = {
  ABISELECT(224,132),
  ABISELECT(224,132),
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev)();
extern void ABISELECT(_ZThn64_N8S19905C3D1Ev,_ZThn40_N8S19905C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev)();
extern void ABISELECT(_ZThn64_N8S19905C3D0Ev,_ZThn40_N8S19905C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C4__8S19905C3__9S19905C13[] = {
  ABISELECT(-272,-164),
  ABISELECT(-272,-164),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19905C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C3__9S19905C13[] = {
  0,
  ABISELECT(208,124),
  ABISELECT(208,124),
  (VTBL_ENTRY)&(_ZTI8S19905C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S19905C3D1Ev,_ZThn8_N8S19905C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S19905C3D0Ev,_ZThn8_N8S19905C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__A__8S19905C3__9S19905C13[] = {
  ABISELECT(-224,-132),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19905C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev)();
extern void _ZN8S19905C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev)();
extern void _ZN8S19905C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C4__9S19905C13[] = {
  ABISELECT(-272,-164),
  ABISELECT(-272,-164),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void _ZN8S19905C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
extern void _ZN8S19905C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C68S19905C4__9S19905C13[] = {
  ABISELECT(-272,-164),
  ABISELECT(-272,-164),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C68S19905C4__9S19905C13[] = {
  0,
  ABISELECT(272,164),
  ABISELECT(272,164),
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C4__9S19905C13[] = {
  0,
  ABISELECT(272,164),
  ABISELECT(272,164),
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev),
};
static  VTT_ENTRY vtt_S19905C13[] = {
  {&(_ZTV9S19905C13[12]),  12,69},
  {&(_tg__ZTV9S19905C14__9S19905C13[11]),  11,13},
  {&(_tg__ZTV9S19905C169S19905C14__9S19905C13[7]),  7,9},
  {&(_tg__ZTV8S19905C4__9S19905C169S19905C14__9S19905C13[5]),  5,7},
  {&(_tg__ZTV8S19905C7__9S19905C169S19905C14__9S19905C13[4]),  4,6},
  {&(_tg__ZTV8S19905C7__9S19905C169S19905C14__9S19905C13[4]),  4,6},
  {&(_tg__ZTV8S19905C7__9S19905C14__9S19905C13[4]),  4,6},
  {&(_tg__ZTV8S19905C7__9S19905C14__9S19905C13[4]),  4,6},
  {&(_tg__ZTV9S19905C15__9S19905C14__9S19905C13[9]),  9,11},
  {&(_tg__ZTV9S19905C12__9S19905C14__9S19905C13[8]),  8,10},
  {&(_tg__ZTV8S19905C3__9S19905C14__9S19905C13[6]),  6,8},
  {&(_tg__ZTV8S19905C4__9S19905C14__9S19905C13[5]),  5,7},
  {&(_tg__ZTV8S19905C78S19905C3__A2__9S19905C14__9S19905C13[4]),  4,6},
  {&(_tg__ZTV8S19905C49S19905C15__A1__9S19905C14__9S19905C13[5]),  5,7},
  {&(_ZTV9S19905C13[18]),  18,69},
  {&(_ZTV9S19905C13[18]),  18,69},
  {&(_ZTV9S19905C13[29]),  29,69},
  {&(_ZTV9S19905C13[46]),  46,69},
  {&(_ZTV9S19905C13[54]),  54,69},
  {&(_ZTV9S19905C13[67]),  67,69},
  {&(_ZTV9S19905C13[60]),  60,69},
  {&(_ZTV9S19905C13[36]),  36,69},
  {&(_tg__ZTV8S19905C7__9S19905C13[4]),  4,6},
  {&(_tg__ZTV8S19905C7__9S19905C13[4]),  4,6},
  {&(_tg__ZTV9S19905C15__9S19905C13[9]),  9,11},
  {&(_tg__ZTV8S19905C79S19905C15__A1__9S19905C13[4]),  4,6},
  {&(_tg__ZTV11S19905C5_nt__8S19905C79S19905C15__A1__9S19905C13[3]),  3,5},
  {&(_tg__ZTV8S19905C49S19905C15__A1__9S19905C13[5]),  5,7},
  {&(_tg__ZTV8S19905C68S19905C49S19905C15__A1__9S19905C13[5]),  5,7},
  {&(_tg__ZTV8S19905C7__8S19905C68S19905C49S19905C15__A1__9S19905C13[4]),  4,6},
  {&(_tg__ZTV8S19905C7__8S19905C68S19905C49S19905C15__A1__9S19905C13[4]),  4,6},
  {&(_tg__ZTV8S19905C7__8S19905C49S19905C15__A1__9S19905C13[4]),  4,6},
  {&(_tg__ZTV8S19905C7__8S19905C49S19905C15__A1__9S19905C13[4]),  4,6},
  {&(_tg__ZTV8S19905C7__A1__9S19905C15__9S19905C13[4]),  4,6},
  {&(_tg__ZTV9S19905C12__9S19905C15__9S19905C13[8]),  8,10},
  {&(_tg__ZTV8S19905C3__9S19905C15__9S19905C13[6]),  6,8},
  {&(_tg__ZTV8S19905C4__9S19905C15__9S19905C13[5]),  5,7},
  {&(_tg__ZTV8S19905C7__A1__9S19905C15__9S19905C13[4]),  4,6},
  {&(_tg__ZTV8S19905C78S19905C3__A2__9S19905C15__9S19905C13[4]),  4,6},
  {&(_tg__ZTV8S19905C4__A__9S19905C15__9S19905C13[5]),  5,7},
  {&(_tg__ZTV9S19905C12__9S19905C13[8]),  8,10},
  {&(_tg__ZTV8S19905C79S19905C12__A3__9S19905C13[4]),  4,6},
  {&(_tg__ZTV11S19905C5_nt__8S19905C79S19905C12__A3__9S19905C13[3]),  3,5},
  {&(_tg__ZTV8S19905C3__9S19905C12__9S19905C13[6]),  6,8},
  {&(_tg__ZTV8S19905C4__9S19905C12__9S19905C13[5]),  5,7},
  {&(_tg__ZTV8S19905C7__9S19905C12__9S19905C13[4]),  4,6},
  {&(_tg__ZTV8S19905C7__9S19905C12__9S19905C13[4]),  4,6},
  {&(_tg__ZTV8S19905C78S19905C3__A1__9S19905C12__9S19905C13[4]),  4,6},
  {&(_tg__ZTV8S19905C3__9S19905C13[5]),  5,7},
  {&(_tg__ZTV8S19905C78S19905C3__A2__9S19905C13[4]),  4,6},
  {&(_tg__ZTV11S19905C5_nt__8S19905C78S19905C3__A2__9S19905C13[3]),  3,5},
  {&(_tg__ZTV8S19905C4__8S19905C3__9S19905C13[5]),  5,7},
  {&(_tg__ZTV8S19905C7__8S19905C3__9S19905C13[4]),  4,6},
  {&(_tg__ZTV8S19905C7__8S19905C3__9S19905C13[4]),  4,6},
  {&(_tg__ZTV8S19905C7__A__8S19905C3__9S19905C13[4]),  4,6},
  {&(_tg__ZTV8S19905C4__9S19905C13[5]),  5,7},
  {&(_tg__ZTV8S19905C68S19905C4__9S19905C13[5]),  5,7},
  {&(_tg__ZTV8S19905C7__8S19905C68S19905C4__9S19905C13[4]),  4,6},
  {&(_tg__ZTV8S19905C7__8S19905C68S19905C4__9S19905C13[4]),  4,6},
  {&(_tg__ZTV8S19905C7__8S19905C4__9S19905C13[4]),  4,6},
  {&(_tg__ZTV8S19905C7__8S19905C4__9S19905C13[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S19905C13[];
extern  VTBL_ENTRY _ZTV9S19905C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19905C13[];
static VTBL_ENTRY alt_thunk_names9[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19905C3D0Ev,_ZThn8_N8S19905C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19905C3D0Ev,_ZThn40_N8S19905C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19905C3D1Ev,_ZThn8_N8S19905C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19905C3D1Ev,_ZThn40_N8S19905C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19905C12D0Ev,_ZTv0_n24_N9S19905C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19905C12D0Ev,_ZThn28_N9S19905C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19905C12D1Ev,_ZTv0_n24_N9S19905C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19905C12D1Ev,_ZThn28_N9S19905C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19905C12D0Ev,_ZThn36_N9S19905C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19905C12D0Ev,_ZThn68_N9S19905C12D0Ev),
  (VTBL_ENTRY)_ZN9S19905C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19905C12D1Ev,_ZThn36_N9S19905C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19905C12D1Ev,_ZThn68_N9S19905C12D1Ev),
  (VTBL_ENTRY)_ZN9S19905C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19905C15D0Ev,_ZTv0_n24_N9S19905C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S19905C15D0Ev,_ZThn96_N9S19905C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19905C15D1Ev,_ZTv0_n24_N9S19905C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S19905C15D1Ev,_ZThn96_N9S19905C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev), // 
  (VTBL_ENTRY)_ZN8S19905C6D0Ev,
  (VTBL_ENTRY)_ZN8S19905C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev), // 
  (VTBL_ENTRY)_ZN8S19905C6D1Ev,
  (VTBL_ENTRY)_ZN8S19905C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev), // 
  (VTBL_ENTRY)_ZN8S19905C4D0Ev,
  (VTBL_ENTRY)_ZN8S19905C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev), // 
  (VTBL_ENTRY)_ZN8S19905C4D1Ev,
  (VTBL_ENTRY)_ZN8S19905C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19905C15D0Ev,_ZThn28_N9S19905C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S19905C15D0Ev,_ZThn104_N9S19905C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S19905C15D0Ev,_ZThn136_N9S19905C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19905C15D0Ev,_ZThn68_N9S19905C15D0Ev),
  (VTBL_ENTRY)_ZN9S19905C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19905C15D1Ev,_ZThn28_N9S19905C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S19905C15D1Ev,_ZThn104_N9S19905C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S19905C15D1Ev,_ZThn136_N9S19905C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19905C15D1Ev,_ZThn68_N9S19905C15D1Ev),
  (VTBL_ENTRY)_ZN9S19905C15D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S19905C7D0Ev,
  (VTBL_ENTRY)_ZN8S19905C7D0Ev,
  (VTBL_ENTRY)_ZN8S19905C7D0Ev,
  (VTBL_ENTRY)_ZN8S19905C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S19905C7D1Ev,
  (VTBL_ENTRY)_ZN8S19905C7D1Ev,
  (VTBL_ENTRY)_ZN8S19905C7D1Ev,
  (VTBL_ENTRY)_ZN8S19905C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19905C14D0Ev,_ZTv0_n24_N9S19905C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S19905C14D0Ev,_ZThn180_N9S19905C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19905C14D1Ev,_ZTv0_n24_N9S19905C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S19905C14D1Ev,_ZThn180_N9S19905C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C16D0Ev,_ZTv0_n12_N9S19905C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19905C16D0Ev,_ZThn56_N9S19905C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19905C16D0Ev,_ZThn220_N9S19905C16D0Ev),
  (VTBL_ENTRY)_ZN9S19905C16D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C16D1Ev,_ZTv0_n12_N9S19905C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19905C16D1Ev,_ZThn56_N9S19905C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19905C16D1Ev,_ZThn220_N9S19905C16D1Ev),
  (VTBL_ENTRY)_ZN9S19905C16D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19905C14D0Ev,_ZThn112_N9S19905C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S19905C14D0Ev,_ZThn188_N9S19905C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19905C14D0Ev,_ZThn220_N9S19905C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S19905C14D0Ev,_ZThn152_N9S19905C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19905C14D0Ev,_ZThn84_N9S19905C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19905C14D0Ev,_ZThn56_N9S19905C14D0Ev),
  (VTBL_ENTRY)_ZN9S19905C14D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19905C14D1Ev,_ZThn112_N9S19905C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S19905C14D1Ev,_ZThn188_N9S19905C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19905C14D1Ev,_ZThn220_N9S19905C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S19905C14D1Ev,_ZThn152_N9S19905C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19905C14D1Ev,_ZThn84_N9S19905C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19905C14D1Ev,_ZThn56_N9S19905C14D1Ev),
  (VTBL_ENTRY)_ZN9S19905C14D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19905C13D0Ev,_ZTv0_n24_N9S19905C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S19905C13D0Ev,_ZThn180_N9S19905C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19905C13D1Ev,_ZTv0_n24_N9S19905C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S19905C13D1Ev,_ZThn180_N9S19905C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C13D0Ev,_ZTv0_n12_N9S19905C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19905C13D0Ev,_ZThn220_N9S19905C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S19905C13D0Ev,_ZThn188_N9S19905C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S19905C13D0Ev,_ZThn152_N9S19905C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19905C13D0Ev,_ZThn112_N9S19905C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19905C13D0Ev,_ZThn84_N9S19905C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19905C13D0Ev,_ZThn56_N9S19905C13D0Ev),
  (VTBL_ENTRY)_ZN9S19905C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C13D1Ev,_ZTv0_n12_N9S19905C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19905C13D1Ev,_ZThn220_N9S19905C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S19905C13D1Ev,_ZThn188_N9S19905C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S19905C13D1Ev,_ZThn152_N9S19905C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19905C13D1Ev,_ZThn112_N9S19905C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19905C13D1Ev,_ZThn84_N9S19905C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19905C13D1Ev,_ZThn56_N9S19905C13D1Ev),
  (VTBL_ENTRY)_ZN9S19905C13D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19905C13 = {  "S19905C13", // class name
  bases_S19905C13, 24,
  &(vtc_S19905C13[0]), // expected_vtbl_contents
  &(vtt_S19905C13[0]), // expected_vtt_contents
  ABISELECT(432,260), // object size
  NSPAIRA(_ZTI9S19905C13),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19905C13),69, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19905C13),61, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names9,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19905C9  : virtual S19905C5_nt , virtual S19905C10 , virtual S17777C6_nt , virtual S19905C13 , S5266C26 {
  ~S19905C9(); // tgen
  S19905C9(); // tgen
};
//SIG(-1 S19905C9) C1{ VBC2{ vd m} VBC3{ VBC4{ VBC2 FD Fc Fs[4]} VBC5{ VBC2 VBC4 vd Fi} VBC6{ m} VBC7{ VBC8{ m} VBC9{ VBC10{ VBC2 BC5 BC11{ m Fp} vd Fs FL Fp FL} BC11 BC2 BC4 vd Fi} BC4 vd Fs} BC10 vd FC9 Fi Fs} VBC11 VBC12{ VBC6 BC13{ VBC4 VBC14{ VBC2 BC4 VBC7 BC10 Fp} VBC11 BC15{ BC6 VBC10 BC11 VBC8 vd FC5 Fs} vd Fi FC16{}} BC8 vd} BC6}


S19905C9 ::~S19905C9(){ note_dtor("S19905C9", this);} // tgen
S19905C9 ::S19905C9(){ note_ctor("S19905C9", this);} // tgen

static void Test_S19905C9()
{
  extern Class_Descriptor cd_S19905C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(46,106)];
    init_test(&cd_S19905C9, buf);
    S19905C9 *dp, &lv = *(dp=new (buf) S19905C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(720,420), "sizeof(S19905C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19905C9)");
    /*is_ambiguous_... S19905C9::S19905C5_nt */ AMB_check_base_class_offset(lv, (S19905C5_nt*), 0, "S19905C9");
    /*is_ambiguous_... S19905C9::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C7*), 0, "S19905C9");
    /*is_ambiguous_... S19905C9::S19905C6 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C6*), 0, "S19905C9");
    /*is_ambiguous_... S19905C9::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C4*), 0, "S19905C9");
    /*is_ambiguous_... S19905C9::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C6*)(S19905C4*), 0, "S19905C9");
    /*is_ambiguous_... S19905C3::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C7*)(S19905C3*), 0, "S19905C9");
    /*is_ambiguous_... S19905C12::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C7*)(S19905C12*), 0, "S19905C9");
    /*is_ambiguous_... S19905C10::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C4*)(S19905C10*), 0, "S19905C9");
    /*is_ambiguous_... S19905C10::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C6*)(S19905C4*)(S19905C10*), 0, "S19905C9");
    /*is_ambiguous_... S19905C15::S19905C5_nt */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C15*), 0, "S19905C9");
    /*is_ambiguous_... S19905C15::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C7*)(S19905C15*), 0, "S19905C9");
    /*is_ambiguous_... S19905C15::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C4*)(S19905C15*), 0, "S19905C9");
    /*is_ambiguous_... S19905C15::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C6*)(S19905C4*)(S19905C15*), 0, "S19905C9");
    /*is_ambiguous_... S19905C10::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C7*)(S19905C10*), ABISELECT(272,152), "S19905C9");
    /*is_ambiguous_... S19905C9::S19905C6 */ AMB_check_base_class_offset(lv, (S19905C7*)(S19905C6*), ABISELECT(272,152), "S19905C9");
    /*is_ambiguous_... S19905C9::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C7*)(S19905C6*)(S19905C4*), ABISELECT(272,152), "S19905C9");
    /*is_ambiguous_... S19905C10::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C7*)(S19905C6*)(S19905C4*)(S19905C10*), ABISELECT(272,152), "S19905C9");
    /*is_ambiguous_... S19905C14::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C7*)(S19905C14*)(S19905C13*), ABISELECT(272,152), "S19905C9");
    /*is_ambiguous_... S19905C15::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C7*)(S19905C6*)(S19905C4*)(S19905C15*), ABISELECT(272,152), "S19905C9");
    /*is_ambiguous_... S19905C10::S19905C6 */ AMB_check_base_class_offset(lv, (S19905C6*)(S19905C10*), ABISELECT(320,180), "S19905C9");
    check_base_class_offset(lv, (S5266C26*)(S19905C10*), ABISELECT(332,188), "S19905C9");
    /*is_ambiguous_... S19905C13::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*)(S19905C13*), ABISELECT(332,188), "S19905C9");
    check_base_class_offset(lv, (S5266C29*)(S19905C12*), 0, "S19905C9");
    check_base_class_offset(lv, (S5266C29*)(S19905C16*)(S19905C14*)(S19905C13*), 0, "S19905C9");
    /*is_ambiguous_... S19905C9::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C6*)(S19905C4*), ABISELECT(448,256), "S19905C9");
    /*is_ambiguous_... S19905C9::S19905C4 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S19905C4*), ABISELECT(464,264), "S19905C9");
    check_base_class_offset(lv, (S19905C4*)(S19905C3*), ABISELECT(448,256), "S19905C9");
    check_base_class_offset(lv, (S19905C4*)(S19905C16*)(S19905C14*)(S19905C13*), ABISELECT(448,256), "S19905C9");
    /*is_ambiguous_... S19905C3::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S19905C3*), ABISELECT(392,220), "S19905C9");
    /*is_ambiguous_... S19905C3::S19905C5_nt */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C3*), ABISELECT(384,216), "S19905C9");
    /*is_ambiguous_... S19905C3::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C7*)(S19905C3*), ABISELECT(400,224), "S19905C9");
    check_base_class_offset(lv, (S19905C3*)(S19905C12*), ABISELECT(384,216), "S19905C9");
    /*is_ambiguous_... S19905C12::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C7*)(S19905C12*), ABISELECT(336,188), "S19905C9");
    check_base_class_offset(lv, (S19905C12*)(S19905C10*), ABISELECT(336,188), "S19905C9");
    check_base_class_offset(lv, (S19905C12*)(S19905C15*), ABISELECT(336,188), "S19905C9");
    /*is_ambiguous_... S19905C10::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C6*)(S19905C4*)(S19905C10*), ABISELECT(16,4), "S19905C9");
    /*is_ambiguous_... S19905C10::S19905C4 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S19905C4*)(S19905C10*), ABISELECT(32,12), "S19905C9");
    /*is_ambiguous_... S19905C10::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C4*)(S19905C10*), ABISELECT(16,4), "S19905C9");
    check_base_class_offset(lv, (S19905C10*), ABISELECT(16,4), "S19905C9");
    /*is_ambiguous_... S19905C9::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*), ABISELECT(504,292), "S19905C9");
    /*is_ambiguous_... S19905C14::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S19905C14*)(S19905C13*), ABISELECT(504,292), "S19905C9");
    /*is_ambiguous_... S19905C15::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C7*)(S19905C15*), ABISELECT(608,352), "S19905C9");
    /*is_ambiguous_... S19905C15::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C6*)(S19905C4*)(S19905C15*), ABISELECT(656,380), "S19905C9");
    /*is_ambiguous_... S19905C15::S19905C4 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S19905C4*)(S19905C15*), ABISELECT(672,388), "S19905C9");
    /*is_ambiguous_... S19905C15::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C4*)(S19905C15*), ABISELECT(656,380), "S19905C9");
    check_base_class_offset(lv, (S19905C15*)(S19905C14*)(S19905C13*), ABISELECT(608,352), "S19905C9");
    check_base_class_offset(lv, (S5266C26*)(S19905C16*)(S19905C14*)(S19905C13*), ABISELECT(512,296), "S19905C9");
    /*is_ambiguous_... S19905C16::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S19905C16*)(S19905C14*)(S19905C13*), ABISELECT(520,300), "S19905C9");
    check_base_class_offset(lv, (S19905C16*)(S19905C14*)(S19905C13*), ABISELECT(512,296), "S19905C9");
    check_base_class_offset(lv, (S19905C14*)(S19905C13*), ABISELECT(512,296), "S19905C9");
    /*is_ambiguous_... S19905C13::S5266C29 */ AMB_check_base_class_offset(lv, (S5266C29*)(S19905C13*), ABISELECT(512,296), "S19905C9");
    check_base_class_offset(lv, (S19905C13*), ABISELECT(512,296), "S19905C9");
    /*is_ambiguous_... S19905C9::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*), 0, "S19905C9");
    test_class_info(&lv, &cd_S19905C9);
    dp->~S19905C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19905C9(Test_S19905C9, "S19905C9", ABISELECT(720,420));

#else // __cplusplus

extern void _ZN8S19905C9C1Ev();
extern void _ZN8S19905C9D1Ev();
Name_Map name_map_S19905C9[] = {
  NSPAIR(_ZN8S19905C9C1Ev),
  NSPAIR(_ZN8S19905C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19905C5_nt;
extern VTBL_ENTRY _ZTI11S19905C5_nt[];
extern  VTBL_ENTRY _ZTV11S19905C5_nt[];
extern Class_Descriptor cd_S19905C7;
extern VTBL_ENTRY _ZTI8S19905C7[];
extern  VTBL_ENTRY _ZTV8S19905C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C7[];
extern Class_Descriptor cd_S19905C6;
extern VTBL_ENTRY _ZTI8S19905C6[];
extern  VTBL_ENTRY _ZTV8S19905C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C6[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S19905C6;
extern VTBL_ENTRY _ZTI8S19905C6[];
extern  VTBL_ENTRY _ZTV8S19905C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C6[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C4;
extern VTBL_ENTRY _ZTI8S19905C4[];
extern  VTBL_ENTRY _ZTV8S19905C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C4[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C5_nt;
extern VTBL_ENTRY _ZTI11S19905C5_nt[];
extern  VTBL_ENTRY _ZTV11S19905C5_nt[];
extern Class_Descriptor cd_S19905C7;
extern VTBL_ENTRY _ZTI8S19905C7[];
extern  VTBL_ENTRY _ZTV8S19905C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C7[];
extern Class_Descriptor cd_S19905C3;
extern VTBL_ENTRY _ZTI8S19905C3[];
extern  VTBL_ENTRY _ZTV8S19905C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C3[];
extern Class_Descriptor cd_S19905C7;
extern VTBL_ENTRY _ZTI8S19905C7[];
extern  VTBL_ENTRY _ZTV8S19905C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C7[];
extern Class_Descriptor cd_S19905C12;
extern VTBL_ENTRY _ZTI9S19905C12[];
extern  VTBL_ENTRY _ZTV9S19905C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19905C12[];
extern Class_Descriptor cd_S19905C6;
extern VTBL_ENTRY _ZTI8S19905C6[];
extern  VTBL_ENTRY _ZTV8S19905C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C6[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C4;
extern VTBL_ENTRY _ZTI8S19905C4[];
extern  VTBL_ENTRY _ZTV8S19905C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C4[];
extern Class_Descriptor cd_S19905C10;
extern VTBL_ENTRY _ZTI9S19905C10[];
extern  VTBL_ENTRY _ZTV9S19905C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19905C10[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C7;
extern VTBL_ENTRY _ZTI8S19905C7[];
extern  VTBL_ENTRY _ZTV8S19905C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C7[];
extern Class_Descriptor cd_S19905C6;
extern VTBL_ENTRY _ZTI8S19905C6[];
extern  VTBL_ENTRY _ZTV8S19905C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C6[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C4;
extern VTBL_ENTRY _ZTI8S19905C4[];
extern  VTBL_ENTRY _ZTV8S19905C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C4[];
extern Class_Descriptor cd_S19905C15;
extern VTBL_ENTRY _ZTI9S19905C15[];
extern  VTBL_ENTRY _ZTV9S19905C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19905C15[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C16;
extern VTBL_ENTRY _ZTI9S19905C16[];
extern  VTBL_ENTRY _ZTV9S19905C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19905C16[];
extern Class_Descriptor cd_S19905C14;
extern VTBL_ENTRY _ZTI9S19905C14[];
extern  VTBL_ENTRY _ZTV9S19905C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19905C14[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S19905C13;
extern VTBL_ENTRY _ZTI9S19905C13[];
extern  VTBL_ENTRY _ZTV9S19905C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19905C13[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
static Base_Class bases_S19905C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19905C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19905C7,    ABISELECT(272,152), //bcp->offset
    30, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19905C6,    ABISELECT(320,180), //bcp->offset
    36, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S5266C26,    ABISELECT(332,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19905C6,    ABISELECT(448,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(464,264), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19905C4,    ABISELECT(448,256), //bcp->offset
    67, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S17777C6_nt,    ABISELECT(392,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19905C5_nt,    ABISELECT(384,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19905C7,    ABISELECT(400,224), //bcp->offset
    61, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19905C3,    ABISELECT(384,216), //bcp->offset
    53, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19905C7,    ABISELECT(336,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19905C12,    ABISELECT(336,188), //bcp->offset
    43, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19905C6,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(32,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19905C4,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19905C10,    ABISELECT(16,4), //bcp->offset
    17, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S17777C6_nt,    ABISELECT(504,292), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19905C7,    ABISELECT(608,352), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19905C6,    ABISELECT(656,380), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(672,388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19905C4,    ABISELECT(656,380), //bcp->offset
    99, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19905C15,    ABISELECT(608,352), //bcp->offset
    88, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S5266C26,    ABISELECT(512,296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(520,300), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19905C16,    ABISELECT(512,296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19905C14,    ABISELECT(512,296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S5266C29,    ABISELECT(512,296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19905C13,    ABISELECT(512,296), //bcp->offset
    74, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19905C9[];
extern void ABISELECT(_ZTv0_n24_N8S19905C9D1Ev,_ZTv0_n12_N8S19905C9D1Ev)();
extern void _ZN8S19905C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C9D0Ev,_ZTv0_n12_N8S19905C9D0Ev)();
extern void _ZN8S19905C9D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C9D1Ev,_ZTv0_n12_N8S19905C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19905C9D1Ev,_ZThn4_N8S19905C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C9D0Ev,_ZTv0_n12_N8S19905C9D0Ev)();
extern void ABISELECT(_ZThn16_N8S19905C9D0Ev,_ZThn4_N8S19905C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C9D1Ev,_ZTv0_n12_N8S19905C9D1Ev)();
extern void ABISELECT(_ZThn272_N8S19905C9D1Ev,_ZThn152_N8S19905C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C9D0Ev,_ZTv0_n12_N8S19905C9D0Ev)();
extern void ABISELECT(_ZThn272_N8S19905C9D0Ev,_ZThn152_N8S19905C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C9D1Ev,_ZTv0_n12_N8S19905C9D1Ev)();
extern void ABISELECT(_ZThn320_N8S19905C9D1Ev,_ZThn180_N8S19905C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C9D0Ev,_ZTv0_n12_N8S19905C9D0Ev)();
extern void ABISELECT(_ZThn320_N8S19905C9D0Ev,_ZThn180_N8S19905C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C9D1Ev,_ZTv0_n12_N8S19905C9D1Ev)();
extern void ABISELECT(_ZThn336_N8S19905C9D1Ev,_ZThn188_N8S19905C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C9D0Ev,_ZTv0_n12_N8S19905C9D0Ev)();
extern void ABISELECT(_ZThn336_N8S19905C9D0Ev,_ZThn188_N8S19905C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19905C9D1Ev,_ZTv0_n24_N8S19905C9D1Ev)();
extern void ABISELECT(_ZThn384_N8S19905C9D1Ev,_ZThn216_N8S19905C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19905C9D0Ev,_ZTv0_n24_N8S19905C9D0Ev)();
extern void ABISELECT(_ZThn384_N8S19905C9D0Ev,_ZThn216_N8S19905C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C9D1Ev,_ZTv0_n12_N8S19905C9D1Ev)();
extern void ABISELECT(_ZThn400_N8S19905C9D1Ev,_ZThn224_N8S19905C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C9D0Ev,_ZTv0_n12_N8S19905C9D0Ev)();
extern void ABISELECT(_ZThn400_N8S19905C9D0Ev,_ZThn224_N8S19905C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C9D1Ev,_ZTv0_n12_N8S19905C9D1Ev)();
extern void ABISELECT(_ZThn448_N8S19905C9D1Ev,_ZThn256_N8S19905C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C9D0Ev,_ZTv0_n12_N8S19905C9D0Ev)();
extern void ABISELECT(_ZThn448_N8S19905C9D0Ev,_ZThn256_N8S19905C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C9D1Ev,_ZTv0_n12_N8S19905C9D1Ev)();
extern void ABISELECT(_ZThn512_N8S19905C9D1Ev,_ZThn296_N8S19905C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C9D0Ev,_ZTv0_n12_N8S19905C9D0Ev)();
extern void ABISELECT(_ZThn512_N8S19905C9D0Ev,_ZThn296_N8S19905C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C9D1Ev,_ZTv0_n12_N8S19905C9D1Ev)();
extern void ABISELECT(_ZThn608_N8S19905C9D1Ev,_ZThn352_N8S19905C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C9D0Ev,_ZTv0_n12_N8S19905C9D0Ev)();
extern void ABISELECT(_ZThn608_N8S19905C9D0Ev,_ZThn352_N8S19905C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C9D1Ev,_ZTv0_n12_N8S19905C9D1Ev)();
extern void ABISELECT(_ZThn656_N8S19905C9D1Ev,_ZThn380_N8S19905C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C9D0Ev,_ZTv0_n12_N8S19905C9D0Ev)();
extern void ABISELECT(_ZThn656_N8S19905C9D0Ev,_ZThn380_N8S19905C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19905C9[] = {
  ABISELECT(608,352),
  ABISELECT(512,296),
  ABISELECT(504,292),
  ABISELECT(448,256),
  ABISELECT(384,216),
  0,
  ABISELECT(336,188),
  ABISELECT(332,188),
  ABISELECT(320,180),
  ABISELECT(272,152),
  ABISELECT(16,4),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C9D1Ev,_ZTv0_n12_N8S19905C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C9D0Ev,_ZTv0_n12_N8S19905C9D0Ev),
  ABISELECT(432,252),
  ABISELECT(368,212),
  ABISELECT(-16,-4),
  ABISELECT(320,184),
  ABISELECT(316,184),
  ABISELECT(304,176),
  ABISELECT(256,148),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S19905C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C9D1Ev,_ZTv0_n12_N8S19905C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C9D0Ev,_ZTv0_n12_N8S19905C9D0Ev),
  ABISELECT(-272,-152),
  ABISELECT(-272,-152),
  ABISELECT(-272,-152),
  (VTBL_ENTRY)&(_ZTI8S19905C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C9D1Ev,_ZTv0_n12_N8S19905C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C9D0Ev,_ZTv0_n12_N8S19905C9D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(-320,-180),
  ABISELECT(-320,-180),
  ABISELECT(-320,-180),
  (VTBL_ENTRY)&(_ZTI8S19905C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C9D1Ev,_ZTv0_n12_N8S19905C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C9D0Ev,_ZTv0_n12_N8S19905C9D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-336,-188),
  ABISELECT(-336,-188),
  ABISELECT(-336,-188),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI8S19905C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C9D1Ev,_ZTv0_n12_N8S19905C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C9D0Ev,_ZTv0_n12_N8S19905C9D0Ev),
  ABISELECT(-384,-216),
  ABISELECT(-112,-64),
  ABISELECT(-384,-216),
  ABISELECT(64,40),
  ABISELECT(-384,-216),
  (VTBL_ENTRY)&(_ZTI8S19905C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19905C9D1Ev,_ZTv0_n24_N8S19905C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19905C9D0Ev,_ZTv0_n24_N8S19905C9D0Ev),
  ABISELECT(-400,-224),
  ABISELECT(-400,-224),
  ABISELECT(-400,-224),
  (VTBL_ENTRY)&(_ZTI8S19905C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C9D1Ev,_ZTv0_n12_N8S19905C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C9D0Ev,_ZTv0_n12_N8S19905C9D0Ev),
  ABISELECT(-176,-104),
  ABISELECT(-448,-256),
  ABISELECT(-448,-256),
  ABISELECT(-448,-256),
  (VTBL_ENTRY)&(_ZTI8S19905C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C9D1Ev,_ZTv0_n12_N8S19905C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C9D0Ev,_ZTv0_n12_N8S19905C9D0Ev),
  ABISELECT(-180,-108),
  ABISELECT(-8,-4),
  ABISELECT(-128,-80),
  ABISELECT(-176,-108),
  ABISELECT(96,56),
  ABISELECT(-512,-296),
  ABISELECT(-240,-144),
  ABISELECT(-512,-296),
  ABISELECT(-64,-40),
  ABISELECT(-512,-296),
  ABISELECT(-512,-296),
  (VTBL_ENTRY)&(_ZTI8S19905C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C9D1Ev,_ZTv0_n12_N8S19905C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C9D0Ev,_ZTv0_n12_N8S19905C9D0Ev),
  ABISELECT(-336,-200),
  ABISELECT(-160,-96),
  ABISELECT(-224,-136),
  ABISELECT(-608,-352),
  ABISELECT(-272,-164),
  ABISELECT(-608,-352),
  ABISELECT(-608,-352),
  ABISELECT(-608,-352),
  (VTBL_ENTRY)&(_ZTI8S19905C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C9D1Ev,_ZTv0_n12_N8S19905C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C9D0Ev,_ZTv0_n12_N8S19905C9D0Ev),
  ABISELECT(-384,-228),
  ABISELECT(-656,-380),
  ABISELECT(-656,-380),
  ABISELECT(-656,-380),
  (VTBL_ENTRY)&(_ZTI8S19905C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C9D1Ev,_ZTv0_n12_N8S19905C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C9D0Ev,_ZTv0_n12_N8S19905C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S19905C9[];
extern void ABISELECT(_ZTv0_n24_N9S19905C10D1Ev,_ZTv0_n12_N9S19905C10D1Ev)();
extern void _ZN9S19905C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C10D0Ev,_ZTv0_n12_N9S19905C10D0Ev)();
extern void _ZN9S19905C10D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C10__8S19905C9[] = {
  ABISELECT(432,252),
  ABISELECT(368,212),
  ABISELECT(-16,-4),
  ABISELECT(320,184),
  ABISELECT(316,184),
  ABISELECT(304,176),
  ABISELECT(256,148),
  ABISELECT(-16,-4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19905C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C10D1Ev,_ZTv0_n12_N9S19905C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C10D0Ev,_ZTv0_n12_N9S19905C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev)();
extern void _ZN8S19905C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev)();
extern void _ZN8S19905C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C49S19905C10__A1__8S19905C9[] = {
  ABISELECT(256,148),
  ABISELECT(-16,-4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void _ZN8S19905C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
extern void _ZN8S19905C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C68S19905C49S19905C10__A2__8S19905C9[] = {
  ABISELECT(256,148),
  ABISELECT(-16,-4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C68S19905C49S19905C10__A2__8S19905C9[] = {
  ABISELECT(16,4),
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void ABISELECT(_ZThn256_N8S19905C6D1Ev,_ZThn148_N8S19905C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
extern void ABISELECT(_ZThn256_N8S19905C6D0Ev,_ZThn148_N8S19905C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C68S19905C49S19905C10__A2__8S19905C9[] = {
  ABISELECT(-272,-152),
  ABISELECT(-256,-148),
  ABISELECT(-256,-148),
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C49S19905C10__A1__8S19905C9[] = {
  ABISELECT(16,4),
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev)();
extern void ABISELECT(_ZThn256_N8S19905C4D1Ev,_ZThn148_N8S19905C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev)();
extern void ABISELECT(_ZThn256_N8S19905C4D0Ev,_ZThn148_N8S19905C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C49S19905C10__A1__8S19905C9[] = {
  ABISELECT(-272,-152),
  ABISELECT(-256,-148),
  ABISELECT(-256,-148),
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C10D1Ev,_ZTv0_n12_N9S19905C10D1Ev)();
extern void ABISELECT(_ZThn256_N9S19905C10D1Ev,_ZThn148_N9S19905C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C10D0Ev,_ZTv0_n12_N9S19905C10D0Ev)();
extern void ABISELECT(_ZThn256_N9S19905C10D0Ev,_ZThn148_N9S19905C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__9S19905C10__8S19905C9[] = {
  ABISELECT(-272,-152),
  ABISELECT(-256,-148),
  ABISELECT(-256,-148),
  (VTBL_ENTRY)&(_ZTI9S19905C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C10D1Ev,_ZTv0_n12_N9S19905C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C10D0Ev,_ZTv0_n12_N9S19905C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C10D1Ev,_ZTv0_n12_N9S19905C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C10D0Ev,_ZTv0_n12_N9S19905C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__9S19905C10__8S19905C9[] = {
  ABISELECT(16,4),
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI9S19905C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C10D1Ev,_ZTv0_n12_N9S19905C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C10D0Ev,_ZTv0_n12_N9S19905C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C10D1Ev,_ZTv0_n12_N9S19905C10D1Ev)();
extern void ABISELECT(_ZThn304_N9S19905C10D1Ev,_ZThn176_N9S19905C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C10D0Ev,_ZTv0_n12_N9S19905C10D0Ev)();
extern void ABISELECT(_ZThn304_N9S19905C10D0Ev,_ZThn176_N9S19905C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C6__9S19905C10__8S19905C9[] = {
  ABISELECT(-48,-28),
  ABISELECT(-320,-180),
  ABISELECT(-304,-176),
  ABISELECT(-304,-176),
  (VTBL_ENTRY)&(_ZTI9S19905C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C10D1Ev,_ZTv0_n12_N9S19905C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C10D0Ev,_ZTv0_n12_N9S19905C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C10D1Ev,_ZTv0_n12_N9S19905C10D1Ev)();
extern void ABISELECT(_ZThn320_N9S19905C10D1Ev,_ZThn184_N9S19905C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C10D0Ev,_ZTv0_n12_N9S19905C10D0Ev)();
extern void ABISELECT(_ZThn320_N9S19905C10D0Ev,_ZThn184_N9S19905C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C12__9S19905C10__8S19905C9[] = {
  ABISELECT(-64,-36),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-336,-188),
  ABISELECT(-336,-188),
  ABISELECT(-320,-184),
  ABISELECT(-320,-184),
  (VTBL_ENTRY)&(_ZTI9S19905C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C10D1Ev,_ZTv0_n12_N9S19905C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C10D0Ev,_ZTv0_n12_N9S19905C10D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19905C10D1Ev,_ZTv0_n24_N9S19905C10D1Ev)();
extern void ABISELECT(_ZThn368_N9S19905C10D1Ev,_ZThn212_N9S19905C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19905C10D0Ev,_ZTv0_n24_N9S19905C10D0Ev)();
extern void ABISELECT(_ZThn368_N9S19905C10D0Ev,_ZThn212_N9S19905C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C3__9S19905C10__8S19905C9[] = {
  ABISELECT(-368,-212),
  ABISELECT(-112,-64),
  ABISELECT(-384,-216),
  ABISELECT(64,40),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI9S19905C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19905C10D1Ev,_ZTv0_n24_N9S19905C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19905C10D0Ev,_ZTv0_n24_N9S19905C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C10D1Ev,_ZTv0_n12_N9S19905C10D1Ev)();
extern void ABISELECT(_ZThn432_N9S19905C10D1Ev,_ZThn252_N9S19905C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C10D0Ev,_ZTv0_n12_N9S19905C10D0Ev)();
extern void ABISELECT(_ZThn432_N9S19905C10D0Ev,_ZThn252_N9S19905C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C4__9S19905C10__8S19905C9[] = {
  ABISELECT(-176,-104),
  ABISELECT(-448,-256),
  ABISELECT(-432,-252),
  ABISELECT(-432,-252),
  (VTBL_ENTRY)&(_ZTI9S19905C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C10D1Ev,_ZTv0_n12_N9S19905C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C10D0Ev,_ZTv0_n12_N9S19905C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C10D1Ev,_ZTv0_n12_N9S19905C10D1Ev)();
extern void ABISELECT(_ZThn384_N9S19905C10D1Ev,_ZThn220_N9S19905C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C10D0Ev,_ZTv0_n12_N9S19905C10D0Ev)();
extern void ABISELECT(_ZThn384_N9S19905C10D0Ev,_ZThn220_N9S19905C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C78S19905C3__A1__9S19905C10__8S19905C9[] = {
  ABISELECT(-400,-224),
  ABISELECT(-384,-220),
  ABISELECT(-384,-220),
  (VTBL_ENTRY)&(_ZTI9S19905C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C10D1Ev,_ZTv0_n12_N9S19905C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C10D0Ev,_ZTv0_n12_N9S19905C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void _ZN8S19905C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
extern void _ZN8S19905C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C9[] = {
  ABISELECT(-272,-152),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C7__8S19905C9[] = {
  ABISELECT(272,152),
  ABISELECT(272,152),
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void _ZN8S19905C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
extern void _ZN8S19905C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C6__8S19905C9[] = {
  ABISELECT(-48,-28),
  ABISELECT(-320,-180),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C6__8S19905C9[] = {
  ABISELECT(320,180),
  ABISELECT(320,180),
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C6__8S19905C9[] = {
  ABISELECT(-272,-152),
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev)();
extern void _ZN9S19905C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev)();
extern void _ZN9S19905C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C12__8S19905C9[] = {
  ABISELECT(-64,-36),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-336,-188),
  ABISELECT(-336,-188),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19905C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void _ZN8S19905C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
extern void _ZN8S19905C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C79S19905C12__A2__8S19905C9[] = {
  ABISELECT(-336,-188),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C79S19905C12__A2__8S19905C9[] = {
  ABISELECT(336,188),
  ABISELECT(336,188),
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19905C12D1Ev,_ZTv0_n24_N9S19905C12D1Ev)();
extern void ABISELECT(_ZThn48_N9S19905C12D1Ev,_ZThn28_N9S19905C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19905C12D0Ev,_ZTv0_n24_N9S19905C12D0Ev)();
extern void ABISELECT(_ZThn48_N9S19905C12D0Ev,_ZThn28_N9S19905C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C3__9S19905C12__8S19905C9[] = {
  ABISELECT(-48,-28),
  ABISELECT(-112,-64),
  ABISELECT(-384,-216),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19905C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19905C12D1Ev,_ZTv0_n24_N9S19905C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19905C12D0Ev,_ZTv0_n24_N9S19905C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev)();
extern void ABISELECT(_ZThn112_N9S19905C12D1Ev,_ZThn68_N9S19905C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev)();
extern void ABISELECT(_ZThn112_N9S19905C12D0Ev,_ZThn68_N9S19905C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C4__9S19905C12__8S19905C9[] = {
  ABISELECT(-176,-104),
  ABISELECT(-448,-256),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI9S19905C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__9S19905C12__8S19905C9[] = {
  ABISELECT(336,188),
  ABISELECT(336,188),
  (VTBL_ENTRY)&(_ZTI9S19905C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C7__9S19905C12__8S19905C9[] = {
  ABISELECT(-272,-152),
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI9S19905C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S19905C12D1Ev,_ZThn36_N9S19905C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev)();
extern void ABISELECT(_ZThn64_N9S19905C12D0Ev,_ZThn36_N9S19905C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C78S19905C3__A1__9S19905C12__8S19905C9[] = {
  ABISELECT(-400,-224),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19905C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev),
};
extern void _ZN8S19905C3D1Ev();
extern void _ZN8S19905C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19905C3__8S19905C9[] = {
  ABISELECT(-112,-64),
  ABISELECT(-384,-216),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C3[0]),
  (VTBL_ENTRY)&_ZN8S19905C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19905C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void _ZN8S19905C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
extern void _ZN8S19905C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C78S19905C3__A1__8S19905C9[] = {
  ABISELECT(-400,-224),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C78S19905C3__A1__8S19905C9[] = {
  ABISELECT(400,224),
  ABISELECT(400,224),
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev)();
extern void ABISELECT(_ZThn64_N8S19905C3D1Ev,_ZThn40_N8S19905C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev)();
extern void ABISELECT(_ZThn64_N8S19905C3D0Ev,_ZThn40_N8S19905C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C4__8S19905C3__8S19905C9[] = {
  ABISELECT(-176,-104),
  ABISELECT(-448,-256),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19905C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C3__8S19905C9[] = {
  ABISELECT(384,216),
  ABISELECT(384,216),
  (VTBL_ENTRY)&(_ZTI8S19905C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C3__8S19905C9[] = {
  ABISELECT(-272,-152),
  ABISELECT(112,64),
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI8S19905C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S19905C3D1Ev,_ZThn8_N8S19905C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S19905C3D0Ev,_ZThn8_N8S19905C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__A__8S19905C3__8S19905C9[] = {
  ABISELECT(-400,-224),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19905C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev)();
extern void _ZN8S19905C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev)();
extern void _ZN8S19905C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C4__8S19905C9[] = {
  ABISELECT(-176,-104),
  ABISELECT(-448,-256),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void _ZN8S19905C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
extern void _ZN8S19905C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C68S19905C4__A1__8S19905C9[] = {
  ABISELECT(-176,-104),
  ABISELECT(-448,-256),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C68S19905C4__A1__8S19905C9[] = {
  ABISELECT(448,256),
  ABISELECT(448,256),
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C68S19905C4__A1__8S19905C9[] = {
  ABISELECT(-272,-152),
  ABISELECT(176,104),
  ABISELECT(176,104),
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C4__8S19905C9[] = {
  ABISELECT(448,256),
  ABISELECT(448,256),
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C4__8S19905C9[] = {
  ABISELECT(-272,-152),
  ABISELECT(176,104),
  ABISELECT(176,104),
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C13D1Ev,_ZTv0_n12_N9S19905C13D1Ev)();
extern void _ZN9S19905C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C13D0Ev,_ZTv0_n12_N9S19905C13D0Ev)();
extern void _ZN9S19905C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C13__8S19905C9[] = {
  ABISELECT(-180,-108),
  ABISELECT(-8,-4),
  ABISELECT(-128,-80),
  ABISELECT(-176,-108),
  ABISELECT(96,56),
  ABISELECT(-512,-296),
  ABISELECT(-240,-144),
  ABISELECT(-512,-296),
  ABISELECT(-64,-40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19905C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C13D1Ev,_ZTv0_n12_N9S19905C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C13D0Ev,_ZTv0_n12_N9S19905C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev)();
extern void _ZN9S19905C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev)();
extern void _ZN9S19905C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C149S19905C13__8S19905C9[] = {
  ABISELECT(-8,-4),
  ABISELECT(-128,-80),
  ABISELECT(-176,-108),
  ABISELECT(96,56),
  ABISELECT(-512,-296),
  ABISELECT(-240,-144),
  ABISELECT(-512,-296),
  ABISELECT(-64,-40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19905C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C16D1Ev,_ZTv0_n12_N9S19905C16D1Ev)();
extern void _ZN9S19905C16D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C16D0Ev,_ZTv0_n12_N9S19905C16D0Ev)();
extern void _ZN9S19905C16D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C169S19905C149S19905C13__8S19905C9[] = {
  ABISELECT(-512,-296),
  ABISELECT(-240,-144),
  ABISELECT(-512,-296),
  ABISELECT(-64,-40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19905C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C16D1Ev,_ZTv0_n12_N9S19905C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C16D0Ev,_ZTv0_n12_N9S19905C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C16D1Ev,_ZTv0_n12_N9S19905C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C16D0Ev,_ZTv0_n12_N9S19905C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C4__9S19905C169S19905C149S19905C13__8S19905C9[] = {
  ABISELECT(-176,-104),
  ABISELECT(-448,-256),
  ABISELECT(64,40),
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI9S19905C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C16D1Ev,_ZTv0_n12_N9S19905C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C16D0Ev,_ZTv0_n12_N9S19905C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C16D1Ev,_ZTv0_n12_N9S19905C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C16D0Ev,_ZTv0_n12_N9S19905C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__9S19905C169S19905C149S19905C13__8S19905C9[] = {
  ABISELECT(512,296),
  ABISELECT(512,296),
  (VTBL_ENTRY)&(_ZTI9S19905C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C16D1Ev,_ZTv0_n12_N9S19905C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C16D0Ev,_ZTv0_n12_N9S19905C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C16D1Ev,_ZTv0_n12_N9S19905C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C16D0Ev,_ZTv0_n12_N9S19905C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C7__9S19905C169S19905C149S19905C13__8S19905C9[] = {
  ABISELECT(-272,-152),
  ABISELECT(240,144),
  ABISELECT(240,144),
  (VTBL_ENTRY)&(_ZTI9S19905C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C16D1Ev,_ZTv0_n12_N9S19905C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C16D0Ev,_ZTv0_n12_N9S19905C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C7__9S19905C149S19905C13__8S19905C9[] = {
  ABISELECT(-272,-152),
  ABISELECT(240,144),
  ABISELECT(240,144),
  (VTBL_ENTRY)&(_ZTI9S19905C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__9S19905C149S19905C13__8S19905C9[] = {
  ABISELECT(512,296),
  ABISELECT(512,296),
  (VTBL_ENTRY)&(_ZTI9S19905C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev)();
extern void ABISELECT(_ZThn96_N9S19905C14D1Ev,_ZThn56_N9S19905C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev)();
extern void ABISELECT(_ZThn96_N9S19905C14D0Ev,_ZThn56_N9S19905C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C15__9S19905C149S19905C13__8S19905C9[] = {
  ABISELECT(-336,-200),
  ABISELECT(-160,-96),
  ABISELECT(-224,-136),
  ABISELECT(-608,-352),
  ABISELECT(-272,-164),
  ABISELECT(-608,-352),
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S19905C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C12__9S19905C149S19905C13__8S19905C9[] = {
  ABISELECT(-64,-36),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-336,-188),
  ABISELECT(-336,-188),
  ABISELECT(176,108),
  ABISELECT(176,108),
  (VTBL_ENTRY)&(_ZTI9S19905C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19905C14D1Ev,_ZTv0_n24_N9S19905C14D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19905C14D0Ev,_ZTv0_n24_N9S19905C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C3__9S19905C149S19905C13__8S19905C9[] = {
  ABISELECT(128,80),
  ABISELECT(-112,-64),
  ABISELECT(-384,-216),
  ABISELECT(64,40),
  ABISELECT(128,80),
  (VTBL_ENTRY)&(_ZTI9S19905C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19905C14D1Ev,_ZTv0_n24_N9S19905C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19905C14D0Ev,_ZTv0_n24_N9S19905C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C4__9S19905C149S19905C13__8S19905C9[] = {
  ABISELECT(-176,-104),
  ABISELECT(-448,-256),
  ABISELECT(64,40),
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI9S19905C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C78S19905C3__A2__9S19905C149S19905C13__8S19905C9[] = {
  ABISELECT(-400,-224),
  ABISELECT(112,72),
  ABISELECT(112,72),
  (VTBL_ENTRY)&(_ZTI9S19905C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev)();
extern void ABISELECT(_ZThn144_N9S19905C14D1Ev,_ZThn84_N9S19905C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev)();
extern void ABISELECT(_ZThn144_N9S19905C14D0Ev,_ZThn84_N9S19905C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C49S19905C15__A1__9S19905C149S19905C13__8S19905C9[] = {
  ABISELECT(-384,-228),
  ABISELECT(-656,-380),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S19905C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C13D1Ev,_ZTv0_n12_N9S19905C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C13D0Ev,_ZTv0_n12_N9S19905C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C7__9S19905C13__8S19905C9[] = {
  ABISELECT(-272,-152),
  ABISELECT(240,144),
  ABISELECT(240,144),
  (VTBL_ENTRY)&(_ZTI9S19905C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C13D1Ev,_ZTv0_n12_N9S19905C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C13D0Ev,_ZTv0_n12_N9S19905C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C13D1Ev,_ZTv0_n12_N9S19905C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C13D0Ev,_ZTv0_n12_N9S19905C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__9S19905C13__8S19905C9[] = {
  ABISELECT(512,296),
  ABISELECT(512,296),
  (VTBL_ENTRY)&(_ZTI9S19905C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C13D1Ev,_ZTv0_n12_N9S19905C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C13D0Ev,_ZTv0_n12_N9S19905C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C13D1Ev,_ZTv0_n12_N9S19905C13D1Ev)();
extern void ABISELECT(_ZThn96_N9S19905C13D1Ev,_ZThn56_N9S19905C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C13D0Ev,_ZTv0_n12_N9S19905C13D0Ev)();
extern void ABISELECT(_ZThn96_N9S19905C13D0Ev,_ZThn56_N9S19905C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C15__9S19905C13__8S19905C9[] = {
  ABISELECT(-336,-200),
  ABISELECT(-160,-96),
  ABISELECT(-224,-136),
  ABISELECT(-608,-352),
  ABISELECT(-272,-164),
  ABISELECT(-608,-352),
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S19905C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C13D1Ev,_ZTv0_n12_N9S19905C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C13D0Ev,_ZTv0_n12_N9S19905C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C13D1Ev,_ZTv0_n12_N9S19905C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C13D0Ev,_ZTv0_n12_N9S19905C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C12__9S19905C13__8S19905C9[] = {
  ABISELECT(-64,-36),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-336,-188),
  ABISELECT(-336,-188),
  ABISELECT(176,108),
  ABISELECT(176,108),
  (VTBL_ENTRY)&(_ZTI9S19905C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C13D1Ev,_ZTv0_n12_N9S19905C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C13D0Ev,_ZTv0_n12_N9S19905C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19905C13D1Ev,_ZTv0_n24_N9S19905C13D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19905C13D0Ev,_ZTv0_n24_N9S19905C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C3__9S19905C13__8S19905C9[] = {
  ABISELECT(128,80),
  ABISELECT(-112,-64),
  ABISELECT(-384,-216),
  ABISELECT(64,40),
  ABISELECT(128,80),
  (VTBL_ENTRY)&(_ZTI9S19905C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19905C13D1Ev,_ZTv0_n24_N9S19905C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19905C13D0Ev,_ZTv0_n24_N9S19905C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C13D1Ev,_ZTv0_n12_N9S19905C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C13D0Ev,_ZTv0_n12_N9S19905C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C4__9S19905C13__8S19905C9[] = {
  ABISELECT(-176,-104),
  ABISELECT(-448,-256),
  ABISELECT(64,40),
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI9S19905C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C13D1Ev,_ZTv0_n12_N9S19905C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C13D0Ev,_ZTv0_n12_N9S19905C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C13D1Ev,_ZTv0_n12_N9S19905C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C13D0Ev,_ZTv0_n12_N9S19905C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C78S19905C3__A2__9S19905C13__8S19905C9[] = {
  ABISELECT(-400,-224),
  ABISELECT(112,72),
  ABISELECT(112,72),
  (VTBL_ENTRY)&(_ZTI9S19905C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C13D1Ev,_ZTv0_n12_N9S19905C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C13D0Ev,_ZTv0_n12_N9S19905C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C13D1Ev,_ZTv0_n12_N9S19905C13D1Ev)();
extern void ABISELECT(_ZThn144_N9S19905C13D1Ev,_ZThn84_N9S19905C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C13D0Ev,_ZTv0_n12_N9S19905C13D0Ev)();
extern void ABISELECT(_ZThn144_N9S19905C13D0Ev,_ZThn84_N9S19905C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C49S19905C15__A1__9S19905C13__8S19905C9[] = {
  ABISELECT(-384,-228),
  ABISELECT(-656,-380),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S19905C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C13D1Ev,_ZTv0_n12_N9S19905C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C13D0Ev,_ZTv0_n12_N9S19905C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev)();
extern void _ZN9S19905C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev)();
extern void _ZN9S19905C15D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C15__8S19905C9[] = {
  ABISELECT(-336,-200),
  ABISELECT(-160,-96),
  ABISELECT(-224,-136),
  ABISELECT(-608,-352),
  ABISELECT(-272,-164),
  ABISELECT(-608,-352),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19905C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void _ZN8S19905C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
extern void _ZN8S19905C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C79S19905C15__A3__8S19905C9[] = {
  ABISELECT(-608,-352),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C79S19905C15__A3__8S19905C9[] = {
  ABISELECT(608,352),
  ABISELECT(608,352),
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev)();
extern void _ZN8S19905C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev)();
extern void _ZN8S19905C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C49S19905C15__A2__8S19905C9[] = {
  ABISELECT(-384,-228),
  ABISELECT(-656,-380),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void _ZN8S19905C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
extern void _ZN8S19905C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C68S19905C49S19905C15__A3__8S19905C9[] = {
  ABISELECT(-384,-228),
  ABISELECT(-656,-380),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C68S19905C49S19905C15__A3__8S19905C9[] = {
  ABISELECT(656,380),
  ABISELECT(656,380),
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C68S19905C49S19905C15__A3__8S19905C9[] = {
  ABISELECT(-272,-152),
  ABISELECT(384,228),
  ABISELECT(384,228),
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C49S19905C15__A2__8S19905C9[] = {
  ABISELECT(656,380),
  ABISELECT(656,380),
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C49S19905C15__A2__8S19905C9[] = {
  ABISELECT(-272,-152),
  ABISELECT(384,228),
  ABISELECT(384,228),
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__9S19905C15__8S19905C9[] = {
  ABISELECT(608,352),
  ABISELECT(608,352),
  (VTBL_ENTRY)&(_ZTI9S19905C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C12__9S19905C15__8S19905C9[] = {
  ABISELECT(-64,-36),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-336,-188),
  ABISELECT(-336,-188),
  ABISELECT(272,164),
  ABISELECT(272,164),
  (VTBL_ENTRY)&(_ZTI9S19905C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19905C15D1Ev,_ZTv0_n24_N9S19905C15D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19905C15D0Ev,_ZTv0_n24_N9S19905C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C3__9S19905C15__8S19905C9[] = {
  ABISELECT(224,136),
  ABISELECT(-112,-64),
  ABISELECT(-384,-216),
  ABISELECT(64,40),
  ABISELECT(224,136),
  (VTBL_ENTRY)&(_ZTI9S19905C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19905C15D1Ev,_ZTv0_n24_N9S19905C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19905C15D0Ev,_ZTv0_n24_N9S19905C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C4__9S19905C15__8S19905C9[] = {
  ABISELECT(-176,-104),
  ABISELECT(-448,-256),
  ABISELECT(160,96),
  ABISELECT(160,96),
  (VTBL_ENTRY)&(_ZTI9S19905C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C7__A1__9S19905C15__8S19905C9[] = {
  ABISELECT(-272,-152),
  ABISELECT(336,200),
  ABISELECT(336,200),
  (VTBL_ENTRY)&(_ZTI9S19905C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C78S19905C3__A2__9S19905C15__8S19905C9[] = {
  ABISELECT(-400,-224),
  ABISELECT(208,128),
  ABISELECT(208,128),
  (VTBL_ENTRY)&(_ZTI9S19905C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev)();
extern void ABISELECT(_ZThn48_N9S19905C15D1Ev,_ZThn28_N9S19905C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev)();
extern void ABISELECT(_ZThn48_N9S19905C15D0Ev,_ZThn28_N9S19905C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C4__A__9S19905C15__8S19905C9[] = {
  ABISELECT(-384,-228),
  ABISELECT(-656,-380),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19905C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev),
};
static  VTT_ENTRY vtt_S19905C9[] = {
  {&(_ZTV8S19905C9[15]),  15,106},
  {&(_ZTV8S19905C9[15]),  15,106},
  {&(_ZTV8S19905C9[28]),  28,106},
  {&(_ZTV8S19905C9[34]),  34,106},
  {&(_ZTV8S19905C9[41]),  41,106},
  {&(_ZTV8S19905C9[51]),  51,106},
  {&(_ZTV8S19905C9[59]),  59,106},
  {&(_ZTV8S19905C9[72]),  72,106},
  {&(_ZTV8S19905C9[65]),  65,106},
  {&(_ZTV8S19905C9[86]),  86,106},
  {&(_ZTV8S19905C9[97]),  97,106},
  {&(_ZTV8S19905C9[104]),  104,106},
  {&(_tg__ZTV9S19905C10__8S19905C9[11]),  11,13},
  {&(_tg__ZTV8S19905C49S19905C10__A1__8S19905C9[5]),  5,7},
  {&(_tg__ZTV8S19905C68S19905C49S19905C10__A2__8S19905C9[5]),  5,7},
  {&(_tg__ZTV11S19905C5_nt__8S19905C68S19905C49S19905C10__A2__8S19905C9[3]),  3,5},
  {&(_tg__ZTV8S19905C7__8S19905C68S19905C49S19905C10__A2__8S19905C9[4]),  4,6},
  {&(_tg__ZTV11S19905C5_nt__8S19905C49S19905C10__A1__8S19905C9[3]),  3,5},
  {&(_tg__ZTV8S19905C7__8S19905C49S19905C10__A1__8S19905C9[4]),  4,6},
  {&(_tg__ZTV8S19905C7__9S19905C10__8S19905C9[4]),  4,6},
  {&(_tg__ZTV11S19905C5_nt__9S19905C10__8S19905C9[3]),  3,5},
  {&(_tg__ZTV8S19905C6__9S19905C10__8S19905C9[5]),  5,7},
  {&(_tg__ZTV9S19905C12__9S19905C10__8S19905C9[8]),  8,10},
  {&(_tg__ZTV8S19905C3__9S19905C10__8S19905C9[6]),  6,8},
  {&(_tg__ZTV8S19905C4__9S19905C10__8S19905C9[5]),  5,7},
  {&(_tg__ZTV8S19905C78S19905C3__A1__9S19905C10__8S19905C9[4]),  4,6},
  {&(_tg__ZTV8S19905C7__8S19905C9[4]),  4,6},
  {&(_tg__ZTV11S19905C5_nt__8S19905C7__8S19905C9[3]),  3,5},
  {&(_tg__ZTV8S19905C6__8S19905C9[5]),  5,7},
  {&(_tg__ZTV11S19905C5_nt__8S19905C6__8S19905C9[3]),  3,5},
  {&(_tg__ZTV8S19905C7__8S19905C6__8S19905C9[4]),  4,6},
  {&(_tg__ZTV9S19905C12__8S19905C9[8]),  8,10},
  {&(_tg__ZTV8S19905C79S19905C12__A2__8S19905C9[4]),  4,6},
  {&(_tg__ZTV11S19905C5_nt__8S19905C79S19905C12__A2__8S19905C9[3]),  3,5},
  {&(_tg__ZTV8S19905C3__9S19905C12__8S19905C9[6]),  6,8},
  {&(_tg__ZTV8S19905C4__9S19905C12__8S19905C9[5]),  5,7},
  {&(_tg__ZTV11S19905C5_nt__9S19905C12__8S19905C9[3]),  3,5},
  {&(_tg__ZTV8S19905C7__9S19905C12__8S19905C9[4]),  4,6},
  {&(_tg__ZTV8S19905C78S19905C3__A1__9S19905C12__8S19905C9[4]),  4,6},
  {&(_tg__ZTV8S19905C3__8S19905C9[5]),  5,7},
  {&(_tg__ZTV8S19905C78S19905C3__A1__8S19905C9[4]),  4,6},
  {&(_tg__ZTV11S19905C5_nt__8S19905C78S19905C3__A1__8S19905C9[3]),  3,5},
  {&(_tg__ZTV8S19905C4__8S19905C3__8S19905C9[5]),  5,7},
  {&(_tg__ZTV11S19905C5_nt__8S19905C3__8S19905C9[3]),  3,5},
  {&(_tg__ZTV8S19905C7__8S19905C3__8S19905C9[4]),  4,6},
  {&(_tg__ZTV8S19905C7__A__8S19905C3__8S19905C9[4]),  4,6},
  {&(_tg__ZTV8S19905C4__8S19905C9[5]),  5,7},
  {&(_tg__ZTV8S19905C68S19905C4__A1__8S19905C9[5]),  5,7},
  {&(_tg__ZTV11S19905C5_nt__8S19905C68S19905C4__A1__8S19905C9[3]),  3,5},
  {&(_tg__ZTV8S19905C7__8S19905C68S19905C4__A1__8S19905C9[4]),  4,6},
  {&(_tg__ZTV11S19905C5_nt__8S19905C4__8S19905C9[3]),  3,5},
  {&(_tg__ZTV8S19905C7__8S19905C4__8S19905C9[4]),  4,6},
  {&(_tg__ZTV9S19905C13__8S19905C9[12]),  12,14},
  {&(_tg__ZTV9S19905C149S19905C13__8S19905C9[11]),  11,13},
  {&(_tg__ZTV9S19905C169S19905C149S19905C13__8S19905C9[7]),  7,9},
  {&(_tg__ZTV8S19905C4__9S19905C169S19905C149S19905C13__8S19905C9[5]),  5,7},
  {&(_tg__ZTV11S19905C5_nt__9S19905C169S19905C149S19905C13__8S19905C9[3]),  3,5},
  {&(_tg__ZTV8S19905C7__9S19905C169S19905C149S19905C13__8S19905C9[4]),  4,6},
  {&(_tg__ZTV8S19905C7__9S19905C149S19905C13__8S19905C9[4]),  4,6},
  {&(_tg__ZTV11S19905C5_nt__9S19905C149S19905C13__8S19905C9[3]),  3,5},
  {&(_tg__ZTV9S19905C15__9S19905C149S19905C13__8S19905C9[9]),  9,11},
  {&(_tg__ZTV9S19905C12__9S19905C149S19905C13__8S19905C9[8]),  8,10},
  {&(_tg__ZTV8S19905C3__9S19905C149S19905C13__8S19905C9[6]),  6,8},
  {&(_tg__ZTV8S19905C4__9S19905C149S19905C13__8S19905C9[5]),  5,7},
  {&(_tg__ZTV8S19905C78S19905C3__A2__9S19905C149S19905C13__8S19905C9[4]),  4,6},
  {&(_tg__ZTV8S19905C49S19905C15__A1__9S19905C149S19905C13__8S19905C9[5]),  5,7},
  {&(_tg__ZTV8S19905C7__9S19905C13__8S19905C9[4]),  4,6},
  {&(_tg__ZTV11S19905C5_nt__9S19905C13__8S19905C9[3]),  3,5},
  {&(_tg__ZTV9S19905C15__9S19905C13__8S19905C9[9]),  9,11},
  {&(_tg__ZTV9S19905C12__9S19905C13__8S19905C9[8]),  8,10},
  {&(_tg__ZTV8S19905C3__9S19905C13__8S19905C9[6]),  6,8},
  {&(_tg__ZTV8S19905C4__9S19905C13__8S19905C9[5]),  5,7},
  {&(_tg__ZTV8S19905C78S19905C3__A2__9S19905C13__8S19905C9[4]),  4,6},
  {&(_tg__ZTV8S19905C49S19905C15__A1__9S19905C13__8S19905C9[5]),  5,7},
  {&(_tg__ZTV9S19905C15__8S19905C9[9]),  9,11},
  {&(_tg__ZTV8S19905C79S19905C15__A3__8S19905C9[4]),  4,6},
  {&(_tg__ZTV11S19905C5_nt__8S19905C79S19905C15__A3__8S19905C9[3]),  3,5},
  {&(_tg__ZTV8S19905C49S19905C15__A2__8S19905C9[5]),  5,7},
  {&(_tg__ZTV8S19905C68S19905C49S19905C15__A3__8S19905C9[5]),  5,7},
  {&(_tg__ZTV11S19905C5_nt__8S19905C68S19905C49S19905C15__A3__8S19905C9[3]),  3,5},
  {&(_tg__ZTV8S19905C7__8S19905C68S19905C49S19905C15__A3__8S19905C9[4]),  4,6},
  {&(_tg__ZTV11S19905C5_nt__8S19905C49S19905C15__A2__8S19905C9[3]),  3,5},
  {&(_tg__ZTV8S19905C7__8S19905C49S19905C15__A2__8S19905C9[4]),  4,6},
  {&(_tg__ZTV11S19905C5_nt__9S19905C15__8S19905C9[3]),  3,5},
  {&(_tg__ZTV9S19905C12__9S19905C15__8S19905C9[8]),  8,10},
  {&(_tg__ZTV8S19905C3__9S19905C15__8S19905C9[6]),  6,8},
  {&(_tg__ZTV8S19905C4__9S19905C15__8S19905C9[5]),  5,7},
  {&(_tg__ZTV8S19905C7__A1__9S19905C15__8S19905C9[4]),  4,6},
  {&(_tg__ZTV8S19905C78S19905C3__A2__9S19905C15__8S19905C9[4]),  4,6},
  {&(_tg__ZTV8S19905C4__A__9S19905C15__8S19905C9[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S19905C9[];
extern  VTBL_ENTRY _ZTV8S19905C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C9[];
static VTBL_ENTRY alt_thunk_names10[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19905C15D0Ev,_ZThn28_N9S19905C15D0Ev),
  (VTBL_ENTRY)_ZN9S19905C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19905C15D1Ev,_ZThn28_N9S19905C15D1Ev),
  (VTBL_ENTRY)_ZN9S19905C15D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C16D0Ev,_ZTv0_n12_N9S19905C16D0Ev), // 
  (VTBL_ENTRY)_ZN9S19905C16D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C16D1Ev,_ZTv0_n12_N9S19905C16D1Ev), // 
  (VTBL_ENTRY)_ZN9S19905C16D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19905C14D0Ev,_ZThn84_N9S19905C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19905C14D0Ev,_ZThn56_N9S19905C14D0Ev),
  (VTBL_ENTRY)_ZN9S19905C14D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19905C14D1Ev,_ZThn84_N9S19905C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19905C14D1Ev,_ZThn56_N9S19905C14D1Ev),
  (VTBL_ENTRY)_ZN9S19905C14D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C13D0Ev,_ZTv0_n12_N9S19905C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19905C13D0Ev,_ZThn84_N9S19905C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19905C13D0Ev,_ZThn56_N9S19905C13D0Ev),
  (VTBL_ENTRY)_ZN9S19905C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C13D1Ev,_ZTv0_n12_N9S19905C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19905C13D1Ev,_ZThn84_N9S19905C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19905C13D1Ev,_ZThn56_N9S19905C13D1Ev),
  (VTBL_ENTRY)_ZN9S19905C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19905C3D0Ev,_ZThn8_N8S19905C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19905C3D0Ev,_ZThn40_N8S19905C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19905C3D1Ev,_ZThn8_N8S19905C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19905C3D1Ev,_ZThn40_N8S19905C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19905C12D0Ev,_ZTv0_n24_N9S19905C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19905C12D0Ev,_ZThn28_N9S19905C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19905C12D1Ev,_ZTv0_n24_N9S19905C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19905C12D1Ev,_ZThn28_N9S19905C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19905C12D0Ev,_ZThn36_N9S19905C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19905C12D0Ev,_ZThn68_N9S19905C12D0Ev),
  (VTBL_ENTRY)_ZN9S19905C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19905C12D1Ev,_ZThn36_N9S19905C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19905C12D1Ev,_ZThn68_N9S19905C12D1Ev),
  (VTBL_ENTRY)_ZN9S19905C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S19905C7D0Ev,
  (VTBL_ENTRY)_ZN8S19905C7D0Ev,
  (VTBL_ENTRY)_ZN8S19905C7D0Ev,
  (VTBL_ENTRY)_ZN8S19905C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S19905C7D1Ev,
  (VTBL_ENTRY)_ZN8S19905C7D1Ev,
  (VTBL_ENTRY)_ZN8S19905C7D1Ev,
  (VTBL_ENTRY)_ZN8S19905C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19905C10D0Ev,_ZTv0_n24_N9S19905C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19905C10D0Ev,_ZThn212_N9S19905C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19905C10D1Ev,_ZTv0_n24_N9S19905C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19905C10D1Ev,_ZThn212_N9S19905C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev), // 
  (VTBL_ENTRY)_ZN8S19905C6D0Ev,
  (VTBL_ENTRY)_ZN8S19905C6D0Ev,
  (VTBL_ENTRY)_ZN8S19905C6D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19905C6D0Ev,_ZThn148_N8S19905C6D0Ev),
  (VTBL_ENTRY)_ZN8S19905C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev), // 
  (VTBL_ENTRY)_ZN8S19905C6D1Ev,
  (VTBL_ENTRY)_ZN8S19905C6D1Ev,
  (VTBL_ENTRY)_ZN8S19905C6D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19905C6D1Ev,_ZThn148_N8S19905C6D1Ev),
  (VTBL_ENTRY)_ZN8S19905C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev), // 
  (VTBL_ENTRY)_ZN8S19905C4D0Ev,
  (VTBL_ENTRY)_ZN8S19905C4D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19905C4D0Ev,_ZThn148_N8S19905C4D0Ev),
  (VTBL_ENTRY)_ZN8S19905C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev), // 
  (VTBL_ENTRY)_ZN8S19905C4D1Ev,
  (VTBL_ENTRY)_ZN8S19905C4D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19905C4D1Ev,_ZThn148_N8S19905C4D1Ev),
  (VTBL_ENTRY)_ZN8S19905C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C10D0Ev,_ZTv0_n12_N9S19905C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S19905C10D0Ev,_ZThn220_N9S19905C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn432_N9S19905C10D0Ev,_ZThn252_N9S19905C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S19905C10D0Ev,_ZThn184_N9S19905C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S19905C10D0Ev,_ZThn176_N9S19905C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S19905C10D0Ev,_ZThn148_N9S19905C10D0Ev),
  (VTBL_ENTRY)_ZN9S19905C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C10D1Ev,_ZTv0_n12_N9S19905C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S19905C10D1Ev,_ZThn220_N9S19905C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn432_N9S19905C10D1Ev,_ZThn252_N9S19905C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S19905C10D1Ev,_ZThn184_N9S19905C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S19905C10D1Ev,_ZThn176_N9S19905C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S19905C10D1Ev,_ZThn148_N9S19905C10D1Ev),
  (VTBL_ENTRY)_ZN9S19905C10D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19905C9D0Ev,_ZTv0_n24_N8S19905C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S19905C9D0Ev,_ZThn216_N8S19905C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19905C9D1Ev,_ZTv0_n24_N8S19905C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S19905C9D1Ev,_ZThn216_N8S19905C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C9D0Ev,_ZTv0_n12_N8S19905C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19905C9D0Ev,_ZThn380_N8S19905C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn608_N8S19905C9D0Ev,_ZThn352_N8S19905C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn512_N8S19905C9D0Ev,_ZThn296_N8S19905C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn448_N8S19905C9D0Ev,_ZThn256_N8S19905C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S19905C9D0Ev,_ZThn224_N8S19905C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S19905C9D0Ev,_ZThn188_N8S19905C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S19905C9D0Ev,_ZThn180_N8S19905C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S19905C9D0Ev,_ZThn152_N8S19905C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19905C9D0Ev,_ZThn4_N8S19905C9D0Ev),
  (VTBL_ENTRY)_ZN8S19905C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C9D1Ev,_ZTv0_n12_N8S19905C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S19905C9D1Ev,_ZThn380_N8S19905C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn608_N8S19905C9D1Ev,_ZThn352_N8S19905C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn512_N8S19905C9D1Ev,_ZThn296_N8S19905C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn448_N8S19905C9D1Ev,_ZThn256_N8S19905C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S19905C9D1Ev,_ZThn224_N8S19905C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S19905C9D1Ev,_ZThn188_N8S19905C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S19905C9D1Ev,_ZThn180_N8S19905C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S19905C9D1Ev,_ZThn152_N8S19905C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19905C9D1Ev,_ZThn4_N8S19905C9D1Ev),
  (VTBL_ENTRY)_ZN8S19905C9D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19905C9 = {  "S19905C9", // class name
  bases_S19905C9, 31,
  &(vtc_S19905C9[0]), // expected_vtbl_contents
  &(vtt_S19905C9[0]), // expected_vtt_contents
  ABISELECT(720,420), // object size
  NSPAIRA(_ZTI8S19905C9),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19905C9),106, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19905C9),90, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names10,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19905C19  {
  void  mf19905c19(); // _ZN9S19905C1910mf19905c19Ev
  virtual  ~S19905C19(); // _ZN9S19905C19D1Ev
  S19905C19(); // tgen
};
//SIG(-1 S19905C19) C1{ vd m}


void  S19905C19 ::mf19905c19(){}
 S19905C19 ::~S19905C19(){ note_dtor("S19905C19", this);}
S19905C19 ::S19905C19(){ note_ctor("S19905C19", this);} // tgen

static void Test_S19905C19()
{
  extern Class_Descriptor cd_S19905C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19905C19, buf);
    S19905C19 *dp, &lv = *(dp=new (buf) S19905C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19905C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19905C19)");
    test_class_info(&lv, &cd_S19905C19);
    dp->~S19905C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19905C19(Test_S19905C19, "S19905C19", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN9S19905C19C1Ev();
extern void _ZN9S19905C19D1Ev();
Name_Map name_map_S19905C19[] = {
  NSPAIR(_ZN9S19905C19C1Ev),
  NSPAIR(_ZN9S19905C19D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S19905C19[];
extern void _ZN9S19905C19D1Ev();
extern void _ZN9S19905C19D0Ev();
static  VTBL_ENTRY vtc_S19905C19[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19905C19[0]),
  (VTBL_ENTRY)&_ZN9S19905C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19905C19D0Ev,
};
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
Class_Descriptor cd_S19905C19 = {  "S19905C19", // class name
  0,0,//no base classes
  &(vtc_S19905C19[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S19905C19),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S19905C19),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19905C20  : virtual S5266C29 , S19905C6 , S19905C3 , S19905C5_nt , S17777C6_nt {
  void *s19905c20f0[2];
  ~S19905C20(); // tgen
  S19905C20(); // tgen
};
//SIG(-1 S19905C20) C1{ VBC2{ m} BC3{ VBC4{ vd m} VBC5{ VBC4 FD Fc Fs[4]} vd Fi} BC6{ VBC7{ VBC4 BC3 BC8{ m Fp} vd Fs FL Fp FL} BC8 BC4 BC5 vd Fi} BC4 BC8 Fp[2]}


S19905C20 ::~S19905C20(){ note_dtor("S19905C20", this);} // tgen
S19905C20 ::S19905C20(){ note_ctor("S19905C20", this);} // tgen

static void Test_S19905C20()
{
  extern Class_Descriptor cd_S19905C20;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(15,33)];
    init_test(&cd_S19905C20, buf);
    S19905C20 *dp, &lv = *(dp=new (buf) S19905C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,128), "sizeof(S19905C20)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19905C20)");
    check_base_class_offset(lv, (S5266C29*), 0, "S19905C20");
    /*is_ambiguous_... S19905C20::S19905C6 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C6*), 0, "S19905C20");
    /*is_ambiguous_... S19905C20::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C7*), 0, "S19905C20");
    check_base_class_offset(lv, (S19905C5_nt*)(S19905C4*), 0, "S19905C20");
    check_base_class_offset(lv, (S19905C5_nt*)(S19905C6*)(S19905C4*), 0, "S19905C20");
    /*is_ambiguous_... S19905C3::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C7*)(S19905C3*), 0, "S19905C20");
    /*is_ambiguous_... S19905C20::S19905C6 */ AMB_check_base_class_offset(lv, (S19905C7*)(S19905C6*), ABISELECT(112,64), "S19905C20");
    check_base_class_offset(lv, (S19905C7*)(S19905C6*)(S19905C4*), ABISELECT(112,64), "S19905C20");
    /*is_ambiguous_... S19905C20::S19905C6 */ AMB_check_base_class_offset(lv, (S19905C6*), 0, "S19905C20");
    check_base_class_offset(lv, (S19905C6*)(S19905C4*), ABISELECT(160,92), "S19905C20");
    check_base_class_offset(lv, (S17777C6_nt*)(S19905C4*), ABISELECT(176,100), "S19905C20");
    check_base_class_offset(lv, (S19905C4*)(S19905C3*), ABISELECT(160,92), "S19905C20");
    /*is_ambiguous_... S19905C3::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S19905C3*), ABISELECT(24,12), "S19905C20");
    /*is_ambiguous_... S19905C3::S19905C5_nt */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C3*), ABISELECT(16,8), "S19905C20");
    /*is_ambiguous_... S19905C3::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C7*)(S19905C3*), ABISELECT(32,16), "S19905C20");
    check_base_class_offset(lv, (S19905C3*), ABISELECT(16,8), "S19905C20");
    /*is_ambiguous_... S19905C20::S19905C5_nt */ AMB_check_base_class_offset(lv, (S19905C5_nt*), ABISELECT(80,48), "S19905C20");
    /*is_ambiguous_... S19905C20::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*), ABISELECT(88,52), "S19905C20");
    check_field_offset(lv, s19905c20f0, ABISELECT(96,56), "S19905C20.s19905c20f0");
    test_class_info(&lv, &cd_S19905C20);
    dp->~S19905C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19905C20(Test_S19905C20, "S19905C20", ABISELECT(224,128));

#else // __cplusplus

extern void _ZN9S19905C20C1Ev();
extern void _ZN9S19905C20D1Ev();
Name_Map name_map_S19905C20[] = {
  NSPAIR(_ZN9S19905C20C1Ev),
  NSPAIR(_ZN9S19905C20D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S19905C5_nt;
extern VTBL_ENTRY _ZTI11S19905C5_nt[];
extern  VTBL_ENTRY _ZTV11S19905C5_nt[];
extern Class_Descriptor cd_S19905C7;
extern VTBL_ENTRY _ZTI8S19905C7[];
extern  VTBL_ENTRY _ZTV8S19905C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C7[];
extern Class_Descriptor cd_S19905C6;
extern VTBL_ENTRY _ZTI8S19905C6[];
extern  VTBL_ENTRY _ZTV8S19905C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C6[];
extern Class_Descriptor cd_S19905C6;
extern VTBL_ENTRY _ZTI8S19905C6[];
extern  VTBL_ENTRY _ZTV8S19905C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C6[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C4;
extern VTBL_ENTRY _ZTI8S19905C4[];
extern  VTBL_ENTRY _ZTV8S19905C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C4[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C5_nt;
extern VTBL_ENTRY _ZTI11S19905C5_nt[];
extern  VTBL_ENTRY _ZTV11S19905C5_nt[];
extern Class_Descriptor cd_S19905C7;
extern VTBL_ENTRY _ZTI8S19905C7[];
extern  VTBL_ENTRY _ZTV8S19905C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C7[];
extern Class_Descriptor cd_S19905C3;
extern VTBL_ENTRY _ZTI8S19905C3[];
extern  VTBL_ENTRY _ZTV8S19905C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C3[];
extern Class_Descriptor cd_S19905C5_nt;
extern VTBL_ENTRY _ZTI11S19905C5_nt[];
extern  VTBL_ENTRY _ZTV11S19905C5_nt[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
static Base_Class bases_S19905C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19905C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19905C7,    ABISELECT(112,64), //bcp->offset
    26, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19905C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19905C6,    ABISELECT(160,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(176,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19905C4,    ABISELECT(160,92), //bcp->offset
    32, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S17777C6_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19905C5_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19905C7,    ABISELECT(32,16), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19905C3,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19905C5_nt,    ABISELECT(80,48), //bcp->offset
    22, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S17777C6_nt,    ABISELECT(88,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19905C20[];
extern void ABISELECT(_ZTv0_n24_N9S19905C20D1Ev,_ZTv0_n12_N9S19905C20D1Ev)();
extern void _ZN9S19905C20D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C20D0Ev,_ZTv0_n12_N9S19905C20D0Ev)();
extern void _ZN9S19905C20D0Ev() __attribute__((weak));
extern void ABISELECT(_ZThn16_N9S19905C20D1Ev,_ZThn8_N9S19905C20D1Ev)();
extern void ABISELECT(_ZThn16_N9S19905C20D0Ev,_ZThn8_N9S19905C20D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C20D1Ev,_ZTv0_n12_N9S19905C20D1Ev)();
extern void ABISELECT(_ZThn32_N9S19905C20D1Ev,_ZThn16_N9S19905C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C20D0Ev,_ZTv0_n12_N9S19905C20D0Ev)();
extern void ABISELECT(_ZThn32_N9S19905C20D0Ev,_ZThn16_N9S19905C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZThn80_N9S19905C20D1Ev,_ZThn48_N9S19905C20D1Ev)();
extern void ABISELECT(_ZThn80_N9S19905C20D0Ev,_ZThn48_N9S19905C20D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C20D1Ev,_ZTv0_n12_N9S19905C20D1Ev)();
extern void ABISELECT(_ZThn112_N9S19905C20D1Ev,_ZThn64_N9S19905C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C20D0Ev,_ZTv0_n12_N9S19905C20D0Ev)();
extern void ABISELECT(_ZThn112_N9S19905C20D0Ev,_ZThn64_N9S19905C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C20D1Ev,_ZTv0_n12_N9S19905C20D1Ev)();
extern void ABISELECT(_ZThn160_N9S19905C20D1Ev,_ZThn92_N9S19905C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C20D0Ev,_ZTv0_n12_N9S19905C20D0Ev)();
extern void ABISELECT(_ZThn160_N9S19905C20D0Ev,_ZThn92_N9S19905C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19905C20[] = {
  ABISELECT(160,92),
  0,
  ABISELECT(112,64),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19905C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C20D1Ev,_ZTv0_n12_N9S19905C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C20D0Ev,_ZTv0_n12_N9S19905C20D0Ev),
  ABISELECT(96,56),
  ABISELECT(-16,-8),
  ABISELECT(144,84),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19905C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19905C20D1Ev,_ZThn8_N9S19905C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19905C20D0Ev,_ZThn8_N9S19905C20D0Ev),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19905C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C20D1Ev,_ZTv0_n12_N9S19905C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C20D0Ev,_ZTv0_n12_N9S19905C20D0Ev),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S19905C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S19905C20D1Ev,_ZThn48_N9S19905C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S19905C20D0Ev,_ZThn48_N9S19905C20D0Ev),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S19905C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C20D1Ev,_ZTv0_n12_N9S19905C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C20D0Ev,_ZTv0_n12_N9S19905C20D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(-160,-92),
  ABISELECT(-160,-92),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI9S19905C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C20D1Ev,_ZTv0_n12_N9S19905C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C20D0Ev,_ZTv0_n12_N9S19905C20D0Ev),
};
extern VTBL_ENTRY _ZTV9S19905C20[];
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void _ZN8S19905C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
extern void _ZN8S19905C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C6__9S19905C20[] = {
  ABISELECT(112,64),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void ABISELECT(_ZThn112_N8S19905C6D1Ev,_ZThn64_N8S19905C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
extern void ABISELECT(_ZThn112_N8S19905C6D0Ev,_ZThn64_N8S19905C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C6__9S19905C20[] = {
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void _ZN8S19905C3D1Ev();
extern void _ZN8S19905C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19905C3__9S19905C20[] = {
  ABISELECT(96,56),
  ABISELECT(-16,-8),
  ABISELECT(144,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C3[0]),
  (VTBL_ENTRY)&_ZN8S19905C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19905C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void _ZN8S19905C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
extern void _ZN8S19905C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C78S19905C3__A1__9S19905C20[] = {
  ABISELECT(-32,-16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C78S19905C3__A1__9S19905C20[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev)();
extern void ABISELECT(_ZThn144_N8S19905C3D1Ev,_ZThn84_N8S19905C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev)();
extern void ABISELECT(_ZThn144_N8S19905C3D0Ev,_ZThn84_N8S19905C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C4__8S19905C3__9S19905C20[] = {
  ABISELECT(-48,-28),
  ABISELECT(-160,-92),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S19905C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C3__9S19905C20[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19905C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev)();
extern void ABISELECT(_ZThn96_N8S19905C3D1Ev,_ZThn56_N8S19905C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev)();
extern void ABISELECT(_ZThn96_N8S19905C3D0Ev,_ZThn56_N8S19905C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C3__9S19905C20[] = {
  ABISELECT(-112,-64),
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S19905C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S19905C3D1Ev,_ZThn8_N8S19905C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S19905C3D0Ev,_ZThn8_N8S19905C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__A__8S19905C3__9S19905C20[] = {
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19905C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void _ZN8S19905C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
extern void _ZN8S19905C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__9S19905C20[] = {
  ABISELECT(-112,-64),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C7__9S19905C20[] = {
  ABISELECT(112,64),
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev)();
extern void _ZN8S19905C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev)();
extern void _ZN8S19905C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C4__9S19905C20[] = {
  ABISELECT(-48,-28),
  ABISELECT(-160,-92),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void _ZN8S19905C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
extern void _ZN8S19905C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C68S19905C4__A1__9S19905C20[] = {
  ABISELECT(-48,-28),
  ABISELECT(-160,-92),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C68S19905C4__A1__9S19905C20[] = {
  ABISELECT(160,92),
  ABISELECT(160,92),
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C68S19905C4__A1__9S19905C20[] = {
  ABISELECT(-112,-64),
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C4__9S19905C20[] = {
  ABISELECT(160,92),
  ABISELECT(160,92),
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C4__9S19905C20[] = {
  ABISELECT(-112,-64),
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev),
};
static  VTT_ENTRY vtt_S19905C20[] = {
  {&(_ZTV9S19905C20[7]),  7,39},
  {&(_tg__ZTV8S19905C6__9S19905C20[5]),  5,7},
  {&(_tg__ZTV8S19905C6__9S19905C20[5]),  5,7},
  {&(_tg__ZTV8S19905C7__8S19905C6__9S19905C20[4]),  4,6},
  {&(_tg__ZTV8S19905C3__9S19905C20[5]),  5,7},
  {&(_tg__ZTV8S19905C78S19905C3__A1__9S19905C20[4]),  4,6},
  {&(_tg__ZTV11S19905C5_nt__8S19905C78S19905C3__A1__9S19905C20[3]),  3,5},
  {&(_tg__ZTV8S19905C4__8S19905C3__9S19905C20[5]),  5,7},
  {&(_tg__ZTV11S19905C5_nt__8S19905C3__9S19905C20[3]),  3,5},
  {&(_tg__ZTV8S19905C7__8S19905C3__9S19905C20[4]),  4,6},
  {&(_tg__ZTV8S19905C7__A__8S19905C3__9S19905C20[4]),  4,6},
  {&(_ZTV9S19905C20[7]),  7,39},
  {&(_ZTV9S19905C20[30]),  30,39},
  {&(_ZTV9S19905C20[14]),  14,39},
  {&(_ZTV9S19905C20[37]),  37,39},
  {&(_ZTV9S19905C20[20]),  20,39},
  {&(_tg__ZTV8S19905C7__9S19905C20[4]),  4,6},
  {&(_tg__ZTV11S19905C5_nt__8S19905C7__9S19905C20[3]),  3,5},
  {&(_tg__ZTV8S19905C4__9S19905C20[5]),  5,7},
  {&(_tg__ZTV8S19905C68S19905C4__A1__9S19905C20[5]),  5,7},
  {&(_tg__ZTV11S19905C5_nt__8S19905C68S19905C4__A1__9S19905C20[3]),  3,5},
  {&(_tg__ZTV8S19905C7__8S19905C68S19905C4__A1__9S19905C20[4]),  4,6},
  {&(_tg__ZTV11S19905C5_nt__8S19905C4__9S19905C20[3]),  3,5},
  {&(_tg__ZTV8S19905C7__8S19905C4__9S19905C20[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S19905C20[];
extern  VTBL_ENTRY _ZTV9S19905C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19905C20[];
static VTBL_ENTRY alt_thunk_names11[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev), // 
  (VTBL_ENTRY)_ZN8S19905C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev), // 
  (VTBL_ENTRY)_ZN8S19905C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19905C3D0Ev,_ZThn8_N8S19905C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19905C3D0Ev,_ZThn56_N8S19905C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19905C3D0Ev,_ZThn84_N8S19905C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19905C3D1Ev,_ZThn8_N8S19905C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19905C3D1Ev,_ZThn56_N8S19905C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19905C3D1Ev,_ZThn84_N8S19905C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S19905C7D0Ev,
  (VTBL_ENTRY)_ZN8S19905C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S19905C7D1Ev,
  (VTBL_ENTRY)_ZN8S19905C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev), // 
  (VTBL_ENTRY)_ZN8S19905C6D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19905C6D0Ev,_ZThn64_N8S19905C6D0Ev),
  (VTBL_ENTRY)_ZN8S19905C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev), // 
  (VTBL_ENTRY)_ZN8S19905C6D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19905C6D1Ev,_ZThn64_N8S19905C6D1Ev),
  (VTBL_ENTRY)_ZN8S19905C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C20D0Ev,_ZTv0_n12_N9S19905C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S19905C20D0Ev,_ZThn92_N9S19905C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19905C20D0Ev,_ZThn64_N9S19905C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19905C20D0Ev,_ZThn16_N9S19905C20D0Ev),
  (VTBL_ENTRY)_ZN9S19905C20D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C20D1Ev,_ZTv0_n12_N9S19905C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S19905C20D1Ev,_ZThn92_N9S19905C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19905C20D1Ev,_ZThn64_N9S19905C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19905C20D1Ev,_ZThn16_N9S19905C20D1Ev),
  (VTBL_ENTRY)_ZN9S19905C20D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19905C20 = {  "S19905C20", // class name
  bases_S19905C20, 13,
  &(vtc_S19905C20[0]), // expected_vtbl_contents
  &(vtt_S19905C20[0]), // expected_vtt_contents
  ABISELECT(224,128), // object size
  NSPAIRA(_ZTI9S19905C20),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19905C20),39, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19905C20),24, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names11,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19905C18  : virtual S19905C4 , S19905C19 , S19905C20 {
  virtual  ~S19905C18(); // _ZN9S19905C18D2Ev
  S19905C18(); // tgen
};
//SIG(-1 S19905C18) C1{ VBC2{ VBC3{ vd m} BC4{ VBC3 VBC5{ VBC3 FD Fc Fs[4]} vd Fi} BC6{ m Fp} vd Fs FL Fp FL} BC7{ vd m} BC8{ VBC9{ m} BC4 BC10{ VBC2 BC6 BC3 BC5 vd Fi} BC3 BC6 Fp[2]} vd}


 S19905C18 ::~S19905C18(){ note_dtor("S19905C18", this);}
S19905C18 ::S19905C18(){ note_ctor("S19905C18", this);} // tgen

static void Test_S19905C18()
{
  extern Class_Descriptor cd_S19905C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(16,34)];
    init_test(&cd_S19905C18, buf);
    S19905C18 *dp, &lv = *(dp=new (buf) S19905C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,132), "sizeof(S19905C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19905C18)");
    check_base_class_offset(lv, (S19905C5_nt*)(S19905C4*), ABISELECT(128,68), "S19905C18");
    check_base_class_offset(lv, (S19905C5_nt*)(S19905C6*)(S19905C4*), ABISELECT(128,68), "S19905C18");
    /*is_ambiguous_... S19905C18::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C7*), ABISELECT(128,68), "S19905C18");
    /*is_ambiguous_... S19905C20::S19905C6 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C6*)(S19905C20*), ABISELECT(128,68), "S19905C18");
    /*is_ambiguous_... S19905C3::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C7*)(S19905C3*)(S19905C20*), ABISELECT(128,68), "S19905C18");
    check_base_class_offset(lv, (S19905C7*)(S19905C6*)(S19905C4*), ABISELECT(192,104), "S19905C18");
    /*is_ambiguous_... S19905C20::S19905C6 */ AMB_check_base_class_offset(lv, (S19905C7*)(S19905C6*)(S19905C20*), ABISELECT(192,104), "S19905C18");
    check_base_class_offset(lv, (S19905C6*)(S19905C4*), ABISELECT(128,68), "S19905C18");
    check_base_class_offset(lv, (S17777C6_nt*)(S19905C4*), ABISELECT(144,76), "S19905C18");
    check_base_class_offset(lv, (S19905C4*), ABISELECT(128,68), "S19905C18");
    check_base_class_offset(lv, (S19905C4*)(S19905C3*)(S19905C20*), ABISELECT(128,68), "S19905C18");
    check_base_class_offset(lv, (S19905C19*), 0, "S19905C18");
    check_base_class_offset(lv, (S5266C29*)(S19905C20*), 0, "S19905C18");
    /*is_ambiguous_... S19905C20::S19905C6 */ AMB_check_base_class_offset(lv, (S19905C6*)(S19905C20*), ABISELECT(16,4), "S19905C18");
    /*is_ambiguous_... S19905C3::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S19905C3*)(S19905C20*), ABISELECT(40,16), "S19905C18");
    /*is_ambiguous_... S19905C3::S19905C5_nt */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C3*)(S19905C20*), ABISELECT(32,12), "S19905C18");
    /*is_ambiguous_... S19905C3::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C7*)(S19905C3*)(S19905C20*), ABISELECT(48,20), "S19905C18");
    check_base_class_offset(lv, (S19905C3*)(S19905C20*), ABISELECT(32,12), "S19905C18");
    /*is_ambiguous_... S19905C20::S19905C5_nt */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C20*), ABISELECT(96,52), "S19905C18");
    /*is_ambiguous_... S19905C20::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S19905C20*), ABISELECT(104,56), "S19905C18");
    check_base_class_offset(lv, (S19905C20*), ABISELECT(16,4), "S19905C18");
    test_class_info(&lv, &cd_S19905C18);
    dp->~S19905C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19905C18(Test_S19905C18, "S19905C18", ABISELECT(240,132));

#else // __cplusplus

extern void _ZN9S19905C18C1Ev();
extern void _ZN9S19905C18D2Ev();
Name_Map name_map_S19905C18[] = {
  NSPAIR(_ZN9S19905C18C1Ev),
  NSPAIR(_ZN9S19905C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19905C5_nt;
extern VTBL_ENTRY _ZTI11S19905C5_nt[];
extern  VTBL_ENTRY _ZTV11S19905C5_nt[];
extern Class_Descriptor cd_S19905C7;
extern VTBL_ENTRY _ZTI8S19905C7[];
extern  VTBL_ENTRY _ZTV8S19905C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C7[];
extern Class_Descriptor cd_S19905C6;
extern VTBL_ENTRY _ZTI8S19905C6[];
extern  VTBL_ENTRY _ZTV8S19905C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C6[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C4;
extern VTBL_ENTRY _ZTI8S19905C4[];
extern  VTBL_ENTRY _ZTV8S19905C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C4[];
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S19905C6;
extern VTBL_ENTRY _ZTI8S19905C6[];
extern  VTBL_ENTRY _ZTV8S19905C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C6[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C5_nt;
extern VTBL_ENTRY _ZTI11S19905C5_nt[];
extern  VTBL_ENTRY _ZTV11S19905C5_nt[];
extern Class_Descriptor cd_S19905C7;
extern VTBL_ENTRY _ZTI8S19905C7[];
extern  VTBL_ENTRY _ZTV8S19905C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C7[];
extern Class_Descriptor cd_S19905C3;
extern VTBL_ENTRY _ZTI8S19905C3[];
extern  VTBL_ENTRY _ZTV8S19905C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C3[];
extern Class_Descriptor cd_S19905C5_nt;
extern VTBL_ENTRY _ZTI11S19905C5_nt[];
extern  VTBL_ENTRY _ZTV11S19905C5_nt[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C20;
extern VTBL_ENTRY _ZTI9S19905C20[];
extern  VTBL_ENTRY _ZTV9S19905C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19905C20[];
static Base_Class bases_S19905C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19905C5_nt,    ABISELECT(128,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19905C7,    ABISELECT(192,104), //bcp->offset
    41, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19905C6,    ABISELECT(128,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(144,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19905C4,    ABISELECT(128,68), //bcp->offset
    34, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19905C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19905C6,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(40,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19905C5_nt,    ABISELECT(32,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19905C7,    ABISELECT(48,20), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19905C3,    ABISELECT(32,12), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19905C5_nt,    ABISELECT(96,52), //bcp->offset
    30, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19905C20,    ABISELECT(16,4), //bcp->offset
    8, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19905C18[];
extern void _ZN9S19905C18D1Ev();
extern void _ZN9S19905C18D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19905C18D1Ev,_ZTv0_n12_N9S19905C18D1Ev)();
extern void ABISELECT(_ZThn16_N9S19905C18D1Ev,_ZThn4_N9S19905C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C18D0Ev,_ZTv0_n12_N9S19905C18D0Ev)();
extern void ABISELECT(_ZThn16_N9S19905C18D0Ev,_ZThn4_N9S19905C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZThn32_N9S19905C18D1Ev,_ZThn12_N9S19905C18D1Ev)();
extern void ABISELECT(_ZThn32_N9S19905C18D0Ev,_ZThn12_N9S19905C18D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C18D1Ev,_ZTv0_n12_N9S19905C18D1Ev)();
extern void ABISELECT(_ZThn48_N9S19905C18D1Ev,_ZThn20_N9S19905C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C18D0Ev,_ZTv0_n12_N9S19905C18D0Ev)();
extern void ABISELECT(_ZThn48_N9S19905C18D0Ev,_ZThn20_N9S19905C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZThn96_N9S19905C18D1Ev,_ZThn52_N9S19905C18D1Ev)();
extern void ABISELECT(_ZThn96_N9S19905C18D0Ev,_ZThn52_N9S19905C18D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C18D1Ev,_ZTv0_n12_N9S19905C18D1Ev)();
extern void ABISELECT(_ZThn128_N9S19905C18D1Ev,_ZThn68_N9S19905C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C18D0Ev,_ZTv0_n12_N9S19905C18D0Ev)();
extern void ABISELECT(_ZThn128_N9S19905C18D0Ev,_ZThn68_N9S19905C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C18D1Ev,_ZTv0_n12_N9S19905C18D1Ev)();
extern void ABISELECT(_ZThn192_N9S19905C18D1Ev,_ZThn104_N9S19905C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C18D0Ev,_ZTv0_n12_N9S19905C18D0Ev)();
extern void ABISELECT(_ZThn192_N9S19905C18D0Ev,_ZThn104_N9S19905C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19905C18[] = {
  0,
  ABISELECT(192,104),
  ABISELECT(128,68),
  ABISELECT(128,68),
  0,
  (VTBL_ENTRY)&(_ZTI9S19905C18[0]),
  (VTBL_ENTRY)&_ZN9S19905C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19905C18D0Ev,
  ABISELECT(112,64),
  ABISELECT(-16,-4),
  ABISELECT(176,100),
  ABISELECT(112,64),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI9S19905C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C18D1Ev,_ZTv0_n12_N9S19905C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C18D0Ev,_ZTv0_n12_N9S19905C18D0Ev),
  ABISELECT(160,92),
  ABISELECT(96,56),
  ABISELECT(96,56),
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI9S19905C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19905C18D1Ev,_ZThn12_N9S19905C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19905C18D0Ev,_ZThn12_N9S19905C18D0Ev),
  ABISELECT(80,48),
  ABISELECT(-48,-20),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI9S19905C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C18D1Ev,_ZTv0_n12_N9S19905C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C18D0Ev,_ZTv0_n12_N9S19905C18D0Ev),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S19905C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S19905C18D1Ev,_ZThn52_N9S19905C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S19905C18D0Ev,_ZThn52_N9S19905C18D0Ev),
  ABISELECT(64,36),
  0,
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI9S19905C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C18D1Ev,_ZTv0_n12_N9S19905C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C18D0Ev,_ZTv0_n12_N9S19905C18D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI9S19905C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C18D1Ev,_ZTv0_n12_N9S19905C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C18D0Ev,_ZTv0_n12_N9S19905C18D0Ev),
};
extern VTBL_ENTRY _ZTV9S19905C18[];
extern void ABISELECT(_ZTv0_n24_N9S19905C20D1Ev,_ZTv0_n12_N9S19905C20D1Ev)();
extern void _ZN9S19905C20D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C20D0Ev,_ZTv0_n12_N9S19905C20D0Ev)();
extern void _ZN9S19905C20D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C20__9S19905C18[] = {
  ABISELECT(112,64),
  ABISELECT(-16,-4),
  ABISELECT(176,100),
  ABISELECT(112,64),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19905C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C20D1Ev,_ZTv0_n12_N9S19905C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C20D0Ev,_ZTv0_n12_N9S19905C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void _ZN8S19905C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
extern void _ZN8S19905C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C69S19905C20__A1__9S19905C18[] = {
  ABISELECT(176,100),
  ABISELECT(112,64),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void ABISELECT(_ZThn112_N8S19905C6D1Ev,_ZThn64_N8S19905C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
extern void ABISELECT(_ZThn112_N8S19905C6D0Ev,_ZThn64_N8S19905C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C69S19905C20__A1__9S19905C18[] = {
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void ABISELECT(_ZThn176_N8S19905C6D1Ev,_ZThn100_N8S19905C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
extern void ABISELECT(_ZThn176_N8S19905C6D0Ev,_ZThn100_N8S19905C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C69S19905C20__A1__9S19905C18[] = {
  ABISELECT(-64,-36),
  ABISELECT(-176,-100),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void _ZN8S19905C3D1Ev();
extern void _ZN8S19905C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19905C39S19905C20__9S19905C18[] = {
  ABISELECT(160,92),
  ABISELECT(96,56),
  ABISELECT(96,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C3[0]),
  (VTBL_ENTRY)&_ZN8S19905C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19905C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void _ZN8S19905C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
extern void _ZN8S19905C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C78S19905C39S19905C20__A1__9S19905C18[] = {
  ABISELECT(80,48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void ABISELECT(_ZThn80_N8S19905C7D1Ev,_ZThn48_N8S19905C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
extern void ABISELECT(_ZThn80_N8S19905C7D0Ev,_ZThn48_N8S19905C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C78S19905C39S19905C20__A1__9S19905C18[] = {
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev)();
extern void ABISELECT(_ZThn96_N8S19905C3D1Ev,_ZThn56_N8S19905C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev)();
extern void ABISELECT(_ZThn96_N8S19905C3D0Ev,_ZThn56_N8S19905C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C4__8S19905C39S19905C20__9S19905C18[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S19905C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev)();
extern void ABISELECT(_ZThn160_N8S19905C3D1Ev,_ZThn92_N8S19905C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev)();
extern void ABISELECT(_ZThn160_N8S19905C3D0Ev,_ZThn92_N8S19905C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C39S19905C20__9S19905C18[] = {
  ABISELECT(-64,-36),
  ABISELECT(-160,-92),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI8S19905C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S19905C3D1Ev,_ZThn8_N8S19905C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S19905C3D0Ev,_ZThn8_N8S19905C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__A__8S19905C39S19905C20__9S19905C18[] = {
  ABISELECT(80,48),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19905C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C20D1Ev,_ZTv0_n12_N9S19905C20D1Ev)();
extern void ABISELECT(_ZThn112_N9S19905C20D1Ev,_ZThn64_N9S19905C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C20D0Ev,_ZTv0_n12_N9S19905C20D0Ev)();
extern void ABISELECT(_ZThn112_N9S19905C20D0Ev,_ZThn64_N9S19905C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C4__9S19905C20__9S19905C18[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S19905C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C20D1Ev,_ZTv0_n12_N9S19905C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C20D0Ev,_ZTv0_n12_N9S19905C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C20D1Ev,_ZTv0_n12_N9S19905C20D1Ev)();
extern void ABISELECT(_ZThn176_N9S19905C20D1Ev,_ZThn100_N9S19905C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C20D0Ev,_ZTv0_n12_N9S19905C20D0Ev)();
extern void ABISELECT(_ZThn176_N9S19905C20D0Ev,_ZThn100_N9S19905C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__9S19905C20__9S19905C18[] = {
  ABISELECT(-64,-36),
  ABISELECT(-176,-100),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI9S19905C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C20D1Ev,_ZTv0_n12_N9S19905C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C20D0Ev,_ZTv0_n12_N9S19905C20D0Ev),
};
extern void ABISELECT(_ZThn16_N9S19905C20D1Ev,_ZThn8_N9S19905C20D1Ev)();
extern void ABISELECT(_ZThn16_N9S19905C20D0Ev,_ZThn8_N9S19905C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C3__9S19905C20__9S19905C18[] = {
  ABISELECT(160,92),
  ABISELECT(96,56),
  ABISELECT(96,56),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19905C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19905C20D1Ev,_ZThn8_N9S19905C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19905C20D0Ev,_ZThn8_N9S19905C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C20D1Ev,_ZTv0_n12_N9S19905C20D1Ev)();
extern void ABISELECT(_ZThn32_N9S19905C20D1Ev,_ZThn16_N9S19905C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C20D0Ev,_ZTv0_n12_N9S19905C20D0Ev)();
extern void ABISELECT(_ZThn32_N9S19905C20D0Ev,_ZThn16_N9S19905C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C78S19905C3__A1__9S19905C20__9S19905C18[] = {
  ABISELECT(80,48),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19905C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C20D1Ev,_ZTv0_n12_N9S19905C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C20D0Ev,_ZTv0_n12_N9S19905C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev)();
extern void _ZN8S19905C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev)();
extern void _ZN8S19905C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C4__9S19905C18[] = {
  ABISELECT(64,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void _ZN8S19905C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
extern void _ZN8S19905C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C68S19905C4__9S19905C18[] = {
  ABISELECT(64,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void ABISELECT(_ZThn64_N8S19905C6D1Ev,_ZThn36_N8S19905C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
extern void ABISELECT(_ZThn64_N8S19905C6D0Ev,_ZThn36_N8S19905C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C68S19905C4__9S19905C18[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev)();
extern void ABISELECT(_ZThn64_N8S19905C4D1Ev,_ZThn36_N8S19905C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev)();
extern void ABISELECT(_ZThn64_N8S19905C4D0Ev,_ZThn36_N8S19905C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C4__9S19905C18[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void _ZN8S19905C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
extern void _ZN8S19905C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__9S19905C18[] = {
  ABISELECT(-64,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C7__9S19905C18[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
static  VTT_ENTRY vtt_S19905C18[] = {
  {&(_ZTV9S19905C18[6]),  6,47},
  {&(_tg__ZTV9S19905C20__9S19905C18[7]),  7,9},
  {&(_tg__ZTV8S19905C69S19905C20__A1__9S19905C18[5]),  5,7},
  {&(_tg__ZTV11S19905C5_nt__8S19905C69S19905C20__A1__9S19905C18[3]),  3,5},
  {&(_tg__ZTV8S19905C7__8S19905C69S19905C20__A1__9S19905C18[4]),  4,6},
  {&(_tg__ZTV8S19905C39S19905C20__9S19905C18[5]),  5,7},
  {&(_tg__ZTV8S19905C78S19905C39S19905C20__A1__9S19905C18[4]),  4,6},
  {&(_tg__ZTV11S19905C5_nt__8S19905C78S19905C39S19905C20__A1__9S19905C18[3]),  3,5},
  {&(_tg__ZTV8S19905C4__8S19905C39S19905C20__9S19905C18[5]),  5,7},
  {&(_tg__ZTV8S19905C4__8S19905C39S19905C20__9S19905C18[5]),  5,7},
  {&(_tg__ZTV8S19905C7__8S19905C39S19905C20__9S19905C18[4]),  4,6},
  {&(_tg__ZTV8S19905C7__A__8S19905C39S19905C20__9S19905C18[4]),  4,6},
  {&(_tg__ZTV8S19905C4__9S19905C20__9S19905C18[5]),  5,7},
  {&(_tg__ZTV8S19905C7__9S19905C20__9S19905C18[4]),  4,6},
  {&(_tg__ZTV8S19905C3__9S19905C20__9S19905C18[5]),  5,7},
  {&(_tg__ZTV8S19905C4__9S19905C20__9S19905C18[5]),  5,7},
  {&(_tg__ZTV8S19905C78S19905C3__A1__9S19905C20__9S19905C18[4]),  4,6},
  {&(_ZTV9S19905C18[39]),  39,47},
  {&(_ZTV9S19905C18[39]),  39,47},
  {&(_ZTV9S19905C18[45]),  45,47},
  {&(_ZTV9S19905C18[15]),  15,47},
  {&(_ZTV9S19905C18[22]),  22,47},
  {&(_ZTV9S19905C18[28]),  28,47},
  {&(_tg__ZTV8S19905C4__9S19905C18[5]),  5,7},
  {&(_tg__ZTV8S19905C68S19905C4__9S19905C18[5]),  5,7},
  {&(_tg__ZTV8S19905C68S19905C4__9S19905C18[5]),  5,7},
  {&(_tg__ZTV8S19905C7__8S19905C68S19905C4__9S19905C18[4]),  4,6},
  {&(_tg__ZTV8S19905C4__9S19905C18[5]),  5,7},
  {&(_tg__ZTV8S19905C7__8S19905C4__9S19905C18[4]),  4,6},
  {&(_tg__ZTV8S19905C7__9S19905C18[4]),  4,6},
  {&(_tg__ZTV11S19905C5_nt__8S19905C7__9S19905C18[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19905C18[];
extern  VTBL_ENTRY _ZTV9S19905C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19905C18[];
static VTBL_ENTRY alt_thunk_names12[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19905C4D0Ev,_ZThn36_N8S19905C4D0Ev),
  (VTBL_ENTRY)_ZN8S19905C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19905C4D1Ev,_ZThn36_N8S19905C4D1Ev),
  (VTBL_ENTRY)_ZN8S19905C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19905C3D0Ev,_ZThn8_N8S19905C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19905C3D0Ev,_ZThn92_N8S19905C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19905C3D0Ev,_ZThn56_N8S19905C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19905C3D1Ev,_ZThn8_N8S19905C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19905C3D1Ev,_ZThn92_N8S19905C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19905C3D1Ev,_ZThn56_N8S19905C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S19905C7D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19905C7D0Ev,_ZThn48_N8S19905C7D0Ev),
  (VTBL_ENTRY)_ZN8S19905C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S19905C7D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19905C7D1Ev,_ZThn48_N8S19905C7D1Ev),
  (VTBL_ENTRY)_ZN8S19905C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19905C6D0Ev,_ZThn36_N8S19905C6D0Ev),
  (VTBL_ENTRY)_ZN8S19905C6D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19905C6D0Ev,_ZThn100_N8S19905C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19905C6D0Ev,_ZThn64_N8S19905C6D0Ev),
  (VTBL_ENTRY)_ZN8S19905C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19905C6D1Ev,_ZThn36_N8S19905C6D1Ev),
  (VTBL_ENTRY)_ZN8S19905C6D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19905C6D1Ev,_ZThn100_N8S19905C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19905C6D1Ev,_ZThn64_N8S19905C6D1Ev),
  (VTBL_ENTRY)_ZN8S19905C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C20D0Ev,_ZTv0_n12_N9S19905C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19905C20D0Ev,_ZThn16_N9S19905C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S19905C20D0Ev,_ZThn100_N9S19905C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19905C20D0Ev,_ZThn64_N9S19905C20D0Ev),
  (VTBL_ENTRY)_ZN9S19905C20D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C20D1Ev,_ZTv0_n12_N9S19905C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19905C20D1Ev,_ZThn16_N9S19905C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S19905C20D1Ev,_ZThn100_N9S19905C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19905C20D1Ev,_ZThn64_N9S19905C20D1Ev),
  (VTBL_ENTRY)_ZN9S19905C20D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C18D0Ev,_ZTv0_n12_N9S19905C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19905C18D0Ev,_ZThn104_N9S19905C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19905C18D0Ev,_ZThn68_N9S19905C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19905C18D0Ev,_ZThn20_N9S19905C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19905C18D0Ev,_ZThn4_N9S19905C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C18D1Ev,_ZTv0_n12_N9S19905C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19905C18D1Ev,_ZThn104_N9S19905C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19905C18D1Ev,_ZThn68_N9S19905C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19905C18D1Ev,_ZThn20_N9S19905C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19905C18D1Ev,_ZThn4_N9S19905C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19905C18 = {  "S19905C18", // class name
  bases_S19905C18, 15,
  &(vtc_S19905C18[0]), // expected_vtbl_contents
  &(vtt_S19905C18[0]), // expected_vtt_contents
  ABISELECT(240,132), // object size
  NSPAIRA(_ZTI9S19905C18),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19905C18),47, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19905C18),31, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names12,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19905C1  : virtual S5266C29 , virtual S19905C3 , S19905C9 , virtual S19905C18 {
  int s19905c1f0;
  virtual  ~S19905C1(); // _ZN8S19905C1D2Ev
  S19905C1(); // tgen
};
//SIG(1 S19905C1) C1{ VBC2{ m} VBC3{ VBC4{ VBC5{ vd m} BC6{ VBC5 VBC7{ VBC5 FD Fc Fs[4]} vd Fi} BC8{ m Fp} vd Fs FL Fp FL} BC8 BC5 BC7 vd Fi} BC9{ VBC5 VBC10{ VBC7 VBC6 VBC11{ m} VBC12{ VBC2 VBC3 BC7 vd Fs} BC4 vd FC3 Fi Fs} VBC8 VBC13{ VBC11 BC14{ VBC7 VBC15{ VBC5 BC7 VBC12 BC4 Fp} VBC8 BC16{ BC11 VBC4 BC8 VBC2 vd FC6 Fs} vd Fi FC17{}} BC2 vd} BC11} VBC18{ VBC4 BC19{ vd m} BC20{ VBC2 BC6 BC3 BC5 BC8 Fp[2]} vd} vd Fi}


 S19905C1 ::~S19905C1(){ note_dtor("S19905C1", this);}
S19905C1 ::S19905C1(){ note_ctor("S19905C1", this);} // tgen

static void Test_S19905C1()
{
  extern Class_Descriptor cd_S19905C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(55,124)];
    init_test(&cd_S19905C1, buf);
    S19905C1 *dp, &lv = *(dp=new (buf) S19905C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(864,492), "sizeof(S19905C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19905C1)");
    /*is_ambiguous_... S19905C1::S5266C29 */ AMB_check_base_class_offset(lv, (S5266C29*), 0, "S19905C1");
    check_base_class_offset(lv, (S5266C29*)(S19905C12*), 0, "S19905C1");
    check_base_class_offset(lv, (S5266C29*)(S19905C16*)(S19905C14*)(S19905C13*), 0, "S19905C1");
    check_base_class_offset(lv, (S5266C29*)(S19905C20*)(S19905C18*), 0, "S19905C1");
    /*is_ambiguous_... S19905C1::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C4*), ABISELECT(80,48), "S19905C1");
    /*is_ambiguous_... S19905C1::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C6*)(S19905C4*), ABISELECT(80,48), "S19905C1");
    /*is_ambiguous_... S19905C1::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C7*), ABISELECT(80,48), "S19905C1");
    /*is_ambiguous_... S19905C1::S19905C3 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C7*)(S19905C3*), ABISELECT(80,48), "S19905C1");
    /*is_ambiguous_... S19905C9::S19905C5_nt */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C9*), ABISELECT(80,48), "S19905C1");
    /*is_ambiguous_... S19905C1::S19905C6 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C6*), ABISELECT(80,48), "S19905C1");
    /*is_ambiguous_... S19905C12::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C7*)(S19905C12*), ABISELECT(80,48), "S19905C1");
    /*is_ambiguous_... S19905C10::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C4*)(S19905C10*), ABISELECT(80,48), "S19905C1");
    /*is_ambiguous_... S19905C10::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C6*)(S19905C4*)(S19905C10*), ABISELECT(80,48), "S19905C1");
    /*is_ambiguous_... S19905C15::S19905C5_nt */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C15*), ABISELECT(80,48), "S19905C1");
    /*is_ambiguous_... S19905C15::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C7*)(S19905C15*), ABISELECT(80,48), "S19905C1");
    /*is_ambiguous_... S19905C15::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C4*)(S19905C15*), ABISELECT(80,48), "S19905C1");
    /*is_ambiguous_... S19905C15::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C6*)(S19905C4*)(S19905C15*), ABISELECT(80,48), "S19905C1");
    /*is_ambiguous_... S19905C20::S19905C6 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C6*)(S19905C20*)(S19905C18*), ABISELECT(80,48), "S19905C1");
    /*is_ambiguous_... S19905C3::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C7*)(S19905C3*)(S19905C20*)(S19905C18*), ABISELECT(80,48), "S19905C1");
    /*is_ambiguous_... S19905C1::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C7*)(S19905C6*)(S19905C4*), ABISELECT(144,84), "S19905C1");
    /*is_ambiguous_... S19905C10::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C7*)(S19905C10*), ABISELECT(144,84), "S19905C1");
    /*is_ambiguous_... S19905C1::S19905C6 */ AMB_check_base_class_offset(lv, (S19905C7*)(S19905C6*), ABISELECT(144,84), "S19905C1");
    /*is_ambiguous_... S19905C10::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C7*)(S19905C6*)(S19905C4*)(S19905C10*), ABISELECT(144,84), "S19905C1");
    /*is_ambiguous_... S19905C14::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C7*)(S19905C14*)(S19905C13*), ABISELECT(144,84), "S19905C1");
    /*is_ambiguous_... S19905C15::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C7*)(S19905C6*)(S19905C4*)(S19905C15*), ABISELECT(144,84), "S19905C1");
    /*is_ambiguous_... S19905C20::S19905C6 */ AMB_check_base_class_offset(lv, (S19905C7*)(S19905C6*)(S19905C20*)(S19905C18*), ABISELECT(144,84), "S19905C1");
    /*is_ambiguous_... S19905C1::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C6*)(S19905C4*), ABISELECT(80,48), "S19905C1");
    /*is_ambiguous_... S19905C1::S19905C4 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S19905C4*), ABISELECT(96,56), "S19905C1");
    /*is_ambiguous_... S19905C1::S19905C3 */ AMB_check_base_class_offset(lv, (S19905C4*)(S19905C3*), ABISELECT(80,48), "S19905C1");
    check_base_class_offset(lv, (S19905C4*)(S19905C16*)(S19905C14*)(S19905C13*), ABISELECT(80,48), "S19905C1");
    check_base_class_offset(lv, (S19905C4*)(S19905C18*), ABISELECT(80,48), "S19905C1");
    check_base_class_offset(lv, (S19905C4*)(S19905C3*)(S19905C20*)(S19905C18*), ABISELECT(80,48), "S19905C1");
    /*is_ambiguous_... S19905C1::S19905C3 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S19905C3*), ABISELECT(24,12), "S19905C1");
    /*is_ambiguous_... S19905C1::S19905C3 */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C3*), ABISELECT(16,8), "S19905C1");
    /*is_ambiguous_... S19905C1::S19905C3 */ AMB_check_base_class_offset(lv, (S19905C7*)(S19905C3*), ABISELECT(32,16), "S19905C1");
    /*is_ambiguous_... S19905C1::S19905C3 */ AMB_check_base_class_offset(lv, (S19905C3*), ABISELECT(16,8), "S19905C1");
    check_base_class_offset(lv, (S19905C3*)(S19905C12*), ABISELECT(16,8), "S19905C1");
    /*is_ambiguous_... S19905C10::S19905C6 */ AMB_check_base_class_offset(lv, (S19905C6*)(S19905C10*), ABISELECT(440,260), "S19905C1");
    check_base_class_offset(lv, (S5266C26*)(S19905C10*), ABISELECT(452,268), "S19905C1");
    /*is_ambiguous_... S19905C13::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*)(S19905C13*), ABISELECT(452,268), "S19905C1");
    /*is_ambiguous_... S19905C12::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C7*)(S19905C12*), ABISELECT(464,268), "S19905C1");
    check_base_class_offset(lv, (S19905C12*)(S19905C10*), ABISELECT(464,268), "S19905C1");
    check_base_class_offset(lv, (S19905C12*)(S19905C15*), ABISELECT(464,268), "S19905C1");
    /*is_ambiguous_... S19905C10::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C6*)(S19905C4*)(S19905C10*), ABISELECT(192,112), "S19905C1");
    /*is_ambiguous_... S19905C10::S19905C4 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S19905C4*)(S19905C10*), ABISELECT(208,120), "S19905C1");
    /*is_ambiguous_... S19905C10::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C4*)(S19905C10*), ABISELECT(192,112), "S19905C1");
    check_base_class_offset(lv, (S19905C10*)(S19905C9*), ABISELECT(192,112), "S19905C1");
    /*is_ambiguous_... S19905C9::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S19905C9*), ABISELECT(512,296), "S19905C1");
    /*is_ambiguous_... S19905C14::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S19905C14*)(S19905C13*), ABISELECT(512,296), "S19905C1");
    /*is_ambiguous_... S19905C15::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C7*)(S19905C15*), ABISELECT(624,356), "S19905C1");
    /*is_ambiguous_... S19905C15::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C6*)(S19905C4*)(S19905C15*), ABISELECT(672,384), "S19905C1");
    /*is_ambiguous_... S19905C15::S19905C4 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S19905C4*)(S19905C15*), ABISELECT(688,392), "S19905C1");
    /*is_ambiguous_... S19905C15::S19905C4 */ AMB_check_base_class_offset(lv, (S19905C4*)(S19905C15*), ABISELECT(672,384), "S19905C1");
    check_base_class_offset(lv, (S19905C15*)(S19905C14*)(S19905C13*), ABISELECT(624,356), "S19905C1");
    check_base_class_offset(lv, (S5266C26*)(S19905C16*)(S19905C14*)(S19905C13*), ABISELECT(528,300), "S19905C1");
    /*is_ambiguous_... S19905C16::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S19905C16*)(S19905C14*)(S19905C13*), ABISELECT(536,304), "S19905C1");
    check_base_class_offset(lv, (S19905C16*)(S19905C14*)(S19905C13*), ABISELECT(528,300), "S19905C1");
    check_base_class_offset(lv, (S19905C14*)(S19905C13*), ABISELECT(528,300), "S19905C1");
    /*is_ambiguous_... S19905C13::S5266C29 */ AMB_check_base_class_offset(lv, (S5266C29*)(S19905C13*), ABISELECT(528,300), "S19905C1");
    check_base_class_offset(lv, (S19905C13*)(S19905C9*), ABISELECT(528,300), "S19905C1");
    /*is_ambiguous_... S19905C9::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*)(S19905C9*), 0, "S19905C1");
    check_base_class_offset(lv, (S19905C9*), 0, "S19905C1");
    check_base_class_offset(lv, (S19905C19*)(S19905C18*), ABISELECT(736,424), "S19905C1");
    /*is_ambiguous_... S19905C20::S19905C6 */ AMB_check_base_class_offset(lv, (S19905C6*)(S19905C20*)(S19905C18*), ABISELECT(752,428), "S19905C1");
    /*is_ambiguous_... S19905C3::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S19905C3*)(S19905C20*)(S19905C18*), ABISELECT(776,440), "S19905C1");
    /*is_ambiguous_... S19905C3::S19905C5_nt */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C3*)(S19905C20*)(S19905C18*), ABISELECT(768,436), "S19905C1");
    /*is_ambiguous_... S19905C3::S19905C7 */ AMB_check_base_class_offset(lv, (S19905C7*)(S19905C3*)(S19905C20*)(S19905C18*), ABISELECT(784,444), "S19905C1");
    check_base_class_offset(lv, (S19905C3*)(S19905C20*)(S19905C18*), ABISELECT(768,436), "S19905C1");
    /*is_ambiguous_... S19905C20::S19905C5_nt */ AMB_check_base_class_offset(lv, (S19905C5_nt*)(S19905C20*)(S19905C18*), ABISELECT(832,476), "S19905C1");
    /*is_ambiguous_... S19905C20::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S19905C20*)(S19905C18*), ABISELECT(840,480), "S19905C1");
    check_base_class_offset(lv, (S19905C20*)(S19905C18*), ABISELECT(752,428), "S19905C1");
    check_base_class_offset(lv, (S19905C18*), ABISELECT(736,424), "S19905C1");
    check_field_offset(lv, s19905c1f0, ABISELECT(8,4), "S19905C1.s19905c1f0");
    test_class_info(&lv, &cd_S19905C1);
    dp->~S19905C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19905C1(Test_S19905C1, "S19905C1", ABISELECT(864,492));

#else // __cplusplus

extern void _ZN8S19905C1C1Ev();
extern void _ZN8S19905C1D2Ev();
Name_Map name_map_S19905C1[] = {
  NSPAIR(_ZN8S19905C1C1Ev),
  NSPAIR(_ZN8S19905C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S19905C5_nt;
extern VTBL_ENTRY _ZTI11S19905C5_nt[];
extern  VTBL_ENTRY _ZTV11S19905C5_nt[];
extern Class_Descriptor cd_S19905C7;
extern VTBL_ENTRY _ZTI8S19905C7[];
extern  VTBL_ENTRY _ZTV8S19905C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C7[];
extern Class_Descriptor cd_S19905C6;
extern VTBL_ENTRY _ZTI8S19905C6[];
extern  VTBL_ENTRY _ZTV8S19905C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C6[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C4;
extern VTBL_ENTRY _ZTI8S19905C4[];
extern  VTBL_ENTRY _ZTV8S19905C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C4[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C5_nt;
extern VTBL_ENTRY _ZTI11S19905C5_nt[];
extern  VTBL_ENTRY _ZTV11S19905C5_nt[];
extern Class_Descriptor cd_S19905C7;
extern VTBL_ENTRY _ZTI8S19905C7[];
extern  VTBL_ENTRY _ZTV8S19905C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C7[];
extern Class_Descriptor cd_S19905C3;
extern VTBL_ENTRY _ZTI8S19905C3[];
extern  VTBL_ENTRY _ZTV8S19905C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C3[];
extern Class_Descriptor cd_S19905C6;
extern VTBL_ENTRY _ZTI8S19905C6[];
extern  VTBL_ENTRY _ZTV8S19905C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C6[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S19905C7;
extern VTBL_ENTRY _ZTI8S19905C7[];
extern  VTBL_ENTRY _ZTV8S19905C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C7[];
extern Class_Descriptor cd_S19905C12;
extern VTBL_ENTRY _ZTI9S19905C12[];
extern  VTBL_ENTRY _ZTV9S19905C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19905C12[];
extern Class_Descriptor cd_S19905C6;
extern VTBL_ENTRY _ZTI8S19905C6[];
extern  VTBL_ENTRY _ZTV8S19905C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C6[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C4;
extern VTBL_ENTRY _ZTI8S19905C4[];
extern  VTBL_ENTRY _ZTV8S19905C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C4[];
extern Class_Descriptor cd_S19905C10;
extern VTBL_ENTRY _ZTI9S19905C10[];
extern  VTBL_ENTRY _ZTV9S19905C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19905C10[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C7;
extern VTBL_ENTRY _ZTI8S19905C7[];
extern  VTBL_ENTRY _ZTV8S19905C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C7[];
extern Class_Descriptor cd_S19905C6;
extern VTBL_ENTRY _ZTI8S19905C6[];
extern  VTBL_ENTRY _ZTV8S19905C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C6[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C4;
extern VTBL_ENTRY _ZTI8S19905C4[];
extern  VTBL_ENTRY _ZTV8S19905C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C4[];
extern Class_Descriptor cd_S19905C15;
extern VTBL_ENTRY _ZTI9S19905C15[];
extern  VTBL_ENTRY _ZTV9S19905C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19905C15[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C16;
extern VTBL_ENTRY _ZTI9S19905C16[];
extern  VTBL_ENTRY _ZTV9S19905C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19905C16[];
extern Class_Descriptor cd_S19905C14;
extern VTBL_ENTRY _ZTI9S19905C14[];
extern  VTBL_ENTRY _ZTV9S19905C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19905C14[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S19905C13;
extern VTBL_ENTRY _ZTI9S19905C13[];
extern  VTBL_ENTRY _ZTV9S19905C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19905C13[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S19905C9;
extern VTBL_ENTRY _ZTI8S19905C9[];
extern  VTBL_ENTRY _ZTV8S19905C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C9[];
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S19905C6;
extern VTBL_ENTRY _ZTI8S19905C6[];
extern  VTBL_ENTRY _ZTV8S19905C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C6[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C5_nt;
extern VTBL_ENTRY _ZTI11S19905C5_nt[];
extern  VTBL_ENTRY _ZTV11S19905C5_nt[];
extern Class_Descriptor cd_S19905C7;
extern VTBL_ENTRY _ZTI8S19905C7[];
extern  VTBL_ENTRY _ZTV8S19905C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C7[];
extern Class_Descriptor cd_S19905C3;
extern VTBL_ENTRY _ZTI8S19905C3[];
extern  VTBL_ENTRY _ZTV8S19905C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C3[];
extern Class_Descriptor cd_S19905C5_nt;
extern VTBL_ENTRY _ZTI11S19905C5_nt[];
extern  VTBL_ENTRY _ZTV11S19905C5_nt[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C20;
extern VTBL_ENTRY _ZTI9S19905C20[];
extern  VTBL_ENTRY _ZTV9S19905C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19905C20[];
extern Class_Descriptor cd_S19905C18;
extern VTBL_ENTRY _ZTI9S19905C18[];
extern  VTBL_ENTRY _ZTV9S19905C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19905C18[];
static Base_Class bases_S19905C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19905C5_nt,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19905C7,    ABISELECT(144,84), //bcp->offset
    39, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19905C6,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19905C4,    ABISELECT(80,48), //bcp->offset
    32, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S17777C6_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19905C5_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19905C7,    ABISELECT(32,16), //bcp->offset
    26, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19905C3,    ABISELECT(16,8), //bcp->offset
    18, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19905C6,    ABISELECT(440,260), //bcp->offset
    58, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S5266C26,    ABISELECT(452,268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19905C7,    ABISELECT(464,268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19905C12,    ABISELECT(464,268), //bcp->offset
    65, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19905C6,    ABISELECT(192,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(208,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19905C4,    ABISELECT(192,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19905C10,    ABISELECT(192,112), //bcp->offset
    45, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S17777C6_nt,    ABISELECT(512,296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S19905C7,    ABISELECT(624,356), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    93, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19905C6,    ABISELECT(672,384), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(688,392), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19905C4,    ABISELECT(672,384), //bcp->offset
    100, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    95, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19905C15,    ABISELECT(624,356), //bcp->offset
    89, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S5266C26,    ABISELECT(528,300), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(536,304), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19905C16,    ABISELECT(528,300), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19905C14,    ABISELECT(528,300), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S5266C29,    ABISELECT(528,300), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19905C13,    ABISELECT(528,300), //bcp->offset
    75, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19905C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19905C19,    ABISELECT(736,424), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S19905C6,    ABISELECT(752,428), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    110, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(776,440), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19905C5_nt,    ABISELECT(768,436), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19905C7,    ABISELECT(784,444), //bcp->offset
    132, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    114, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19905C3,    ABISELECT(768,436), //bcp->offset
    125, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    113, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S19905C5_nt,    ABISELECT(832,476), //bcp->offset
    138, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(840,480), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S19905C20,    ABISELECT(752,428), //bcp->offset
    116, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    109, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S19905C18,    ABISELECT(736,424), //bcp->offset
    107, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    108, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19905C1[];
extern void ABISELECT(_ZTv0_n24_N8S19905C1D1Ev,_ZTv0_n12_N8S19905C1D1Ev)();
extern void _ZN8S19905C1D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C1D0Ev,_ZTv0_n12_N8S19905C1D0Ev)();
extern void _ZN8S19905C1D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19905C1D1Ev,_ZTv0_n24_N8S19905C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S19905C1D1Ev,_ZThn8_N8S19905C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19905C1D0Ev,_ZTv0_n24_N8S19905C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S19905C1D0Ev,_ZThn8_N8S19905C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C1D1Ev,_ZTv0_n12_N8S19905C1D1Ev)();
extern void ABISELECT(_ZThn32_N8S19905C1D1Ev,_ZThn16_N8S19905C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C1D0Ev,_ZTv0_n12_N8S19905C1D0Ev)();
extern void ABISELECT(_ZThn32_N8S19905C1D0Ev,_ZThn16_N8S19905C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C1D1Ev,_ZTv0_n12_N8S19905C1D1Ev)();
extern void ABISELECT(_ZThn80_N8S19905C1D1Ev,_ZThn48_N8S19905C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C1D0Ev,_ZTv0_n12_N8S19905C1D0Ev)();
extern void ABISELECT(_ZThn80_N8S19905C1D0Ev,_ZThn48_N8S19905C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C1D1Ev,_ZTv0_n12_N8S19905C1D1Ev)();
extern void ABISELECT(_ZThn144_N8S19905C1D1Ev,_ZThn84_N8S19905C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C1D0Ev,_ZTv0_n12_N8S19905C1D0Ev)();
extern void ABISELECT(_ZThn144_N8S19905C1D0Ev,_ZThn84_N8S19905C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C1D1Ev,_ZTv0_n12_N8S19905C1D1Ev)();
extern void ABISELECT(_ZThn192_N8S19905C1D1Ev,_ZThn112_N8S19905C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C1D0Ev,_ZTv0_n12_N8S19905C1D0Ev)();
extern void ABISELECT(_ZThn192_N8S19905C1D0Ev,_ZThn112_N8S19905C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C1D1Ev,_ZTv0_n12_N8S19905C1D1Ev)();
extern void ABISELECT(_ZThn440_N8S19905C1D1Ev,_ZThn260_N8S19905C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C1D0Ev,_ZTv0_n12_N8S19905C1D0Ev)();
extern void ABISELECT(_ZThn440_N8S19905C1D0Ev,_ZThn260_N8S19905C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C1D1Ev,_ZTv0_n12_N8S19905C1D1Ev)();
extern void ABISELECT(_ZThn464_N8S19905C1D1Ev,_ZThn268_N8S19905C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C1D0Ev,_ZTv0_n12_N8S19905C1D0Ev)();
extern void ABISELECT(_ZThn464_N8S19905C1D0Ev,_ZThn268_N8S19905C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C1D1Ev,_ZTv0_n12_N8S19905C1D1Ev)();
extern void ABISELECT(_ZThn528_N8S19905C1D1Ev,_ZThn300_N8S19905C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C1D0Ev,_ZTv0_n12_N8S19905C1D0Ev)();
extern void ABISELECT(_ZThn528_N8S19905C1D0Ev,_ZThn300_N8S19905C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C1D1Ev,_ZTv0_n12_N8S19905C1D1Ev)();
extern void ABISELECT(_ZThn624_N8S19905C1D1Ev,_ZThn356_N8S19905C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C1D0Ev,_ZTv0_n12_N8S19905C1D0Ev)();
extern void ABISELECT(_ZThn624_N8S19905C1D0Ev,_ZThn356_N8S19905C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C1D1Ev,_ZTv0_n12_N8S19905C1D1Ev)();
extern void ABISELECT(_ZThn672_N8S19905C1D1Ev,_ZThn384_N8S19905C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C1D0Ev,_ZTv0_n12_N8S19905C1D0Ev)();
extern void ABISELECT(_ZThn672_N8S19905C1D0Ev,_ZThn384_N8S19905C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19905C1D1Ev,_ZTv0_n28_N8S19905C1D1Ev)();
extern void ABISELECT(_ZThn736_N8S19905C1D1Ev,_ZThn424_N8S19905C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19905C1D0Ev,_ZTv0_n28_N8S19905C1D0Ev)();
extern void ABISELECT(_ZThn736_N8S19905C1D0Ev,_ZThn424_N8S19905C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C1D1Ev,_ZTv0_n12_N8S19905C1D1Ev)();
extern void ABISELECT(_ZThn752_N8S19905C1D1Ev,_ZThn428_N8S19905C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C1D0Ev,_ZTv0_n12_N8S19905C1D0Ev)();
extern void ABISELECT(_ZThn752_N8S19905C1D0Ev,_ZThn428_N8S19905C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n56_N8S19905C1D1Ev,_ZTvn12_n28_N8S19905C1D1Ev)();
extern void ABISELECT(_ZTvn32_n56_N8S19905C1D0Ev,_ZTvn12_n28_N8S19905C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C1D1Ev,_ZTv0_n12_N8S19905C1D1Ev)();
extern void ABISELECT(_ZThn784_N8S19905C1D1Ev,_ZThn444_N8S19905C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C1D0Ev,_ZTv0_n12_N8S19905C1D0Ev)();
extern void ABISELECT(_ZThn784_N8S19905C1D0Ev,_ZThn444_N8S19905C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn96_n56_N8S19905C1D1Ev,_ZTvn52_n28_N8S19905C1D1Ev)();
extern void ABISELECT(_ZTvn96_n56_N8S19905C1D0Ev,_ZTvn52_n28_N8S19905C1D0Ev)();
static  VTBL_ENTRY vtc_S19905C1[] = {
  ABISELECT(736,424),
  ABISELECT(624,356),
  ABISELECT(528,300),
  ABISELECT(512,296),
  ABISELECT(80,48),
  ABISELECT(16,8),
  0,
  ABISELECT(464,268),
  ABISELECT(452,268),
  ABISELECT(440,260),
  ABISELECT(144,84),
  ABISELECT(192,112),
  ABISELECT(80,48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C1D1Ev,_ZTv0_n12_N8S19905C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C1D0Ev,_ZTv0_n12_N8S19905C1D0Ev),
  ABISELECT(-16,-8),
  ABISELECT(128,76),
  ABISELECT(64,40),
  ABISELECT(64,40),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19905C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19905C1D1Ev,_ZTv0_n24_N8S19905C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19905C1D0Ev,_ZTv0_n24_N8S19905C1D0Ev),
  ABISELECT(48,32),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19905C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C1D1Ev,_ZTv0_n12_N8S19905C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C1D0Ev,_ZTv0_n12_N8S19905C1D0Ev),
  ABISELECT(64,36),
  0,
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S19905C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C1D1Ev,_ZTv0_n12_N8S19905C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C1D0Ev,_ZTv0_n12_N8S19905C1D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S19905C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C1D1Ev,_ZTv0_n12_N8S19905C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C1D0Ev,_ZTv0_n12_N8S19905C1D0Ev),
  ABISELECT(-112,-64),
  ABISELECT(-176,-104),
  ABISELECT(-192,-112),
  ABISELECT(272,156),
  ABISELECT(260,156),
  ABISELECT(248,148),
  ABISELECT(-48,-28),
  ABISELECT(-112,-64),
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI8S19905C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C1D1Ev,_ZTv0_n12_N8S19905C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C1D0Ev,_ZTv0_n12_N8S19905C1D0Ev),
  ABISELECT(-296,-176),
  ABISELECT(-360,-212),
  ABISELECT(-440,-260),
  ABISELECT(-440,-260),
  (VTBL_ENTRY)&(_ZTI8S19905C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C1D1Ev,_ZTv0_n12_N8S19905C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C1D0Ev,_ZTv0_n12_N8S19905C1D0Ev),
  ABISELECT(-320,-184),
  ABISELECT(-384,-220),
  ABISELECT(-448,-260),
  ABISELECT(-464,-268),
  ABISELECT(-384,-220),
  ABISELECT(-464,-268),
  ABISELECT(-464,-268),
  (VTBL_ENTRY)&(_ZTI8S19905C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C1D1Ev,_ZTv0_n12_N8S19905C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C1D0Ev,_ZTv0_n12_N8S19905C1D0Ev),
  ABISELECT(-76,-32),
  ABISELECT(-16,-4),
  ABISELECT(-512,-292),
  ABISELECT(-64,-32),
  ABISELECT(96,56),
  ABISELECT(-528,-300),
  ABISELECT(-384,-216),
  ABISELECT(-448,-252),
  ABISELECT(-448,-252),
  ABISELECT(-528,-300),
  ABISELECT(-528,-300),
  (VTBL_ENTRY)&(_ZTI8S19905C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C1D1Ev,_ZTv0_n12_N8S19905C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C1D0Ev,_ZTv0_n12_N8S19905C1D0Ev),
  ABISELECT(-480,-272),
  ABISELECT(-544,-308),
  ABISELECT(-608,-348),
  ABISELECT(-624,-356),
  ABISELECT(-160,-88),
  ABISELECT(-544,-308),
  ABISELECT(-624,-356),
  ABISELECT(-624,-356),
  (VTBL_ENTRY)&(_ZTI8S19905C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C1D1Ev,_ZTv0_n12_N8S19905C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C1D0Ev,_ZTv0_n12_N8S19905C1D0Ev),
  ABISELECT(-528,-300),
  ABISELECT(-592,-336),
  ABISELECT(-672,-384),
  ABISELECT(-672,-384),
  (VTBL_ENTRY)&(_ZTI8S19905C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C1D1Ev,_ZTv0_n12_N8S19905C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C1D0Ev,_ZTv0_n12_N8S19905C1D0Ev),
  ABISELECT(-736,-424),
  ABISELECT(-736,-424),
  ABISELECT(-592,-340),
  ABISELECT(-656,-376),
  ABISELECT(-656,-376),
  ABISELECT(-736,-424),
  (VTBL_ENTRY)&(_ZTI8S19905C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19905C1D1Ev,_ZTv0_n28_N8S19905C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19905C1D0Ev,_ZTv0_n28_N8S19905C1D0Ev),
  ABISELECT(-672,-380),
  ABISELECT(-752,-428),
  ABISELECT(-608,-344),
  ABISELECT(-672,-380),
  ABISELECT(-752,-428),
  ABISELECT(-752,-428),
  (VTBL_ENTRY)&(_ZTI8S19905C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C1D1Ev,_ZTv0_n12_N8S19905C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C1D0Ev,_ZTv0_n12_N8S19905C1D0Ev),
  ABISELECT(-624,-352),
  ABISELECT(-688,-388),
  ABISELECT(-688,-388),
  ABISELECT(-768,-436),
  (VTBL_ENTRY)&(_ZTI8S19905C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n56_N8S19905C1D1Ev,_ZTvn12_n28_N8S19905C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n56_N8S19905C1D0Ev,_ZTvn12_n28_N8S19905C1D0Ev),
  ABISELECT(-704,-396),
  ABISELECT(-784,-444),
  ABISELECT(-784,-444),
  (VTBL_ENTRY)&(_ZTI8S19905C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C1D1Ev,_ZTv0_n12_N8S19905C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C1D0Ev,_ZTv0_n12_N8S19905C1D0Ev),
  ABISELECT(-832,-476),
  (VTBL_ENTRY)&(_ZTI8S19905C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn96_n56_N8S19905C1D1Ev,_ZTvn52_n28_N8S19905C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn96_n56_N8S19905C1D0Ev,_ZTvn52_n28_N8S19905C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19905C1[];
extern void ABISELECT(_ZTv0_n24_N8S19905C9D1Ev,_ZTv0_n12_N8S19905C9D1Ev)();
extern void _ZN8S19905C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C9D0Ev,_ZTv0_n12_N8S19905C9D0Ev)();
extern void _ZN8S19905C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C9__8S19905C1[] = {
  ABISELECT(624,356),
  ABISELECT(528,300),
  ABISELECT(512,296),
  ABISELECT(80,48),
  ABISELECT(16,8),
  0,
  ABISELECT(464,268),
  ABISELECT(452,268),
  ABISELECT(440,260),
  ABISELECT(144,84),
  ABISELECT(192,112),
  ABISELECT(80,48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C9D1Ev,_ZTv0_n12_N8S19905C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C9D0Ev,_ZTv0_n12_N8S19905C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C9D1Ev,_ZTv0_n12_N8S19905C9D1Ev)();
extern void ABISELECT(_ZThn80_N8S19905C9D1Ev,_ZThn48_N8S19905C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C9D0Ev,_ZTv0_n12_N8S19905C9D0Ev)();
extern void ABISELECT(_ZThn80_N8S19905C9D0Ev,_ZThn48_N8S19905C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C4__8S19905C9__8S19905C1[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S19905C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C9D1Ev,_ZTv0_n12_N8S19905C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C9D0Ev,_ZTv0_n12_N8S19905C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C9D1Ev,_ZTv0_n12_N8S19905C9D1Ev)();
extern void ABISELECT(_ZThn192_N8S19905C9D1Ev,_ZThn112_N8S19905C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C9D0Ev,_ZTv0_n12_N8S19905C9D0Ev)();
extern void ABISELECT(_ZThn192_N8S19905C9D0Ev,_ZThn112_N8S19905C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C10__8S19905C9__8S19905C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-176,-104),
  ABISELECT(-192,-112),
  ABISELECT(272,156),
  ABISELECT(260,156),
  ABISELECT(248,148),
  ABISELECT(-48,-28),
  ABISELECT(-112,-64),
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI8S19905C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C9D1Ev,_ZTv0_n12_N8S19905C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C9D0Ev,_ZTv0_n12_N8S19905C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C9D1Ev,_ZTv0_n12_N8S19905C9D1Ev)();
extern void ABISELECT(_ZThn144_N8S19905C9D1Ev,_ZThn84_N8S19905C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C9D0Ev,_ZTv0_n12_N8S19905C9D0Ev)();
extern void ABISELECT(_ZThn144_N8S19905C9D0Ev,_ZThn84_N8S19905C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C9__8S19905C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S19905C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C9D1Ev,_ZTv0_n12_N8S19905C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C9D0Ev,_ZTv0_n12_N8S19905C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C9D1Ev,_ZTv0_n12_N8S19905C9D1Ev)();
extern void ABISELECT(_ZThn440_N8S19905C9D1Ev,_ZThn260_N8S19905C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C9D0Ev,_ZTv0_n12_N8S19905C9D0Ev)();
extern void ABISELECT(_ZThn440_N8S19905C9D0Ev,_ZThn260_N8S19905C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C6__8S19905C9__8S19905C1[] = {
  ABISELECT(-296,-176),
  ABISELECT(-360,-212),
  ABISELECT(-440,-260),
  ABISELECT(-440,-260),
  (VTBL_ENTRY)&(_ZTI8S19905C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C9D1Ev,_ZTv0_n12_N8S19905C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C9D0Ev,_ZTv0_n12_N8S19905C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C9D1Ev,_ZTv0_n12_N8S19905C9D1Ev)();
extern void ABISELECT(_ZThn464_N8S19905C9D1Ev,_ZThn268_N8S19905C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C9D0Ev,_ZTv0_n12_N8S19905C9D0Ev)();
extern void ABISELECT(_ZThn464_N8S19905C9D0Ev,_ZThn268_N8S19905C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C12__8S19905C9__8S19905C1[] = {
  ABISELECT(-320,-184),
  ABISELECT(-384,-220),
  ABISELECT(-448,-260),
  ABISELECT(-464,-268),
  ABISELECT(-384,-220),
  ABISELECT(-464,-268),
  ABISELECT(-464,-268),
  (VTBL_ENTRY)&(_ZTI8S19905C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C9D1Ev,_ZTv0_n12_N8S19905C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C9D0Ev,_ZTv0_n12_N8S19905C9D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19905C9D1Ev,_ZTv0_n24_N8S19905C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19905C9D1Ev,_ZThn8_N8S19905C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19905C9D0Ev,_ZTv0_n24_N8S19905C9D0Ev)();
extern void ABISELECT(_ZThn16_N8S19905C9D0Ev,_ZThn8_N8S19905C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C3__8S19905C9__8S19905C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(128,76),
  ABISELECT(64,40),
  ABISELECT(64,40),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19905C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19905C9D1Ev,_ZTv0_n24_N8S19905C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19905C9D0Ev,_ZTv0_n24_N8S19905C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C9D1Ev,_ZTv0_n12_N8S19905C9D1Ev)();
extern void ABISELECT(_ZThn32_N8S19905C9D1Ev,_ZThn16_N8S19905C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C9D0Ev,_ZTv0_n12_N8S19905C9D0Ev)();
extern void ABISELECT(_ZThn32_N8S19905C9D0Ev,_ZThn16_N8S19905C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C78S19905C3__A1__8S19905C9__8S19905C1[] = {
  ABISELECT(48,32),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19905C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C9D1Ev,_ZTv0_n12_N8S19905C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C9D0Ev,_ZTv0_n12_N8S19905C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C9D1Ev,_ZTv0_n12_N8S19905C9D1Ev)();
extern void ABISELECT(_ZThn528_N8S19905C9D1Ev,_ZThn300_N8S19905C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C9D0Ev,_ZTv0_n12_N8S19905C9D0Ev)();
extern void ABISELECT(_ZThn528_N8S19905C9D0Ev,_ZThn300_N8S19905C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C13__8S19905C9__8S19905C1[] = {
  ABISELECT(-76,-32),
  ABISELECT(-16,-4),
  ABISELECT(-512,-292),
  ABISELECT(-64,-32),
  ABISELECT(96,56),
  ABISELECT(-528,-300),
  ABISELECT(-384,-216),
  ABISELECT(-448,-252),
  ABISELECT(-448,-252),
  ABISELECT(-528,-300),
  ABISELECT(-528,-300),
  (VTBL_ENTRY)&(_ZTI8S19905C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C9D1Ev,_ZTv0_n12_N8S19905C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C9D0Ev,_ZTv0_n12_N8S19905C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C9D1Ev,_ZTv0_n12_N8S19905C9D1Ev)();
extern void ABISELECT(_ZThn624_N8S19905C9D1Ev,_ZThn356_N8S19905C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C9D0Ev,_ZTv0_n12_N8S19905C9D0Ev)();
extern void ABISELECT(_ZThn624_N8S19905C9D0Ev,_ZThn356_N8S19905C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C15__8S19905C9__8S19905C1[] = {
  ABISELECT(-480,-272),
  ABISELECT(-544,-308),
  ABISELECT(-608,-348),
  ABISELECT(-624,-356),
  ABISELECT(-160,-88),
  ABISELECT(-544,-308),
  ABISELECT(-624,-356),
  ABISELECT(-624,-356),
  (VTBL_ENTRY)&(_ZTI8S19905C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C9D1Ev,_ZTv0_n12_N8S19905C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C9D0Ev,_ZTv0_n12_N8S19905C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C9D1Ev,_ZTv0_n12_N8S19905C9D1Ev)();
extern void ABISELECT(_ZThn672_N8S19905C9D1Ev,_ZThn384_N8S19905C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C9D0Ev,_ZTv0_n12_N8S19905C9D0Ev)();
extern void ABISELECT(_ZThn672_N8S19905C9D0Ev,_ZThn384_N8S19905C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C49S19905C15__A2__8S19905C9__8S19905C1[] = {
  ABISELECT(-528,-300),
  ABISELECT(-592,-336),
  ABISELECT(-672,-384),
  ABISELECT(-672,-384),
  (VTBL_ENTRY)&(_ZTI8S19905C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C9D1Ev,_ZTv0_n12_N8S19905C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C9D0Ev,_ZTv0_n12_N8S19905C9D0Ev),
};
extern void _ZN8S19905C3D1Ev();
extern void _ZN8S19905C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19905C3__8S19905C1[] = {
  ABISELECT(128,76),
  ABISELECT(64,40),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C3[0]),
  (VTBL_ENTRY)&_ZN8S19905C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19905C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void _ZN8S19905C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
extern void _ZN8S19905C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C78S19905C3__A1__8S19905C1[] = {
  ABISELECT(48,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void ABISELECT(_ZThn48_N8S19905C7D1Ev,_ZThn32_N8S19905C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
extern void ABISELECT(_ZThn48_N8S19905C7D0Ev,_ZThn32_N8S19905C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C78S19905C3__A1__8S19905C1[] = {
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev)();
extern void ABISELECT(_ZThn64_N8S19905C3D1Ev,_ZThn40_N8S19905C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev)();
extern void ABISELECT(_ZThn64_N8S19905C3D0Ev,_ZThn40_N8S19905C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C4__8S19905C3__8S19905C1[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19905C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev)();
extern void ABISELECT(_ZThn128_N8S19905C3D1Ev,_ZThn76_N8S19905C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev)();
extern void ABISELECT(_ZThn128_N8S19905C3D0Ev,_ZThn76_N8S19905C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C3__8S19905C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S19905C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S19905C3D1Ev,_ZThn8_N8S19905C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S19905C3D0Ev,_ZThn8_N8S19905C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__A__8S19905C3__8S19905C1[] = {
  ABISELECT(48,32),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19905C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev)();
extern void _ZN8S19905C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev)();
extern void _ZN8S19905C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C4__8S19905C1[] = {
  ABISELECT(64,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void _ZN8S19905C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
extern void _ZN8S19905C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C68S19905C4__8S19905C1[] = {
  ABISELECT(64,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void ABISELECT(_ZThn64_N8S19905C6D1Ev,_ZThn36_N8S19905C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
extern void ABISELECT(_ZThn64_N8S19905C6D0Ev,_ZThn36_N8S19905C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C68S19905C4__8S19905C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev)();
extern void ABISELECT(_ZThn64_N8S19905C4D1Ev,_ZThn36_N8S19905C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev)();
extern void ABISELECT(_ZThn64_N8S19905C4D0Ev,_ZThn36_N8S19905C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C4__8S19905C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void _ZN8S19905C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
extern void _ZN8S19905C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C1[] = {
  ABISELECT(-64,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C7__8S19905C1[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C10D1Ev,_ZTv0_n12_N9S19905C10D1Ev)();
extern void _ZN9S19905C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C10D0Ev,_ZTv0_n12_N9S19905C10D0Ev)();
extern void _ZN9S19905C10D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C10__8S19905C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-176,-104),
  ABISELECT(-192,-112),
  ABISELECT(272,156),
  ABISELECT(260,156),
  ABISELECT(248,148),
  ABISELECT(-48,-28),
  ABISELECT(-112,-64),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19905C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C10D1Ev,_ZTv0_n12_N9S19905C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C10D0Ev,_ZTv0_n12_N9S19905C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev)();
extern void _ZN8S19905C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev)();
extern void _ZN8S19905C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C49S19905C10__A1__8S19905C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-112,-64),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void _ZN8S19905C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
extern void _ZN8S19905C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C68S19905C49S19905C10__A2__8S19905C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-112,-64),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C68S19905C49S19905C10__A2__8S19905C1[] = {
  ABISELECT(112,64),
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C68S19905C49S19905C10__A2__8S19905C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C49S19905C10__A1__8S19905C1[] = {
  ABISELECT(112,64),
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C49S19905C10__A1__8S19905C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C10D1Ev,_ZTv0_n12_N9S19905C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C10D0Ev,_ZTv0_n12_N9S19905C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C7__9S19905C10__8S19905C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19905C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C10D1Ev,_ZTv0_n12_N9S19905C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C10D0Ev,_ZTv0_n12_N9S19905C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C10D1Ev,_ZTv0_n12_N9S19905C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C10D0Ev,_ZTv0_n12_N9S19905C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C4__9S19905C10__8S19905C1[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(112,64),
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI9S19905C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C10D1Ev,_ZTv0_n12_N9S19905C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C10D0Ev,_ZTv0_n12_N9S19905C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C10D1Ev,_ZTv0_n12_N9S19905C10D1Ev)();
extern void ABISELECT(_ZThn248_N9S19905C10D1Ev,_ZThn148_N9S19905C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C10D0Ev,_ZTv0_n12_N9S19905C10D0Ev)();
extern void ABISELECT(_ZThn248_N9S19905C10D0Ev,_ZThn148_N9S19905C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C6__9S19905C10__8S19905C1[] = {
  ABISELECT(-296,-176),
  ABISELECT(-360,-212),
  ABISELECT(-248,-148),
  ABISELECT(-248,-148),
  (VTBL_ENTRY)&(_ZTI9S19905C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C10D1Ev,_ZTv0_n12_N9S19905C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C10D0Ev,_ZTv0_n12_N9S19905C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C10D1Ev,_ZTv0_n12_N9S19905C10D1Ev)();
extern void ABISELECT(_ZThn272_N9S19905C10D1Ev,_ZThn156_N9S19905C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C10D0Ev,_ZTv0_n12_N9S19905C10D0Ev)();
extern void ABISELECT(_ZThn272_N9S19905C10D0Ev,_ZThn156_N9S19905C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C12__9S19905C10__8S19905C1[] = {
  ABISELECT(-320,-184),
  ABISELECT(-384,-220),
  ABISELECT(-448,-260),
  ABISELECT(-464,-268),
  ABISELECT(-384,-220),
  ABISELECT(-272,-156),
  ABISELECT(-272,-156),
  (VTBL_ENTRY)&(_ZTI9S19905C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C10D1Ev,_ZTv0_n12_N9S19905C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C10D0Ev,_ZTv0_n12_N9S19905C10D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19905C10D1Ev,_ZTv0_n24_N9S19905C10D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19905C10D0Ev,_ZTv0_n24_N9S19905C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C3__9S19905C10__8S19905C1[] = {
  ABISELECT(176,104),
  ABISELECT(128,76),
  ABISELECT(64,40),
  ABISELECT(64,40),
  ABISELECT(176,104),
  (VTBL_ENTRY)&(_ZTI9S19905C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19905C10D1Ev,_ZTv0_n24_N9S19905C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19905C10D0Ev,_ZTv0_n24_N9S19905C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C10D1Ev,_ZTv0_n12_N9S19905C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C10D0Ev,_ZTv0_n12_N9S19905C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C78S19905C3__A1__9S19905C10__8S19905C1[] = {
  ABISELECT(48,32),
  ABISELECT(160,96),
  ABISELECT(160,96),
  (VTBL_ENTRY)&(_ZTI9S19905C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C10D1Ev,_ZTv0_n12_N9S19905C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C10D0Ev,_ZTv0_n12_N9S19905C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void _ZN8S19905C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
extern void _ZN8S19905C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C6__A1__8S19905C1[] = {
  ABISELECT(-296,-176),
  ABISELECT(-360,-212),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C6__A1__8S19905C1[] = {
  ABISELECT(360,212),
  ABISELECT(360,212),
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C6__A1__8S19905C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(296,176),
  ABISELECT(296,176),
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev)();
extern void _ZN9S19905C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev)();
extern void _ZN9S19905C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C12__8S19905C1[] = {
  ABISELECT(-320,-184),
  ABISELECT(-384,-220),
  ABISELECT(-448,-260),
  ABISELECT(-464,-268),
  ABISELECT(-384,-220),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19905C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void _ZN8S19905C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
extern void _ZN8S19905C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C79S19905C12__A2__8S19905C1[] = {
  ABISELECT(-384,-220),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C79S19905C12__A2__8S19905C1[] = {
  ABISELECT(384,220),
  ABISELECT(384,220),
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19905C12D1Ev,_ZTv0_n24_N9S19905C12D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19905C12D0Ev,_ZTv0_n24_N9S19905C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C3__9S19905C12__8S19905C1[] = {
  ABISELECT(448,260),
  ABISELECT(128,76),
  ABISELECT(64,40),
  ABISELECT(64,40),
  ABISELECT(448,260),
  (VTBL_ENTRY)&(_ZTI9S19905C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19905C12D1Ev,_ZTv0_n24_N9S19905C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19905C12D0Ev,_ZTv0_n24_N9S19905C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C4__9S19905C12__8S19905C1[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(384,220),
  ABISELECT(384,220),
  (VTBL_ENTRY)&(_ZTI9S19905C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C7__9S19905C12__8S19905C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(320,184),
  ABISELECT(320,184),
  (VTBL_ENTRY)&(_ZTI9S19905C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C78S19905C3__A1__9S19905C12__8S19905C1[] = {
  ABISELECT(48,32),
  ABISELECT(432,252),
  ABISELECT(432,252),
  (VTBL_ENTRY)&(_ZTI9S19905C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C13D1Ev,_ZTv0_n12_N9S19905C13D1Ev)();
extern void _ZN9S19905C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C13D0Ev,_ZTv0_n12_N9S19905C13D0Ev)();
extern void _ZN9S19905C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C13__8S19905C1[] = {
  ABISELECT(-76,-32),
  ABISELECT(-16,-4),
  ABISELECT(-512,-292),
  ABISELECT(-64,-32),
  ABISELECT(96,56),
  ABISELECT(-528,-300),
  ABISELECT(-384,-216),
  ABISELECT(-448,-252),
  ABISELECT(-448,-252),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19905C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C13D1Ev,_ZTv0_n12_N9S19905C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C13D0Ev,_ZTv0_n12_N9S19905C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev)();
extern void _ZN9S19905C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev)();
extern void _ZN9S19905C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C149S19905C13__8S19905C1[] = {
  ABISELECT(-16,-4),
  ABISELECT(-512,-292),
  ABISELECT(-64,-32),
  ABISELECT(96,56),
  ABISELECT(-528,-300),
  ABISELECT(-384,-216),
  ABISELECT(-448,-252),
  ABISELECT(-448,-252),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19905C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C16D1Ev,_ZTv0_n12_N9S19905C16D1Ev)();
extern void _ZN9S19905C16D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C16D0Ev,_ZTv0_n12_N9S19905C16D0Ev)();
extern void _ZN9S19905C16D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C169S19905C149S19905C13__8S19905C1[] = {
  ABISELECT(-528,-300),
  ABISELECT(-384,-216),
  ABISELECT(-448,-252),
  ABISELECT(-448,-252),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19905C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C16D1Ev,_ZTv0_n12_N9S19905C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C16D0Ev,_ZTv0_n12_N9S19905C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C16D1Ev,_ZTv0_n12_N9S19905C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C16D0Ev,_ZTv0_n12_N9S19905C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C4__9S19905C169S19905C149S19905C13__8S19905C1[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(448,252),
  ABISELECT(448,252),
  (VTBL_ENTRY)&(_ZTI9S19905C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C16D1Ev,_ZTv0_n12_N9S19905C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C16D0Ev,_ZTv0_n12_N9S19905C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C16D1Ev,_ZTv0_n12_N9S19905C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C16D0Ev,_ZTv0_n12_N9S19905C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C7__9S19905C169S19905C149S19905C13__8S19905C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(384,216),
  ABISELECT(384,216),
  (VTBL_ENTRY)&(_ZTI9S19905C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C16D1Ev,_ZTv0_n12_N9S19905C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C16D0Ev,_ZTv0_n12_N9S19905C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C7__9S19905C149S19905C13__8S19905C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(384,216),
  ABISELECT(384,216),
  (VTBL_ENTRY)&(_ZTI9S19905C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C4__9S19905C149S19905C13__8S19905C1[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(448,252),
  ABISELECT(448,252),
  (VTBL_ENTRY)&(_ZTI9S19905C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev)();
extern void ABISELECT(_ZThn96_N9S19905C14D1Ev,_ZThn56_N9S19905C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev)();
extern void ABISELECT(_ZThn96_N9S19905C14D0Ev,_ZThn56_N9S19905C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C15__9S19905C149S19905C13__8S19905C1[] = {
  ABISELECT(-480,-272),
  ABISELECT(-544,-308),
  ABISELECT(-608,-348),
  ABISELECT(-624,-356),
  ABISELECT(-160,-88),
  ABISELECT(-544,-308),
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S19905C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C12__9S19905C149S19905C13__8S19905C1[] = {
  ABISELECT(-320,-184),
  ABISELECT(-384,-220),
  ABISELECT(-448,-260),
  ABISELECT(-464,-268),
  ABISELECT(-384,-220),
  ABISELECT(64,32),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI9S19905C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19905C14D1Ev,_ZTv0_n24_N9S19905C14D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19905C14D0Ev,_ZTv0_n24_N9S19905C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C3__9S19905C149S19905C13__8S19905C1[] = {
  ABISELECT(512,292),
  ABISELECT(128,76),
  ABISELECT(64,40),
  ABISELECT(64,40),
  ABISELECT(512,292),
  (VTBL_ENTRY)&(_ZTI9S19905C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19905C14D1Ev,_ZTv0_n24_N9S19905C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19905C14D0Ev,_ZTv0_n24_N9S19905C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C78S19905C3__A2__9S19905C149S19905C13__8S19905C1[] = {
  ABISELECT(48,32),
  ABISELECT(496,284),
  ABISELECT(496,284),
  (VTBL_ENTRY)&(_ZTI9S19905C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev)();
extern void ABISELECT(_ZThn144_N9S19905C14D1Ev,_ZThn84_N9S19905C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev)();
extern void ABISELECT(_ZThn144_N9S19905C14D0Ev,_ZThn84_N9S19905C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C49S19905C15__A1__9S19905C149S19905C13__8S19905C1[] = {
  ABISELECT(-528,-300),
  ABISELECT(-592,-336),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S19905C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C13D1Ev,_ZTv0_n12_N9S19905C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C13D0Ev,_ZTv0_n12_N9S19905C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C7__9S19905C13__8S19905C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(384,216),
  ABISELECT(384,216),
  (VTBL_ENTRY)&(_ZTI9S19905C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C13D1Ev,_ZTv0_n12_N9S19905C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C13D0Ev,_ZTv0_n12_N9S19905C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C13D1Ev,_ZTv0_n12_N9S19905C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C13D0Ev,_ZTv0_n12_N9S19905C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C4__9S19905C13__8S19905C1[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(448,252),
  ABISELECT(448,252),
  (VTBL_ENTRY)&(_ZTI9S19905C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C13D1Ev,_ZTv0_n12_N9S19905C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C13D0Ev,_ZTv0_n12_N9S19905C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C13D1Ev,_ZTv0_n12_N9S19905C13D1Ev)();
extern void ABISELECT(_ZThn96_N9S19905C13D1Ev,_ZThn56_N9S19905C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C13D0Ev,_ZTv0_n12_N9S19905C13D0Ev)();
extern void ABISELECT(_ZThn96_N9S19905C13D0Ev,_ZThn56_N9S19905C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C15__9S19905C13__8S19905C1[] = {
  ABISELECT(-480,-272),
  ABISELECT(-544,-308),
  ABISELECT(-608,-348),
  ABISELECT(-624,-356),
  ABISELECT(-160,-88),
  ABISELECT(-544,-308),
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S19905C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C13D1Ev,_ZTv0_n12_N9S19905C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C13D0Ev,_ZTv0_n12_N9S19905C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C13D1Ev,_ZTv0_n12_N9S19905C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C13D0Ev,_ZTv0_n12_N9S19905C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C12__9S19905C13__8S19905C1[] = {
  ABISELECT(-320,-184),
  ABISELECT(-384,-220),
  ABISELECT(-448,-260),
  ABISELECT(-464,-268),
  ABISELECT(-384,-220),
  ABISELECT(64,32),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI9S19905C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C13D1Ev,_ZTv0_n12_N9S19905C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C13D0Ev,_ZTv0_n12_N9S19905C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19905C13D1Ev,_ZTv0_n24_N9S19905C13D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19905C13D0Ev,_ZTv0_n24_N9S19905C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C3__9S19905C13__8S19905C1[] = {
  ABISELECT(512,292),
  ABISELECT(128,76),
  ABISELECT(64,40),
  ABISELECT(64,40),
  ABISELECT(512,292),
  (VTBL_ENTRY)&(_ZTI9S19905C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19905C13D1Ev,_ZTv0_n24_N9S19905C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19905C13D0Ev,_ZTv0_n24_N9S19905C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C13D1Ev,_ZTv0_n12_N9S19905C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C13D0Ev,_ZTv0_n12_N9S19905C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C78S19905C3__A2__9S19905C13__8S19905C1[] = {
  ABISELECT(48,32),
  ABISELECT(496,284),
  ABISELECT(496,284),
  (VTBL_ENTRY)&(_ZTI9S19905C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C13D1Ev,_ZTv0_n12_N9S19905C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C13D0Ev,_ZTv0_n12_N9S19905C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C13D1Ev,_ZTv0_n12_N9S19905C13D1Ev)();
extern void ABISELECT(_ZThn144_N9S19905C13D1Ev,_ZThn84_N9S19905C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C13D0Ev,_ZTv0_n12_N9S19905C13D0Ev)();
extern void ABISELECT(_ZThn144_N9S19905C13D0Ev,_ZThn84_N9S19905C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C49S19905C15__A1__9S19905C13__8S19905C1[] = {
  ABISELECT(-528,-300),
  ABISELECT(-592,-336),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S19905C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C13D1Ev,_ZTv0_n12_N9S19905C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C13D0Ev,_ZTv0_n12_N9S19905C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev)();
extern void _ZN9S19905C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev)();
extern void _ZN9S19905C15D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C15__8S19905C1[] = {
  ABISELECT(-480,-272),
  ABISELECT(-544,-308),
  ABISELECT(-608,-348),
  ABISELECT(-624,-356),
  ABISELECT(-160,-88),
  ABISELECT(-544,-308),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19905C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void _ZN8S19905C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
extern void _ZN8S19905C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C79S19905C15__A3__8S19905C1[] = {
  ABISELECT(-544,-308),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C79S19905C15__A3__8S19905C1[] = {
  ABISELECT(544,308),
  ABISELECT(544,308),
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev)();
extern void _ZN8S19905C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev)();
extern void _ZN8S19905C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C49S19905C15__A2__8S19905C1[] = {
  ABISELECT(-528,-300),
  ABISELECT(-592,-336),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void _ZN8S19905C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
extern void _ZN8S19905C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C68S19905C49S19905C15__A3__8S19905C1[] = {
  ABISELECT(-528,-300),
  ABISELECT(-592,-336),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C68S19905C49S19905C15__A3__8S19905C1[] = {
  ABISELECT(592,336),
  ABISELECT(592,336),
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C68S19905C49S19905C15__A3__8S19905C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(528,300),
  ABISELECT(528,300),
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C49S19905C15__A2__8S19905C1[] = {
  ABISELECT(592,336),
  ABISELECT(592,336),
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C49S19905C15__A2__8S19905C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(528,300),
  ABISELECT(528,300),
  (VTBL_ENTRY)&(_ZTI8S19905C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C4__9S19905C15__8S19905C1[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(544,308),
  ABISELECT(544,308),
  (VTBL_ENTRY)&(_ZTI9S19905C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C12__9S19905C15__8S19905C1[] = {
  ABISELECT(-320,-184),
  ABISELECT(-384,-220),
  ABISELECT(-448,-260),
  ABISELECT(-464,-268),
  ABISELECT(-384,-220),
  ABISELECT(160,88),
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI9S19905C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19905C15D1Ev,_ZTv0_n24_N9S19905C15D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19905C15D0Ev,_ZTv0_n24_N9S19905C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C3__9S19905C15__8S19905C1[] = {
  ABISELECT(608,348),
  ABISELECT(128,76),
  ABISELECT(64,40),
  ABISELECT(64,40),
  ABISELECT(608,348),
  (VTBL_ENTRY)&(_ZTI9S19905C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19905C15D1Ev,_ZTv0_n24_N9S19905C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19905C15D0Ev,_ZTv0_n24_N9S19905C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C7__A1__9S19905C15__8S19905C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(480,272),
  ABISELECT(480,272),
  (VTBL_ENTRY)&(_ZTI9S19905C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C78S19905C3__A2__9S19905C15__8S19905C1[] = {
  ABISELECT(48,32),
  ABISELECT(592,340),
  ABISELECT(592,340),
  (VTBL_ENTRY)&(_ZTI9S19905C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev)();
extern void ABISELECT(_ZThn48_N9S19905C15D1Ev,_ZThn28_N9S19905C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev)();
extern void ABISELECT(_ZThn48_N9S19905C15D0Ev,_ZThn28_N9S19905C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C4__A__9S19905C15__8S19905C1[] = {
  ABISELECT(-528,-300),
  ABISELECT(-592,-336),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19905C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev),
};
extern void _ZN9S19905C18D1Ev();
extern void _ZN9S19905C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19905C18__8S19905C1[] = {
  ABISELECT(-736,-424),
  ABISELECT(-592,-340),
  ABISELECT(-656,-376),
  ABISELECT(-656,-376),
  0,
  (VTBL_ENTRY)&(_ZTI9S19905C18[0]),
  (VTBL_ENTRY)&_ZN9S19905C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19905C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19905C20D1Ev,_ZTv0_n12_N9S19905C20D1Ev)();
extern void _ZN9S19905C20D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C20D0Ev,_ZTv0_n12_N9S19905C20D0Ev)();
extern void _ZN9S19905C20D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C209S19905C18__8S19905C1[] = {
  ABISELECT(-672,-380),
  ABISELECT(-752,-428),
  ABISELECT(-608,-344),
  ABISELECT(-672,-380),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19905C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C20D1Ev,_ZTv0_n12_N9S19905C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C20D0Ev,_ZTv0_n12_N9S19905C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void _ZN8S19905C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
extern void _ZN8S19905C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C69S19905C209S19905C18__A4__8S19905C1[] = {
  ABISELECT(-608,-344),
  ABISELECT(-672,-380),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C69S19905C209S19905C18__A4__8S19905C1[] = {
  ABISELECT(672,380),
  ABISELECT(672,380),
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C69S19905C209S19905C18__A4__8S19905C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(608,344),
  ABISELECT(608,344),
  (VTBL_ENTRY)&(_ZTI8S19905C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev),
};
extern void _ZN8S19905C3D1Ev();
extern void _ZN8S19905C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19905C39S19905C209S19905C18__A1__8S19905C1[] = {
  ABISELECT(-624,-352),
  ABISELECT(-688,-388),
  ABISELECT(-688,-388),
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C3[0]),
  (VTBL_ENTRY)&_ZN8S19905C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19905C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void _ZN8S19905C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
extern void _ZN8S19905C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C78S19905C39S19905C209S19905C18__A4__8S19905C1[] = {
  ABISELECT(-704,-396),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S19905C5_nt__8S19905C78S19905C39S19905C209S19905C18__A4__8S19905C1[] = {
  ABISELECT(704,396),
  ABISELECT(704,396),
  (VTBL_ENTRY)&(_ZTI8S19905C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C4__8S19905C39S19905C209S19905C18__A1__8S19905C1[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(688,388),
  ABISELECT(688,388),
  (VTBL_ENTRY)&(_ZTI8S19905C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C7__8S19905C39S19905C209S19905C18__A1__8S19905C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(624,352),
  ABISELECT(624,352),
  (VTBL_ENTRY)&(_ZTI8S19905C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S19905C3D1Ev,_ZThn8_N8S19905C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S19905C3D0Ev,_ZThn8_N8S19905C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C7__A__8S19905C39S19905C209S19905C18__A1__8S19905C1[] = {
  ABISELECT(-704,-396),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19905C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C20D1Ev,_ZTv0_n12_N9S19905C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C20D0Ev,_ZTv0_n12_N9S19905C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C4__9S19905C209S19905C18__8S19905C1[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(672,380),
  ABISELECT(672,380),
  (VTBL_ENTRY)&(_ZTI9S19905C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C20D1Ev,_ZTv0_n12_N9S19905C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C20D0Ev,_ZTv0_n12_N9S19905C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C20D1Ev,_ZTv0_n12_N9S19905C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C20D0Ev,_ZTv0_n12_N9S19905C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C7__9S19905C209S19905C18__8S19905C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(608,344),
  ABISELECT(608,344),
  (VTBL_ENTRY)&(_ZTI9S19905C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C20D1Ev,_ZTv0_n12_N9S19905C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C20D0Ev,_ZTv0_n12_N9S19905C20D0Ev),
};
extern void ABISELECT(_ZThn16_N9S19905C20D1Ev,_ZThn8_N9S19905C20D1Ev)();
extern void ABISELECT(_ZThn16_N9S19905C20D0Ev,_ZThn8_N9S19905C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C3__9S19905C209S19905C18__8S19905C1[] = {
  ABISELECT(-624,-352),
  ABISELECT(-688,-388),
  ABISELECT(-688,-388),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19905C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19905C20D1Ev,_ZThn8_N9S19905C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19905C20D0Ev,_ZThn8_N9S19905C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C20D1Ev,_ZTv0_n12_N9S19905C20D1Ev)();
extern void ABISELECT(_ZThn32_N9S19905C20D1Ev,_ZThn16_N9S19905C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C20D0Ev,_ZTv0_n12_N9S19905C20D0Ev)();
extern void ABISELECT(_ZThn32_N9S19905C20D0Ev,_ZThn16_N9S19905C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C78S19905C3__A1__9S19905C209S19905C18__8S19905C1[] = {
  ABISELECT(-704,-396),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19905C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C20D1Ev,_ZTv0_n12_N9S19905C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C20D0Ev,_ZTv0_n12_N9S19905C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C18D1Ev,_ZTv0_n12_N9S19905C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C18D0Ev,_ZTv0_n12_N9S19905C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C4__9S19905C18__8S19905C1[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(656,376),
  ABISELECT(656,376),
  (VTBL_ENTRY)&(_ZTI9S19905C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C18D1Ev,_ZTv0_n12_N9S19905C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C18D0Ev,_ZTv0_n12_N9S19905C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C18D1Ev,_ZTv0_n12_N9S19905C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19905C18D0Ev,_ZTv0_n12_N9S19905C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C7__9S19905C18__8S19905C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(592,340),
  ABISELECT(592,340),
  (VTBL_ENTRY)&(_ZTI9S19905C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C18D1Ev,_ZTv0_n12_N9S19905C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C18D0Ev,_ZTv0_n12_N9S19905C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C18D1Ev,_ZTv0_n12_N9S19905C18D1Ev)();
extern void ABISELECT(_ZThn16_N9S19905C18D1Ev,_ZThn4_N9S19905C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C18D0Ev,_ZTv0_n12_N9S19905C18D0Ev)();
extern void ABISELECT(_ZThn16_N9S19905C18D0Ev,_ZThn4_N9S19905C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C20__9S19905C18__8S19905C1[] = {
  ABISELECT(-672,-380),
  ABISELECT(-752,-428),
  ABISELECT(-608,-344),
  ABISELECT(-672,-380),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI9S19905C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C18D1Ev,_ZTv0_n12_N9S19905C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C18D0Ev,_ZTv0_n12_N9S19905C18D0Ev),
};
extern void ABISELECT(_ZThn32_N9S19905C18D1Ev,_ZThn12_N9S19905C18D1Ev)();
extern void ABISELECT(_ZThn32_N9S19905C18D0Ev,_ZThn12_N9S19905C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19905C39S19905C20__9S19905C18__8S19905C1[] = {
  ABISELECT(-624,-352),
  ABISELECT(-688,-388),
  ABISELECT(-688,-388),
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI9S19905C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19905C18D1Ev,_ZThn12_N9S19905C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19905C18D0Ev,_ZThn12_N9S19905C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19905C18D1Ev,_ZTv0_n12_N9S19905C18D1Ev)();
extern void ABISELECT(_ZThn48_N9S19905C18D1Ev,_ZThn20_N9S19905C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19905C18D0Ev,_ZTv0_n12_N9S19905C18D0Ev)();
extern void ABISELECT(_ZThn48_N9S19905C18D0Ev,_ZThn20_N9S19905C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19905C78S19905C39S19905C20__A1__9S19905C18__8S19905C1[] = {
  ABISELECT(-704,-396),
  ABISELECT(-48,-20),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI9S19905C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C18D1Ev,_ZTv0_n12_N9S19905C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19905C18D0Ev,_ZTv0_n12_N9S19905C18D0Ev),
};
static  VTT_ENTRY vtt_S19905C1[] = {
  {&(_ZTV8S19905C1[16]),  16,142},
  {&(_tg__ZTV8S19905C9__8S19905C1[15]),  15,17},
  {&(_tg__ZTV8S19905C4__8S19905C9__8S19905C1[5]),  5,7},
  {&(_tg__ZTV9S19905C10__8S19905C9__8S19905C1[11]),  11,13},
  {&(_tg__ZTV8S19905C7__8S19905C9__8S19905C1[4]),  4,6},
  {&(_tg__ZTV8S19905C6__8S19905C9__8S19905C1[5]),  5,7},
  {&(_tg__ZTV9S19905C12__8S19905C9__8S19905C1[8]),  8,10},
  {&(_tg__ZTV8S19905C3__8S19905C9__8S19905C1[6]),  6,8},
  {&(_tg__ZTV8S19905C4__8S19905C9__8S19905C1[5]),  5,7},
  {&(_tg__ZTV8S19905C78S19905C3__A1__8S19905C9__8S19905C1[4]),  4,6},
  {&(_tg__ZTV9S19905C13__8S19905C9__8S19905C1[12]),  12,14},
  {&(_tg__ZTV9S19905C15__8S19905C9__8S19905C1[9]),  9,11},
  {&(_tg__ZTV8S19905C49S19905C15__A2__8S19905C9__8S19905C1[5]),  5,7},
  {&(_ZTV8S19905C1[24]),  24,142},
  {&(_ZTV8S19905C1[37]),  37,142},
  {&(_ZTV8S19905C1[37]),  37,142},
  {&(_ZTV8S19905C1[43]),  43,142},
  {&(_ZTV8S19905C1[30]),  30,142},
  {&(_ZTV8S19905C1[56]),  56,142},
  {&(_ZTV8S19905C1[63]),  63,142},
  {&(_ZTV8S19905C1[73]),  73,142},
  {&(_ZTV8S19905C1[87]),  87,142},
  {&(_ZTV8S19905C1[98]),  98,142},
  {&(_ZTV8S19905C1[105]),  105,142},
  {&(_ZTV8S19905C1[114]),  114,142},
  {&(_ZTV8S19905C1[123]),  123,142},
  {&(_ZTV8S19905C1[130]),  130,142},
  {&(_ZTV8S19905C1[136]),  136,142},
  {&(_ZTV8S19905C1[140]),  140,142},
  {&(_tg__ZTV8S19905C3__8S19905C1[5]),  5,7},
  {&(_tg__ZTV8S19905C78S19905C3__A1__8S19905C1[4]),  4,6},
  {&(_tg__ZTV11S19905C5_nt__8S19905C78S19905C3__A1__8S19905C1[3]),  3,5},
  {&(_tg__ZTV8S19905C4__8S19905C3__8S19905C1[5]),  5,7},
  {&(_tg__ZTV8S19905C4__8S19905C3__8S19905C1[5]),  5,7},
  {&(_tg__ZTV8S19905C7__8S19905C3__8S19905C1[4]),  4,6},
  {&(_tg__ZTV8S19905C7__A__8S19905C3__8S19905C1[4]),  4,6},
  {&(_tg__ZTV8S19905C4__8S19905C1[5]),  5,7},
  {&(_tg__ZTV8S19905C68S19905C4__8S19905C1[5]),  5,7},
  {&(_tg__ZTV8S19905C68S19905C4__8S19905C1[5]),  5,7},
  {&(_tg__ZTV8S19905C7__8S19905C68S19905C4__8S19905C1[4]),  4,6},
  {&(_tg__ZTV8S19905C4__8S19905C1[5]),  5,7},
  {&(_tg__ZTV8S19905C7__8S19905C4__8S19905C1[4]),  4,6},
  {&(_tg__ZTV8S19905C7__8S19905C1[4]),  4,6},
  {&(_tg__ZTV11S19905C5_nt__8S19905C7__8S19905C1[3]),  3,5},
  {&(_tg__ZTV9S19905C10__8S19905C1[11]),  11,13},
  {&(_tg__ZTV8S19905C49S19905C10__A1__8S19905C1[5]),  5,7},
  {&(_tg__ZTV8S19905C68S19905C49S19905C10__A2__8S19905C1[5]),  5,7},
  {&(_tg__ZTV11S19905C5_nt__8S19905C68S19905C49S19905C10__A2__8S19905C1[3]),  3,5},
  {&(_tg__ZTV8S19905C7__8S19905C68S19905C49S19905C10__A2__8S19905C1[4]),  4,6},
  {&(_tg__ZTV11S19905C5_nt__8S19905C49S19905C10__A1__8S19905C1[3]),  3,5},
  {&(_tg__ZTV8S19905C7__8S19905C49S19905C10__A1__8S19905C1[4]),  4,6},
  {&(_tg__ZTV8S19905C7__9S19905C10__8S19905C1[4]),  4,6},
  {&(_tg__ZTV8S19905C4__9S19905C10__8S19905C1[5]),  5,7},
  {&(_tg__ZTV8S19905C6__9S19905C10__8S19905C1[5]),  5,7},
  {&(_tg__ZTV9S19905C12__9S19905C10__8S19905C1[8]),  8,10},
  {&(_tg__ZTV8S19905C3__9S19905C10__8S19905C1[6]),  6,8},
  {&(_tg__ZTV8S19905C4__9S19905C10__8S19905C1[5]),  5,7},
  {&(_tg__ZTV8S19905C78S19905C3__A1__9S19905C10__8S19905C1[4]),  4,6},
  {&(_tg__ZTV8S19905C6__A1__8S19905C1[5]),  5,7},
  {&(_tg__ZTV11S19905C5_nt__8S19905C6__A1__8S19905C1[3]),  3,5},
  {&(_tg__ZTV8S19905C7__8S19905C6__A1__8S19905C1[4]),  4,6},
  {&(_tg__ZTV9S19905C12__8S19905C1[8]),  8,10},
  {&(_tg__ZTV8S19905C79S19905C12__A2__8S19905C1[4]),  4,6},
  {&(_tg__ZTV11S19905C5_nt__8S19905C79S19905C12__A2__8S19905C1[3]),  3,5},
  {&(_tg__ZTV8S19905C3__9S19905C12__8S19905C1[6]),  6,8},
  {&(_tg__ZTV8S19905C4__9S19905C12__8S19905C1[5]),  5,7},
  {&(_tg__ZTV8S19905C4__9S19905C12__8S19905C1[5]),  5,7},
  {&(_tg__ZTV8S19905C7__9S19905C12__8S19905C1[4]),  4,6},
  {&(_tg__ZTV8S19905C78S19905C3__A1__9S19905C12__8S19905C1[4]),  4,6},
  {&(_tg__ZTV9S19905C13__8S19905C1[12]),  12,14},
  {&(_tg__ZTV9S19905C149S19905C13__8S19905C1[11]),  11,13},
  {&(_tg__ZTV9S19905C169S19905C149S19905C13__8S19905C1[7]),  7,9},
  {&(_tg__ZTV8S19905C4__9S19905C169S19905C149S19905C13__8S19905C1[5]),  5,7},
  {&(_tg__ZTV8S19905C4__9S19905C169S19905C149S19905C13__8S19905C1[5]),  5,7},
  {&(_tg__ZTV8S19905C7__9S19905C169S19905C149S19905C13__8S19905C1[4]),  4,6},
  {&(_tg__ZTV8S19905C7__9S19905C149S19905C13__8S19905C1[4]),  4,6},
  {&(_tg__ZTV8S19905C4__9S19905C149S19905C13__8S19905C1[5]),  5,7},
  {&(_tg__ZTV9S19905C15__9S19905C149S19905C13__8S19905C1[9]),  9,11},
  {&(_tg__ZTV9S19905C12__9S19905C149S19905C13__8S19905C1[8]),  8,10},
  {&(_tg__ZTV8S19905C3__9S19905C149S19905C13__8S19905C1[6]),  6,8},
  {&(_tg__ZTV8S19905C4__9S19905C149S19905C13__8S19905C1[5]),  5,7},
  {&(_tg__ZTV8S19905C78S19905C3__A2__9S19905C149S19905C13__8S19905C1[4]),  4,6},
  {&(_tg__ZTV8S19905C49S19905C15__A1__9S19905C149S19905C13__8S19905C1[5]),  5,7},
  {&(_tg__ZTV8S19905C7__9S19905C13__8S19905C1[4]),  4,6},
  {&(_tg__ZTV8S19905C4__9S19905C13__8S19905C1[5]),  5,7},
  {&(_tg__ZTV9S19905C15__9S19905C13__8S19905C1[9]),  9,11},
  {&(_tg__ZTV9S19905C12__9S19905C13__8S19905C1[8]),  8,10},
  {&(_tg__ZTV8S19905C3__9S19905C13__8S19905C1[6]),  6,8},
  {&(_tg__ZTV8S19905C4__9S19905C13__8S19905C1[5]),  5,7},
  {&(_tg__ZTV8S19905C78S19905C3__A2__9S19905C13__8S19905C1[4]),  4,6},
  {&(_tg__ZTV8S19905C49S19905C15__A1__9S19905C13__8S19905C1[5]),  5,7},
  {&(_tg__ZTV9S19905C15__8S19905C1[9]),  9,11},
  {&(_tg__ZTV8S19905C79S19905C15__A3__8S19905C1[4]),  4,6},
  {&(_tg__ZTV11S19905C5_nt__8S19905C79S19905C15__A3__8S19905C1[3]),  3,5},
  {&(_tg__ZTV8S19905C49S19905C15__A2__8S19905C1[5]),  5,7},
  {&(_tg__ZTV8S19905C68S19905C49S19905C15__A3__8S19905C1[5]),  5,7},
  {&(_tg__ZTV11S19905C5_nt__8S19905C68S19905C49S19905C15__A3__8S19905C1[3]),  3,5},
  {&(_tg__ZTV8S19905C7__8S19905C68S19905C49S19905C15__A3__8S19905C1[4]),  4,6},
  {&(_tg__ZTV11S19905C5_nt__8S19905C49S19905C15__A2__8S19905C1[3]),  3,5},
  {&(_tg__ZTV8S19905C7__8S19905C49S19905C15__A2__8S19905C1[4]),  4,6},
  {&(_tg__ZTV8S19905C4__9S19905C15__8S19905C1[5]),  5,7},
  {&(_tg__ZTV9S19905C12__9S19905C15__8S19905C1[8]),  8,10},
  {&(_tg__ZTV8S19905C3__9S19905C15__8S19905C1[6]),  6,8},
  {&(_tg__ZTV8S19905C4__9S19905C15__8S19905C1[5]),  5,7},
  {&(_tg__ZTV8S19905C7__A1__9S19905C15__8S19905C1[4]),  4,6},
  {&(_tg__ZTV8S19905C78S19905C3__A2__9S19905C15__8S19905C1[4]),  4,6},
  {&(_tg__ZTV8S19905C4__A__9S19905C15__8S19905C1[5]),  5,7},
  {&(_tg__ZTV9S19905C18__8S19905C1[6]),  6,8},
  {&(_tg__ZTV9S19905C209S19905C18__8S19905C1[7]),  7,9},
  {&(_tg__ZTV8S19905C69S19905C209S19905C18__A4__8S19905C1[5]),  5,7},
  {&(_tg__ZTV11S19905C5_nt__8S19905C69S19905C209S19905C18__A4__8S19905C1[3]),  3,5},
  {&(_tg__ZTV8S19905C7__8S19905C69S19905C209S19905C18__A4__8S19905C1[4]),  4,6},
  {&(_tg__ZTV8S19905C39S19905C209S19905C18__A1__8S19905C1[5]),  5,7},
  {&(_tg__ZTV8S19905C78S19905C39S19905C209S19905C18__A4__8S19905C1[4]),  4,6},
  {&(_tg__ZTV11S19905C5_nt__8S19905C78S19905C39S19905C209S19905C18__A4__8S19905C1[3]),  3,5},
  {&(_tg__ZTV8S19905C4__8S19905C39S19905C209S19905C18__A1__8S19905C1[5]),  5,7},
  {&(_tg__ZTV8S19905C4__8S19905C39S19905C209S19905C18__A1__8S19905C1[5]),  5,7},
  {&(_tg__ZTV8S19905C7__8S19905C39S19905C209S19905C18__A1__8S19905C1[4]),  4,6},
  {&(_tg__ZTV8S19905C7__A__8S19905C39S19905C209S19905C18__A1__8S19905C1[4]),  4,6},
  {&(_tg__ZTV8S19905C4__9S19905C209S19905C18__8S19905C1[5]),  5,7},
  {&(_tg__ZTV8S19905C7__9S19905C209S19905C18__8S19905C1[4]),  4,6},
  {&(_tg__ZTV8S19905C3__9S19905C209S19905C18__8S19905C1[5]),  5,7},
  {&(_tg__ZTV8S19905C4__9S19905C209S19905C18__8S19905C1[5]),  5,7},
  {&(_tg__ZTV8S19905C78S19905C3__A1__9S19905C209S19905C18__8S19905C1[4]),  4,6},
  {&(_tg__ZTV8S19905C4__9S19905C18__8S19905C1[5]),  5,7},
  {&(_tg__ZTV8S19905C4__9S19905C18__8S19905C1[5]),  5,7},
  {&(_tg__ZTV8S19905C7__9S19905C18__8S19905C1[4]),  4,6},
  {&(_tg__ZTV9S19905C20__9S19905C18__8S19905C1[7]),  7,9},
  {&(_tg__ZTV8S19905C39S19905C20__9S19905C18__8S19905C1[5]),  5,7},
  {&(_tg__ZTV8S19905C78S19905C39S19905C20__A1__9S19905C18__8S19905C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S19905C1[];
extern  VTBL_ENTRY _ZTV8S19905C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19905C1[];
static VTBL_ENTRY alt_thunk_names13[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C18D0Ev,_ZTv0_n12_N9S19905C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19905C18D0Ev,_ZThn20_N9S19905C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19905C18D0Ev,_ZThn4_N9S19905C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C18D1Ev,_ZTv0_n12_N9S19905C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19905C18D1Ev,_ZThn20_N9S19905C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19905C18D1Ev,_ZThn4_N9S19905C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C20D0Ev,_ZTv0_n12_N9S19905C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19905C20D0Ev,_ZThn16_N9S19905C20D0Ev),
  (VTBL_ENTRY)_ZN9S19905C20D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C20D1Ev,_ZTv0_n12_N9S19905C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19905C20D1Ev,_ZThn16_N9S19905C20D1Ev),
  (VTBL_ENTRY)_ZN9S19905C20D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C15D0Ev,_ZTv0_n12_N9S19905C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19905C15D0Ev,_ZThn28_N9S19905C15D0Ev),
  (VTBL_ENTRY)_ZN9S19905C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C15D1Ev,_ZTv0_n12_N9S19905C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19905C15D1Ev,_ZThn28_N9S19905C15D1Ev),
  (VTBL_ENTRY)_ZN9S19905C15D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C16D0Ev,_ZTv0_n12_N9S19905C16D0Ev), // 
  (VTBL_ENTRY)_ZN9S19905C16D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C16D1Ev,_ZTv0_n12_N9S19905C16D1Ev), // 
  (VTBL_ENTRY)_ZN9S19905C16D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C14D0Ev,_ZTv0_n12_N9S19905C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19905C14D0Ev,_ZThn84_N9S19905C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19905C14D0Ev,_ZThn56_N9S19905C14D0Ev),
  (VTBL_ENTRY)_ZN9S19905C14D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C14D1Ev,_ZTv0_n12_N9S19905C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19905C14D1Ev,_ZThn84_N9S19905C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19905C14D1Ev,_ZThn56_N9S19905C14D1Ev),
  (VTBL_ENTRY)_ZN9S19905C14D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C13D0Ev,_ZTv0_n12_N9S19905C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19905C13D0Ev,_ZThn84_N9S19905C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19905C13D0Ev,_ZThn56_N9S19905C13D0Ev),
  (VTBL_ENTRY)_ZN9S19905C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C13D1Ev,_ZTv0_n12_N9S19905C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19905C13D1Ev,_ZThn84_N9S19905C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19905C13D1Ev,_ZThn56_N9S19905C13D1Ev),
  (VTBL_ENTRY)_ZN9S19905C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C12D0Ev,_ZTv0_n12_N9S19905C12D0Ev), // 
  (VTBL_ENTRY)_ZN9S19905C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C12D1Ev,_ZTv0_n12_N9S19905C12D1Ev), // 
  (VTBL_ENTRY)_ZN9S19905C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C10D0Ev,_ZTv0_n12_N9S19905C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S19905C10D0Ev,_ZThn156_N9S19905C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn248_N9S19905C10D0Ev,_ZThn148_N9S19905C10D0Ev),
  (VTBL_ENTRY)_ZN9S19905C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19905C10D1Ev,_ZTv0_n12_N9S19905C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S19905C10D1Ev,_ZThn156_N9S19905C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn248_N9S19905C10D1Ev,_ZThn148_N9S19905C10D1Ev),
  (VTBL_ENTRY)_ZN9S19905C10D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C6D0Ev,_ZTv0_n12_N8S19905C6D0Ev), // 
  (VTBL_ENTRY)_ZN8S19905C6D0Ev,
  (VTBL_ENTRY)_ZN8S19905C6D0Ev,
  (VTBL_ENTRY)_ZN8S19905C6D0Ev,
  (VTBL_ENTRY)_ZN8S19905C6D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19905C6D0Ev,_ZThn36_N8S19905C6D0Ev),
  (VTBL_ENTRY)_ZN8S19905C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C6D1Ev,_ZTv0_n12_N8S19905C6D1Ev), // 
  (VTBL_ENTRY)_ZN8S19905C6D1Ev,
  (VTBL_ENTRY)_ZN8S19905C6D1Ev,
  (VTBL_ENTRY)_ZN8S19905C6D1Ev,
  (VTBL_ENTRY)_ZN8S19905C6D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19905C6D1Ev,_ZThn36_N8S19905C6D1Ev),
  (VTBL_ENTRY)_ZN8S19905C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C4D0Ev,_ZTv0_n12_N8S19905C4D0Ev), // 
  (VTBL_ENTRY)_ZN8S19905C4D0Ev,
  (VTBL_ENTRY)_ZN8S19905C4D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19905C4D0Ev,_ZThn36_N8S19905C4D0Ev),
  (VTBL_ENTRY)_ZN8S19905C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C4D1Ev,_ZTv0_n12_N8S19905C4D1Ev), // 
  (VTBL_ENTRY)_ZN8S19905C4D1Ev,
  (VTBL_ENTRY)_ZN8S19905C4D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19905C4D1Ev,_ZThn36_N8S19905C4D1Ev),
  (VTBL_ENTRY)_ZN8S19905C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C3D0Ev,_ZTv0_n12_N8S19905C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19905C3D0Ev,_ZThn8_N8S19905C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19905C3D0Ev,_ZThn8_N8S19905C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19905C3D0Ev,_ZThn76_N8S19905C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19905C3D0Ev,_ZThn40_N8S19905C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C3D1Ev,_ZTv0_n12_N8S19905C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19905C3D1Ev,_ZThn8_N8S19905C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19905C3D1Ev,_ZThn8_N8S19905C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19905C3D1Ev,_ZThn76_N8S19905C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19905C3D1Ev,_ZThn40_N8S19905C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C7D0Ev,_ZTv0_n12_N8S19905C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S19905C7D0Ev,
  (VTBL_ENTRY)_ZN8S19905C7D0Ev,
  (VTBL_ENTRY)_ZN8S19905C7D0Ev,
  (VTBL_ENTRY)_ZN8S19905C7D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19905C7D0Ev,_ZThn32_N8S19905C7D0Ev),
  (VTBL_ENTRY)_ZN8S19905C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C7D1Ev,_ZTv0_n12_N8S19905C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S19905C7D1Ev,
  (VTBL_ENTRY)_ZN8S19905C7D1Ev,
  (VTBL_ENTRY)_ZN8S19905C7D1Ev,
  (VTBL_ENTRY)_ZN8S19905C7D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19905C7D1Ev,_ZThn32_N8S19905C7D1Ev),
  (VTBL_ENTRY)_ZN8S19905C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19905C9D0Ev,_ZTv0_n24_N8S19905C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19905C9D0Ev,_ZThn8_N8S19905C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19905C9D1Ev,_ZTv0_n24_N8S19905C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19905C9D1Ev,_ZThn8_N8S19905C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C9D0Ev,_ZTv0_n12_N8S19905C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N8S19905C9D0Ev,_ZThn384_N8S19905C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn624_N8S19905C9D0Ev,_ZThn356_N8S19905C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S19905C9D0Ev,_ZThn300_N8S19905C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19905C9D0Ev,_ZThn16_N8S19905C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19905C9D0Ev,_ZThn268_N8S19905C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn440_N8S19905C9D0Ev,_ZThn260_N8S19905C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19905C9D0Ev,_ZThn84_N8S19905C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19905C9D0Ev,_ZThn112_N8S19905C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19905C9D0Ev,_ZThn48_N8S19905C9D0Ev),
  (VTBL_ENTRY)_ZN8S19905C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C9D1Ev,_ZTv0_n12_N8S19905C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N8S19905C9D1Ev,_ZThn384_N8S19905C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn624_N8S19905C9D1Ev,_ZThn356_N8S19905C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S19905C9D1Ev,_ZThn300_N8S19905C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19905C9D1Ev,_ZThn16_N8S19905C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19905C9D1Ev,_ZThn268_N8S19905C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn440_N8S19905C9D1Ev,_ZThn260_N8S19905C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19905C9D1Ev,_ZThn84_N8S19905C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19905C9D1Ev,_ZThn112_N8S19905C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19905C9D1Ev,_ZThn48_N8S19905C9D1Ev),
  (VTBL_ENTRY)_ZN8S19905C9D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19905C1D0Ev,_ZTv0_n28_N8S19905C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn736_N8S19905C1D0Ev,_ZThn424_N8S19905C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19905C1D1Ev,_ZTv0_n28_N8S19905C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn736_N8S19905C1D1Ev,_ZThn424_N8S19905C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19905C1D0Ev,_ZTv0_n24_N8S19905C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19905C1D0Ev,_ZThn8_N8S19905C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19905C1D1Ev,_ZTv0_n24_N8S19905C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19905C1D1Ev,_ZThn8_N8S19905C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C1D0Ev,_ZTv0_n12_N8S19905C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S19905C1D0Ev,_ZThn444_N8S19905C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn752_N8S19905C1D0Ev,_ZThn428_N8S19905C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn672_N8S19905C1D0Ev,_ZThn384_N8S19905C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn624_N8S19905C1D0Ev,_ZThn356_N8S19905C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S19905C1D0Ev,_ZThn300_N8S19905C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19905C1D0Ev,_ZThn268_N8S19905C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn440_N8S19905C1D0Ev,_ZThn260_N8S19905C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19905C1D0Ev,_ZThn112_N8S19905C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19905C1D0Ev,_ZThn84_N8S19905C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19905C1D0Ev,_ZThn48_N8S19905C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19905C1D0Ev,_ZThn16_N8S19905C1D0Ev),
  (VTBL_ENTRY)_ZN8S19905C1D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19905C1D1Ev,_ZTv0_n12_N8S19905C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S19905C1D1Ev,_ZThn444_N8S19905C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn752_N8S19905C1D1Ev,_ZThn428_N8S19905C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn672_N8S19905C1D1Ev,_ZThn384_N8S19905C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn624_N8S19905C1D1Ev,_ZThn356_N8S19905C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S19905C1D1Ev,_ZThn300_N8S19905C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19905C1D1Ev,_ZThn268_N8S19905C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn440_N8S19905C1D1Ev,_ZThn260_N8S19905C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19905C1D1Ev,_ZThn112_N8S19905C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19905C1D1Ev,_ZThn84_N8S19905C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19905C1D1Ev,_ZThn48_N8S19905C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19905C1D1Ev,_ZThn16_N8S19905C1D1Ev),
  (VTBL_ENTRY)_ZN8S19905C1D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19905C1 = {  "S19905C1", // class name
  bases_S19905C1, 42,
  &(vtc_S19905C1[0]), // expected_vtbl_contents
  &(vtt_S19905C1[0]), // expected_vtt_contents
  ABISELECT(864,492), // object size
  NSPAIRA(_ZTI8S19905C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19905C1),142, //virtual function table var
  16, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19905C1),130, //virtual table table var
  29, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names13,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7713C5_nt  {
  virtual void  v8(); // _ZN10S7713C5_nt2v8Ev
  ~S7713C5_nt(); // tgen
  S7713C5_nt(); // tgen
};
//SIG(-1 S7713C5_nt) C1{ v1}


void  S7713C5_nt ::v8(){vfunc_called(this, "_ZN10S7713C5_nt2v8Ev");}
S7713C5_nt ::~S7713C5_nt(){ note_dtor("S7713C5_nt", this);} // tgen
S7713C5_nt ::S7713C5_nt(){ note_ctor("S7713C5_nt", this);} // tgen

//skip512 S7713C5_nt

#else // __cplusplus

extern void _ZN10S7713C5_ntC1Ev();
extern void _ZN10S7713C5_ntD1Ev();
Name_Map name_map_S7713C5_nt[] = {
  NSPAIR(_ZN10S7713C5_ntC1Ev),
  NSPAIR(_ZN10S7713C5_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S7713C5_nt[];
extern void _ZN10S7713C5_nt2v8Ev();
static  VTBL_ENTRY vtc_S7713C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S7713C5_nt[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
};
extern VTBL_ENTRY _ZTI10S7713C5_nt[];
VTBL_ENTRY *P__ZTI10S7713C5_nt = _ZTI10S7713C5_nt; 
extern  VTBL_ENTRY _ZTV10S7713C5_nt[];
Class_Descriptor cd_S7713C5_nt = {  "S7713C5_nt", // class name
  0,0,//no base classes
  &(vtc_S7713C5_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S7713C5_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S7713C5_nt),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7713C6  : S7713C5_nt {
  virtual void  v9(); // _ZN7S7713C62v9Ev
  virtual void  v10(); // _ZN7S7713C63v10Ev
  virtual void  v11(); // _ZN7S7713C63v11Ev
  ~S7713C6(); // tgen
  S7713C6(); // tgen
};
//SIG(-1 S7713C6) C1{ BC2{ v4} v1 v2 v3}


void  S7713C6 ::v9(){vfunc_called(this, "_ZN7S7713C62v9Ev");}
void  S7713C6 ::v10(){vfunc_called(this, "_ZN7S7713C63v10Ev");}
void  S7713C6 ::v11(){vfunc_called(this, "_ZN7S7713C63v11Ev");}
S7713C6 ::~S7713C6(){ note_dtor("S7713C6", this);} // tgen
S7713C6 ::S7713C6(){ note_ctor("S7713C6", this);} // tgen

static void Test_S7713C6()
{
  extern Class_Descriptor cd_S7713C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7713C6, buf);
    S7713C6 *dp, &lv = *(dp=new (buf) S7713C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7713C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7713C6)");
    check_base_class_offset(lv, (S7713C5_nt*), 0, "S7713C6");
    test_class_info(&lv, &cd_S7713C6);
    dp->~S7713C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7713C6(Test_S7713C6, "S7713C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7713C6C1Ev();
extern void _ZN7S7713C6D1Ev();
Name_Map name_map_S7713C6[] = {
  NSPAIR(_ZN7S7713C6C1Ev),
  NSPAIR(_ZN7S7713C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7713C5_nt;
extern VTBL_ENTRY _ZTI10S7713C5_nt[];
extern  VTBL_ENTRY _ZTV10S7713C5_nt[];
static Base_Class bases_S7713C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7713C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7713C6[];
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C62v9Ev();
extern void _ZN7S7713C63v10Ev();
extern void _ZN7S7713C63v11Ev();
static  VTBL_ENTRY vtc_S7713C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7713C6[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v11Ev,
};
extern VTBL_ENTRY _ZTI7S7713C6[];
extern  VTBL_ENTRY _ZTV7S7713C6[];
Class_Descriptor cd_S7713C6 = {  "S7713C6", // class name
  bases_S7713C6, 1,
  &(vtc_S7713C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7713C6),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7713C6),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7713C7  : virtual S7713C6 , S7713C5_nt {
  int s7713c7f0;
  virtual void  v12(); // _ZN7S7713C73v12Ev
  virtual void  v13(); // _ZN7S7713C73v13Ev
  virtual void  v14(); // _ZN7S7713C73v14Ev
  virtual void  v15(); // _ZN7S7713C73v15Ev
  virtual void  v16(); // _ZN7S7713C73v16Ev
  virtual void  v17(); // _ZN7S7713C73v17Ev
  ~S7713C7(); // tgen
  S7713C7(); // tgen
};
//SIG(-1 S7713C7) C1{ VBC2{ BC3{ v7} v8 v9 v10} BC3 v1 v2 v3 v4 v5 v6 Fi}


void  S7713C7 ::v12(){vfunc_called(this, "_ZN7S7713C73v12Ev");}
void  S7713C7 ::v13(){vfunc_called(this, "_ZN7S7713C73v13Ev");}
void  S7713C7 ::v14(){vfunc_called(this, "_ZN7S7713C73v14Ev");}
void  S7713C7 ::v15(){vfunc_called(this, "_ZN7S7713C73v15Ev");}
void  S7713C7 ::v16(){vfunc_called(this, "_ZN7S7713C73v16Ev");}
void  S7713C7 ::v17(){vfunc_called(this, "_ZN7S7713C73v17Ev");}
S7713C7 ::~S7713C7(){ note_dtor("S7713C7", this);} // tgen
S7713C7 ::S7713C7(){ note_ctor("S7713C7", this);} // tgen

static void Test_S7713C7()
{
  extern Class_Descriptor cd_S7713C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S7713C7, buf);
    S7713C7 *dp, &lv = *(dp=new (buf) S7713C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S7713C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7713C7)");
    check_base_class_offset(lv, (S7713C5_nt*)(S7713C6*), ABISELECT(16,8), "S7713C7");
    check_base_class_offset(lv, (S7713C6*), ABISELECT(16,8), "S7713C7");
    /*is_ambiguous_... S7713C7::S7713C5_nt */ AMB_check_base_class_offset(lv, (S7713C5_nt*), 0, "S7713C7");
    check_field_offset(lv, s7713c7f0, ABISELECT(8,4), "S7713C7.s7713c7f0");
    test_class_info(&lv, &cd_S7713C7);
    dp->~S7713C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7713C7(Test_S7713C7, "S7713C7", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S7713C7C1Ev();
extern void _ZN7S7713C7D1Ev();
Name_Map name_map_S7713C7[] = {
  NSPAIR(_ZN7S7713C7C1Ev),
  NSPAIR(_ZN7S7713C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7713C5_nt;
extern VTBL_ENTRY _ZTI10S7713C5_nt[];
extern  VTBL_ENTRY _ZTV10S7713C5_nt[];
extern Class_Descriptor cd_S7713C6;
extern VTBL_ENTRY _ZTI7S7713C6[];
extern  VTBL_ENTRY _ZTV7S7713C6[];
extern Class_Descriptor cd_S7713C5_nt;
extern VTBL_ENTRY _ZTI10S7713C5_nt[];
extern  VTBL_ENTRY _ZTV10S7713C5_nt[];
static Base_Class bases_S7713C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7713C5_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7713C6,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7713C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7713C7[];
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C73v12Ev();
extern void _ZN7S7713C73v13Ev();
extern void _ZN7S7713C73v14Ev();
extern void _ZN7S7713C73v15Ev();
extern void _ZN7S7713C73v16Ev();
extern void _ZN7S7713C73v17Ev();
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C62v9Ev();
extern void _ZN7S7713C63v10Ev();
extern void _ZN7S7713C63v11Ev();
static  VTBL_ENTRY vtc_S7713C7[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7713C7[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v12Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v17Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7713C7[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v11Ev,
};
extern VTBL_ENTRY _ZTV7S7713C7[];
static  VTT_ENTRY vtt_S7713C7[] = {
  {&(_ZTV7S7713C7[3]),  3,20},
  {&(_ZTV7S7713C7[16]),  16,20},
};
extern VTBL_ENTRY _ZTI7S7713C7[];
extern  VTBL_ENTRY _ZTV7S7713C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7713C7[];
Class_Descriptor cd_S7713C7 = {  "S7713C7", // class name
  bases_S7713C7, 3,
  &(vtc_S7713C7[0]), // expected_vtbl_contents
  &(vtt_S7713C7[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S7713C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7713C7),20, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7713C7),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7713C4  : S7713C5_nt , virtual S7713C6 , S7713C7 {
  char s7713c4f0;
  virtual void  v18(); // _ZN7S7713C43v18Ev
  virtual void  v19(); // _ZN7S7713C43v19Ev
  virtual void  v20(); // _ZN7S7713C43v20Ev
  virtual void  v21(); // _ZN7S7713C43v21Ev
  virtual void  v22(); // _ZN7S7713C43v22Ev
  virtual void  v23(); // _ZN7S7713C43v23Ev
  virtual void  v24(); // _ZN7S7713C43v24Ev
  ~S7713C4(); // tgen
  S7713C4(); // tgen
};
//SIG(-1 S7713C4) C1{ BC2{ v8} VBC3{ BC2 v9 v10 v11} BC4{ VBC3 BC2 v12 v13 v14 v15 v16 v17 Fi} v1 v2 v3 v4 v5 v6 v7 Fc}


void  S7713C4 ::v18(){vfunc_called(this, "_ZN7S7713C43v18Ev");}
void  S7713C4 ::v19(){vfunc_called(this, "_ZN7S7713C43v19Ev");}
void  S7713C4 ::v20(){vfunc_called(this, "_ZN7S7713C43v20Ev");}
void  S7713C4 ::v21(){vfunc_called(this, "_ZN7S7713C43v21Ev");}
void  S7713C4 ::v22(){vfunc_called(this, "_ZN7S7713C43v22Ev");}
void  S7713C4 ::v23(){vfunc_called(this, "_ZN7S7713C43v23Ev");}
void  S7713C4 ::v24(){vfunc_called(this, "_ZN7S7713C43v24Ev");}
S7713C4 ::~S7713C4(){ note_dtor("S7713C4", this);} // tgen
S7713C4 ::S7713C4(){ note_ctor("S7713C4", this);} // tgen

static void Test_S7713C4()
{
  extern Class_Descriptor cd_S7713C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S7713C4, buf);
    S7713C4 *dp, &lv = *(dp=new (buf) S7713C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S7713C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7713C4)");
    /*is_ambiguous_... S7713C4::S7713C5_nt */ AMB_check_base_class_offset(lv, (S7713C5_nt*), 0, "S7713C4");
    check_base_class_offset(lv, (S7713C5_nt*)(S7713C6*), ABISELECT(24,16), "S7713C4");
    check_base_class_offset(lv, (S7713C6*), ABISELECT(24,16), "S7713C4");
    check_base_class_offset(lv, (S7713C6*)(S7713C7*), ABISELECT(24,16), "S7713C4");
    /*is_ambiguous_... S7713C7::S7713C5_nt */ AMB_check_base_class_offset(lv, (S7713C5_nt*)(S7713C7*), ABISELECT(8,4), "S7713C4");
    check_base_class_offset(lv, (S7713C7*), ABISELECT(8,4), "S7713C4");
    check_field_offset(lv, s7713c4f0, ABISELECT(20,12), "S7713C4.s7713c4f0");
    test_class_info(&lv, &cd_S7713C4);
    dp->~S7713C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7713C4(Test_S7713C4, "S7713C4", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S7713C4C1Ev();
extern void _ZN7S7713C4D1Ev();
Name_Map name_map_S7713C4[] = {
  NSPAIR(_ZN7S7713C4C1Ev),
  NSPAIR(_ZN7S7713C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7713C5_nt;
extern VTBL_ENTRY _ZTI10S7713C5_nt[];
extern  VTBL_ENTRY _ZTV10S7713C5_nt[];
extern Class_Descriptor cd_S7713C5_nt;
extern VTBL_ENTRY _ZTI10S7713C5_nt[];
extern  VTBL_ENTRY _ZTV10S7713C5_nt[];
extern Class_Descriptor cd_S7713C6;
extern VTBL_ENTRY _ZTI7S7713C6[];
extern  VTBL_ENTRY _ZTV7S7713C6[];
extern Class_Descriptor cd_S7713C5_nt;
extern VTBL_ENTRY _ZTI10S7713C5_nt[];
extern  VTBL_ENTRY _ZTV10S7713C5_nt[];
extern Class_Descriptor cd_S7713C7;
extern VTBL_ENTRY _ZTI7S7713C7[];
extern  VTBL_ENTRY _ZTV7S7713C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7713C7[];
static Base_Class bases_S7713C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7713C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7713C5_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7713C6,    ABISELECT(24,16), //bcp->offset
    21, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7713C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7713C7,    ABISELECT(8,4), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7713C4[];
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C43v18Ev();
extern void _ZN7S7713C43v19Ev();
extern void _ZN7S7713C43v20Ev();
extern void _ZN7S7713C43v21Ev();
extern void _ZN7S7713C43v22Ev();
extern void _ZN7S7713C43v23Ev();
extern void _ZN7S7713C43v24Ev();
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C73v12Ev();
extern void _ZN7S7713C73v13Ev();
extern void _ZN7S7713C73v14Ev();
extern void _ZN7S7713C73v15Ev();
extern void _ZN7S7713C73v16Ev();
extern void _ZN7S7713C73v17Ev();
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C62v9Ev();
extern void _ZN7S7713C63v10Ev();
extern void _ZN7S7713C63v11Ev();
static  VTBL_ENTRY vtc_S7713C4[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7713C4[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v18Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v19Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v20Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v21Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v22Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v23Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v24Ev,
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7713C4[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v12Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v17Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7713C4[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v11Ev,
};
extern VTBL_ENTRY _ZTV7S7713C4[];
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C73v12Ev();
extern void _ZN7S7713C73v13Ev();
extern void _ZN7S7713C73v14Ev();
extern void _ZN7S7713C73v15Ev();
extern void _ZN7S7713C73v16Ev();
extern void _ZN7S7713C73v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C7__7S7713C4[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7713C7[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v12Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v17Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C62v9Ev();
extern void _ZN7S7713C63v10Ev();
extern void _ZN7S7713C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C6__7S7713C7__7S7713C4[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7713C7[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v11Ev,
};
static  VTT_ENTRY vtt_S7713C4[] = {
  {&(_ZTV7S7713C4[3]),  3,31},
  {&(_tg__ZTV7S7713C7__7S7713C4[3]),  3,10},
  {&(_tg__ZTV7S7713C6__7S7713C7__7S7713C4[6]),  6,10},
  {&(_ZTV7S7713C4[27]),  27,31},
  {&(_ZTV7S7713C4[14]),  14,31},
};
extern VTBL_ENTRY _ZTI7S7713C4[];
extern  VTBL_ENTRY _ZTV7S7713C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7713C4[];
Class_Descriptor cd_S7713C4 = {  "S7713C4", // class name
  bases_S7713C4, 5,
  &(vtc_S7713C4[0]), // expected_vtbl_contents
  &(vtt_S7713C4[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S7713C4),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7713C4),31, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7713C4),5, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7713C8_nt  {
  virtual void  v25(); // _ZN10S7713C8_nt3v25Ev
  virtual void  v26(); // _ZN10S7713C8_nt3v26Ev
  virtual void  v27(); // _ZN10S7713C8_nt3v27Ev
  virtual void  v28(); // _ZN10S7713C8_nt3v28Ev
  virtual void  v29(); // _ZN10S7713C8_nt3v29Ev
  ~S7713C8_nt(); // tgen
  S7713C8_nt(); // tgen
};
//SIG(-1 S7713C8_nt) C1{ v1 v2 v3 v4 v5}


void  S7713C8_nt ::v25(){vfunc_called(this, "_ZN10S7713C8_nt3v25Ev");}
void  S7713C8_nt ::v26(){vfunc_called(this, "_ZN10S7713C8_nt3v26Ev");}
void  S7713C8_nt ::v27(){vfunc_called(this, "_ZN10S7713C8_nt3v27Ev");}
void  S7713C8_nt ::v28(){vfunc_called(this, "_ZN10S7713C8_nt3v28Ev");}
void  S7713C8_nt ::v29(){vfunc_called(this, "_ZN10S7713C8_nt3v29Ev");}
S7713C8_nt ::~S7713C8_nt(){ note_dtor("S7713C8_nt", this);} // tgen
S7713C8_nt ::S7713C8_nt(){ note_ctor("S7713C8_nt", this);} // tgen

//skip512 S7713C8_nt

#else // __cplusplus

extern void _ZN10S7713C8_ntC1Ev();
extern void _ZN10S7713C8_ntD1Ev();
Name_Map name_map_S7713C8_nt[] = {
  NSPAIR(_ZN10S7713C8_ntC1Ev),
  NSPAIR(_ZN10S7713C8_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S7713C8_nt[];
extern void _ZN10S7713C8_nt3v25Ev();
extern void _ZN10S7713C8_nt3v26Ev();
extern void _ZN10S7713C8_nt3v27Ev();
extern void _ZN10S7713C8_nt3v28Ev();
extern void _ZN10S7713C8_nt3v29Ev();
static  VTBL_ENTRY vtc_S7713C8_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S7713C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v29Ev,
};
extern VTBL_ENTRY _ZTI10S7713C8_nt[];
VTBL_ENTRY *P__ZTI10S7713C8_nt = _ZTI10S7713C8_nt; 
extern  VTBL_ENTRY _ZTV10S7713C8_nt[];
Class_Descriptor cd_S7713C8_nt = {  "S7713C8_nt", // class name
  0,0,//no base classes
  &(vtc_S7713C8_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S7713C8_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S7713C8_nt),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7713C9  : virtual S7713C5_nt {
  virtual  ~S7713C9(); // _ZN7S7713C9D2Ev
  virtual void  v30(); // _ZN7S7713C93v30Ev
  S7713C9(); // tgen
};
//SIG(-1 S7713C9) C1{ VBC2{ v2} vd v1}


 S7713C9 ::~S7713C9(){ note_dtor("S7713C9", this);}
void  S7713C9 ::v30(){vfunc_called(this, "_ZN7S7713C93v30Ev");}
S7713C9 ::S7713C9(){ note_ctor("S7713C9", this);} // tgen

static void Test_S7713C9()
{
  extern Class_Descriptor cd_S7713C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7713C9, buf);
    S7713C9 *dp, &lv = *(dp=new (buf) S7713C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7713C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7713C9)");
    check_base_class_offset(lv, (S7713C5_nt*), 0, "S7713C9");
    test_class_info(&lv, &cd_S7713C9);
    dp->~S7713C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7713C9(Test_S7713C9, "S7713C9", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7713C9C1Ev();
extern void _ZN7S7713C9D2Ev();
Name_Map name_map_S7713C9[] = {
  NSPAIR(_ZN7S7713C9C1Ev),
  NSPAIR(_ZN7S7713C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7713C5_nt;
extern VTBL_ENTRY _ZTI10S7713C5_nt[];
extern  VTBL_ENTRY _ZTV10S7713C5_nt[];
static Base_Class bases_S7713C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7713C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7713C9[];
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C9D1Ev();
extern void _ZN7S7713C9D0Ev();
extern void _ZN7S7713C93v30Ev();
static  VTBL_ENTRY vtc_S7713C9[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7713C9[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7713C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7713C93v30Ev,
};
extern VTBL_ENTRY _ZTV7S7713C9[];
static  VTT_ENTRY vtt_S7713C9[] = {
  {&(_ZTV7S7713C9[4]),  4,8},
  {&(_ZTV7S7713C9[4]),  4,8},
};
extern VTBL_ENTRY _ZTI7S7713C9[];
extern  VTBL_ENTRY _ZTV7S7713C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7713C9[];
Class_Descriptor cd_S7713C9 = {  "S7713C9", // class name
  bases_S7713C9, 1,
  &(vtc_S7713C9[0]), // expected_vtbl_contents
  &(vtt_S7713C9[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7713C9),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7713C9),8, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7713C9),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7713C3  : virtual S7713C4 , virtual S7713C8_nt , S7713C9 {
  ::S7713C7 s7713c3f0;
  virtual  ~S7713C3(); // _ZN7S7713C3D2Ev
  virtual void  v31(); // _ZN7S7713C33v31Ev
  virtual void  v32(); // _ZN7S7713C33v32Ev
  virtual void  v33(); // _ZN7S7713C33v33Ev
  S7713C3(); // tgen
};
//SIG(-1 S7713C3) C1{ VBC2{ BC3{ v4} VBC4{ BC3 v5 v6 v7} BC5{ VBC4 BC3 v8 v9 v10 v11 v12 v13 Fi} v14 v15 v16 v17 v18 v19 v20 Fc} VBC6{ v21 v22 v23 v24 v25} BC7{ VBC3 vd v26} vd v1 v2 v3 FC5}


 S7713C3 ::~S7713C3(){ note_dtor("S7713C3", this);}
void  S7713C3 ::v31(){vfunc_called(this, "_ZN7S7713C33v31Ev");}
void  S7713C3 ::v32(){vfunc_called(this, "_ZN7S7713C33v32Ev");}
void  S7713C3 ::v33(){vfunc_called(this, "_ZN7S7713C33v33Ev");}
S7713C3 ::S7713C3(){ note_ctor("S7713C3", this);} // tgen

static void Test_S7713C3()
{
  extern Class_Descriptor cd_S7713C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,11)];
    init_test(&cd_S7713C3, buf);
    S7713C3 *dp, &lv = *(dp=new (buf) S7713C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,40), "sizeof(S7713C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7713C3)");
    /*is_ambiguous_... S7713C4::S7713C5_nt */ AMB_check_base_class_offset(lv, (S7713C5_nt*)(S7713C4*), ABISELECT(32,16), "S7713C3");
    check_base_class_offset(lv, (S7713C5_nt*)(S7713C6*), ABISELECT(56,32), "S7713C3");
    check_base_class_offset(lv, (S7713C6*)(S7713C4*), ABISELECT(56,32), "S7713C3");
    check_base_class_offset(lv, (S7713C6*)(S7713C7*)(S7713C4*), ABISELECT(56,32), "S7713C3");
    /*is_ambiguous_... S7713C7::S7713C5_nt */ AMB_check_base_class_offset(lv, (S7713C5_nt*)(S7713C7*)(S7713C4*), ABISELECT(40,20), "S7713C3");
    check_base_class_offset(lv, (S7713C7*)(S7713C4*), ABISELECT(40,20), "S7713C3");
    check_base_class_offset(lv, (S7713C4*), ABISELECT(32,16), "S7713C3");
    check_base_class_offset(lv, (S7713C8_nt*), ABISELECT(64,36), "S7713C3");
    check_base_class_offset(lv, (S7713C5_nt*)(S7713C9*), 0, "S7713C3");
    check_base_class_offset(lv, (S7713C9*), 0, "S7713C3");
    check_field_offset(lv, s7713c3f0, ABISELECT(8,4), "S7713C3.s7713c3f0");
    test_class_info(&lv, &cd_S7713C3);
    dp->~S7713C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7713C3(Test_S7713C3, "S7713C3", ABISELECT(72,40));

#else // __cplusplus

extern void _ZN7S7713C3C1Ev();
extern void _ZN7S7713C3D2Ev();
Name_Map name_map_S7713C3[] = {
  NSPAIR(_ZN7S7713C3C1Ev),
  NSPAIR(_ZN7S7713C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7713C5_nt;
extern VTBL_ENTRY _ZTI10S7713C5_nt[];
extern  VTBL_ENTRY _ZTV10S7713C5_nt[];
extern Class_Descriptor cd_S7713C5_nt;
extern VTBL_ENTRY _ZTI10S7713C5_nt[];
extern  VTBL_ENTRY _ZTV10S7713C5_nt[];
extern Class_Descriptor cd_S7713C6;
extern VTBL_ENTRY _ZTI7S7713C6[];
extern  VTBL_ENTRY _ZTV7S7713C6[];
extern Class_Descriptor cd_S7713C5_nt;
extern VTBL_ENTRY _ZTI10S7713C5_nt[];
extern  VTBL_ENTRY _ZTV10S7713C5_nt[];
extern Class_Descriptor cd_S7713C7;
extern VTBL_ENTRY _ZTI7S7713C7[];
extern  VTBL_ENTRY _ZTV7S7713C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7713C7[];
extern Class_Descriptor cd_S7713C4;
extern VTBL_ENTRY _ZTI7S7713C4[];
extern  VTBL_ENTRY _ZTV7S7713C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7713C4[];
extern Class_Descriptor cd_S7713C8_nt;
extern VTBL_ENTRY _ZTI10S7713C8_nt[];
extern  VTBL_ENTRY _ZTV10S7713C8_nt[];
extern Class_Descriptor cd_S7713C5_nt;
extern VTBL_ENTRY _ZTI10S7713C5_nt[];
extern  VTBL_ENTRY _ZTV10S7713C5_nt[];
extern Class_Descriptor cd_S7713C9;
extern VTBL_ENTRY _ZTI7S7713C9[];
extern  VTBL_ENTRY _ZTV7S7713C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7713C9[];
static Base_Class bases_S7713C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7713C5_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7713C5_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7713C6,    ABISELECT(56,32), //bcp->offset
    49, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7713C5_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7713C7,    ABISELECT(40,20), //bcp->offset
    39, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7713C4,    ABISELECT(32,16), //bcp->offset
    14, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7713C8_nt,    ABISELECT(64,36), //bcp->offset
    59, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7713C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7713C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7713C3[];
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C3D1Ev();
extern void _ZN7S7713C3D0Ev();
extern void _ZN7S7713C93v30Ev();
extern void _ZN7S7713C33v31Ev();
extern void _ZN7S7713C33v32Ev();
extern void _ZN7S7713C33v33Ev();
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C43v18Ev();
extern void _ZN7S7713C43v19Ev();
extern void _ZN7S7713C43v20Ev();
extern void _ZN7S7713C43v21Ev();
extern void _ZN7S7713C43v22Ev();
extern void _ZN7S7713C43v23Ev();
extern void _ZN7S7713C43v24Ev();
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C73v12Ev();
extern void _ZN7S7713C73v13Ev();
extern void _ZN7S7713C73v14Ev();
extern void _ZN7S7713C73v15Ev();
extern void _ZN7S7713C73v16Ev();
extern void _ZN7S7713C73v17Ev();
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C62v9Ev();
extern void _ZN7S7713C63v10Ev();
extern void _ZN7S7713C63v11Ev();
extern void _ZN10S7713C8_nt3v25Ev();
extern void _ZN10S7713C8_nt3v26Ev();
extern void _ZN10S7713C8_nt3v27Ev();
extern void _ZN10S7713C8_nt3v28Ev();
extern void _ZN10S7713C8_nt3v29Ev();
static  VTBL_ENTRY vtc_S7713C3[] = {
  ABISELECT(64,36),
  ABISELECT(56,32),
  ABISELECT(32,16),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7713C3[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7713C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7713C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7713C33v31Ev,
  (VTBL_ENTRY)&_ZN7S7713C33v32Ev,
  (VTBL_ENTRY)&_ZN7S7713C33v33Ev,
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7713C3[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v18Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v19Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v20Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v21Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v22Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v23Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v24Ev,
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7713C3[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v12Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v17Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7713C3[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v11Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7713C3[0]),
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v29Ev,
};
extern VTBL_ENTRY _ZTV7S7713C3[];
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C9D1Ev();
extern void _ZN7S7713C9D0Ev();
extern void _ZN7S7713C93v30Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C9__7S7713C3[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7713C9[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7713C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7713C93v30Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C43v18Ev();
extern void _ZN7S7713C43v19Ev();
extern void _ZN7S7713C43v20Ev();
extern void _ZN7S7713C43v21Ev();
extern void _ZN7S7713C43v22Ev();
extern void _ZN7S7713C43v23Ev();
extern void _ZN7S7713C43v24Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C4__7S7713C3[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7713C4[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v18Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v19Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v20Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v21Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v22Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v23Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v24Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C73v12Ev();
extern void _ZN7S7713C73v13Ev();
extern void _ZN7S7713C73v14Ev();
extern void _ZN7S7713C73v15Ev();
extern void _ZN7S7713C73v16Ev();
extern void _ZN7S7713C73v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C77S7713C4__7S7713C3[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7713C7[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v12Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v17Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C62v9Ev();
extern void _ZN7S7713C63v10Ev();
extern void _ZN7S7713C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C6__7S7713C77S7713C4__7S7713C3[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7713C7[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v11Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C62v9Ev();
extern void _ZN7S7713C63v10Ev();
extern void _ZN7S7713C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C6__7S7713C4__7S7713C3[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7713C4[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v11Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C73v12Ev();
extern void _ZN7S7713C73v13Ev();
extern void _ZN7S7713C73v14Ev();
extern void _ZN7S7713C73v15Ev();
extern void _ZN7S7713C73v16Ev();
extern void _ZN7S7713C73v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C7__7S7713C4__7S7713C3[] = {
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7713C4[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v12Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v17Ev,
};
static  VTT_ENTRY vtt_S7713C3[] = {
  {&(_ZTV7S7713C3[7]),  7,71},
  {&(_tg__ZTV7S7713C9__7S7713C3[4]),  4,8},
  {&(_tg__ZTV7S7713C9__7S7713C3[4]),  4,8},
  {&(_ZTV7S7713C3[31]),  31,71},
  {&(_ZTV7S7713C3[55]),  55,71},
  {&(_ZTV7S7713C3[42]),  42,71},
  {&(_ZTV7S7713C3[66]),  66,71},
  {&(_ZTV7S7713C3[7]),  7,71},
  {&(_tg__ZTV7S7713C4__7S7713C3[3]),  3,11},
  {&(_tg__ZTV7S7713C77S7713C4__7S7713C3[3]),  3,10},
  {&(_tg__ZTV7S7713C6__7S7713C77S7713C4__7S7713C3[6]),  6,10},
  {&(_tg__ZTV7S7713C6__7S7713C4__7S7713C3[6]),  6,10},
  {&(_tg__ZTV7S7713C7__7S7713C4__7S7713C3[3]),  3,10},
};
extern VTBL_ENTRY _ZTI7S7713C3[];
extern  VTBL_ENTRY _ZTV7S7713C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7713C3[];
Class_Descriptor cd_S7713C3 = {  "S7713C3", // class name
  bases_S7713C3, 9,
  &(vtc_S7713C3[0]), // expected_vtbl_contents
  &(vtt_S7713C3[0]), // expected_vtt_contents
  ABISELECT(72,40), // object size
  NSPAIRA(_ZTI7S7713C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7713C3),71, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7713C3),13, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7713C10_nt  {
  virtual  ~S7713C10_nt(); // _ZN11S7713C10_ntD1Ev
  virtual void  v34(); // _ZN11S7713C10_nt3v34Ev
  virtual void  v35(); // _ZN11S7713C10_nt3v35Ev
  virtual void  v36(); // _ZN11S7713C10_nt3v36Ev
  virtual void  v37(); // _ZN11S7713C10_nt3v37Ev
  S7713C10_nt(); // tgen
};
//SIG(-1 S7713C10_nt) C1{ vd v1 v2 v3 v4}


 S7713C10_nt ::~S7713C10_nt(){ note_dtor("S7713C10_nt", this);}
void  S7713C10_nt ::v34(){vfunc_called(this, "_ZN11S7713C10_nt3v34Ev");}
void  S7713C10_nt ::v35(){vfunc_called(this, "_ZN11S7713C10_nt3v35Ev");}
void  S7713C10_nt ::v36(){vfunc_called(this, "_ZN11S7713C10_nt3v36Ev");}
void  S7713C10_nt ::v37(){vfunc_called(this, "_ZN11S7713C10_nt3v37Ev");}
S7713C10_nt ::S7713C10_nt(){ note_ctor("S7713C10_nt", this);} // tgen

//skip512 S7713C10_nt

#else // __cplusplus

extern void _ZN11S7713C10_ntC1Ev();
extern void _ZN11S7713C10_ntD1Ev();
Name_Map name_map_S7713C10_nt[] = {
  NSPAIR(_ZN11S7713C10_ntC1Ev),
  NSPAIR(_ZN11S7713C10_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S7713C10_nt[];
extern void _ZN11S7713C10_ntD1Ev();
extern void _ZN11S7713C10_ntD0Ev();
extern void _ZN11S7713C10_nt3v34Ev();
extern void _ZN11S7713C10_nt3v35Ev();
extern void _ZN11S7713C10_nt3v36Ev();
extern void _ZN11S7713C10_nt3v37Ev();
static  VTBL_ENTRY vtc_S7713C10_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S7713C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S7713C10_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S7713C10_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S7713C10_nt3v34Ev,
  (VTBL_ENTRY)&_ZN11S7713C10_nt3v35Ev,
  (VTBL_ENTRY)&_ZN11S7713C10_nt3v36Ev,
  (VTBL_ENTRY)&_ZN11S7713C10_nt3v37Ev,
};
extern VTBL_ENTRY _ZTI11S7713C10_nt[];
VTBL_ENTRY *P__ZTI11S7713C10_nt = _ZTI11S7713C10_nt; 
extern  VTBL_ENTRY _ZTV11S7713C10_nt[];
Class_Descriptor cd_S7713C10_nt = {  "S7713C10_nt", // class name
  0,0,//no base classes
  &(vtc_S7713C10_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S7713C10_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S7713C10_nt),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7713C12_nt  {
  int s7713c12f0;
  virtual void  v38(); // _ZN11S7713C12_nt3v38Ev
  virtual void  v39(); // _ZN11S7713C12_nt3v39Ev
  virtual void  v40(); // _ZN11S7713C12_nt3v40Ev
  ~S7713C12_nt(); // tgen
  S7713C12_nt(); // tgen
};
//SIG(-1 S7713C12_nt) C1{ v1 v2 v3 Fi}


void  S7713C12_nt ::v38(){vfunc_called(this, "_ZN11S7713C12_nt3v38Ev");}
void  S7713C12_nt ::v39(){vfunc_called(this, "_ZN11S7713C12_nt3v39Ev");}
void  S7713C12_nt ::v40(){vfunc_called(this, "_ZN11S7713C12_nt3v40Ev");}
S7713C12_nt ::~S7713C12_nt(){ note_dtor("S7713C12_nt", this);} // tgen
S7713C12_nt ::S7713C12_nt(){ note_ctor("S7713C12_nt", this);} // tgen

//skip512 S7713C12_nt

#else // __cplusplus

extern void _ZN11S7713C12_ntC1Ev();
extern void _ZN11S7713C12_ntD1Ev();
Name_Map name_map_S7713C12_nt[] = {
  NSPAIR(_ZN11S7713C12_ntC1Ev),
  NSPAIR(_ZN11S7713C12_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S7713C12_nt[];
extern void _ZN11S7713C12_nt3v38Ev();
extern void _ZN11S7713C12_nt3v39Ev();
extern void _ZN11S7713C12_nt3v40Ev();
static  VTBL_ENTRY vtc_S7713C12_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S7713C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S7713C12_nt3v38Ev,
  (VTBL_ENTRY)&_ZN11S7713C12_nt3v39Ev,
  (VTBL_ENTRY)&_ZN11S7713C12_nt3v40Ev,
};
extern VTBL_ENTRY _ZTI11S7713C12_nt[];
VTBL_ENTRY *P__ZTI11S7713C12_nt = _ZTI11S7713C12_nt; 
extern  VTBL_ENTRY _ZTV11S7713C12_nt[];
Class_Descriptor cd_S7713C12_nt = {  "S7713C12_nt", // class name
  0,0,//no base classes
  &(vtc_S7713C12_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI11S7713C12_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S7713C12_nt),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7713C11  : virtual S7713C4 , virtual S7713C12_nt {
  void *s7713c11f0;
  char s7713c11f1[7];
  virtual void  v41(); // _ZN8S7713C113v41Ev
  virtual void  v42(); // _ZN8S7713C113v42Ev
  virtual void  v43(); // _ZN8S7713C113v43Ev
  virtual void  v44(); // _ZN8S7713C113v44Ev
  virtual void  v45(); // _ZN8S7713C113v45Ev
  ~S7713C11(); // tgen
  S7713C11(); // tgen
};
//SIG(-1 S7713C11) C1{ VBC2{ BC3{ v6} VBC4{ BC3 v7 v8 v9} BC5{ VBC4 BC3 v10 v11 v12 v13 v14 v15 Fi} v16 v17 v18 v19 v20 v21 v22 Fc} VBC6{ v23 v24 v25 Fi} v1 v2 v3 v4 v5 Fp Fc[7]}


void  S7713C11 ::v41(){vfunc_called(this, "_ZN8S7713C113v41Ev");}
void  S7713C11 ::v42(){vfunc_called(this, "_ZN8S7713C113v42Ev");}
void  S7713C11 ::v43(){vfunc_called(this, "_ZN8S7713C113v43Ev");}
void  S7713C11 ::v44(){vfunc_called(this, "_ZN8S7713C113v44Ev");}
void  S7713C11 ::v45(){vfunc_called(this, "_ZN8S7713C113v45Ev");}
S7713C11 ::~S7713C11(){ note_dtor("S7713C11", this);} // tgen
S7713C11 ::S7713C11(){ note_ctor("S7713C11", this);} // tgen

static void Test_S7713C11()
{
  extern Class_Descriptor cd_S7713C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,11)];
    init_test(&cd_S7713C11, buf);
    S7713C11 *dp, &lv = *(dp=new (buf) S7713C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,40), "sizeof(S7713C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7713C11)");
    /*is_ambiguous_... S7713C4::S7713C5_nt */ AMB_check_base_class_offset(lv, (S7713C5_nt*)(S7713C4*), ABISELECT(24,16), "S7713C11");
    check_base_class_offset(lv, (S7713C5_nt*)(S7713C6*), 0, "S7713C11");
    check_base_class_offset(lv, (S7713C6*)(S7713C4*), 0, "S7713C11");
    check_base_class_offset(lv, (S7713C6*)(S7713C7*)(S7713C4*), 0, "S7713C11");
    /*is_ambiguous_... S7713C7::S7713C5_nt */ AMB_check_base_class_offset(lv, (S7713C5_nt*)(S7713C7*)(S7713C4*), ABISELECT(32,20), "S7713C11");
    check_base_class_offset(lv, (S7713C7*)(S7713C4*), ABISELECT(32,20), "S7713C11");
    check_base_class_offset(lv, (S7713C4*), ABISELECT(24,16), "S7713C11");
    check_base_class_offset(lv, (S7713C12_nt*), ABISELECT(48,32), "S7713C11");
    check_field_offset(lv, s7713c11f0, ABISELECT(8,4), "S7713C11.s7713c11f0");
    check_field_offset(lv, s7713c11f1, ABISELECT(16,8), "S7713C11.s7713c11f1");
    test_class_info(&lv, &cd_S7713C11);
    dp->~S7713C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7713C11(Test_S7713C11, "S7713C11", ABISELECT(64,40));

#else // __cplusplus

extern void _ZN8S7713C11C1Ev();
extern void _ZN8S7713C11D1Ev();
Name_Map name_map_S7713C11[] = {
  NSPAIR(_ZN8S7713C11C1Ev),
  NSPAIR(_ZN8S7713C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7713C5_nt;
extern VTBL_ENTRY _ZTI10S7713C5_nt[];
extern  VTBL_ENTRY _ZTV10S7713C5_nt[];
extern Class_Descriptor cd_S7713C5_nt;
extern VTBL_ENTRY _ZTI10S7713C5_nt[];
extern  VTBL_ENTRY _ZTV10S7713C5_nt[];
extern Class_Descriptor cd_S7713C6;
extern VTBL_ENTRY _ZTI7S7713C6[];
extern  VTBL_ENTRY _ZTV7S7713C6[];
extern Class_Descriptor cd_S7713C5_nt;
extern VTBL_ENTRY _ZTI10S7713C5_nt[];
extern  VTBL_ENTRY _ZTV10S7713C5_nt[];
extern Class_Descriptor cd_S7713C7;
extern VTBL_ENTRY _ZTI7S7713C7[];
extern  VTBL_ENTRY _ZTV7S7713C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7713C7[];
extern Class_Descriptor cd_S7713C4;
extern VTBL_ENTRY _ZTI7S7713C4[];
extern  VTBL_ENTRY _ZTV7S7713C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7713C4[];
extern Class_Descriptor cd_S7713C12_nt;
extern VTBL_ENTRY _ZTI11S7713C12_nt[];
extern  VTBL_ENTRY _ZTV11S7713C12_nt[];
static Base_Class bases_S7713C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7713C5_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7713C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7713C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7713C5_nt,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7713C7,    ABISELECT(32,20), //bcp->offset
    43, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7713C4,    ABISELECT(24,16), //bcp->offset
    18, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7713C12_nt,    ABISELECT(48,32), //bcp->offset
    53, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7713C11[];
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C62v9Ev();
extern void _ZN7S7713C63v10Ev();
extern void _ZN7S7713C63v11Ev();
extern void _ZN8S7713C113v41Ev();
extern void _ZN8S7713C113v42Ev();
extern void _ZN8S7713C113v43Ev();
extern void _ZN8S7713C113v44Ev();
extern void _ZN8S7713C113v45Ev();
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C43v18Ev();
extern void _ZN7S7713C43v19Ev();
extern void _ZN7S7713C43v20Ev();
extern void _ZN7S7713C43v21Ev();
extern void _ZN7S7713C43v22Ev();
extern void _ZN7S7713C43v23Ev();
extern void _ZN7S7713C43v24Ev();
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C73v12Ev();
extern void _ZN7S7713C73v13Ev();
extern void _ZN7S7713C73v14Ev();
extern void _ZN7S7713C73v15Ev();
extern void _ZN7S7713C73v16Ev();
extern void _ZN7S7713C73v17Ev();
extern void _ZN11S7713C12_nt3v38Ev();
extern void _ZN11S7713C12_nt3v39Ev();
extern void _ZN11S7713C12_nt3v40Ev();
static  VTBL_ENTRY vtc_S7713C11[] = {
  ABISELECT(48,32),
  0,
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7713C11[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v41Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v42Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v43Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v44Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v45Ev,
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7713C11[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v18Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v19Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v20Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v21Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v22Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v23Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v24Ev,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S7713C11[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v12Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v17Ev,
  0,
  0,
  0,
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S7713C11[0]),
  (VTBL_ENTRY)&_ZN11S7713C12_nt3v38Ev,
  (VTBL_ENTRY)&_ZN11S7713C12_nt3v39Ev,
  (VTBL_ENTRY)&_ZN11S7713C12_nt3v40Ev,
};
extern VTBL_ENTRY _ZTV8S7713C11[];
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C43v18Ev();
extern void _ZN7S7713C43v19Ev();
extern void _ZN7S7713C43v20Ev();
extern void _ZN7S7713C43v21Ev();
extern void _ZN7S7713C43v22Ev();
extern void _ZN7S7713C43v23Ev();
extern void _ZN7S7713C43v24Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C4__8S7713C11[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7713C4[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v18Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v19Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v20Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v21Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v22Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v23Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v24Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C73v12Ev();
extern void _ZN7S7713C73v13Ev();
extern void _ZN7S7713C73v14Ev();
extern void _ZN7S7713C73v15Ev();
extern void _ZN7S7713C73v16Ev();
extern void _ZN7S7713C73v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C77S7713C4__8S7713C11[] = {
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7713C7[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v12Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v17Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C62v9Ev();
extern void _ZN7S7713C63v10Ev();
extern void _ZN7S7713C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C6__7S7713C77S7713C4__8S7713C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI7S7713C7[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v11Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C62v9Ev();
extern void _ZN7S7713C63v10Ev();
extern void _ZN7S7713C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C6__7S7713C4__8S7713C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S7713C4[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v11Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C73v12Ev();
extern void _ZN7S7713C73v13Ev();
extern void _ZN7S7713C73v14Ev();
extern void _ZN7S7713C73v15Ev();
extern void _ZN7S7713C73v16Ev();
extern void _ZN7S7713C73v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C7__7S7713C4__8S7713C11[] = {
  ABISELECT(-32,-20),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7713C4[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v12Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v17Ev,
};
static  VTT_ENTRY vtt_S7713C11[] = {
  {&(_ZTV8S7713C11[9]),  9,61},
  {&(_ZTV8S7713C11[35]),  35,61},
  {&(_ZTV8S7713C11[9]),  9,61},
  {&(_ZTV8S7713C11[46]),  46,61},
  {&(_ZTV8S7713C11[58]),  58,61},
  {&(_tg__ZTV7S7713C4__8S7713C11[3]),  3,11},
  {&(_tg__ZTV7S7713C77S7713C4__8S7713C11[3]),  3,10},
  {&(_tg__ZTV7S7713C6__7S7713C77S7713C4__8S7713C11[6]),  6,10},
  {&(_tg__ZTV7S7713C6__7S7713C4__8S7713C11[6]),  6,10},
  {&(_tg__ZTV7S7713C7__7S7713C4__8S7713C11[3]),  3,10},
};
extern VTBL_ENTRY _ZTI8S7713C11[];
extern  VTBL_ENTRY _ZTV8S7713C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7713C11[];
Class_Descriptor cd_S7713C11 = {  "S7713C11", // class name
  bases_S7713C11, 7,
  &(vtc_S7713C11[0]), // expected_vtbl_contents
  &(vtt_S7713C11[0]), // expected_vtt_contents
  ABISELECT(64,40), // object size
  NSPAIRA(_ZTI8S7713C11),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7713C11),61, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7713C11),10, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7713C2  : virtual S7713C3 , virtual S7713C10_nt , S7713C11 {
  virtual  ~S7713C2(); // _ZN7S7713C2D2Ev
  virtual void  v46(); // _ZN7S7713C23v46Ev
  virtual void  v47(); // _ZN7S7713C23v47Ev
  virtual void  v48(); // _ZN7S7713C23v48Ev
  virtual void  v49(); // _ZN7S7713C23v49Ev
  virtual void  v50(); // _ZN7S7713C23v50Ev
  S7713C2(); // tgen
};
//SIG(-1 S7713C2) C1{ VBC2{ VBC3{ BC4{ v6} VBC5{ BC4 v7 v8 v9} BC6{ VBC5 BC4 v10 v11 v12 v13 v14 v15 Fi} v16 v17 v18 v19 v20 v21 v22 Fc} VBC7{ v23 v24 v25 v26 v27} BC8{ VBC4 vd v28} vd v29 v30 v31 FC6} VBC9{ vd v32 v33 v34 v35} BC10{ VBC3 VBC11{ v36 v37 v38 Fi} v39 v40 v41 v42 v43 Fp Fc[7]} vd v1 v2 v3 v4 v5}


 S7713C2 ::~S7713C2(){ note_dtor("S7713C2", this);}
void  S7713C2 ::v46(){vfunc_called(this, "_ZN7S7713C23v46Ev");}
void  S7713C2 ::v47(){vfunc_called(this, "_ZN7S7713C23v47Ev");}
void  S7713C2 ::v48(){vfunc_called(this, "_ZN7S7713C23v48Ev");}
void  S7713C2 ::v49(){vfunc_called(this, "_ZN7S7713C23v49Ev");}
void  S7713C2 ::v50(){vfunc_called(this, "_ZN7S7713C23v50Ev");}
S7713C2 ::S7713C2(){ note_ctor("S7713C2", this);} // tgen

static void Test_S7713C2()
{
  extern Class_Descriptor cd_S7713C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,17)];
    init_test(&cd_S7713C2, buf);
    S7713C2 *dp, &lv = *(dp=new (buf) S7713C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,64), "sizeof(S7713C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7713C2)");
    /*is_ambiguous_... S7713C4::S7713C5_nt */ AMB_check_base_class_offset(lv, (S7713C5_nt*)(S7713C4*), ABISELECT(56,32), "S7713C2");
    check_base_class_offset(lv, (S7713C5_nt*)(S7713C6*), 0, "S7713C2");
    check_base_class_offset(lv, (S7713C6*)(S7713C4*), 0, "S7713C2");
    check_base_class_offset(lv, (S7713C6*)(S7713C7*)(S7713C4*), 0, "S7713C2");
    /*is_ambiguous_... S7713C7::S7713C5_nt */ AMB_check_base_class_offset(lv, (S7713C5_nt*)(S7713C7*)(S7713C4*), ABISELECT(64,36), "S7713C2");
    check_base_class_offset(lv, (S7713C7*)(S7713C4*), ABISELECT(64,36), "S7713C2");
    check_base_class_offset(lv, (S7713C4*)(S7713C3*), ABISELECT(56,32), "S7713C2");
    check_base_class_offset(lv, (S7713C4*)(S7713C11*), ABISELECT(56,32), "S7713C2");
    check_base_class_offset(lv, (S7713C8_nt*)(S7713C3*), ABISELECT(80,48), "S7713C2");
    check_base_class_offset(lv, (S7713C5_nt*)(S7713C9*)(S7713C3*), ABISELECT(24,16), "S7713C2");
    check_base_class_offset(lv, (S7713C9*)(S7713C3*), ABISELECT(24,16), "S7713C2");
    check_base_class_offset(lv, (S7713C3*), ABISELECT(24,16), "S7713C2");
    check_base_class_offset(lv, (S7713C10_nt*), ABISELECT(88,52), "S7713C2");
    check_base_class_offset(lv, (S7713C12_nt*)(S7713C11*), ABISELECT(96,56), "S7713C2");
    check_base_class_offset(lv, (S7713C11*), 0, "S7713C2");
    test_class_info(&lv, &cd_S7713C2);
    dp->~S7713C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7713C2(Test_S7713C2, "S7713C2", ABISELECT(112,64));

#else // __cplusplus

extern void _ZN7S7713C2C1Ev();
extern void _ZN7S7713C2D2Ev();
Name_Map name_map_S7713C2[] = {
  NSPAIR(_ZN7S7713C2C1Ev),
  NSPAIR(_ZN7S7713C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7713C5_nt;
extern VTBL_ENTRY _ZTI10S7713C5_nt[];
extern  VTBL_ENTRY _ZTV10S7713C5_nt[];
extern Class_Descriptor cd_S7713C5_nt;
extern VTBL_ENTRY _ZTI10S7713C5_nt[];
extern  VTBL_ENTRY _ZTV10S7713C5_nt[];
extern Class_Descriptor cd_S7713C6;
extern VTBL_ENTRY _ZTI7S7713C6[];
extern  VTBL_ENTRY _ZTV7S7713C6[];
extern Class_Descriptor cd_S7713C5_nt;
extern VTBL_ENTRY _ZTI10S7713C5_nt[];
extern  VTBL_ENTRY _ZTV10S7713C5_nt[];
extern Class_Descriptor cd_S7713C7;
extern VTBL_ENTRY _ZTI7S7713C7[];
extern  VTBL_ENTRY _ZTV7S7713C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7713C7[];
extern Class_Descriptor cd_S7713C4;
extern VTBL_ENTRY _ZTI7S7713C4[];
extern  VTBL_ENTRY _ZTV7S7713C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7713C4[];
extern Class_Descriptor cd_S7713C8_nt;
extern VTBL_ENTRY _ZTI10S7713C8_nt[];
extern  VTBL_ENTRY _ZTV10S7713C8_nt[];
extern Class_Descriptor cd_S7713C5_nt;
extern VTBL_ENTRY _ZTI10S7713C5_nt[];
extern  VTBL_ENTRY _ZTV10S7713C5_nt[];
extern Class_Descriptor cd_S7713C9;
extern VTBL_ENTRY _ZTI7S7713C9[];
extern  VTBL_ENTRY _ZTV7S7713C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7713C9[];
extern Class_Descriptor cd_S7713C3;
extern VTBL_ENTRY _ZTI7S7713C3[];
extern  VTBL_ENTRY _ZTV7S7713C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7713C3[];
extern Class_Descriptor cd_S7713C10_nt;
extern VTBL_ENTRY _ZTI11S7713C10_nt[];
extern  VTBL_ENTRY _ZTV11S7713C10_nt[];
extern Class_Descriptor cd_S7713C12_nt;
extern VTBL_ENTRY _ZTI11S7713C12_nt[];
extern  VTBL_ENTRY _ZTV11S7713C12_nt[];
extern Class_Descriptor cd_S7713C11;
extern VTBL_ENTRY _ZTI8S7713C11[];
extern  VTBL_ENTRY _ZTV8S7713C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7713C11[];
static Base_Class bases_S7713C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7713C5_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7713C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7713C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7713C5_nt,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7713C7,    ABISELECT(64,36), //bcp->offset
    73, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7713C4,    ABISELECT(56,32), //bcp->offset
    48, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7713C8_nt,    ABISELECT(80,48), //bcp->offset
    83, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7713C5_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7713C9,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7713C3,    ABISELECT(24,16), //bcp->offset
    29, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7713C10_nt,    ABISELECT(88,52), //bcp->offset
    95, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7713C12_nt,    ABISELECT(96,56), //bcp->offset
    108, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7713C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7713C2[];
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C62v9Ev();
extern void _ZN7S7713C63v10Ev();
extern void _ZN7S7713C63v11Ev();
extern void _ZN8S7713C113v41Ev();
extern void _ZN8S7713C113v42Ev();
extern void _ZN8S7713C113v43Ev();
extern void _ZN8S7713C113v44Ev();
extern void _ZN8S7713C113v45Ev();
extern void _ZN7S7713C2D1Ev();
extern void _ZN7S7713C2D0Ev();
extern void _ZN7S7713C23v46Ev();
extern void _ZN7S7713C23v47Ev();
extern void _ZN7S7713C23v48Ev();
extern void _ZN7S7713C23v49Ev();
extern void _ZN7S7713C23v50Ev();
extern void _ZN10S7713C5_nt2v8Ev();
extern void ABISELECT(_ZTv0_n64_N7S7713C2D1Ev,_ZTv0_n32_N7S7713C2D1Ev)();
extern void ABISELECT(_ZThn24_N7S7713C2D1Ev,_ZThn16_N7S7713C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7713C2D0Ev,_ZTv0_n32_N7S7713C2D0Ev)();
extern void ABISELECT(_ZThn24_N7S7713C2D0Ev,_ZThn16_N7S7713C2D0Ev)() __attribute__((weak));
extern void _ZN7S7713C93v30Ev();
extern void _ZN7S7713C33v31Ev();
extern void _ZN7S7713C33v32Ev();
extern void _ZN7S7713C33v33Ev();
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C43v18Ev();
extern void _ZN7S7713C43v19Ev();
extern void _ZN7S7713C43v20Ev();
extern void _ZN7S7713C43v21Ev();
extern void _ZN7S7713C43v22Ev();
extern void _ZN7S7713C43v23Ev();
extern void _ZN7S7713C43v24Ev();
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C73v12Ev();
extern void _ZN7S7713C73v13Ev();
extern void _ZN7S7713C73v14Ev();
extern void _ZN7S7713C73v15Ev();
extern void _ZN7S7713C73v16Ev();
extern void _ZN7S7713C73v17Ev();
extern void _ZN10S7713C8_nt3v25Ev();
extern void _ZN10S7713C8_nt3v26Ev();
extern void _ZN10S7713C8_nt3v27Ev();
extern void _ZN10S7713C8_nt3v28Ev();
extern void _ZN10S7713C8_nt3v29Ev();
extern void ABISELECT(_ZTv0_n24_N7S7713C2D1Ev,_ZTv0_n12_N7S7713C2D1Ev)();
extern void ABISELECT(_ZThn88_N7S7713C2D1Ev,_ZThn52_N7S7713C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7713C2D0Ev,_ZTv0_n12_N7S7713C2D0Ev)();
extern void ABISELECT(_ZThn88_N7S7713C2D0Ev,_ZThn52_N7S7713C2D0Ev)() __attribute__((weak));
extern void _ZN11S7713C10_nt3v34Ev();
extern void _ZN11S7713C10_nt3v35Ev();
extern void _ZN11S7713C10_nt3v36Ev();
extern void _ZN11S7713C10_nt3v37Ev();
extern void _ZN11S7713C12_nt3v38Ev();
extern void _ZN11S7713C12_nt3v39Ev();
extern void _ZN11S7713C12_nt3v40Ev();
static  VTBL_ENTRY vtc_S7713C2[] = {
  ABISELECT(88,52),
  ABISELECT(24,16),
  ABISELECT(80,48),
  ABISELECT(24,16),
  ABISELECT(96,56),
  0,
  ABISELECT(56,32),
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7713C2[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v41Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v42Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v43Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v44Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v45Ev,
  (VTBL_ENTRY)&_ZN7S7713C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7713C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7713C23v46Ev,
  (VTBL_ENTRY)&_ZN7S7713C23v47Ev,
  (VTBL_ENTRY)&_ZN7S7713C23v48Ev,
  (VTBL_ENTRY)&_ZN7S7713C23v49Ev,
  (VTBL_ENTRY)&_ZN7S7713C23v50Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(56,32),
  ABISELECT(-24,-16),
  ABISELECT(32,16),
  0,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7713C2[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7713C2D1Ev,_ZTv0_n32_N7S7713C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7713C2D0Ev,_ZTv0_n32_N7S7713C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7713C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7713C33v31Ev,
  (VTBL_ENTRY)&_ZN7S7713C33v32Ev,
  (VTBL_ENTRY)&_ZN7S7713C33v33Ev,
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7713C2[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v18Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v19Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v20Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v21Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v22Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v23Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v24Ev,
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7713C2[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v12Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v17Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7713C2[0]),
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v29Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-88,-52),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S7713C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7713C2D1Ev,_ZTv0_n12_N7S7713C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7713C2D0Ev,_ZTv0_n12_N7S7713C2D0Ev),
  (VTBL_ENTRY)&_ZN11S7713C10_nt3v34Ev,
  (VTBL_ENTRY)&_ZN11S7713C10_nt3v35Ev,
  (VTBL_ENTRY)&_ZN11S7713C10_nt3v36Ev,
  (VTBL_ENTRY)&_ZN11S7713C10_nt3v37Ev,
  0,
  0,
  0,
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S7713C2[0]),
  (VTBL_ENTRY)&_ZN11S7713C12_nt3v38Ev,
  (VTBL_ENTRY)&_ZN11S7713C12_nt3v39Ev,
  (VTBL_ENTRY)&_ZN11S7713C12_nt3v40Ev,
};
extern VTBL_ENTRY _ZTV7S7713C2[];
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C62v9Ev();
extern void _ZN7S7713C63v10Ev();
extern void _ZN7S7713C63v11Ev();
extern void _ZN8S7713C113v41Ev();
extern void _ZN8S7713C113v42Ev();
extern void _ZN8S7713C113v43Ev();
extern void _ZN8S7713C113v44Ev();
extern void _ZN8S7713C113v45Ev();
static  VTBL_ENTRY _tg__ZTV8S7713C11__7S7713C2[] = {
  ABISELECT(96,56),
  0,
  ABISELECT(56,32),
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7713C11[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v41Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v42Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v43Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v44Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v45Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C43v18Ev();
extern void _ZN7S7713C43v19Ev();
extern void _ZN7S7713C43v20Ev();
extern void _ZN7S7713C43v21Ev();
extern void _ZN7S7713C43v22Ev();
extern void _ZN7S7713C43v23Ev();
extern void _ZN7S7713C43v24Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C4__8S7713C11__7S7713C2[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7713C11[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v18Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v19Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v20Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v21Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v22Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v23Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v24Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C73v12Ev();
extern void _ZN7S7713C73v13Ev();
extern void _ZN7S7713C73v14Ev();
extern void _ZN7S7713C73v15Ev();
extern void _ZN7S7713C73v16Ev();
extern void _ZN7S7713C73v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C77S7713C4__8S7713C11__7S7713C2[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7713C11[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v12Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v17Ev,
};
extern void _ZN11S7713C12_nt3v38Ev();
extern void _ZN11S7713C12_nt3v39Ev();
extern void _ZN11S7713C12_nt3v40Ev();
static  VTBL_ENTRY _tg__ZTV11S7713C12_nt__8S7713C11__7S7713C2[] = {
  0,
  0,
  0,
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S7713C11[0]),
  (VTBL_ENTRY)&_ZN11S7713C12_nt3v38Ev,
  (VTBL_ENTRY)&_ZN11S7713C12_nt3v39Ev,
  (VTBL_ENTRY)&_ZN11S7713C12_nt3v40Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C3D1Ev();
extern void _ZN7S7713C3D0Ev();
extern void _ZN7S7713C93v30Ev();
extern void _ZN7S7713C33v31Ev();
extern void _ZN7S7713C33v32Ev();
extern void _ZN7S7713C33v33Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C3__7S7713C2[] = {
  ABISELECT(56,32),
  ABISELECT(-24,-16),
  ABISELECT(32,16),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7713C3[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7713C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7713C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7713C33v31Ev,
  (VTBL_ENTRY)&_ZN7S7713C33v32Ev,
  (VTBL_ENTRY)&_ZN7S7713C33v33Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C9D1Ev();
extern void _ZN7S7713C9D0Ev();
extern void _ZN7S7713C93v30Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C97S7713C3__7S7713C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7713C9[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7713C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7713C93v30Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C43v18Ev();
extern void _ZN7S7713C43v19Ev();
extern void _ZN7S7713C43v20Ev();
extern void _ZN7S7713C43v21Ev();
extern void _ZN7S7713C43v22Ev();
extern void _ZN7S7713C43v23Ev();
extern void _ZN7S7713C43v24Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C4__7S7713C3__7S7713C2[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-32),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7713C3[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v18Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v19Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v20Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v21Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v22Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v23Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v24Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C62v9Ev();
extern void _ZN7S7713C63v10Ev();
extern void _ZN7S7713C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C6__7S7713C3__7S7713C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S7713C3[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v11Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C73v12Ev();
extern void _ZN7S7713C73v13Ev();
extern void _ZN7S7713C73v14Ev();
extern void _ZN7S7713C73v15Ev();
extern void _ZN7S7713C73v16Ev();
extern void _ZN7S7713C73v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C77S7713C4__7S7713C3__7S7713C2[] = {
  ABISELECT(-64,-36),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7713C3[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v12Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v17Ev,
};
extern void _ZN10S7713C8_nt3v25Ev();
extern void _ZN10S7713C8_nt3v26Ev();
extern void _ZN10S7713C8_nt3v27Ev();
extern void _ZN10S7713C8_nt3v28Ev();
extern void _ZN10S7713C8_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV10S7713C8_nt__7S7713C3__7S7713C2[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7713C3[0]),
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v29Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C43v18Ev();
extern void _ZN7S7713C43v19Ev();
extern void _ZN7S7713C43v20Ev();
extern void _ZN7S7713C43v21Ev();
extern void _ZN7S7713C43v22Ev();
extern void _ZN7S7713C43v23Ev();
extern void _ZN7S7713C43v24Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C4__7S7713C2[] = {
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7713C4[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v18Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v19Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v20Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v21Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v22Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v23Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v24Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C73v12Ev();
extern void _ZN7S7713C73v13Ev();
extern void _ZN7S7713C73v14Ev();
extern void _ZN7S7713C73v15Ev();
extern void _ZN7S7713C73v16Ev();
extern void _ZN7S7713C73v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C77S7713C4__7S7713C2[] = {
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7713C7[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v12Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v17Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C62v9Ev();
extern void _ZN7S7713C63v10Ev();
extern void _ZN7S7713C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C6__7S7713C77S7713C4__7S7713C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI7S7713C7[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v11Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C62v9Ev();
extern void _ZN7S7713C63v10Ev();
extern void _ZN7S7713C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C6__7S7713C4__7S7713C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S7713C4[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v11Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C73v12Ev();
extern void _ZN7S7713C73v13Ev();
extern void _ZN7S7713C73v14Ev();
extern void _ZN7S7713C73v15Ev();
extern void _ZN7S7713C73v16Ev();
extern void _ZN7S7713C73v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C7__7S7713C4__7S7713C2[] = {
  ABISELECT(-64,-36),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7713C4[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v12Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v17Ev,
};
static  VTT_ENTRY vtt_S7713C2[] = {
  {&(_ZTV7S7713C2[13]),  13,116},
  {&(_tg__ZTV8S7713C11__7S7713C2[9]),  9,18},
  {&(_tg__ZTV7S7713C4__8S7713C11__7S7713C2[17]),  17,25},
  {&(_tg__ZTV8S7713C11__7S7713C2[9]),  9,18},
  {&(_tg__ZTV7S7713C77S7713C4__8S7713C11__7S7713C2[3]),  3,10},
  {&(_tg__ZTV11S7713C12_nt__8S7713C11__7S7713C2[5]),  5,8},
  {&(_ZTV7S7713C2[41]),  41,116},
  {&(_ZTV7S7713C2[65]),  65,116},
  {&(_ZTV7S7713C2[13]),  13,116},
  {&(_ZTV7S7713C2[76]),  76,116},
  {&(_ZTV7S7713C2[90]),  90,116},
  {&(_ZTV7S7713C2[41]),  41,116},
  {&(_ZTV7S7713C2[102]),  102,116},
  {&(_ZTV7S7713C2[113]),  113,116},
  {&(_tg__ZTV7S7713C3__7S7713C2[7]),  7,14},
  {&(_tg__ZTV7S7713C97S7713C3__7S7713C2[4]),  4,8},
  {&(_tg__ZTV7S7713C97S7713C3__7S7713C2[4]),  4,8},
  {&(_tg__ZTV7S7713C4__7S7713C3__7S7713C2[17]),  17,25},
  {&(_tg__ZTV7S7713C6__7S7713C3__7S7713C2[6]),  6,10},
  {&(_tg__ZTV7S7713C77S7713C4__7S7713C3__7S7713C2[3]),  3,10},
  {&(_tg__ZTV10S7713C8_nt__7S7713C3__7S7713C2[7]),  7,12},
  {&(_tg__ZTV7S7713C3__7S7713C2[7]),  7,14},
  {&(_tg__ZTV7S7713C4__7S7713C2[3]),  3,11},
  {&(_tg__ZTV7S7713C77S7713C4__7S7713C2[3]),  3,10},
  {&(_tg__ZTV7S7713C6__7S7713C77S7713C4__7S7713C2[6]),  6,10},
  {&(_tg__ZTV7S7713C6__7S7713C4__7S7713C2[6]),  6,10},
  {&(_tg__ZTV7S7713C7__7S7713C4__7S7713C2[3]),  3,10},
};
extern VTBL_ENTRY _ZTI7S7713C2[];
extern  VTBL_ENTRY _ZTV7S7713C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7713C2[];
static VTBL_ENTRY alt_thunk_names14[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7713C2D0Ev,_ZTv0_n12_N7S7713C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7713C2D0Ev,_ZThn52_N7S7713C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7713C2D1Ev,_ZTv0_n12_N7S7713C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7713C2D1Ev,_ZThn52_N7S7713C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7713C2D0Ev,_ZTv0_n32_N7S7713C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7713C2D0Ev,_ZThn16_N7S7713C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7713C2D1Ev,_ZTv0_n32_N7S7713C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7713C2D1Ev,_ZThn16_N7S7713C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7713C2 = {  "S7713C2", // class name
  bases_S7713C2, 13,
  &(vtc_S7713C2[0]), // expected_vtbl_contents
  &(vtt_S7713C2[0]), // expected_vtt_contents
  ABISELECT(112,64), // object size
  NSPAIRA(_ZTI7S7713C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7713C2),116, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7713C2),27, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names14,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7713C13  : S7713C2 , S7713C3 {
  void *s7713c13f0;
  long double s7713c13f1;
  virtual void  v51(); // _ZN8S7713C133v51Ev
  virtual void  v52(); // _ZN8S7713C133v52Ev
  virtual void  v53(); // _ZN8S7713C133v53Ev
  virtual void  v54(); // _ZN8S7713C133v54Ev
  virtual void  v55(); // _ZN8S7713C133v55Ev
  virtual void  v56(); // _ZN8S7713C133v56Ev
  ~S7713C13(); // tgen
  S7713C13(); // tgen
};
//SIG(-1 S7713C13) C1{ BC2{ VBC3{ VBC4{ BC5{ v7} VBC6{ BC5 v8 v9 v10} BC7{ VBC6 BC5 v11 v12 v13 v14 v15 v16 Fi} v17 v18 v19 v20 v21 v22 v23 Fc} VBC8{ v24 v25 v26 v27 v28} BC9{ VBC5 vd v29} vd v30 v31 v32 FC7} VBC10{ vd v33 v34 v35 v36} BC11{ VBC4 VBC12{ v37 v38 v39 Fi} v40 v41 v42 v43 v44 Fp Fc[7]} vd v45 v46 v47 v48 v49} BC3 v1 v2 v3 v4 v5 v6 Fp FD}


void  S7713C13 ::v51(){vfunc_called(this, "_ZN8S7713C133v51Ev");}
void  S7713C13 ::v52(){vfunc_called(this, "_ZN8S7713C133v52Ev");}
void  S7713C13 ::v53(){vfunc_called(this, "_ZN8S7713C133v53Ev");}
void  S7713C13 ::v54(){vfunc_called(this, "_ZN8S7713C133v54Ev");}
void  S7713C13 ::v55(){vfunc_called(this, "_ZN8S7713C133v55Ev");}
void  S7713C13 ::v56(){vfunc_called(this, "_ZN8S7713C133v56Ev");}
S7713C13 ::~S7713C13(){ note_dtor("S7713C13", this);} // tgen
S7713C13 ::S7713C13(){ note_ctor("S7713C13", this);} // tgen

static void Test_S7713C13()
{
  extern Class_Descriptor cd_S7713C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,25)];
    init_test(&cd_S7713C13, buf);
    S7713C13 *dp, &lv = *(dp=new (buf) S7713C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,96), "sizeof(S7713C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7713C13)");
    /*is_ambiguous_... S7713C4::S7713C5_nt */ AMB_check_base_class_offset(lv, (S7713C5_nt*)(S7713C4*), ABISELECT(112,64), "S7713C13");
    check_base_class_offset(lv, (S7713C5_nt*)(S7713C6*), 0, "S7713C13");
    check_base_class_offset(lv, (S7713C6*)(S7713C4*), 0, "S7713C13");
    check_base_class_offset(lv, (S7713C6*)(S7713C7*)(S7713C4*), 0, "S7713C13");
    /*is_ambiguous_... S7713C7::S7713C5_nt */ AMB_check_base_class_offset(lv, (S7713C5_nt*)(S7713C7*)(S7713C4*), ABISELECT(120,68), "S7713C13");
    check_base_class_offset(lv, (S7713C7*)(S7713C4*), ABISELECT(120,68), "S7713C13");
    /*is_ambiguous_... S7713C13::S7713C3 */ AMB_check_base_class_offset(lv, (S7713C4*)(S7713C3*), ABISELECT(112,64), "S7713C13");
    check_base_class_offset(lv, (S7713C4*)(S7713C11*)(S7713C2*), ABISELECT(112,64), "S7713C13");
    /*is_ambiguous_... S7713C13::S7713C3 */ AMB_check_base_class_offset(lv, (S7713C4*)(S7713C3*), ABISELECT(112,64), "S7713C13");
    /*is_ambiguous_... S7713C13::S7713C3 */ AMB_check_base_class_offset(lv, (S7713C8_nt*)(S7713C3*), ABISELECT(136,80), "S7713C13");
    /*is_ambiguous_... S7713C13::S7713C3 */ AMB_check_base_class_offset(lv, (S7713C8_nt*)(S7713C3*), ABISELECT(136,80), "S7713C13");
    /*is_ambiguous_... S7713C13::S7713C3 */ AMB_check_base_class_offset(lv, (S7713C5_nt*)(S7713C9*)(S7713C3*), ABISELECT(80,48), "S7713C13");
    /*is_ambiguous_... S7713C13::S7713C3 */ AMB_check_base_class_offset(lv, (S7713C5_nt*)(S7713C9*)(S7713C3*), ABISELECT(80,48), "S7713C13");
    /*is_ambiguous_... S7713C13::S7713C3 */ AMB_check_base_class_offset(lv, (S7713C9*)(S7713C3*), ABISELECT(80,48), "S7713C13");
    check_base_class_offset(lv, (S7713C3*)(S7713C2*), ABISELECT(80,48), "S7713C13");
    check_base_class_offset(lv, (S7713C10_nt*)(S7713C2*), ABISELECT(144,84), "S7713C13");
    check_base_class_offset(lv, (S7713C12_nt*)(S7713C11*)(S7713C2*), ABISELECT(152,88), "S7713C13");
    check_base_class_offset(lv, (S7713C11*)(S7713C2*), 0, "S7713C13");
    check_base_class_offset(lv, (S7713C2*), 0, "S7713C13");
    /*is_ambiguous_... S7713C13::S7713C3 */ AMB_check_base_class_offset(lv, (S7713C9*)(S7713C3*), ABISELECT(24,16), "S7713C13");
    /*is_ambiguous_... S7713C13::S7713C3 */ AMB_check_base_class_offset(lv, (S7713C3*), ABISELECT(24,16), "S7713C13");
    check_field_offset(lv, s7713c13f0, ABISELECT(56,32), "S7713C13.s7713c13f0");
    check_field_offset(lv, s7713c13f1, ABISELECT(64,36), "S7713C13.s7713c13f1");
    test_class_info(&lv, &cd_S7713C13);
    dp->~S7713C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7713C13(Test_S7713C13, "S7713C13", ABISELECT(176,96));

#else // __cplusplus

extern void _ZN8S7713C13C1Ev();
extern void _ZN8S7713C13D1Ev();
Name_Map name_map_S7713C13[] = {
  NSPAIR(_ZN8S7713C13C1Ev),
  NSPAIR(_ZN8S7713C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7713C5_nt;
extern VTBL_ENTRY _ZTI10S7713C5_nt[];
extern  VTBL_ENTRY _ZTV10S7713C5_nt[];
extern Class_Descriptor cd_S7713C5_nt;
extern VTBL_ENTRY _ZTI10S7713C5_nt[];
extern  VTBL_ENTRY _ZTV10S7713C5_nt[];
extern Class_Descriptor cd_S7713C6;
extern VTBL_ENTRY _ZTI7S7713C6[];
extern  VTBL_ENTRY _ZTV7S7713C6[];
extern Class_Descriptor cd_S7713C5_nt;
extern VTBL_ENTRY _ZTI10S7713C5_nt[];
extern  VTBL_ENTRY _ZTV10S7713C5_nt[];
extern Class_Descriptor cd_S7713C7;
extern VTBL_ENTRY _ZTI7S7713C7[];
extern  VTBL_ENTRY _ZTV7S7713C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7713C7[];
extern Class_Descriptor cd_S7713C4;
extern VTBL_ENTRY _ZTI7S7713C4[];
extern  VTBL_ENTRY _ZTV7S7713C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7713C4[];
extern Class_Descriptor cd_S7713C8_nt;
extern VTBL_ENTRY _ZTI10S7713C8_nt[];
extern  VTBL_ENTRY _ZTV10S7713C8_nt[];
extern Class_Descriptor cd_S7713C5_nt;
extern VTBL_ENTRY _ZTI10S7713C5_nt[];
extern  VTBL_ENTRY _ZTV10S7713C5_nt[];
extern Class_Descriptor cd_S7713C9;
extern VTBL_ENTRY _ZTI7S7713C9[];
extern  VTBL_ENTRY _ZTV7S7713C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7713C9[];
extern Class_Descriptor cd_S7713C3;
extern VTBL_ENTRY _ZTI7S7713C3[];
extern  VTBL_ENTRY _ZTV7S7713C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7713C3[];
extern Class_Descriptor cd_S7713C10_nt;
extern VTBL_ENTRY _ZTI11S7713C10_nt[];
extern  VTBL_ENTRY _ZTV11S7713C10_nt[];
extern Class_Descriptor cd_S7713C12_nt;
extern VTBL_ENTRY _ZTI11S7713C12_nt[];
extern  VTBL_ENTRY _ZTV11S7713C12_nt[];
extern Class_Descriptor cd_S7713C11;
extern VTBL_ENTRY _ZTI8S7713C11[];
extern  VTBL_ENTRY _ZTV8S7713C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7713C11[];
extern Class_Descriptor cd_S7713C2;
extern VTBL_ENTRY _ZTI7S7713C2[];
extern  VTBL_ENTRY _ZTV7S7713C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7713C2[];
extern Class_Descriptor cd_S7713C9;
extern VTBL_ENTRY _ZTI7S7713C9[];
extern  VTBL_ENTRY _ZTV7S7713C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7713C9[];
extern Class_Descriptor cd_S7713C3;
extern VTBL_ENTRY _ZTI7S7713C3[];
extern  VTBL_ENTRY _ZTV7S7713C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7713C3[];
static Base_Class bases_S7713C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7713C5_nt,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7713C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7713C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7713C5_nt,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7713C7,    ABISELECT(120,68), //bcp->offset
    93, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7713C4,    ABISELECT(112,64), //bcp->offset
    68, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7713C8_nt,    ABISELECT(136,80), //bcp->offset
    103, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7713C5_nt,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7713C9,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7713C3,    ABISELECT(80,48), //bcp->offset
    49, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7713C10_nt,    ABISELECT(144,84), //bcp->offset
    115, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7713C12_nt,    ABISELECT(152,88), //bcp->offset
    128, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7713C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7713C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7713C9,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7713C3,    ABISELECT(24,16), //bcp->offset
    35, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7713C13[];
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C62v9Ev();
extern void _ZN7S7713C63v10Ev();
extern void _ZN7S7713C63v11Ev();
extern void _ZN8S7713C113v41Ev();
extern void _ZN8S7713C113v42Ev();
extern void _ZN8S7713C113v43Ev();
extern void _ZN8S7713C113v44Ev();
extern void _ZN8S7713C113v45Ev();
extern void _ZN8S7713C13D1Ev();
extern void _ZN8S7713C13D0Ev();
extern void _ZN7S7713C23v46Ev();
extern void _ZN7S7713C23v47Ev();
extern void _ZN7S7713C23v48Ev();
extern void _ZN7S7713C23v49Ev();
extern void _ZN7S7713C23v50Ev();
extern void _ZN8S7713C133v51Ev();
extern void _ZN8S7713C133v52Ev();
extern void _ZN8S7713C133v53Ev();
extern void _ZN8S7713C133v54Ev();
extern void _ZN8S7713C133v55Ev();
extern void _ZN8S7713C133v56Ev();
extern void _ZN10S7713C5_nt2v8Ev();
extern void ABISELECT(_ZThn24_N8S7713C13D1Ev,_ZThn16_N8S7713C13D1Ev)();
extern void ABISELECT(_ZThn24_N8S7713C13D0Ev,_ZThn16_N8S7713C13D0Ev)();
extern void _ZN7S7713C93v30Ev();
extern void _ZN7S7713C33v31Ev();
extern void _ZN7S7713C33v32Ev();
extern void _ZN7S7713C33v33Ev();
extern void _ZN10S7713C5_nt2v8Ev();
extern void ABISELECT(_ZTv0_n64_N8S7713C13D1Ev,_ZTv0_n32_N8S7713C13D1Ev)();
extern void ABISELECT(_ZThn80_N8S7713C13D1Ev,_ZThn48_N8S7713C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7713C13D0Ev,_ZTv0_n32_N8S7713C13D0Ev)();
extern void ABISELECT(_ZThn80_N8S7713C13D0Ev,_ZThn48_N8S7713C13D0Ev)() __attribute__((weak));
extern void _ZN7S7713C93v30Ev();
extern void _ZN7S7713C33v31Ev();
extern void _ZN7S7713C33v32Ev();
extern void _ZN7S7713C33v33Ev();
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C43v18Ev();
extern void _ZN7S7713C43v19Ev();
extern void _ZN7S7713C43v20Ev();
extern void _ZN7S7713C43v21Ev();
extern void _ZN7S7713C43v22Ev();
extern void _ZN7S7713C43v23Ev();
extern void _ZN7S7713C43v24Ev();
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C73v12Ev();
extern void _ZN7S7713C73v13Ev();
extern void _ZN7S7713C73v14Ev();
extern void _ZN7S7713C73v15Ev();
extern void _ZN7S7713C73v16Ev();
extern void _ZN7S7713C73v17Ev();
extern void _ZN10S7713C8_nt3v25Ev();
extern void _ZN10S7713C8_nt3v26Ev();
extern void _ZN10S7713C8_nt3v27Ev();
extern void _ZN10S7713C8_nt3v28Ev();
extern void _ZN10S7713C8_nt3v29Ev();
extern void ABISELECT(_ZTv0_n24_N8S7713C13D1Ev,_ZTv0_n12_N8S7713C13D1Ev)();
extern void ABISELECT(_ZThn144_N8S7713C13D1Ev,_ZThn84_N8S7713C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7713C13D0Ev,_ZTv0_n12_N8S7713C13D0Ev)();
extern void ABISELECT(_ZThn144_N8S7713C13D0Ev,_ZThn84_N8S7713C13D0Ev)() __attribute__((weak));
extern void _ZN11S7713C10_nt3v34Ev();
extern void _ZN11S7713C10_nt3v35Ev();
extern void _ZN11S7713C10_nt3v36Ev();
extern void _ZN11S7713C10_nt3v37Ev();
extern void _ZN11S7713C12_nt3v38Ev();
extern void _ZN11S7713C12_nt3v39Ev();
extern void _ZN11S7713C12_nt3v40Ev();
static  VTBL_ENTRY vtc_S7713C13[] = {
  ABISELECT(144,84),
  ABISELECT(80,48),
  ABISELECT(136,80),
  ABISELECT(80,48),
  ABISELECT(152,88),
  0,
  ABISELECT(112,64),
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7713C13[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v41Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v42Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v43Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v44Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v45Ev,
  (VTBL_ENTRY)&_ZN8S7713C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7713C13D0Ev,
  (VTBL_ENTRY)&_ZN7S7713C23v46Ev,
  (VTBL_ENTRY)&_ZN7S7713C23v47Ev,
  (VTBL_ENTRY)&_ZN7S7713C23v48Ev,
  (VTBL_ENTRY)&_ZN7S7713C23v49Ev,
  (VTBL_ENTRY)&_ZN7S7713C23v50Ev,
  (VTBL_ENTRY)&_ZN8S7713C133v51Ev,
  (VTBL_ENTRY)&_ZN8S7713C133v52Ev,
  (VTBL_ENTRY)&_ZN8S7713C133v53Ev,
  (VTBL_ENTRY)&_ZN8S7713C133v54Ev,
  (VTBL_ENTRY)&_ZN8S7713C133v55Ev,
  (VTBL_ENTRY)&_ZN8S7713C133v56Ev,
  ABISELECT(112,64),
  ABISELECT(-24,-16),
  ABISELECT(88,48),
  ABISELECT(56,32),
  ABISELECT(56,32),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7713C13[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7713C13D1Ev,_ZThn16_N8S7713C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7713C13D0Ev,_ZThn16_N8S7713C13D0Ev),
  (VTBL_ENTRY)&_ZN7S7713C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7713C33v31Ev,
  (VTBL_ENTRY)&_ZN7S7713C33v32Ev,
  (VTBL_ENTRY)&_ZN7S7713C33v33Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-80,-48),
  ABISELECT(56,32),
  ABISELECT(-80,-48),
  ABISELECT(32,16),
  0,
  0,
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S7713C13[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7713C13D1Ev,_ZTv0_n32_N8S7713C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7713C13D0Ev,_ZTv0_n32_N8S7713C13D0Ev),
  (VTBL_ENTRY)&_ZN7S7713C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7713C33v31Ev,
  (VTBL_ENTRY)&_ZN7S7713C33v32Ev,
  (VTBL_ENTRY)&_ZN7S7713C33v33Ev,
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI8S7713C13[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v18Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v19Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v20Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v21Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v22Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v23Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v24Ev,
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S7713C13[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v12Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v17Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI8S7713C13[0]),
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v29Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S7713C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7713C13D1Ev,_ZTv0_n12_N8S7713C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7713C13D0Ev,_ZTv0_n12_N8S7713C13D0Ev),
  (VTBL_ENTRY)&_ZN11S7713C10_nt3v34Ev,
  (VTBL_ENTRY)&_ZN11S7713C10_nt3v35Ev,
  (VTBL_ENTRY)&_ZN11S7713C10_nt3v36Ev,
  (VTBL_ENTRY)&_ZN11S7713C10_nt3v37Ev,
  0,
  0,
  0,
  ABISELECT(-152,-88),
  (VTBL_ENTRY)&(_ZTI8S7713C13[0]),
  (VTBL_ENTRY)&_ZN11S7713C12_nt3v38Ev,
  (VTBL_ENTRY)&_ZN11S7713C12_nt3v39Ev,
  (VTBL_ENTRY)&_ZN11S7713C12_nt3v40Ev,
};
extern VTBL_ENTRY _ZTV8S7713C13[];
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C62v9Ev();
extern void _ZN7S7713C63v10Ev();
extern void _ZN7S7713C63v11Ev();
extern void _ZN8S7713C113v41Ev();
extern void _ZN8S7713C113v42Ev();
extern void _ZN8S7713C113v43Ev();
extern void _ZN8S7713C113v44Ev();
extern void _ZN8S7713C113v45Ev();
extern void _ZN7S7713C2D1Ev();
extern void _ZN7S7713C2D0Ev();
extern void _ZN7S7713C23v46Ev();
extern void _ZN7S7713C23v47Ev();
extern void _ZN7S7713C23v48Ev();
extern void _ZN7S7713C23v49Ev();
extern void _ZN7S7713C23v50Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C2__8S7713C13[] = {
  ABISELECT(144,84),
  ABISELECT(80,48),
  ABISELECT(136,80),
  ABISELECT(80,48),
  ABISELECT(152,88),
  0,
  ABISELECT(112,64),
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7713C2[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v41Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v42Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v43Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v44Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v45Ev,
  (VTBL_ENTRY)&_ZN7S7713C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7713C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7713C23v46Ev,
  (VTBL_ENTRY)&_ZN7S7713C23v47Ev,
  (VTBL_ENTRY)&_ZN7S7713C23v48Ev,
  (VTBL_ENTRY)&_ZN7S7713C23v49Ev,
  (VTBL_ENTRY)&_ZN7S7713C23v50Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C62v9Ev();
extern void _ZN7S7713C63v10Ev();
extern void _ZN7S7713C63v11Ev();
extern void _ZN8S7713C113v41Ev();
extern void _ZN8S7713C113v42Ev();
extern void _ZN8S7713C113v43Ev();
extern void _ZN8S7713C113v44Ev();
extern void _ZN8S7713C113v45Ev();
static  VTBL_ENTRY _tg__ZTV8S7713C117S7713C2__8S7713C13[] = {
  ABISELECT(152,88),
  0,
  ABISELECT(112,64),
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7713C11[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v41Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v42Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v43Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v44Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v45Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C43v18Ev();
extern void _ZN7S7713C43v19Ev();
extern void _ZN7S7713C43v20Ev();
extern void _ZN7S7713C43v21Ev();
extern void _ZN7S7713C43v22Ev();
extern void _ZN7S7713C43v23Ev();
extern void _ZN7S7713C43v24Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C4__8S7713C117S7713C2__8S7713C13[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI8S7713C11[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v18Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v19Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v20Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v21Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v22Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v23Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v24Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C73v12Ev();
extern void _ZN7S7713C73v13Ev();
extern void _ZN7S7713C73v14Ev();
extern void _ZN7S7713C73v15Ev();
extern void _ZN7S7713C73v16Ev();
extern void _ZN7S7713C73v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C77S7713C4__8S7713C117S7713C2__8S7713C13[] = {
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S7713C11[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v12Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v17Ev,
};
extern void _ZN11S7713C12_nt3v38Ev();
extern void _ZN11S7713C12_nt3v39Ev();
extern void _ZN11S7713C12_nt3v40Ev();
static  VTBL_ENTRY _tg__ZTV11S7713C12_nt__8S7713C117S7713C2__8S7713C13[] = {
  0,
  0,
  0,
  ABISELECT(-152,-88),
  (VTBL_ENTRY)&(_ZTI8S7713C11[0]),
  (VTBL_ENTRY)&_ZN11S7713C12_nt3v38Ev,
  (VTBL_ENTRY)&_ZN11S7713C12_nt3v39Ev,
  (VTBL_ENTRY)&_ZN11S7713C12_nt3v40Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void ABISELECT(_ZTv0_n64_N7S7713C2D1Ev,_ZTv0_n32_N7S7713C2D1Ev)();
extern void ABISELECT(_ZThn80_N7S7713C2D1Ev,_ZThn48_N7S7713C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7713C2D0Ev,_ZTv0_n32_N7S7713C2D0Ev)();
extern void ABISELECT(_ZThn80_N7S7713C2D0Ev,_ZThn48_N7S7713C2D0Ev)() __attribute__((weak));
extern void _ZN7S7713C93v30Ev();
extern void _ZN7S7713C33v31Ev();
extern void _ZN7S7713C33v32Ev();
extern void _ZN7S7713C33v33Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C3__7S7713C2__8S7713C13[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-80,-48),
  ABISELECT(56,32),
  ABISELECT(-80,-48),
  ABISELECT(32,16),
  0,
  0,
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7713C2[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7713C2D1Ev,_ZTv0_n32_N7S7713C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7713C2D0Ev,_ZTv0_n32_N7S7713C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7713C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7713C33v31Ev,
  (VTBL_ENTRY)&_ZN7S7713C33v32Ev,
  (VTBL_ENTRY)&_ZN7S7713C33v33Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C43v18Ev();
extern void _ZN7S7713C43v19Ev();
extern void _ZN7S7713C43v20Ev();
extern void _ZN7S7713C43v21Ev();
extern void _ZN7S7713C43v22Ev();
extern void _ZN7S7713C43v23Ev();
extern void _ZN7S7713C43v24Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C4__7S7713C2__8S7713C13[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI7S7713C2[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v18Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v19Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v20Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v21Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v22Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v23Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v24Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C73v12Ev();
extern void _ZN7S7713C73v13Ev();
extern void _ZN7S7713C73v14Ev();
extern void _ZN7S7713C73v15Ev();
extern void _ZN7S7713C73v16Ev();
extern void _ZN7S7713C73v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C77S7713C4__7S7713C2__8S7713C13[] = {
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI7S7713C2[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v12Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v17Ev,
};
extern void _ZN10S7713C8_nt3v25Ev();
extern void _ZN10S7713C8_nt3v26Ev();
extern void _ZN10S7713C8_nt3v27Ev();
extern void _ZN10S7713C8_nt3v28Ev();
extern void _ZN10S7713C8_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV10S7713C8_nt__7S7713C2__8S7713C13[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI7S7713C2[0]),
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v29Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7713C2D1Ev,_ZTv0_n12_N7S7713C2D1Ev)();
extern void ABISELECT(_ZThn144_N7S7713C2D1Ev,_ZThn84_N7S7713C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7713C2D0Ev,_ZTv0_n12_N7S7713C2D0Ev)();
extern void ABISELECT(_ZThn144_N7S7713C2D0Ev,_ZThn84_N7S7713C2D0Ev)() __attribute__((weak));
extern void _ZN11S7713C10_nt3v34Ev();
extern void _ZN11S7713C10_nt3v35Ev();
extern void _ZN11S7713C10_nt3v36Ev();
extern void _ZN11S7713C10_nt3v37Ev();
static  VTBL_ENTRY _tg__ZTV11S7713C10_nt__7S7713C2__8S7713C13[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI7S7713C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7713C2D1Ev,_ZTv0_n12_N7S7713C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7713C2D0Ev,_ZTv0_n12_N7S7713C2D0Ev),
  (VTBL_ENTRY)&_ZN11S7713C10_nt3v34Ev,
  (VTBL_ENTRY)&_ZN11S7713C10_nt3v35Ev,
  (VTBL_ENTRY)&_ZN11S7713C10_nt3v36Ev,
  (VTBL_ENTRY)&_ZN11S7713C10_nt3v37Ev,
};
extern void _ZN11S7713C12_nt3v38Ev();
extern void _ZN11S7713C12_nt3v39Ev();
extern void _ZN11S7713C12_nt3v40Ev();
static  VTBL_ENTRY _tg__ZTV11S7713C12_nt__7S7713C2__8S7713C13[] = {
  0,
  0,
  0,
  ABISELECT(-152,-88),
  (VTBL_ENTRY)&(_ZTI7S7713C2[0]),
  (VTBL_ENTRY)&_ZN11S7713C12_nt3v38Ev,
  (VTBL_ENTRY)&_ZN11S7713C12_nt3v39Ev,
  (VTBL_ENTRY)&_ZN11S7713C12_nt3v40Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C3D1Ev();
extern void _ZN7S7713C3D0Ev();
extern void _ZN7S7713C93v30Ev();
extern void _ZN7S7713C33v31Ev();
extern void _ZN7S7713C33v32Ev();
extern void _ZN7S7713C33v33Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C3__A__8S7713C13[] = {
  ABISELECT(112,64),
  ABISELECT(-24,-16),
  ABISELECT(88,48),
  ABISELECT(56,32),
  ABISELECT(56,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7713C3[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7713C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7713C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7713C33v31Ev,
  (VTBL_ENTRY)&_ZN7S7713C33v32Ev,
  (VTBL_ENTRY)&_ZN7S7713C33v33Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C9D1Ev();
extern void _ZN7S7713C9D0Ev();
extern void _ZN7S7713C93v30Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C97S7713C3__A1__8S7713C13[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7713C9[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7713C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7713C93v30Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV10S7713C5_nt__7S7713C97S7713C3__A1__8S7713C13[] = {
  0,
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7713C9[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C43v18Ev();
extern void _ZN7S7713C43v19Ev();
extern void _ZN7S7713C43v20Ev();
extern void _ZN7S7713C43v21Ev();
extern void _ZN7S7713C43v22Ev();
extern void _ZN7S7713C43v23Ev();
extern void _ZN7S7713C43v24Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C4__7S7713C3__A__8S7713C13[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-64),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI7S7713C3[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v18Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v19Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v20Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v21Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v22Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v23Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v24Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C62v9Ev();
extern void _ZN7S7713C63v10Ev();
extern void _ZN7S7713C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C6__7S7713C3__A__8S7713C13[] = {
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S7713C3[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v11Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C73v12Ev();
extern void _ZN7S7713C73v13Ev();
extern void _ZN7S7713C73v14Ev();
extern void _ZN7S7713C73v15Ev();
extern void _ZN7S7713C73v16Ev();
extern void _ZN7S7713C73v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C77S7713C4__7S7713C3__A__8S7713C13[] = {
  ABISELECT(-120,-68),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S7713C3[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v12Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v17Ev,
};
extern void _ZN10S7713C8_nt3v25Ev();
extern void _ZN10S7713C8_nt3v26Ev();
extern void _ZN10S7713C8_nt3v27Ev();
extern void _ZN10S7713C8_nt3v28Ev();
extern void _ZN10S7713C8_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV10S7713C8_nt__7S7713C3__A__8S7713C13[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI7S7713C3[0]),
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v29Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV10S7713C5_nt__A3__7S7713C3__A__8S7713C13[] = {
  0,
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7713C3[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C3D1Ev();
extern void _ZN7S7713C3D0Ev();
extern void _ZN7S7713C93v30Ev();
extern void _ZN7S7713C33v31Ev();
extern void _ZN7S7713C33v32Ev();
extern void _ZN7S7713C33v33Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C3__8S7713C13[] = {
  ABISELECT(56,32),
  ABISELECT(-80,-48),
  ABISELECT(32,16),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7713C3[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7713C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7713C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7713C33v31Ev,
  (VTBL_ENTRY)&_ZN7S7713C33v32Ev,
  (VTBL_ENTRY)&_ZN7S7713C33v33Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C9D1Ev();
extern void _ZN7S7713C9D0Ev();
extern void _ZN7S7713C93v30Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C97S7713C3__8S7713C13[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7713C9[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7713C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7713C93v30Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C43v18Ev();
extern void _ZN7S7713C43v19Ev();
extern void _ZN7S7713C43v20Ev();
extern void _ZN7S7713C43v21Ev();
extern void _ZN7S7713C43v22Ev();
extern void _ZN7S7713C43v23Ev();
extern void _ZN7S7713C43v24Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C4__7S7713C3__8S7713C13[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-64),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7713C3[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v18Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v19Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v20Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v21Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v22Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v23Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v24Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C62v9Ev();
extern void _ZN7S7713C63v10Ev();
extern void _ZN7S7713C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C6__7S7713C3__8S7713C13[] = {
  0,
  0,
  0,
  0,
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI7S7713C3[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v11Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C73v12Ev();
extern void _ZN7S7713C73v13Ev();
extern void _ZN7S7713C73v14Ev();
extern void _ZN7S7713C73v15Ev();
extern void _ZN7S7713C73v16Ev();
extern void _ZN7S7713C73v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C77S7713C4__7S7713C3__8S7713C13[] = {
  ABISELECT(-120,-68),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7713C3[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v12Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v17Ev,
};
extern void _ZN10S7713C8_nt3v25Ev();
extern void _ZN10S7713C8_nt3v26Ev();
extern void _ZN10S7713C8_nt3v27Ev();
extern void _ZN10S7713C8_nt3v28Ev();
extern void _ZN10S7713C8_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV10S7713C8_nt__7S7713C3__8S7713C13[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7713C3[0]),
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v29Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C43v18Ev();
extern void _ZN7S7713C43v19Ev();
extern void _ZN7S7713C43v20Ev();
extern void _ZN7S7713C43v21Ev();
extern void _ZN7S7713C43v22Ev();
extern void _ZN7S7713C43v23Ev();
extern void _ZN7S7713C43v24Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C4__8S7713C13[] = {
  ABISELECT(-112,-64),
  0,
  (VTBL_ENTRY)&(_ZTI7S7713C4[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v18Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v19Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v20Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v21Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v22Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v23Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v24Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C73v12Ev();
extern void _ZN7S7713C73v13Ev();
extern void _ZN7S7713C73v14Ev();
extern void _ZN7S7713C73v15Ev();
extern void _ZN7S7713C73v16Ev();
extern void _ZN7S7713C73v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C77S7713C4__8S7713C13[] = {
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S7713C7[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v12Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v17Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C62v9Ev();
extern void _ZN7S7713C63v10Ev();
extern void _ZN7S7713C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C6__7S7713C77S7713C4__8S7713C13[] = {
  0,
  0,
  0,
  0,
  ABISELECT(120,68),
  (VTBL_ENTRY)&(_ZTI7S7713C7[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v11Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C62v9Ev();
extern void _ZN7S7713C63v10Ev();
extern void _ZN7S7713C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C6__7S7713C4__8S7713C13[] = {
  0,
  0,
  0,
  0,
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI7S7713C4[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v11Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C73v12Ev();
extern void _ZN7S7713C73v13Ev();
extern void _ZN7S7713C73v14Ev();
extern void _ZN7S7713C73v15Ev();
extern void _ZN7S7713C73v16Ev();
extern void _ZN7S7713C73v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C7__7S7713C4__8S7713C13[] = {
  ABISELECT(-120,-68),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7713C4[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v12Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v17Ev,
};
static  VTT_ENTRY vtt_S7713C13[] = {
  {&(_ZTV8S7713C13[13]),  13,136},
  {&(_tg__ZTV7S7713C2__8S7713C13[13]),  13,29},
  {&(_tg__ZTV8S7713C117S7713C2__8S7713C13[9]),  9,18},
  {&(_tg__ZTV7S7713C4__8S7713C117S7713C2__8S7713C13[17]),  17,25},
  {&(_tg__ZTV8S7713C117S7713C2__8S7713C13[9]),  9,18},
  {&(_tg__ZTV7S7713C77S7713C4__8S7713C117S7713C2__8S7713C13[3]),  3,10},
  {&(_tg__ZTV11S7713C12_nt__8S7713C117S7713C2__8S7713C13[5]),  5,8},
  {&(_tg__ZTV7S7713C3__7S7713C2__8S7713C13[12]),  12,19},
  {&(_tg__ZTV7S7713C4__7S7713C2__8S7713C13[17]),  17,25},
  {&(_tg__ZTV7S7713C2__8S7713C13[13]),  13,29},
  {&(_tg__ZTV7S7713C77S7713C4__7S7713C2__8S7713C13[3]),  3,10},
  {&(_tg__ZTV10S7713C8_nt__7S7713C2__8S7713C13[7]),  7,12},
  {&(_tg__ZTV7S7713C3__7S7713C2__8S7713C13[12]),  12,19},
  {&(_tg__ZTV11S7713C10_nt__7S7713C2__8S7713C13[7]),  7,13},
  {&(_tg__ZTV11S7713C12_nt__7S7713C2__8S7713C13[5]),  5,8},
  {&(_tg__ZTV7S7713C3__A__8S7713C13[7]),  7,14},
  {&(_tg__ZTV7S7713C97S7713C3__A1__8S7713C13[4]),  4,8},
  {&(_tg__ZTV10S7713C5_nt__7S7713C97S7713C3__A1__8S7713C13[3]),  3,4},
  {&(_tg__ZTV7S7713C4__7S7713C3__A__8S7713C13[17]),  17,25},
  {&(_tg__ZTV7S7713C6__7S7713C3__A__8S7713C13[6]),  6,10},
  {&(_tg__ZTV7S7713C77S7713C4__7S7713C3__A__8S7713C13[3]),  3,10},
  {&(_tg__ZTV10S7713C8_nt__7S7713C3__A__8S7713C13[7]),  7,12},
  {&(_tg__ZTV10S7713C5_nt__A3__7S7713C3__A__8S7713C13[3]),  3,4},
  {&(_ZTV8S7713C13[61]),  61,136},
  {&(_ZTV8S7713C13[85]),  85,136},
  {&(_ZTV8S7713C13[13]),  13,136},
  {&(_ZTV8S7713C13[96]),  96,136},
  {&(_ZTV8S7713C13[110]),  110,136},
  {&(_ZTV8S7713C13[61]),  61,136},
  {&(_ZTV8S7713C13[122]),  122,136},
  {&(_ZTV8S7713C13[133]),  133,136},
  {&(_ZTV8S7713C13[42]),  42,136},
  {&(_tg__ZTV7S7713C3__8S7713C13[7]),  7,14},
  {&(_tg__ZTV7S7713C97S7713C3__8S7713C13[4]),  4,8},
  {&(_tg__ZTV7S7713C97S7713C3__8S7713C13[4]),  4,8},
  {&(_tg__ZTV7S7713C4__7S7713C3__8S7713C13[17]),  17,25},
  {&(_tg__ZTV7S7713C6__7S7713C3__8S7713C13[6]),  6,10},
  {&(_tg__ZTV7S7713C77S7713C4__7S7713C3__8S7713C13[3]),  3,10},
  {&(_tg__ZTV10S7713C8_nt__7S7713C3__8S7713C13[7]),  7,12},
  {&(_tg__ZTV7S7713C3__8S7713C13[7]),  7,14},
  {&(_tg__ZTV7S7713C4__8S7713C13[3]),  3,11},
  {&(_tg__ZTV7S7713C77S7713C4__8S7713C13[3]),  3,10},
  {&(_tg__ZTV7S7713C6__7S7713C77S7713C4__8S7713C13[6]),  6,10},
  {&(_tg__ZTV7S7713C6__7S7713C4__8S7713C13[6]),  6,10},
  {&(_tg__ZTV7S7713C7__7S7713C4__8S7713C13[3]),  3,10},
};
extern VTBL_ENTRY _ZTI8S7713C13[];
extern  VTBL_ENTRY _ZTV8S7713C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7713C13[];
static VTBL_ENTRY alt_thunk_names15[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7713C2D0Ev,_ZTv0_n12_N7S7713C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7713C2D0Ev,_ZThn84_N7S7713C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7713C2D1Ev,_ZTv0_n12_N7S7713C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7713C2D1Ev,_ZThn84_N7S7713C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7713C2D0Ev,_ZTv0_n32_N7S7713C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7713C2D0Ev,_ZThn48_N7S7713C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7713C2D1Ev,_ZTv0_n32_N7S7713C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7713C2D1Ev,_ZThn48_N7S7713C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7713C13D0Ev,_ZTv0_n12_N8S7713C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7713C13D0Ev,_ZThn84_N8S7713C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7713C13D1Ev,_ZTv0_n12_N8S7713C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7713C13D1Ev,_ZThn84_N8S7713C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7713C13D0Ev,_ZTv0_n32_N8S7713C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7713C13D0Ev,_ZThn48_N8S7713C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7713C13D1Ev,_ZTv0_n32_N8S7713C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7713C13D1Ev,_ZThn48_N8S7713C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7713C13 = {  "S7713C13", // class name
  bases_S7713C13, 16,
  &(vtc_S7713C13[0]), // expected_vtbl_contents
  &(vtt_S7713C13[0]), // expected_vtt_contents
  ABISELECT(176,96), // object size
  NSPAIRA(_ZTI8S7713C13),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7713C13),136, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7713C13),45, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names15,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7713C1  : S7713C2 , S7713C4 , virtual S7713C13 {
  char s7713c1f0;
  __tsi64 s7713c1f1;
  virtual  ~S7713C1(); // _ZN7S7713C1D2Ev
  virtual void  v1(); // _ZN7S7713C12v1Ev
  virtual void  v2(); // _ZN7S7713C12v2Ev
  virtual void  v3(); // _ZN7S7713C12v3Ev
  virtual void  v4(); // _ZN7S7713C12v4Ev
  virtual void  v5(); // _ZN7S7713C12v5Ev
  virtual void  v6(); // _ZN7S7713C12v6Ev
  virtual void  v7(); // _ZN7S7713C12v7Ev
  S7713C1(); // tgen
};
//SIG(1 S7713C1) C1{ BC2{ VBC3{ VBC4{ BC5{ v8} VBC6{ BC5 v9 v10 v11} BC7{ VBC6 BC5 v12 v13 v14 v15 v16 v17 Fi} v18 v19 v20 v21 v22 v23 v24 Fc} VBC8{ v25 v26 v27 v28 v29} BC9{ VBC5 vd v30} vd v31 v32 v33 FC7} VBC10{ vd v34 v35 v36 v37} BC11{ VBC4 VBC12{ v38 v39 v40 Fi} v41 v42 v43 v44 v45 Fp Fc[7]} vd v46 v47 v48 v49 v50} BC4 VBC13{ BC2 BC3 v51 v52 v53 v54 v55 v56 Fp FD} vd v1 v2 v3 v4 v5 v6 v7 Fc FL}


 S7713C1 ::~S7713C1(){ note_dtor("S7713C1", this);}
void  S7713C1 ::v1(){vfunc_called(this, "_ZN7S7713C12v1Ev");}
void  S7713C1 ::v2(){vfunc_called(this, "_ZN7S7713C12v2Ev");}
void  S7713C1 ::v3(){vfunc_called(this, "_ZN7S7713C12v3Ev");}
void  S7713C1 ::v4(){vfunc_called(this, "_ZN7S7713C12v4Ev");}
void  S7713C1 ::v5(){vfunc_called(this, "_ZN7S7713C12v5Ev");}
void  S7713C1 ::v6(){vfunc_called(this, "_ZN7S7713C12v6Ev");}
void  S7713C1 ::v7(){vfunc_called(this, "_ZN7S7713C12v7Ev");}
S7713C1 ::S7713C1(){ note_ctor("S7713C1", this);} // tgen

static void Test_S7713C1()
{
  extern Class_Descriptor cd_S7713C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(15,35)];
    init_test(&cd_S7713C1, buf);
    S7713C1 *dp, &lv = *(dp=new (buf) S7713C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,136), "sizeof(S7713C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7713C1)");
    /*is_ambiguous_... S7713C1::S7713C4 */ AMB_check_base_class_offset(lv, (S7713C5_nt*)(S7713C4*), ABISELECT(88,56), "S7713C1");
    check_base_class_offset(lv, (S7713C5_nt*)(S7713C6*), 0, "S7713C1");
    /*is_ambiguous_... S7713C1::S7713C4 */ AMB_check_base_class_offset(lv, (S7713C6*)(S7713C4*), 0, "S7713C1");
    /*is_ambiguous_... S7713C1::S7713C4 */ AMB_check_base_class_offset(lv, (S7713C6*)(S7713C7*)(S7713C4*), 0, "S7713C1");
    /*is_ambiguous_... S7713C1::S7713C4 */ AMB_check_base_class_offset(lv, (S7713C6*)(S7713C4*), 0, "S7713C1");
    /*is_ambiguous_... S7713C1::S7713C4 */ AMB_check_base_class_offset(lv, (S7713C6*)(S7713C7*)(S7713C4*), 0, "S7713C1");
    /*is_ambiguous_... S7713C1::S7713C4 */ AMB_check_base_class_offset(lv, (S7713C5_nt*)(S7713C7*)(S7713C4*), ABISELECT(96,60), "S7713C1");
    /*is_ambiguous_... S7713C1::S7713C4 */ AMB_check_base_class_offset(lv, (S7713C7*)(S7713C4*), ABISELECT(96,60), "S7713C1");
    /*is_ambiguous_... S7713C1::S7713C3 */ AMB_check_base_class_offset(lv, (S7713C4*)(S7713C3*), ABISELECT(88,56), "S7713C1");
    /*is_ambiguous_... S7713C1::S7713C2 */ AMB_check_base_class_offset(lv, (S7713C4*)(S7713C11*)(S7713C2*), ABISELECT(88,56), "S7713C1");
    check_base_class_offset(lv, (S7713C4*)(S7713C11*)(S7713C2*)(S7713C13*), ABISELECT(88,56), "S7713C1");
    /*is_ambiguous_... S7713C13::S7713C3 */ AMB_check_base_class_offset(lv, (S7713C4*)(S7713C3*)(S7713C13*), ABISELECT(88,56), "S7713C1");
    /*is_ambiguous_... S7713C1::S7713C3 */ AMB_check_base_class_offset(lv, (S7713C8_nt*)(S7713C3*), ABISELECT(112,72), "S7713C1");
    /*is_ambiguous_... S7713C13::S7713C3 */ AMB_check_base_class_offset(lv, (S7713C8_nt*)(S7713C3*)(S7713C13*), ABISELECT(112,72), "S7713C1");
    /*is_ambiguous_... S7713C1::S7713C3 */ AMB_check_base_class_offset(lv, (S7713C5_nt*)(S7713C9*)(S7713C3*), ABISELECT(56,40), "S7713C1");
    /*is_ambiguous_... S7713C13::S7713C3 */ AMB_check_base_class_offset(lv, (S7713C5_nt*)(S7713C9*)(S7713C3*)(S7713C13*), ABISELECT(56,40), "S7713C1");
    /*is_ambiguous_... S7713C1::S7713C3 */ AMB_check_base_class_offset(lv, (S7713C9*)(S7713C3*), ABISELECT(56,40), "S7713C1");
    /*is_ambiguous_... S7713C1::S7713C2 */ AMB_check_base_class_offset(lv, (S7713C3*)(S7713C2*), ABISELECT(56,40), "S7713C1");
    check_base_class_offset(lv, (S7713C3*)(S7713C2*)(S7713C13*), ABISELECT(56,40), "S7713C1");
    /*is_ambiguous_... S7713C1::S7713C2 */ AMB_check_base_class_offset(lv, (S7713C10_nt*)(S7713C2*), ABISELECT(120,76), "S7713C1");
    check_base_class_offset(lv, (S7713C10_nt*)(S7713C2*)(S7713C13*), ABISELECT(120,76), "S7713C1");
    /*is_ambiguous_... S7713C1::S7713C2 */ AMB_check_base_class_offset(lv, (S7713C12_nt*)(S7713C11*)(S7713C2*), ABISELECT(128,80), "S7713C1");
    check_base_class_offset(lv, (S7713C12_nt*)(S7713C11*)(S7713C2*)(S7713C13*), ABISELECT(128,80), "S7713C1");
    /*is_ambiguous_... S7713C1::S7713C2 */ AMB_check_base_class_offset(lv, (S7713C11*)(S7713C2*), 0, "S7713C1");
    /*is_ambiguous_... S7713C1::S7713C2 */ AMB_check_base_class_offset(lv, (S7713C2*), 0, "S7713C1");
    /*is_ambiguous_... S7713C1::S7713C4 */ AMB_check_base_class_offset(lv, (S7713C5_nt*)(S7713C4*), ABISELECT(24,16), "S7713C1");
    /*is_ambiguous_... S7713C1::S7713C4 */ AMB_check_base_class_offset(lv, (S7713C5_nt*)(S7713C7*)(S7713C4*), ABISELECT(32,20), "S7713C1");
    /*is_ambiguous_... S7713C1::S7713C4 */ AMB_check_base_class_offset(lv, (S7713C7*)(S7713C4*), ABISELECT(32,20), "S7713C1");
    /*is_ambiguous_... S7713C1::S7713C4 */ AMB_check_base_class_offset(lv, (S7713C4*), ABISELECT(24,16), "S7713C1");
    check_base_class_offset(lv, (S7713C11*)(S7713C2*)(S7713C13*), ABISELECT(144,88), "S7713C1");
    check_base_class_offset(lv, (S7713C2*)(S7713C13*), ABISELECT(144,88), "S7713C1");
    /*is_ambiguous_... S7713C13::S7713C3 */ AMB_check_base_class_offset(lv, (S7713C9*)(S7713C3*)(S7713C13*), ABISELECT(168,104), "S7713C1");
    /*is_ambiguous_... S7713C13::S7713C3 */ AMB_check_base_class_offset(lv, (S7713C3*)(S7713C13*), ABISELECT(168,104), "S7713C1");
    check_base_class_offset(lv, (S7713C13*), ABISELECT(144,88), "S7713C1");
    check_field_offset(lv, s7713c1f0, ABISELECT(45,29), "S7713C1.s7713c1f0");
    check_field_offset(lv, s7713c1f1, ABISELECT(48,32), "S7713C1.s7713c1f1");
    test_class_info(&lv, &cd_S7713C1);
    dp->~S7713C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7713C1(Test_S7713C1, "S7713C1", ABISELECT(224,136));

#else // __cplusplus

extern void _ZN7S7713C1C1Ev();
extern void _ZN7S7713C1D2Ev();
Name_Map name_map_S7713C1[] = {
  NSPAIR(_ZN7S7713C1C1Ev),
  NSPAIR(_ZN7S7713C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7713C5_nt;
extern VTBL_ENTRY _ZTI10S7713C5_nt[];
extern  VTBL_ENTRY _ZTV10S7713C5_nt[];
extern Class_Descriptor cd_S7713C5_nt;
extern VTBL_ENTRY _ZTI10S7713C5_nt[];
extern  VTBL_ENTRY _ZTV10S7713C5_nt[];
extern Class_Descriptor cd_S7713C6;
extern VTBL_ENTRY _ZTI7S7713C6[];
extern  VTBL_ENTRY _ZTV7S7713C6[];
extern Class_Descriptor cd_S7713C5_nt;
extern VTBL_ENTRY _ZTI10S7713C5_nt[];
extern  VTBL_ENTRY _ZTV10S7713C5_nt[];
extern Class_Descriptor cd_S7713C7;
extern VTBL_ENTRY _ZTI7S7713C7[];
extern  VTBL_ENTRY _ZTV7S7713C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7713C7[];
extern Class_Descriptor cd_S7713C4;
extern VTBL_ENTRY _ZTI7S7713C4[];
extern  VTBL_ENTRY _ZTV7S7713C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7713C4[];
extern Class_Descriptor cd_S7713C8_nt;
extern VTBL_ENTRY _ZTI10S7713C8_nt[];
extern  VTBL_ENTRY _ZTV10S7713C8_nt[];
extern Class_Descriptor cd_S7713C5_nt;
extern VTBL_ENTRY _ZTI10S7713C5_nt[];
extern  VTBL_ENTRY _ZTV10S7713C5_nt[];
extern Class_Descriptor cd_S7713C9;
extern VTBL_ENTRY _ZTI7S7713C9[];
extern  VTBL_ENTRY _ZTV7S7713C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7713C9[];
extern Class_Descriptor cd_S7713C3;
extern VTBL_ENTRY _ZTI7S7713C3[];
extern  VTBL_ENTRY _ZTV7S7713C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7713C3[];
extern Class_Descriptor cd_S7713C10_nt;
extern VTBL_ENTRY _ZTI11S7713C10_nt[];
extern  VTBL_ENTRY _ZTV11S7713C10_nt[];
extern Class_Descriptor cd_S7713C12_nt;
extern VTBL_ENTRY _ZTI11S7713C12_nt[];
extern  VTBL_ENTRY _ZTV11S7713C12_nt[];
extern Class_Descriptor cd_S7713C11;
extern VTBL_ENTRY _ZTI8S7713C11[];
extern  VTBL_ENTRY _ZTV8S7713C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7713C11[];
extern Class_Descriptor cd_S7713C2;
extern VTBL_ENTRY _ZTI7S7713C2[];
extern  VTBL_ENTRY _ZTV7S7713C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7713C2[];
extern Class_Descriptor cd_S7713C5_nt;
extern VTBL_ENTRY _ZTI10S7713C5_nt[];
extern  VTBL_ENTRY _ZTV10S7713C5_nt[];
extern Class_Descriptor cd_S7713C5_nt;
extern VTBL_ENTRY _ZTI10S7713C5_nt[];
extern  VTBL_ENTRY _ZTV10S7713C5_nt[];
extern Class_Descriptor cd_S7713C7;
extern VTBL_ENTRY _ZTI7S7713C7[];
extern  VTBL_ENTRY _ZTV7S7713C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7713C7[];
extern Class_Descriptor cd_S7713C4;
extern VTBL_ENTRY _ZTI7S7713C4[];
extern  VTBL_ENTRY _ZTV7S7713C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7713C4[];
extern Class_Descriptor cd_S7713C11;
extern VTBL_ENTRY _ZTI8S7713C11[];
extern  VTBL_ENTRY _ZTV8S7713C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7713C11[];
extern Class_Descriptor cd_S7713C2;
extern VTBL_ENTRY _ZTI7S7713C2[];
extern  VTBL_ENTRY _ZTV7S7713C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7713C2[];
extern Class_Descriptor cd_S7713C9;
extern VTBL_ENTRY _ZTI7S7713C9[];
extern  VTBL_ENTRY _ZTV7S7713C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7713C9[];
extern Class_Descriptor cd_S7713C3;
extern VTBL_ENTRY _ZTI7S7713C3[];
extern  VTBL_ENTRY _ZTV7S7713C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7713C3[];
extern Class_Descriptor cd_S7713C13;
extern VTBL_ENTRY _ZTI8S7713C13[];
extern  VTBL_ENTRY _ZTV8S7713C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7713C13[];
static Base_Class bases_S7713C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7713C5_nt,    ABISELECT(88,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7713C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7713C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7713C5_nt,    ABISELECT(96,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7713C7,    ABISELECT(96,60), //bcp->offset
    102, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7713C4,    ABISELECT(88,56), //bcp->offset
    77, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7713C8_nt,    ABISELECT(112,72), //bcp->offset
    112, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7713C5_nt,    ABISELECT(56,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7713C9,    ABISELECT(56,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7713C3,    ABISELECT(56,40), //bcp->offset
    58, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7713C10_nt,    ABISELECT(120,76), //bcp->offset
    124, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7713C12_nt,    ABISELECT(128,80), //bcp->offset
    137, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7713C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7713C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7713C5_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7713C5_nt,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7713C7,    ABISELECT(32,20), //bcp->offset
    48, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7713C4,    ABISELECT(24,16), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7713C11,    ABISELECT(144,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7713C2,    ABISELECT(144,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7713C9,    ABISELECT(168,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7713C3,    ABISELECT(168,104), //bcp->offset
    201, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7713C13,    ABISELECT(144,88), //bcp->offset
    145, //bcp->virtual_function_table_offset
    34, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7713C1[];
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C62v9Ev();
extern void _ZN7S7713C63v10Ev();
extern void _ZN7S7713C63v11Ev();
extern void _ZN8S7713C113v41Ev();
extern void _ZN8S7713C113v42Ev();
extern void _ZN8S7713C113v43Ev();
extern void _ZN8S7713C113v44Ev();
extern void _ZN8S7713C113v45Ev();
extern void _ZN7S7713C1D1Ev();
extern void _ZN7S7713C1D0Ev();
extern void _ZN7S7713C23v46Ev();
extern void _ZN7S7713C23v47Ev();
extern void _ZN7S7713C23v48Ev();
extern void _ZN7S7713C23v49Ev();
extern void _ZN7S7713C23v50Ev();
extern void _ZN7S7713C12v1Ev();
extern void _ZN7S7713C12v2Ev();
extern void _ZN7S7713C12v3Ev();
extern void _ZN7S7713C12v4Ev();
extern void _ZN7S7713C12v5Ev();
extern void _ZN7S7713C12v6Ev();
extern void _ZN7S7713C12v7Ev();
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C43v18Ev();
extern void _ZN7S7713C43v19Ev();
extern void _ZN7S7713C43v20Ev();
extern void _ZN7S7713C43v21Ev();
extern void _ZN7S7713C43v22Ev();
extern void _ZN7S7713C43v23Ev();
extern void _ZN7S7713C43v24Ev();
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C73v12Ev();
extern void _ZN7S7713C73v13Ev();
extern void _ZN7S7713C73v14Ev();
extern void _ZN7S7713C73v15Ev();
extern void _ZN7S7713C73v16Ev();
extern void _ZN7S7713C73v17Ev();
extern void _ZN10S7713C5_nt2v8Ev();
extern void ABISELECT(_ZTv0_n64_N7S7713C1D1Ev,_ZTv0_n32_N7S7713C1D1Ev)();
extern void ABISELECT(_ZThn56_N7S7713C1D1Ev,_ZThn40_N7S7713C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7713C1D0Ev,_ZTv0_n32_N7S7713C1D0Ev)();
extern void ABISELECT(_ZThn56_N7S7713C1D0Ev,_ZThn40_N7S7713C1D0Ev)() __attribute__((weak));
extern void _ZN7S7713C93v30Ev();
extern void _ZN7S7713C33v31Ev();
extern void _ZN7S7713C33v32Ev();
extern void _ZN7S7713C33v33Ev();
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C43v18Ev();
extern void _ZN7S7713C43v19Ev();
extern void _ZN7S7713C43v20Ev();
extern void _ZN7S7713C43v21Ev();
extern void _ZN7S7713C43v22Ev();
extern void _ZN7S7713C43v23Ev();
extern void _ZN7S7713C43v24Ev();
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C73v12Ev();
extern void _ZN7S7713C73v13Ev();
extern void _ZN7S7713C73v14Ev();
extern void _ZN7S7713C73v15Ev();
extern void _ZN7S7713C73v16Ev();
extern void _ZN7S7713C73v17Ev();
extern void _ZN10S7713C8_nt3v25Ev();
extern void _ZN10S7713C8_nt3v26Ev();
extern void _ZN10S7713C8_nt3v27Ev();
extern void _ZN10S7713C8_nt3v28Ev();
extern void _ZN10S7713C8_nt3v29Ev();
extern void ABISELECT(_ZTv0_n24_N7S7713C1D1Ev,_ZTv0_n12_N7S7713C1D1Ev)();
extern void ABISELECT(_ZThn120_N7S7713C1D1Ev,_ZThn76_N7S7713C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7713C1D0Ev,_ZTv0_n12_N7S7713C1D0Ev)();
extern void ABISELECT(_ZThn120_N7S7713C1D0Ev,_ZThn76_N7S7713C1D0Ev)() __attribute__((weak));
extern void _ZN11S7713C10_nt3v34Ev();
extern void _ZN11S7713C10_nt3v35Ev();
extern void _ZN11S7713C10_nt3v36Ev();
extern void _ZN11S7713C10_nt3v37Ev();
extern void _ZN11S7713C12_nt3v38Ev();
extern void _ZN11S7713C12_nt3v39Ev();
extern void _ZN11S7713C12_nt3v40Ev();
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C62v9Ev();
extern void _ZN7S7713C63v10Ev();
extern void _ZN7S7713C63v11Ev();
extern void _ZN8S7713C113v41Ev();
extern void _ZN8S7713C113v42Ev();
extern void _ZN8S7713C113v43Ev();
extern void _ZN8S7713C113v44Ev();
extern void _ZN8S7713C113v45Ev();
extern void ABISELECT(_ZTv0_n152_N7S7713C1D1Ev,_ZTv0_n76_N7S7713C1D1Ev)();
extern void ABISELECT(_ZThn144_N7S7713C1D1Ev,_ZThn88_N7S7713C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n152_N7S7713C1D0Ev,_ZTv0_n76_N7S7713C1D0Ev)();
extern void ABISELECT(_ZThn144_N7S7713C1D0Ev,_ZThn88_N7S7713C1D0Ev)() __attribute__((weak));
extern void _ZN7S7713C23v46Ev();
extern void _ZN7S7713C23v47Ev();
extern void _ZN7S7713C23v48Ev();
extern void _ZN7S7713C23v49Ev();
extern void _ZN7S7713C23v50Ev();
extern void _ZN8S7713C133v51Ev();
extern void _ZN8S7713C133v52Ev();
extern void _ZN8S7713C133v53Ev();
extern void _ZN8S7713C133v54Ev();
extern void _ZN8S7713C133v55Ev();
extern void _ZN8S7713C133v56Ev();
extern void _ZN10S7713C5_nt2v8Ev();
extern void ABISELECT(_ZTvn24_n152_N7S7713C1D1Ev,_ZTvn16_n76_N7S7713C1D1Ev)();
extern void ABISELECT(_ZTvn24_n152_N7S7713C1D0Ev,_ZTvn16_n76_N7S7713C1D0Ev)();
extern void _ZN7S7713C93v30Ev();
extern void _ZN7S7713C33v31Ev();
extern void _ZN7S7713C33v32Ev();
extern void _ZN7S7713C33v33Ev();
static  VTBL_ENTRY vtc_S7713C1[] = {
  ABISELECT(144,88),
  ABISELECT(120,76),
  ABISELECT(56,40),
  ABISELECT(112,72),
  ABISELECT(56,40),
  ABISELECT(128,80),
  0,
  ABISELECT(88,56),
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7713C1[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v41Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v42Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v43Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v44Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v45Ev,
  (VTBL_ENTRY)&_ZN7S7713C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7713C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7713C23v46Ev,
  (VTBL_ENTRY)&_ZN7S7713C23v47Ev,
  (VTBL_ENTRY)&_ZN7S7713C23v48Ev,
  (VTBL_ENTRY)&_ZN7S7713C23v49Ev,
  (VTBL_ENTRY)&_ZN7S7713C23v50Ev,
  (VTBL_ENTRY)&_ZN7S7713C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7713C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7713C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7713C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7713C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7713C12v6Ev,
  (VTBL_ENTRY)&_ZN7S7713C12v7Ev,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7713C1[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v18Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v19Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v20Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v21Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v22Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v23Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v24Ev,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7713C1[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v12Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v17Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-40),
  ABISELECT(56,32),
  ABISELECT(-56,-40),
  ABISELECT(32,16),
  0,
  0,
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI7S7713C1[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7713C1D1Ev,_ZTv0_n32_N7S7713C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7713C1D0Ev,_ZTv0_n32_N7S7713C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7713C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7713C33v31Ev,
  (VTBL_ENTRY)&_ZN7S7713C33v32Ev,
  (VTBL_ENTRY)&_ZN7S7713C33v33Ev,
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  (VTBL_ENTRY)&(_ZTI7S7713C1[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v18Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v19Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v20Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v21Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v22Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v23Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v24Ev,
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S7713C1[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v12Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v17Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-72),
  (VTBL_ENTRY)&(_ZTI7S7713C1[0]),
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v29Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-120,-76),
  ABISELECT(-120,-76),
  (VTBL_ENTRY)&(_ZTI7S7713C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7713C1D1Ev,_ZTv0_n12_N7S7713C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7713C1D0Ev,_ZTv0_n12_N7S7713C1D0Ev),
  (VTBL_ENTRY)&_ZN11S7713C10_nt3v34Ev,
  (VTBL_ENTRY)&_ZN11S7713C10_nt3v35Ev,
  (VTBL_ENTRY)&_ZN11S7713C10_nt3v36Ev,
  (VTBL_ENTRY)&_ZN11S7713C10_nt3v37Ev,
  0,
  0,
  0,
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI7S7713C1[0]),
  (VTBL_ENTRY)&_ZN11S7713C12_nt3v38Ev,
  (VTBL_ENTRY)&_ZN11S7713C12_nt3v39Ev,
  (VTBL_ENTRY)&_ZN11S7713C12_nt3v40Ev,
  ABISELECT(24,16),
  ABISELECT(24,16),
  ABISELECT(24,16),
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-88),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-88,-48),
  ABISELECT(-32,-16),
  ABISELECT(-88,-48),
  ABISELECT(-16,-8),
  ABISELECT(-144,-88),
  ABISELECT(-56,-32),
  ABISELECT(-144,-88),
  ABISELECT(-144,-88),
  ABISELECT(-144,-88),
  ABISELECT(-144,-88),
  ABISELECT(-144,-88),
  (VTBL_ENTRY)&(_ZTI7S7713C1[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v41Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v42Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v43Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v44Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v45Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n152_N7S7713C1D1Ev,_ZTv0_n76_N7S7713C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n152_N7S7713C1D0Ev,_ZTv0_n76_N7S7713C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7713C23v46Ev,
  (VTBL_ENTRY)&_ZN7S7713C23v47Ev,
  (VTBL_ENTRY)&_ZN7S7713C23v48Ev,
  (VTBL_ENTRY)&_ZN7S7713C23v49Ev,
  (VTBL_ENTRY)&_ZN7S7713C23v50Ev,
  (VTBL_ENTRY)&_ZN8S7713C133v51Ev,
  (VTBL_ENTRY)&_ZN8S7713C133v52Ev,
  (VTBL_ENTRY)&_ZN8S7713C133v53Ev,
  (VTBL_ENTRY)&_ZN8S7713C133v54Ev,
  (VTBL_ENTRY)&_ZN8S7713C133v55Ev,
  (VTBL_ENTRY)&_ZN8S7713C133v56Ev,
  ABISELECT(-56,-32),
  ABISELECT(-168,-104),
  ABISELECT(-80,-48),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-168,-104),
  (VTBL_ENTRY)&(_ZTI7S7713C1[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n152_N7S7713C1D1Ev,_ZTvn16_n76_N7S7713C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n152_N7S7713C1D0Ev,_ZTvn16_n76_N7S7713C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7713C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7713C33v31Ev,
  (VTBL_ENTRY)&_ZN7S7713C33v32Ev,
  (VTBL_ENTRY)&_ZN7S7713C33v33Ev,
};
extern VTBL_ENTRY _ZTV7S7713C1[];
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C62v9Ev();
extern void _ZN7S7713C63v10Ev();
extern void _ZN7S7713C63v11Ev();
extern void _ZN8S7713C113v41Ev();
extern void _ZN8S7713C113v42Ev();
extern void _ZN8S7713C113v43Ev();
extern void _ZN8S7713C113v44Ev();
extern void _ZN8S7713C113v45Ev();
extern void _ZN7S7713C2D1Ev();
extern void _ZN7S7713C2D0Ev();
extern void _ZN7S7713C23v46Ev();
extern void _ZN7S7713C23v47Ev();
extern void _ZN7S7713C23v48Ev();
extern void _ZN7S7713C23v49Ev();
extern void _ZN7S7713C23v50Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C2__7S7713C1[] = {
  ABISELECT(120,76),
  ABISELECT(56,40),
  ABISELECT(112,72),
  ABISELECT(56,40),
  ABISELECT(128,80),
  0,
  ABISELECT(88,56),
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7713C2[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v41Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v42Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v43Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v44Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v45Ev,
  (VTBL_ENTRY)&_ZN7S7713C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7713C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7713C23v46Ev,
  (VTBL_ENTRY)&_ZN7S7713C23v47Ev,
  (VTBL_ENTRY)&_ZN7S7713C23v48Ev,
  (VTBL_ENTRY)&_ZN7S7713C23v49Ev,
  (VTBL_ENTRY)&_ZN7S7713C23v50Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C62v9Ev();
extern void _ZN7S7713C63v10Ev();
extern void _ZN7S7713C63v11Ev();
extern void _ZN8S7713C113v41Ev();
extern void _ZN8S7713C113v42Ev();
extern void _ZN8S7713C113v43Ev();
extern void _ZN8S7713C113v44Ev();
extern void _ZN8S7713C113v45Ev();
static  VTBL_ENTRY _tg__ZTV8S7713C117S7713C2__7S7713C1[] = {
  ABISELECT(128,80),
  0,
  ABISELECT(88,56),
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7713C11[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v41Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v42Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v43Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v44Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v45Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C43v18Ev();
extern void _ZN7S7713C43v19Ev();
extern void _ZN7S7713C43v20Ev();
extern void _ZN7S7713C43v21Ev();
extern void _ZN7S7713C43v22Ev();
extern void _ZN7S7713C43v23Ev();
extern void _ZN7S7713C43v24Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C4__8S7713C117S7713C2__7S7713C1[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  (VTBL_ENTRY)&(_ZTI8S7713C11[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v18Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v19Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v20Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v21Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v22Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v23Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v24Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C73v12Ev();
extern void _ZN7S7713C73v13Ev();
extern void _ZN7S7713C73v14Ev();
extern void _ZN7S7713C73v15Ev();
extern void _ZN7S7713C73v16Ev();
extern void _ZN7S7713C73v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C77S7713C4__8S7713C117S7713C2__7S7713C1[] = {
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S7713C11[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v12Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v17Ev,
};
extern void _ZN11S7713C12_nt3v38Ev();
extern void _ZN11S7713C12_nt3v39Ev();
extern void _ZN11S7713C12_nt3v40Ev();
static  VTBL_ENTRY _tg__ZTV11S7713C12_nt__8S7713C117S7713C2__7S7713C1[] = {
  0,
  0,
  0,
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI8S7713C11[0]),
  (VTBL_ENTRY)&_ZN11S7713C12_nt3v38Ev,
  (VTBL_ENTRY)&_ZN11S7713C12_nt3v39Ev,
  (VTBL_ENTRY)&_ZN11S7713C12_nt3v40Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void ABISELECT(_ZTv0_n64_N7S7713C2D1Ev,_ZTv0_n32_N7S7713C2D1Ev)();
extern void ABISELECT(_ZThn56_N7S7713C2D1Ev,_ZThn40_N7S7713C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7713C2D0Ev,_ZTv0_n32_N7S7713C2D0Ev)();
extern void ABISELECT(_ZThn56_N7S7713C2D0Ev,_ZThn40_N7S7713C2D0Ev)() __attribute__((weak));
extern void _ZN7S7713C93v30Ev();
extern void _ZN7S7713C33v31Ev();
extern void _ZN7S7713C33v32Ev();
extern void _ZN7S7713C33v33Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C3__7S7713C2__7S7713C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-56,-40),
  ABISELECT(56,32),
  ABISELECT(-56,-40),
  ABISELECT(32,16),
  0,
  0,
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI7S7713C2[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7713C2D1Ev,_ZTv0_n32_N7S7713C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7713C2D0Ev,_ZTv0_n32_N7S7713C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7713C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7713C33v31Ev,
  (VTBL_ENTRY)&_ZN7S7713C33v32Ev,
  (VTBL_ENTRY)&_ZN7S7713C33v33Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C43v18Ev();
extern void _ZN7S7713C43v19Ev();
extern void _ZN7S7713C43v20Ev();
extern void _ZN7S7713C43v21Ev();
extern void _ZN7S7713C43v22Ev();
extern void _ZN7S7713C43v23Ev();
extern void _ZN7S7713C43v24Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C4__7S7713C2__7S7713C1[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  (VTBL_ENTRY)&(_ZTI7S7713C2[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v18Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v19Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v20Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v21Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v22Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v23Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v24Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C73v12Ev();
extern void _ZN7S7713C73v13Ev();
extern void _ZN7S7713C73v14Ev();
extern void _ZN7S7713C73v15Ev();
extern void _ZN7S7713C73v16Ev();
extern void _ZN7S7713C73v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C77S7713C4__7S7713C2__7S7713C1[] = {
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S7713C2[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v12Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v17Ev,
};
extern void _ZN10S7713C8_nt3v25Ev();
extern void _ZN10S7713C8_nt3v26Ev();
extern void _ZN10S7713C8_nt3v27Ev();
extern void _ZN10S7713C8_nt3v28Ev();
extern void _ZN10S7713C8_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV10S7713C8_nt__7S7713C2__7S7713C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-72),
  (VTBL_ENTRY)&(_ZTI7S7713C2[0]),
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v29Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7713C2D1Ev,_ZTv0_n12_N7S7713C2D1Ev)();
extern void ABISELECT(_ZThn120_N7S7713C2D1Ev,_ZThn76_N7S7713C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7713C2D0Ev,_ZTv0_n12_N7S7713C2D0Ev)();
extern void ABISELECT(_ZThn120_N7S7713C2D0Ev,_ZThn76_N7S7713C2D0Ev)() __attribute__((weak));
extern void _ZN11S7713C10_nt3v34Ev();
extern void _ZN11S7713C10_nt3v35Ev();
extern void _ZN11S7713C10_nt3v36Ev();
extern void _ZN11S7713C10_nt3v37Ev();
static  VTBL_ENTRY _tg__ZTV11S7713C10_nt__7S7713C2__7S7713C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-120,-76),
  ABISELECT(-120,-76),
  (VTBL_ENTRY)&(_ZTI7S7713C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7713C2D1Ev,_ZTv0_n12_N7S7713C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7713C2D0Ev,_ZTv0_n12_N7S7713C2D0Ev),
  (VTBL_ENTRY)&_ZN11S7713C10_nt3v34Ev,
  (VTBL_ENTRY)&_ZN11S7713C10_nt3v35Ev,
  (VTBL_ENTRY)&_ZN11S7713C10_nt3v36Ev,
  (VTBL_ENTRY)&_ZN11S7713C10_nt3v37Ev,
};
extern void _ZN11S7713C12_nt3v38Ev();
extern void _ZN11S7713C12_nt3v39Ev();
extern void _ZN11S7713C12_nt3v40Ev();
static  VTBL_ENTRY _tg__ZTV11S7713C12_nt__7S7713C2__7S7713C1[] = {
  0,
  0,
  0,
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI7S7713C2[0]),
  (VTBL_ENTRY)&_ZN11S7713C12_nt3v38Ev,
  (VTBL_ENTRY)&_ZN11S7713C12_nt3v39Ev,
  (VTBL_ENTRY)&_ZN11S7713C12_nt3v40Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C43v18Ev();
extern void _ZN7S7713C43v19Ev();
extern void _ZN7S7713C43v20Ev();
extern void _ZN7S7713C43v21Ev();
extern void _ZN7S7713C43v22Ev();
extern void _ZN7S7713C43v23Ev();
extern void _ZN7S7713C43v24Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C4__A__7S7713C1[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7713C4[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v18Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v19Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v20Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v21Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v22Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v23Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v24Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C73v12Ev();
extern void _ZN7S7713C73v13Ev();
extern void _ZN7S7713C73v14Ev();
extern void _ZN7S7713C73v15Ev();
extern void _ZN7S7713C73v16Ev();
extern void _ZN7S7713C73v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C77S7713C4__A1__7S7713C1[] = {
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7713C7[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v12Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v17Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C62v9Ev();
extern void _ZN7S7713C63v10Ev();
extern void _ZN7S7713C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C6__7S7713C77S7713C4__A1__7S7713C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI7S7713C7[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v11Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C62v9Ev();
extern void _ZN7S7713C63v10Ev();
extern void _ZN7S7713C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C6__7S7713C4__A__7S7713C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S7713C4[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v11Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C73v12Ev();
extern void _ZN7S7713C73v13Ev();
extern void _ZN7S7713C73v14Ev();
extern void _ZN7S7713C73v15Ev();
extern void _ZN7S7713C73v16Ev();
extern void _ZN7S7713C73v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C7__7S7713C4__A__7S7713C1[] = {
  ABISELECT(-32,-20),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7713C4[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v12Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v17Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C3D1Ev();
extern void _ZN7S7713C3D0Ev();
extern void _ZN7S7713C93v30Ev();
extern void _ZN7S7713C33v31Ev();
extern void _ZN7S7713C33v32Ev();
extern void _ZN7S7713C33v33Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C3__7S7713C1[] = {
  ABISELECT(56,32),
  ABISELECT(-56,-40),
  ABISELECT(32,16),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7713C3[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7713C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7713C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7713C33v31Ev,
  (VTBL_ENTRY)&_ZN7S7713C33v32Ev,
  (VTBL_ENTRY)&_ZN7S7713C33v33Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C9D1Ev();
extern void _ZN7S7713C9D0Ev();
extern void _ZN7S7713C93v30Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C97S7713C3__7S7713C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7713C9[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7713C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7713C93v30Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C43v18Ev();
extern void _ZN7S7713C43v19Ev();
extern void _ZN7S7713C43v20Ev();
extern void _ZN7S7713C43v21Ev();
extern void _ZN7S7713C43v22Ev();
extern void _ZN7S7713C43v23Ev();
extern void _ZN7S7713C43v24Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C4__7S7713C3__7S7713C1[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-88,-56),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7713C3[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v18Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v19Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v20Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v21Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v22Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v23Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v24Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C62v9Ev();
extern void _ZN7S7713C63v10Ev();
extern void _ZN7S7713C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C6__7S7713C3__7S7713C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(56,40),
  (VTBL_ENTRY)&(_ZTI7S7713C3[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v11Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C73v12Ev();
extern void _ZN7S7713C73v13Ev();
extern void _ZN7S7713C73v14Ev();
extern void _ZN7S7713C73v15Ev();
extern void _ZN7S7713C73v16Ev();
extern void _ZN7S7713C73v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C77S7713C4__7S7713C3__7S7713C1[] = {
  ABISELECT(-96,-60),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7713C3[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v12Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v17Ev,
};
extern void _ZN10S7713C8_nt3v25Ev();
extern void _ZN10S7713C8_nt3v26Ev();
extern void _ZN10S7713C8_nt3v27Ev();
extern void _ZN10S7713C8_nt3v28Ev();
extern void _ZN10S7713C8_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV10S7713C8_nt__7S7713C3__7S7713C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7713C3[0]),
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v29Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C43v18Ev();
extern void _ZN7S7713C43v19Ev();
extern void _ZN7S7713C43v20Ev();
extern void _ZN7S7713C43v21Ev();
extern void _ZN7S7713C43v22Ev();
extern void _ZN7S7713C43v23Ev();
extern void _ZN7S7713C43v24Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C4__7S7713C1[] = {
  ABISELECT(-88,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7713C4[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v18Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v19Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v20Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v21Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v22Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v23Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v24Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C73v12Ev();
extern void _ZN7S7713C73v13Ev();
extern void _ZN7S7713C73v14Ev();
extern void _ZN7S7713C73v15Ev();
extern void _ZN7S7713C73v16Ev();
extern void _ZN7S7713C73v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C77S7713C4__7S7713C1[] = {
  ABISELECT(-96,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7713C7[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v12Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v17Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C62v9Ev();
extern void _ZN7S7713C63v10Ev();
extern void _ZN7S7713C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C6__7S7713C77S7713C4__7S7713C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(96,60),
  (VTBL_ENTRY)&(_ZTI7S7713C7[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v11Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C62v9Ev();
extern void _ZN7S7713C63v10Ev();
extern void _ZN7S7713C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C6__7S7713C4__7S7713C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(88,56),
  (VTBL_ENTRY)&(_ZTI7S7713C4[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v11Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C73v12Ev();
extern void _ZN7S7713C73v13Ev();
extern void _ZN7S7713C73v14Ev();
extern void _ZN7S7713C73v15Ev();
extern void _ZN7S7713C73v16Ev();
extern void _ZN7S7713C73v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C7__7S7713C4__7S7713C1[] = {
  ABISELECT(-96,-60),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7713C4[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v12Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v17Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C62v9Ev();
extern void _ZN7S7713C63v10Ev();
extern void _ZN7S7713C63v11Ev();
extern void _ZN8S7713C113v41Ev();
extern void _ZN8S7713C113v42Ev();
extern void _ZN8S7713C113v43Ev();
extern void _ZN8S7713C113v44Ev();
extern void _ZN8S7713C113v45Ev();
extern void _ZN8S7713C13D1Ev();
extern void _ZN8S7713C13D0Ev();
extern void _ZN7S7713C23v46Ev();
extern void _ZN7S7713C23v47Ev();
extern void _ZN7S7713C23v48Ev();
extern void _ZN7S7713C23v49Ev();
extern void _ZN7S7713C23v50Ev();
extern void _ZN8S7713C133v51Ev();
extern void _ZN8S7713C133v52Ev();
extern void _ZN8S7713C133v53Ev();
extern void _ZN8S7713C133v54Ev();
extern void _ZN8S7713C133v55Ev();
extern void _ZN8S7713C133v56Ev();
static  VTBL_ENTRY _tg__ZTV8S7713C13__7S7713C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-88,-48),
  ABISELECT(-32,-16),
  ABISELECT(-88,-48),
  ABISELECT(-16,-8),
  ABISELECT(-144,-88),
  ABISELECT(-56,-32),
  ABISELECT(-144,-88),
  ABISELECT(-144,-88),
  ABISELECT(-144,-88),
  ABISELECT(-144,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S7713C13[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v41Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v42Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v43Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v44Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v45Ev,
  (VTBL_ENTRY)&_ZN8S7713C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7713C13D0Ev,
  (VTBL_ENTRY)&_ZN7S7713C23v46Ev,
  (VTBL_ENTRY)&_ZN7S7713C23v47Ev,
  (VTBL_ENTRY)&_ZN7S7713C23v48Ev,
  (VTBL_ENTRY)&_ZN7S7713C23v49Ev,
  (VTBL_ENTRY)&_ZN7S7713C23v50Ev,
  (VTBL_ENTRY)&_ZN8S7713C133v51Ev,
  (VTBL_ENTRY)&_ZN8S7713C133v52Ev,
  (VTBL_ENTRY)&_ZN8S7713C133v53Ev,
  (VTBL_ENTRY)&_ZN8S7713C133v54Ev,
  (VTBL_ENTRY)&_ZN8S7713C133v55Ev,
  (VTBL_ENTRY)&_ZN8S7713C133v56Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C62v9Ev();
extern void _ZN7S7713C63v10Ev();
extern void _ZN7S7713C63v11Ev();
extern void _ZN8S7713C113v41Ev();
extern void _ZN8S7713C113v42Ev();
extern void _ZN8S7713C113v43Ev();
extern void _ZN8S7713C113v44Ev();
extern void _ZN8S7713C113v45Ev();
extern void _ZN7S7713C2D1Ev();
extern void _ZN7S7713C2D0Ev();
extern void _ZN7S7713C23v46Ev();
extern void _ZN7S7713C23v47Ev();
extern void _ZN7S7713C23v48Ev();
extern void _ZN7S7713C23v49Ev();
extern void _ZN7S7713C23v50Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C28S7713C13__A1__7S7713C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-88,-48),
  ABISELECT(-32,-16),
  ABISELECT(-88,-48),
  ABISELECT(-16,-8),
  ABISELECT(-144,-88),
  ABISELECT(-56,-32),
  ABISELECT(-144,-88),
  ABISELECT(-144,-88),
  ABISELECT(-144,-88),
  ABISELECT(-144,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S7713C2[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v41Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v42Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v43Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v44Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v45Ev,
  (VTBL_ENTRY)&_ZN7S7713C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7713C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7713C23v46Ev,
  (VTBL_ENTRY)&_ZN7S7713C23v47Ev,
  (VTBL_ENTRY)&_ZN7S7713C23v48Ev,
  (VTBL_ENTRY)&_ZN7S7713C23v49Ev,
  (VTBL_ENTRY)&_ZN7S7713C23v50Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C62v9Ev();
extern void _ZN7S7713C63v10Ev();
extern void _ZN7S7713C63v11Ev();
extern void _ZN8S7713C113v41Ev();
extern void _ZN8S7713C113v42Ev();
extern void _ZN8S7713C113v43Ev();
extern void _ZN8S7713C113v44Ev();
extern void _ZN8S7713C113v45Ev();
static  VTBL_ENTRY _tg__ZTV8S7713C117S7713C28S7713C13__A1__7S7713C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-144,-88),
  ABISELECT(-56,-32),
  ABISELECT(-144,-88),
  ABISELECT(-144,-88),
  ABISELECT(-144,-88),
  ABISELECT(-144,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S7713C11[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v41Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v42Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v43Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v44Ev,
  (VTBL_ENTRY)&_ZN8S7713C113v45Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C43v18Ev();
extern void _ZN7S7713C43v19Ev();
extern void _ZN7S7713C43v20Ev();
extern void _ZN7S7713C43v21Ev();
extern void _ZN7S7713C43v22Ev();
extern void _ZN7S7713C43v23Ev();
extern void _ZN7S7713C43v24Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C4__8S7713C117S7713C28S7713C13__A1__7S7713C1[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-88,-56),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S7713C11[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v18Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v19Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v20Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v21Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v22Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v23Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v24Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C62v9Ev();
extern void _ZN7S7713C63v10Ev();
extern void _ZN7S7713C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C6__8S7713C117S7713C28S7713C13__A1__7S7713C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(144,88),
  (VTBL_ENTRY)&(_ZTI8S7713C11[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v11Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C73v12Ev();
extern void _ZN7S7713C73v13Ev();
extern void _ZN7S7713C73v14Ev();
extern void _ZN7S7713C73v15Ev();
extern void _ZN7S7713C73v16Ev();
extern void _ZN7S7713C73v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C77S7713C4__8S7713C117S7713C28S7713C13__A1__7S7713C1[] = {
  ABISELECT(-96,-60),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7713C11[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v12Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v17Ev,
};
extern void _ZN11S7713C12_nt3v38Ev();
extern void _ZN11S7713C12_nt3v39Ev();
extern void _ZN11S7713C12_nt3v40Ev();
static  VTBL_ENTRY _tg__ZTV11S7713C12_nt__8S7713C117S7713C28S7713C13__A1__7S7713C1[] = {
  0,
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7713C11[0]),
  (VTBL_ENTRY)&_ZN11S7713C12_nt3v38Ev,
  (VTBL_ENTRY)&_ZN11S7713C12_nt3v39Ev,
  (VTBL_ENTRY)&_ZN11S7713C12_nt3v40Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void ABISELECT(_ZTv0_n64_N7S7713C2D1Ev,_ZTv0_n32_N7S7713C2D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S7713C2D0Ev,_ZTv0_n32_N7S7713C2D0Ev)();
extern void _ZN7S7713C93v30Ev();
extern void _ZN7S7713C33v31Ev();
extern void _ZN7S7713C33v32Ev();
extern void _ZN7S7713C33v33Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C3__7S7713C28S7713C13__A1__7S7713C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(88,48),
  ABISELECT(56,32),
  ABISELECT(-56,-40),
  ABISELECT(32,16),
  0,
  0,
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI7S7713C2[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7713C2D1Ev,_ZTv0_n32_N7S7713C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7713C2D0Ev,_ZTv0_n32_N7S7713C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7713C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7713C33v31Ev,
  (VTBL_ENTRY)&_ZN7S7713C33v32Ev,
  (VTBL_ENTRY)&_ZN7S7713C33v33Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C43v18Ev();
extern void _ZN7S7713C43v19Ev();
extern void _ZN7S7713C43v20Ev();
extern void _ZN7S7713C43v21Ev();
extern void _ZN7S7713C43v22Ev();
extern void _ZN7S7713C43v23Ev();
extern void _ZN7S7713C43v24Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C4__7S7713C28S7713C13__A1__7S7713C1[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-88,-56),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S7713C2[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v18Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v19Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v20Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v21Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v22Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v23Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v24Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C62v9Ev();
extern void _ZN7S7713C63v10Ev();
extern void _ZN7S7713C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C6__7S7713C28S7713C13__A1__7S7713C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(144,88),
  (VTBL_ENTRY)&(_ZTI7S7713C2[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v11Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C73v12Ev();
extern void _ZN7S7713C73v13Ev();
extern void _ZN7S7713C73v14Ev();
extern void _ZN7S7713C73v15Ev();
extern void _ZN7S7713C73v16Ev();
extern void _ZN7S7713C73v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C77S7713C4__7S7713C28S7713C13__A1__7S7713C1[] = {
  ABISELECT(-96,-60),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7713C2[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v12Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v17Ev,
};
extern void _ZN10S7713C8_nt3v25Ev();
extern void _ZN10S7713C8_nt3v26Ev();
extern void _ZN10S7713C8_nt3v27Ev();
extern void _ZN10S7713C8_nt3v28Ev();
extern void _ZN10S7713C8_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV10S7713C8_nt__7S7713C28S7713C13__A1__7S7713C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7713C2[0]),
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v29Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7713C2D1Ev,_ZTv0_n12_N7S7713C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7713C2D0Ev,_ZTv0_n12_N7S7713C2D0Ev)();
extern void _ZN11S7713C10_nt3v34Ev();
extern void _ZN11S7713C10_nt3v35Ev();
extern void _ZN11S7713C10_nt3v36Ev();
extern void _ZN11S7713C10_nt3v37Ev();
static  VTBL_ENTRY _tg__ZTV11S7713C10_nt__7S7713C28S7713C13__A1__7S7713C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S7713C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7713C2D1Ev,_ZTv0_n12_N7S7713C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7713C2D0Ev,_ZTv0_n12_N7S7713C2D0Ev),
  (VTBL_ENTRY)&_ZN11S7713C10_nt3v34Ev,
  (VTBL_ENTRY)&_ZN11S7713C10_nt3v35Ev,
  (VTBL_ENTRY)&_ZN11S7713C10_nt3v36Ev,
  (VTBL_ENTRY)&_ZN11S7713C10_nt3v37Ev,
};
extern void _ZN11S7713C12_nt3v38Ev();
extern void _ZN11S7713C12_nt3v39Ev();
extern void _ZN11S7713C12_nt3v40Ev();
static  VTBL_ENTRY _tg__ZTV11S7713C12_nt__7S7713C28S7713C13__A1__7S7713C1[] = {
  0,
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7713C2[0]),
  (VTBL_ENTRY)&_ZN11S7713C12_nt3v38Ev,
  (VTBL_ENTRY)&_ZN11S7713C12_nt3v39Ev,
  (VTBL_ENTRY)&_ZN11S7713C12_nt3v40Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C3D1Ev();
extern void _ZN7S7713C3D0Ev();
extern void _ZN7S7713C93v30Ev();
extern void _ZN7S7713C33v31Ev();
extern void _ZN7S7713C33v32Ev();
extern void _ZN7S7713C33v33Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C38S7713C13__A1__7S7713C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(-168,-104),
  ABISELECT(-80,-48),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  0,
  (VTBL_ENTRY)&(_ZTI7S7713C3[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7713C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7713C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7713C33v31Ev,
  (VTBL_ENTRY)&_ZN7S7713C33v32Ev,
  (VTBL_ENTRY)&_ZN7S7713C33v33Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C9D1Ev();
extern void _ZN7S7713C9D0Ev();
extern void _ZN7S7713C93v30Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C97S7713C38S7713C13__A1__7S7713C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  0,
  (VTBL_ENTRY)&(_ZTI7S7713C9[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7713C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7713C93v30Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV10S7713C5_nt__7S7713C97S7713C38S7713C13__A1__7S7713C1[] = {
  0,
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI7S7713C9[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C43v18Ev();
extern void _ZN7S7713C43v19Ev();
extern void _ZN7S7713C43v20Ev();
extern void _ZN7S7713C43v21Ev();
extern void _ZN7S7713C43v22Ev();
extern void _ZN7S7713C43v23Ev();
extern void _ZN7S7713C43v24Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C4__7S7713C38S7713C13__A1__7S7713C1[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-88,-56),
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI7S7713C3[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v18Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v19Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v20Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v21Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v22Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v23Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v24Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C62v9Ev();
extern void _ZN7S7713C63v10Ev();
extern void _ZN7S7713C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C6__7S7713C38S7713C13__A1__7S7713C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(168,104),
  (VTBL_ENTRY)&(_ZTI7S7713C3[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v11Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C73v12Ev();
extern void _ZN7S7713C73v13Ev();
extern void _ZN7S7713C73v14Ev();
extern void _ZN7S7713C73v15Ev();
extern void _ZN7S7713C73v16Ev();
extern void _ZN7S7713C73v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C77S7713C4__7S7713C38S7713C13__A1__7S7713C1[] = {
  ABISELECT(-96,-60),
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI7S7713C3[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v12Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v17Ev,
};
extern void _ZN10S7713C8_nt3v25Ev();
extern void _ZN10S7713C8_nt3v26Ev();
extern void _ZN10S7713C8_nt3v27Ev();
extern void _ZN10S7713C8_nt3v28Ev();
extern void _ZN10S7713C8_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV10S7713C8_nt__7S7713C38S7713C13__A1__7S7713C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S7713C3[0]),
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v29Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV10S7713C5_nt__A3__7S7713C38S7713C13__A1__7S7713C1[] = {
  0,
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI7S7713C3[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void ABISELECT(_ZTv0_n64_N8S7713C13D1Ev,_ZTv0_n32_N8S7713C13D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S7713C13D0Ev,_ZTv0_n32_N8S7713C13D0Ev)();
extern void _ZN7S7713C93v30Ev();
extern void _ZN7S7713C33v31Ev();
extern void _ZN7S7713C33v32Ev();
extern void _ZN7S7713C33v33Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C3__8S7713C13__7S7713C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(88,48),
  ABISELECT(56,32),
  ABISELECT(-56,-40),
  ABISELECT(32,16),
  0,
  0,
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S7713C13[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7713C13D1Ev,_ZTv0_n32_N8S7713C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7713C13D0Ev,_ZTv0_n32_N8S7713C13D0Ev),
  (VTBL_ENTRY)&_ZN7S7713C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7713C33v31Ev,
  (VTBL_ENTRY)&_ZN7S7713C33v32Ev,
  (VTBL_ENTRY)&_ZN7S7713C33v33Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C43v18Ev();
extern void _ZN7S7713C43v19Ev();
extern void _ZN7S7713C43v20Ev();
extern void _ZN7S7713C43v21Ev();
extern void _ZN7S7713C43v22Ev();
extern void _ZN7S7713C43v23Ev();
extern void _ZN7S7713C43v24Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C4__8S7713C13__7S7713C1[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-88,-56),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S7713C13[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v18Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v19Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v20Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v21Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v22Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v23Ev,
  (VTBL_ENTRY)&_ZN7S7713C43v24Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C62v9Ev();
extern void _ZN7S7713C63v10Ev();
extern void _ZN7S7713C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C6__8S7713C13__7S7713C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(144,88),
  (VTBL_ENTRY)&(_ZTI8S7713C13[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7713C63v11Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void _ZN7S7713C73v12Ev();
extern void _ZN7S7713C73v13Ev();
extern void _ZN7S7713C73v14Ev();
extern void _ZN7S7713C73v15Ev();
extern void _ZN7S7713C73v16Ev();
extern void _ZN7S7713C73v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C77S7713C4__8S7713C13__7S7713C1[] = {
  ABISELECT(-96,-60),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7713C13[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v12Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7713C73v17Ev,
};
extern void _ZN10S7713C8_nt3v25Ev();
extern void _ZN10S7713C8_nt3v26Ev();
extern void _ZN10S7713C8_nt3v27Ev();
extern void _ZN10S7713C8_nt3v28Ev();
extern void _ZN10S7713C8_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV10S7713C8_nt__8S7713C13__7S7713C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7713C13[0]),
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S7713C8_nt3v29Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7713C13D1Ev,_ZTv0_n12_N8S7713C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7713C13D0Ev,_ZTv0_n12_N8S7713C13D0Ev)();
extern void _ZN11S7713C10_nt3v34Ev();
extern void _ZN11S7713C10_nt3v35Ev();
extern void _ZN11S7713C10_nt3v36Ev();
extern void _ZN11S7713C10_nt3v37Ev();
static  VTBL_ENTRY _tg__ZTV11S7713C10_nt__8S7713C13__7S7713C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S7713C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7713C13D1Ev,_ZTv0_n12_N8S7713C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7713C13D0Ev,_ZTv0_n12_N8S7713C13D0Ev),
  (VTBL_ENTRY)&_ZN11S7713C10_nt3v34Ev,
  (VTBL_ENTRY)&_ZN11S7713C10_nt3v35Ev,
  (VTBL_ENTRY)&_ZN11S7713C10_nt3v36Ev,
  (VTBL_ENTRY)&_ZN11S7713C10_nt3v37Ev,
};
extern void _ZN11S7713C12_nt3v38Ev();
extern void _ZN11S7713C12_nt3v39Ev();
extern void _ZN11S7713C12_nt3v40Ev();
static  VTBL_ENTRY _tg__ZTV11S7713C12_nt__8S7713C13__7S7713C1[] = {
  0,
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7713C13[0]),
  (VTBL_ENTRY)&_ZN11S7713C12_nt3v38Ev,
  (VTBL_ENTRY)&_ZN11S7713C12_nt3v39Ev,
  (VTBL_ENTRY)&_ZN11S7713C12_nt3v40Ev,
};
extern void _ZN10S7713C5_nt2v8Ev();
extern void ABISELECT(_ZThn24_N8S7713C13D1Ev,_ZThn16_N8S7713C13D1Ev)();
extern void ABISELECT(_ZThn24_N8S7713C13D0Ev,_ZThn16_N8S7713C13D0Ev)();
extern void _ZN7S7713C93v30Ev();
extern void _ZN7S7713C33v31Ev();
extern void _ZN7S7713C33v32Ev();
extern void _ZN7S7713C33v33Ev();
static  VTBL_ENTRY _tg__ZTV7S7713C3__A__8S7713C13__7S7713C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(-168,-104),
  ABISELECT(-80,-48),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7713C13[0]),
  (VTBL_ENTRY)&_ZN10S7713C5_nt2v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7713C13D1Ev,_ZThn16_N8S7713C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7713C13D0Ev,_ZThn16_N8S7713C13D0Ev),
  (VTBL_ENTRY)&_ZN7S7713C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7713C33v31Ev,
  (VTBL_ENTRY)&_ZN7S7713C33v32Ev,
  (VTBL_ENTRY)&_ZN7S7713C33v33Ev,
};
static  VTT_ENTRY vtt_S7713C1[] = {
  {&(_ZTV7S7713C1[14]),  14,215},
  {&(_tg__ZTV7S7713C2__7S7713C1[13]),  13,29},
  {&(_tg__ZTV8S7713C117S7713C2__7S7713C1[9]),  9,18},
  {&(_tg__ZTV7S7713C4__8S7713C117S7713C2__7S7713C1[17]),  17,25},
  {&(_tg__ZTV8S7713C117S7713C2__7S7713C1[9]),  9,18},
  {&(_tg__ZTV7S7713C77S7713C4__8S7713C117S7713C2__7S7713C1[3]),  3,10},
  {&(_tg__ZTV11S7713C12_nt__8S7713C117S7713C2__7S7713C1[5]),  5,8},
  {&(_tg__ZTV7S7713C3__7S7713C2__7S7713C1[12]),  12,19},
  {&(_tg__ZTV7S7713C4__7S7713C2__7S7713C1[17]),  17,25},
  {&(_tg__ZTV7S7713C2__7S7713C1[13]),  13,29},
  {&(_tg__ZTV7S7713C77S7713C4__7S7713C2__7S7713C1[3]),  3,10},
  {&(_tg__ZTV10S7713C8_nt__7S7713C2__7S7713C1[7]),  7,12},
  {&(_tg__ZTV7S7713C3__7S7713C2__7S7713C1[12]),  12,19},
  {&(_tg__ZTV11S7713C10_nt__7S7713C2__7S7713C1[7]),  7,13},
  {&(_tg__ZTV11S7713C12_nt__7S7713C2__7S7713C1[5]),  5,8},
  {&(_tg__ZTV7S7713C4__A__7S7713C1[3]),  3,11},
  {&(_tg__ZTV7S7713C77S7713C4__A1__7S7713C1[3]),  3,10},
  {&(_tg__ZTV7S7713C6__7S7713C77S7713C4__A1__7S7713C1[6]),  6,10},
  {&(_tg__ZTV7S7713C6__7S7713C4__A__7S7713C1[6]),  6,10},
  {&(_tg__ZTV7S7713C7__7S7713C4__A__7S7713C1[3]),  3,10},
  {&(_ZTV7S7713C1[70]),  70,215},
  {&(_ZTV7S7713C1[94]),  94,215},
  {&(_ZTV7S7713C1[14]),  14,215},
  {&(_ZTV7S7713C1[105]),  105,215},
  {&(_ZTV7S7713C1[119]),  119,215},
  {&(_ZTV7S7713C1[70]),  70,215},
  {&(_ZTV7S7713C1[131]),  131,215},
  {&(_ZTV7S7713C1[142]),  142,215},
  {&(_ZTV7S7713C1[40]),  40,215},
  {&(_ZTV7S7713C1[51]),  51,215},
  {&(_ZTV7S7713C1[179]),  179,215},
  {&(_ZTV7S7713C1[208]),  208,215},
  {&(_tg__ZTV7S7713C3__7S7713C1[7]),  7,14},
  {&(_tg__ZTV7S7713C97S7713C3__7S7713C1[4]),  4,8},
  {&(_tg__ZTV7S7713C97S7713C3__7S7713C1[4]),  4,8},
  {&(_tg__ZTV7S7713C4__7S7713C3__7S7713C1[17]),  17,25},
  {&(_tg__ZTV7S7713C6__7S7713C3__7S7713C1[6]),  6,10},
  {&(_tg__ZTV7S7713C77S7713C4__7S7713C3__7S7713C1[3]),  3,10},
  {&(_tg__ZTV10S7713C8_nt__7S7713C3__7S7713C1[7]),  7,12},
  {&(_tg__ZTV7S7713C3__7S7713C1[7]),  7,14},
  {&(_tg__ZTV7S7713C4__7S7713C1[3]),  3,11},
  {&(_tg__ZTV7S7713C77S7713C4__7S7713C1[3]),  3,10},
  {&(_tg__ZTV7S7713C6__7S7713C77S7713C4__7S7713C1[6]),  6,10},
  {&(_tg__ZTV7S7713C6__7S7713C4__7S7713C1[6]),  6,10},
  {&(_tg__ZTV7S7713C7__7S7713C4__7S7713C1[3]),  3,10},
  {&(_tg__ZTV8S7713C13__7S7713C1[13]),  13,35},
  {&(_tg__ZTV7S7713C28S7713C13__A1__7S7713C1[13]),  13,29},
  {&(_tg__ZTV8S7713C117S7713C28S7713C13__A1__7S7713C1[9]),  9,18},
  {&(_tg__ZTV7S7713C4__8S7713C117S7713C28S7713C13__A1__7S7713C1[17]),  17,25},
  {&(_tg__ZTV7S7713C6__8S7713C117S7713C28S7713C13__A1__7S7713C1[6]),  6,10},
  {&(_tg__ZTV7S7713C77S7713C4__8S7713C117S7713C28S7713C13__A1__7S7713C1[3]),  3,10},
  {&(_tg__ZTV11S7713C12_nt__8S7713C117S7713C28S7713C13__A1__7S7713C1[5]),  5,8},
  {&(_tg__ZTV7S7713C3__7S7713C28S7713C13__A1__7S7713C1[12]),  12,19},
  {&(_tg__ZTV7S7713C4__7S7713C28S7713C13__A1__7S7713C1[17]),  17,25},
  {&(_tg__ZTV7S7713C6__7S7713C28S7713C13__A1__7S7713C1[6]),  6,10},
  {&(_tg__ZTV7S7713C77S7713C4__7S7713C28S7713C13__A1__7S7713C1[3]),  3,10},
  {&(_tg__ZTV10S7713C8_nt__7S7713C28S7713C13__A1__7S7713C1[7]),  7,12},
  {&(_tg__ZTV7S7713C3__7S7713C28S7713C13__A1__7S7713C1[12]),  12,19},
  {&(_tg__ZTV11S7713C10_nt__7S7713C28S7713C13__A1__7S7713C1[7]),  7,13},
  {&(_tg__ZTV11S7713C12_nt__7S7713C28S7713C13__A1__7S7713C1[5]),  5,8},
  {&(_tg__ZTV7S7713C38S7713C13__A1__7S7713C1[7]),  7,14},
  {&(_tg__ZTV7S7713C97S7713C38S7713C13__A1__7S7713C1[4]),  4,8},
  {&(_tg__ZTV10S7713C5_nt__7S7713C97S7713C38S7713C13__A1__7S7713C1[3]),  3,4},
  {&(_tg__ZTV7S7713C4__7S7713C38S7713C13__A1__7S7713C1[17]),  17,25},
  {&(_tg__ZTV7S7713C6__7S7713C38S7713C13__A1__7S7713C1[6]),  6,10},
  {&(_tg__ZTV7S7713C77S7713C4__7S7713C38S7713C13__A1__7S7713C1[3]),  3,10},
  {&(_tg__ZTV10S7713C8_nt__7S7713C38S7713C13__A1__7S7713C1[7]),  7,12},
  {&(_tg__ZTV10S7713C5_nt__A3__7S7713C38S7713C13__A1__7S7713C1[3]),  3,4},
  {&(_tg__ZTV7S7713C3__8S7713C13__7S7713C1[12]),  12,19},
  {&(_tg__ZTV7S7713C4__8S7713C13__7S7713C1[17]),  17,25},
  {&(_tg__ZTV7S7713C6__8S7713C13__7S7713C1[6]),  6,10},
  {&(_tg__ZTV7S7713C77S7713C4__8S7713C13__7S7713C1[3]),  3,10},
  {&(_tg__ZTV10S7713C8_nt__8S7713C13__7S7713C1[7]),  7,12},
  {&(_tg__ZTV7S7713C3__8S7713C13__7S7713C1[12]),  12,19},
  {&(_tg__ZTV11S7713C10_nt__8S7713C13__7S7713C1[7]),  7,13},
  {&(_tg__ZTV11S7713C12_nt__8S7713C13__7S7713C1[5]),  5,8},
  {&(_tg__ZTV7S7713C3__A__8S7713C13__7S7713C1[7]),  7,14},
};
extern VTBL_ENTRY _ZTI7S7713C1[];
extern  VTBL_ENTRY _ZTV7S7713C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7713C1[];
static VTBL_ENTRY alt_thunk_names16[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7713C2D0Ev,_ZTv0_n12_N7S7713C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7713C2D0Ev,_ZThn76_N7S7713C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7713C2D1Ev,_ZTv0_n12_N7S7713C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7713C2D1Ev,_ZThn76_N7S7713C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7713C2D0Ev,_ZTv0_n32_N7S7713C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7713C2D0Ev,_ZThn40_N7S7713C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7713C2D1Ev,_ZTv0_n32_N7S7713C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7713C2D1Ev,_ZThn40_N7S7713C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n152_N7S7713C1D0Ev,_ZTv0_n76_N7S7713C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7713C1D0Ev,_ZThn88_N7S7713C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n152_N7S7713C1D1Ev,_ZTv0_n76_N7S7713C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7713C1D1Ev,_ZThn88_N7S7713C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7713C1D0Ev,_ZTv0_n12_N7S7713C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7713C1D0Ev,_ZThn76_N7S7713C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7713C1D1Ev,_ZTv0_n12_N7S7713C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7713C1D1Ev,_ZThn76_N7S7713C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7713C1D0Ev,_ZTv0_n32_N7S7713C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7713C1D0Ev,_ZThn40_N7S7713C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7713C1D1Ev,_ZTv0_n32_N7S7713C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7713C1D1Ev,_ZThn40_N7S7713C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7713C1 = {  "S7713C1", // class name
  bases_S7713C1, 23,
  &(vtc_S7713C1[0]), // expected_vtbl_contents
  &(vtt_S7713C1[0]), // expected_vtt_contents
  ABISELECT(224,136), // object size
  NSPAIRA(_ZTI7S7713C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7713C1),215, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7713C1),77, //virtual table table var
  23, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names16,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6961C2  {
  int s6961c2f0;
  __tsi64 s6961c2f1;
  void *s6961c2f2[4];
  int s6961c2f3[2];
  void *s6961c2f4;
  ::S79C8_nt s6961c2f5;
  void *s6961c2f6[2];
  virtual  ~S6961C2(); // _ZN7S6961C2D1Ev
  virtual void  v5(); // _ZN7S6961C22v5Ev
  virtual void  v6(); // _ZN7S6961C22v6Ev
  virtual void  v7(); // _ZN7S6961C22v7Ev
  virtual void  v8(); // _ZN7S6961C22v8Ev
  virtual void  v9(); // _ZN7S6961C22v9Ev
  virtual void  v10(); // _ZN7S6961C23v10Ev
  virtual void  v11(); // _ZN7S6961C23v11Ev
  virtual void  v12(); // _ZN7S6961C23v12Ev
  virtual void  v13(); // _ZN7S6961C23v13Ev
  virtual void  v14(); // _ZN7S6961C23v14Ev
  virtual void  v15(); // _ZN7S6961C23v15Ev
  virtual void  v16(); // _ZN7S6961C23v16Ev
  virtual void  v17(); // _ZN7S6961C23v17Ev
  virtual void  v18(); // _ZN7S6961C23v18Ev
  virtual void  v19(); // _ZN7S6961C23v19Ev
  virtual void  v20(); // _ZN7S6961C23v20Ev
  virtual void  v21(); // _ZN7S6961C23v21Ev
  virtual void  v22(); // _ZN7S6961C23v22Ev
  virtual void  v23(); // _ZN7S6961C23v23Ev
  virtual void  v24(); // _ZN7S6961C23v24Ev
  virtual void  v25(); // _ZN7S6961C23v25Ev
  virtual void  v26(); // _ZN7S6961C23v26Ev
  virtual void  v27(); // _ZN7S6961C23v27Ev
  virtual void  v28(); // _ZN7S6961C23v28Ev
  virtual void  v29(); // _ZN7S6961C23v29Ev
  virtual void  v30(); // _ZN7S6961C23v30Ev
  virtual void  v31(); // _ZN7S6961C23v31Ev
  virtual void  v32(); // _ZN7S6961C23v32Ev
  virtual void  v33(); // _ZN7S6961C23v33Ev
  virtual void  v34(); // _ZN7S6961C23v34Ev
  virtual void  v35(); // _ZN7S6961C23v35Ev
  virtual void  v36(); // _ZN7S6961C23v36Ev
  virtual void  v37(); // _ZN7S6961C23v37Ev
  virtual void  v38(); // _ZN7S6961C23v38Ev
  virtual void  v39(); // _ZN7S6961C23v39Ev
  virtual void  v40(); // _ZN7S6961C23v40Ev
  virtual void  v41(); // _ZN7S6961C23v41Ev
  virtual void  v42(); // _ZN7S6961C23v42Ev
  virtual void  v43(); // _ZN7S6961C23v43Ev
  virtual void  v44(); // _ZN7S6961C23v44Ev
  virtual void  v45(); // _ZN7S6961C23v45Ev
  virtual void  v46(); // _ZN7S6961C23v46Ev
  virtual void  v47(); // _ZN7S6961C23v47Ev
  virtual void  v48(); // _ZN7S6961C23v48Ev
  virtual void  v49(); // _ZN7S6961C23v49Ev
  virtual void  v50(); // _ZN7S6961C23v50Ev
  virtual void  v51(); // _ZN7S6961C23v51Ev
  virtual void  v52(); // _ZN7S6961C23v52Ev
  virtual void  v53(); // _ZN7S6961C23v53Ev
  virtual void  v54(); // _ZN7S6961C23v54Ev
  virtual void  v55(); // _ZN7S6961C23v55Ev
  virtual void  v56(); // _ZN7S6961C23v56Ev
  virtual void  v57(); // _ZN7S6961C23v57Ev
  virtual void  v58(); // _ZN7S6961C23v58Ev
  virtual void  v59(); // _ZN7S6961C23v59Ev
  virtual void  v60(); // _ZN7S6961C23v60Ev
  virtual void  v61(); // _ZN7S6961C23v61Ev
  virtual void  v62(); // _ZN7S6961C23v62Ev
  virtual void  v63(); // _ZN7S6961C23v63Ev
  virtual void  v64(); // _ZN7S6961C23v64Ev
  virtual void  v65(); // _ZN7S6961C23v65Ev
  virtual void  v66(); // _ZN7S6961C23v66Ev
  virtual void  v67(); // _ZN7S6961C23v67Ev
  virtual void  v68(); // _ZN7S6961C23v68Ev
  S6961C2(); // tgen
};
//SIG(-1 S6961C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 Fi FL Fp[4] Fi[2] Fp FC2{ m Fi[2]} Fp[2]}


 S6961C2 ::~S6961C2(){ note_dtor("S6961C2", this);}
void  S6961C2 ::v5(){vfunc_called(this, "_ZN7S6961C22v5Ev");}
void  S6961C2 ::v6(){vfunc_called(this, "_ZN7S6961C22v6Ev");}
void  S6961C2 ::v7(){vfunc_called(this, "_ZN7S6961C22v7Ev");}
void  S6961C2 ::v8(){vfunc_called(this, "_ZN7S6961C22v8Ev");}
void  S6961C2 ::v9(){vfunc_called(this, "_ZN7S6961C22v9Ev");}
void  S6961C2 ::v10(){vfunc_called(this, "_ZN7S6961C23v10Ev");}
void  S6961C2 ::v11(){vfunc_called(this, "_ZN7S6961C23v11Ev");}
void  S6961C2 ::v12(){vfunc_called(this, "_ZN7S6961C23v12Ev");}
void  S6961C2 ::v13(){vfunc_called(this, "_ZN7S6961C23v13Ev");}
void  S6961C2 ::v14(){vfunc_called(this, "_ZN7S6961C23v14Ev");}
void  S6961C2 ::v15(){vfunc_called(this, "_ZN7S6961C23v15Ev");}
void  S6961C2 ::v16(){vfunc_called(this, "_ZN7S6961C23v16Ev");}
void  S6961C2 ::v17(){vfunc_called(this, "_ZN7S6961C23v17Ev");}
void  S6961C2 ::v18(){vfunc_called(this, "_ZN7S6961C23v18Ev");}
void  S6961C2 ::v19(){vfunc_called(this, "_ZN7S6961C23v19Ev");}
void  S6961C2 ::v20(){vfunc_called(this, "_ZN7S6961C23v20Ev");}
void  S6961C2 ::v21(){vfunc_called(this, "_ZN7S6961C23v21Ev");}
void  S6961C2 ::v22(){vfunc_called(this, "_ZN7S6961C23v22Ev");}
void  S6961C2 ::v23(){vfunc_called(this, "_ZN7S6961C23v23Ev");}
void  S6961C2 ::v24(){vfunc_called(this, "_ZN7S6961C23v24Ev");}
void  S6961C2 ::v25(){vfunc_called(this, "_ZN7S6961C23v25Ev");}
void  S6961C2 ::v26(){vfunc_called(this, "_ZN7S6961C23v26Ev");}
void  S6961C2 ::v27(){vfunc_called(this, "_ZN7S6961C23v27Ev");}
void  S6961C2 ::v28(){vfunc_called(this, "_ZN7S6961C23v28Ev");}
void  S6961C2 ::v29(){vfunc_called(this, "_ZN7S6961C23v29Ev");}
void  S6961C2 ::v30(){vfunc_called(this, "_ZN7S6961C23v30Ev");}
void  S6961C2 ::v31(){vfunc_called(this, "_ZN7S6961C23v31Ev");}
void  S6961C2 ::v32(){vfunc_called(this, "_ZN7S6961C23v32Ev");}
void  S6961C2 ::v33(){vfunc_called(this, "_ZN7S6961C23v33Ev");}
void  S6961C2 ::v34(){vfunc_called(this, "_ZN7S6961C23v34Ev");}
void  S6961C2 ::v35(){vfunc_called(this, "_ZN7S6961C23v35Ev");}
void  S6961C2 ::v36(){vfunc_called(this, "_ZN7S6961C23v36Ev");}
void  S6961C2 ::v37(){vfunc_called(this, "_ZN7S6961C23v37Ev");}
void  S6961C2 ::v38(){vfunc_called(this, "_ZN7S6961C23v38Ev");}
void  S6961C2 ::v39(){vfunc_called(this, "_ZN7S6961C23v39Ev");}
void  S6961C2 ::v40(){vfunc_called(this, "_ZN7S6961C23v40Ev");}
void  S6961C2 ::v41(){vfunc_called(this, "_ZN7S6961C23v41Ev");}
void  S6961C2 ::v42(){vfunc_called(this, "_ZN7S6961C23v42Ev");}
void  S6961C2 ::v43(){vfunc_called(this, "_ZN7S6961C23v43Ev");}
void  S6961C2 ::v44(){vfunc_called(this, "_ZN7S6961C23v44Ev");}
void  S6961C2 ::v45(){vfunc_called(this, "_ZN7S6961C23v45Ev");}
void  S6961C2 ::v46(){vfunc_called(this, "_ZN7S6961C23v46Ev");}
void  S6961C2 ::v47(){vfunc_called(this, "_ZN7S6961C23v47Ev");}
void  S6961C2 ::v48(){vfunc_called(this, "_ZN7S6961C23v48Ev");}
void  S6961C2 ::v49(){vfunc_called(this, "_ZN7S6961C23v49Ev");}
void  S6961C2 ::v50(){vfunc_called(this, "_ZN7S6961C23v50Ev");}
void  S6961C2 ::v51(){vfunc_called(this, "_ZN7S6961C23v51Ev");}
void  S6961C2 ::v52(){vfunc_called(this, "_ZN7S6961C23v52Ev");}
void  S6961C2 ::v53(){vfunc_called(this, "_ZN7S6961C23v53Ev");}
void  S6961C2 ::v54(){vfunc_called(this, "_ZN7S6961C23v54Ev");}
void  S6961C2 ::v55(){vfunc_called(this, "_ZN7S6961C23v55Ev");}
void  S6961C2 ::v56(){vfunc_called(this, "_ZN7S6961C23v56Ev");}
void  S6961C2 ::v57(){vfunc_called(this, "_ZN7S6961C23v57Ev");}
void  S6961C2 ::v58(){vfunc_called(this, "_ZN7S6961C23v58Ev");}
void  S6961C2 ::v59(){vfunc_called(this, "_ZN7S6961C23v59Ev");}
void  S6961C2 ::v60(){vfunc_called(this, "_ZN7S6961C23v60Ev");}
void  S6961C2 ::v61(){vfunc_called(this, "_ZN7S6961C23v61Ev");}
void  S6961C2 ::v62(){vfunc_called(this, "_ZN7S6961C23v62Ev");}
void  S6961C2 ::v63(){vfunc_called(this, "_ZN7S6961C23v63Ev");}
void  S6961C2 ::v64(){vfunc_called(this, "_ZN7S6961C23v64Ev");}
void  S6961C2 ::v65(){vfunc_called(this, "_ZN7S6961C23v65Ev");}
void  S6961C2 ::v66(){vfunc_called(this, "_ZN7S6961C23v66Ev");}
void  S6961C2 ::v67(){vfunc_called(this, "_ZN7S6961C23v67Ev");}
void  S6961C2 ::v68(){vfunc_called(this, "_ZN7S6961C23v68Ev");}
S6961C2 ::S6961C2(){ note_ctor("S6961C2", this);} // tgen

static void Test_S6961C2()
{
  extern Class_Descriptor cd_S6961C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S6961C2, buf);
    S6961C2 *dp, &lv = *(dp=new (buf) S6961C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S6961C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6961C2)");
    check_field_offset(lv, s6961c2f0, ABISELECT(8,4), "S6961C2.s6961c2f0");
    check_field_offset(lv, s6961c2f1, ABISELECT(16,8), "S6961C2.s6961c2f1");
    check_field_offset(lv, s6961c2f2, ABISELECT(24,16), "S6961C2.s6961c2f2");
    check_field_offset(lv, s6961c2f3, ABISELECT(56,32), "S6961C2.s6961c2f3");
    check_field_offset(lv, s6961c2f4, ABISELECT(64,40), "S6961C2.s6961c2f4");
    check_field_offset(lv, s6961c2f5, ABISELECT(72,44), "S6961C2.s6961c2f5");
    check_field_offset(lv, s6961c2f6, ABISELECT(80,52), "S6961C2.s6961c2f6");
    test_class_info(&lv, &cd_S6961C2);
    dp->~S6961C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6961C2(Test_S6961C2, "S6961C2", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S6961C2C1Ev();
extern void _ZN7S6961C2D1Ev();
Name_Map name_map_S6961C2[] = {
  NSPAIR(_ZN7S6961C2C1Ev),
  NSPAIR(_ZN7S6961C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6961C2[];
extern void _ZN7S6961C2D1Ev();
extern void _ZN7S6961C2D0Ev();
extern void _ZN7S6961C22v5Ev();
extern void _ZN7S6961C22v6Ev();
extern void _ZN7S6961C22v7Ev();
extern void _ZN7S6961C22v8Ev();
extern void _ZN7S6961C22v9Ev();
extern void _ZN7S6961C23v10Ev();
extern void _ZN7S6961C23v11Ev();
extern void _ZN7S6961C23v12Ev();
extern void _ZN7S6961C23v13Ev();
extern void _ZN7S6961C23v14Ev();
extern void _ZN7S6961C23v15Ev();
extern void _ZN7S6961C23v16Ev();
extern void _ZN7S6961C23v17Ev();
extern void _ZN7S6961C23v18Ev();
extern void _ZN7S6961C23v19Ev();
extern void _ZN7S6961C23v20Ev();
extern void _ZN7S6961C23v21Ev();
extern void _ZN7S6961C23v22Ev();
extern void _ZN7S6961C23v23Ev();
extern void _ZN7S6961C23v24Ev();
extern void _ZN7S6961C23v25Ev();
extern void _ZN7S6961C23v26Ev();
extern void _ZN7S6961C23v27Ev();
extern void _ZN7S6961C23v28Ev();
extern void _ZN7S6961C23v29Ev();
extern void _ZN7S6961C23v30Ev();
extern void _ZN7S6961C23v31Ev();
extern void _ZN7S6961C23v32Ev();
extern void _ZN7S6961C23v33Ev();
extern void _ZN7S6961C23v34Ev();
extern void _ZN7S6961C23v35Ev();
extern void _ZN7S6961C23v36Ev();
extern void _ZN7S6961C23v37Ev();
extern void _ZN7S6961C23v38Ev();
extern void _ZN7S6961C23v39Ev();
extern void _ZN7S6961C23v40Ev();
extern void _ZN7S6961C23v41Ev();
extern void _ZN7S6961C23v42Ev();
extern void _ZN7S6961C23v43Ev();
extern void _ZN7S6961C23v44Ev();
extern void _ZN7S6961C23v45Ev();
extern void _ZN7S6961C23v46Ev();
extern void _ZN7S6961C23v47Ev();
extern void _ZN7S6961C23v48Ev();
extern void _ZN7S6961C23v49Ev();
extern void _ZN7S6961C23v50Ev();
extern void _ZN7S6961C23v51Ev();
extern void _ZN7S6961C23v52Ev();
extern void _ZN7S6961C23v53Ev();
extern void _ZN7S6961C23v54Ev();
extern void _ZN7S6961C23v55Ev();
extern void _ZN7S6961C23v56Ev();
extern void _ZN7S6961C23v57Ev();
extern void _ZN7S6961C23v58Ev();
extern void _ZN7S6961C23v59Ev();
extern void _ZN7S6961C23v60Ev();
extern void _ZN7S6961C23v61Ev();
extern void _ZN7S6961C23v62Ev();
extern void _ZN7S6961C23v63Ev();
extern void _ZN7S6961C23v64Ev();
extern void _ZN7S6961C23v65Ev();
extern void _ZN7S6961C23v66Ev();
extern void _ZN7S6961C23v67Ev();
extern void _ZN7S6961C23v68Ev();
static  VTBL_ENTRY vtc_S6961C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6961C2[0]),
  (VTBL_ENTRY)&_ZN7S6961C2D1Ev,
  (VTBL_ENTRY)&_ZN7S6961C2D0Ev,
  (VTBL_ENTRY)&_ZN7S6961C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6961C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6961C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6961C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6961C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v11Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v12Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v13Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v27Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v28Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v29Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v30Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v31Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v32Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v33Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v34Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v35Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v36Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v37Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v38Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v39Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v40Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v41Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v42Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v43Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v44Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v45Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v46Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v47Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v48Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v49Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v50Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v51Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v52Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v53Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v54Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v55Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v56Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v57Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v58Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v59Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v60Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v61Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v62Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v63Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v64Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v65Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v66Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v67Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v68Ev,
};
extern VTBL_ENTRY _ZTI7S6961C2[];
extern  VTBL_ENTRY _ZTV7S6961C2[];
Class_Descriptor cd_S6961C2 = {  "S6961C2", // class name
  0,0,//no base classes
  &(vtc_S6961C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S6961C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6961C2),68, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6961C7  : S79C12_nt {
};
//SIG(-1 S6961C7) C1{ BC2{ m Fp Fi[2]}}



static void Test_S6961C7()
{
  extern Class_Descriptor cd_S6961C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S6961C7, buf);
    S6961C7 &lv = *(new (buf) S6961C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S6961C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6961C7)");
    check_base_class_offset(lv, (S79C12_nt*), 0, "S6961C7");
    test_class_info(&lv, &cd_S6961C7);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6961C7(Test_S6961C7, "S6961C7", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S79C12_nt;
static Base_Class bases_S6961C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S79C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S6961C7 = {  "S6961C7", // class name
  bases_S6961C7, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(16,12), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6961C6  : S6961C7 {
  int s6961c6f0;
};
//SIG(-1 S6961C6) C1{ BC2{ BC3{ m Fp Fi[2]}} Fi}



static void Test_S6961C6()
{
  extern Class_Descriptor cd_S6961C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S6961C6, buf);
    S6961C6 &lv = *(new (buf) S6961C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S6961C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6961C6)");
    check_base_class_offset(lv, (S79C12_nt*)(S6961C7*), 0, "S6961C6");
    check_base_class_offset(lv, (S6961C7*), 0, "S6961C6");
    check_field_offset(lv, s6961c6f0, ABISELECT(16,12), "S6961C6.s6961c6f0");
    test_class_info(&lv, &cd_S6961C6);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6961C6(Test_S6961C6, "S6961C6", ABISELECT(24,16));

#else // __cplusplus

extern Class_Descriptor cd_S79C12_nt;
extern Class_Descriptor cd_S6961C7;
static Base_Class bases_S6961C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S79C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S6961C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S6961C6 = {  "S6961C6", // class name
  bases_S6961C6, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(24,16), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6961C1  : S6961C2 {
  ::S79C45 s6961c1f0;
  ::S6961C6 s6961c1f1;
  int s6961c1f2;
  virtual  ~S6961C1(); // _ZN7S6961C1D1Ev
  virtual void  v1(); // _ZN7S6961C12v1Ev
  virtual void  v2(); // _ZN7S6961C12v2Ev
  virtual void  v3(); // _ZN7S6961C12v3Ev
  virtual void  v4(); // _ZN7S6961C12v4Ev
  S6961C1(); // tgen
};
//SIG(1 S6961C1) C1{ BC2{ vd v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2 v3 v4 FC4{ BC5{ m Fp Fi[2]}} FC6{ BC7{ BC5} Fi} Fi}


 S6961C1 ::~S6961C1(){ note_dtor("S6961C1", this);}
void  S6961C1 ::v1(){vfunc_called(this, "_ZN7S6961C12v1Ev");}
void  S6961C1 ::v2(){vfunc_called(this, "_ZN7S6961C12v2Ev");}
void  S6961C1 ::v3(){vfunc_called(this, "_ZN7S6961C12v3Ev");}
void  S6961C1 ::v4(){vfunc_called(this, "_ZN7S6961C12v4Ev");}
S6961C1 ::S6961C1(){ note_ctor("S6961C1", this);} // tgen

static void Test_S6961C1()
{
  extern Class_Descriptor cd_S6961C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,24)];
    init_test(&cd_S6961C1, buf);
    S6961C1 *dp, &lv = *(dp=new (buf) S6961C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,92), "sizeof(S6961C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6961C1)");
    check_base_class_offset(lv, (S6961C2*), 0, "S6961C1");
    check_field_offset(lv, s6961c1f0, ABISELECT(96,60), "S6961C1.s6961c1f0");
    check_field_offset(lv, s6961c1f1, ABISELECT(112,72), "S6961C1.s6961c1f1");
    check_field_offset(lv, s6961c1f2, ABISELECT(136,88), "S6961C1.s6961c1f2");
    test_class_info(&lv, &cd_S6961C1);
    dp->~S6961C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6961C1(Test_S6961C1, "S6961C1", ABISELECT(144,92));

#else // __cplusplus

extern void _ZN7S6961C1C1Ev();
extern void _ZN7S6961C1D1Ev();
Name_Map name_map_S6961C1[] = {
  NSPAIR(_ZN7S6961C1C1Ev),
  NSPAIR(_ZN7S6961C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6961C2;
extern VTBL_ENTRY _ZTI7S6961C2[];
extern  VTBL_ENTRY _ZTV7S6961C2[];
static Base_Class bases_S6961C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6961C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6961C1[];
extern void _ZN7S6961C1D1Ev();
extern void _ZN7S6961C1D0Ev();
extern void _ZN7S6961C22v5Ev();
extern void _ZN7S6961C22v6Ev();
extern void _ZN7S6961C22v7Ev();
extern void _ZN7S6961C22v8Ev();
extern void _ZN7S6961C22v9Ev();
extern void _ZN7S6961C23v10Ev();
extern void _ZN7S6961C23v11Ev();
extern void _ZN7S6961C23v12Ev();
extern void _ZN7S6961C23v13Ev();
extern void _ZN7S6961C23v14Ev();
extern void _ZN7S6961C23v15Ev();
extern void _ZN7S6961C23v16Ev();
extern void _ZN7S6961C23v17Ev();
extern void _ZN7S6961C23v18Ev();
extern void _ZN7S6961C23v19Ev();
extern void _ZN7S6961C23v20Ev();
extern void _ZN7S6961C23v21Ev();
extern void _ZN7S6961C23v22Ev();
extern void _ZN7S6961C23v23Ev();
extern void _ZN7S6961C23v24Ev();
extern void _ZN7S6961C23v25Ev();
extern void _ZN7S6961C23v26Ev();
extern void _ZN7S6961C23v27Ev();
extern void _ZN7S6961C23v28Ev();
extern void _ZN7S6961C23v29Ev();
extern void _ZN7S6961C23v30Ev();
extern void _ZN7S6961C23v31Ev();
extern void _ZN7S6961C23v32Ev();
extern void _ZN7S6961C23v33Ev();
extern void _ZN7S6961C23v34Ev();
extern void _ZN7S6961C23v35Ev();
extern void _ZN7S6961C23v36Ev();
extern void _ZN7S6961C23v37Ev();
extern void _ZN7S6961C23v38Ev();
extern void _ZN7S6961C23v39Ev();
extern void _ZN7S6961C23v40Ev();
extern void _ZN7S6961C23v41Ev();
extern void _ZN7S6961C23v42Ev();
extern void _ZN7S6961C23v43Ev();
extern void _ZN7S6961C23v44Ev();
extern void _ZN7S6961C23v45Ev();
extern void _ZN7S6961C23v46Ev();
extern void _ZN7S6961C23v47Ev();
extern void _ZN7S6961C23v48Ev();
extern void _ZN7S6961C23v49Ev();
extern void _ZN7S6961C23v50Ev();
extern void _ZN7S6961C23v51Ev();
extern void _ZN7S6961C23v52Ev();
extern void _ZN7S6961C23v53Ev();
extern void _ZN7S6961C23v54Ev();
extern void _ZN7S6961C23v55Ev();
extern void _ZN7S6961C23v56Ev();
extern void _ZN7S6961C23v57Ev();
extern void _ZN7S6961C23v58Ev();
extern void _ZN7S6961C23v59Ev();
extern void _ZN7S6961C23v60Ev();
extern void _ZN7S6961C23v61Ev();
extern void _ZN7S6961C23v62Ev();
extern void _ZN7S6961C23v63Ev();
extern void _ZN7S6961C23v64Ev();
extern void _ZN7S6961C23v65Ev();
extern void _ZN7S6961C23v66Ev();
extern void _ZN7S6961C23v67Ev();
extern void _ZN7S6961C23v68Ev();
extern void _ZN7S6961C12v1Ev();
extern void _ZN7S6961C12v2Ev();
extern void _ZN7S6961C12v3Ev();
extern void _ZN7S6961C12v4Ev();
static  VTBL_ENTRY vtc_S6961C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6961C1[0]),
  (VTBL_ENTRY)&_ZN7S6961C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6961C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6961C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6961C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6961C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6961C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6961C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v11Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v12Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v13Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v27Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v28Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v29Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v30Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v31Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v32Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v33Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v34Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v35Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v36Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v37Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v38Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v39Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v40Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v41Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v42Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v43Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v44Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v45Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v46Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v47Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v48Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v49Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v50Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v51Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v52Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v53Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v54Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v55Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v56Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v57Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v58Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v59Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v60Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v61Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v62Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v63Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v64Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v65Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v66Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v67Ev,
  (VTBL_ENTRY)&_ZN7S6961C23v68Ev,
  (VTBL_ENTRY)&_ZN7S6961C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6961C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6961C12v3Ev,
  (VTBL_ENTRY)&_ZN7S6961C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S6961C1[];
extern  VTBL_ENTRY _ZTV7S6961C1[];
Class_Descriptor cd_S6961C1 = {  "S6961C1", // class name
  bases_S6961C1, 1,
  &(vtc_S6961C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,92), // object size
  NSPAIRA(_ZTI7S6961C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6961C1),72, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18909C5  {
  virtual void  v13(); // _ZN8S18909C53v13Ev
  virtual void  v14(); // _ZN8S18909C53v14Ev
  virtual void  v15(); // _ZN8S18909C53v15Ev
  virtual void  v16(); // _ZN8S18909C53v16Ev
  virtual void  v17(); // _ZN8S18909C53v17Ev
  virtual void  v18(); // _ZN8S18909C53v18Ev
  virtual void  v19(); // _ZN8S18909C53v19Ev
  virtual void  v20(); // _ZN8S18909C53v20Ev
  virtual void  v21(); // _ZN8S18909C53v21Ev
  ~S18909C5(); // tgen
  S18909C5(); // tgen
};
//SIG(-1 S18909C5) C1{ v1 v2 v3 v4 v5 v6 v7 v8 v9}


void  S18909C5 ::v13(){vfunc_called(this, "_ZN8S18909C53v13Ev");}
void  S18909C5 ::v14(){vfunc_called(this, "_ZN8S18909C53v14Ev");}
void  S18909C5 ::v15(){vfunc_called(this, "_ZN8S18909C53v15Ev");}
void  S18909C5 ::v16(){vfunc_called(this, "_ZN8S18909C53v16Ev");}
void  S18909C5 ::v17(){vfunc_called(this, "_ZN8S18909C53v17Ev");}
void  S18909C5 ::v18(){vfunc_called(this, "_ZN8S18909C53v18Ev");}
void  S18909C5 ::v19(){vfunc_called(this, "_ZN8S18909C53v19Ev");}
void  S18909C5 ::v20(){vfunc_called(this, "_ZN8S18909C53v20Ev");}
void  S18909C5 ::v21(){vfunc_called(this, "_ZN8S18909C53v21Ev");}
S18909C5 ::~S18909C5(){ note_dtor("S18909C5", this);} // tgen
S18909C5 ::S18909C5(){ note_ctor("S18909C5", this);} // tgen

static void Test_S18909C5()
{
  extern Class_Descriptor cd_S18909C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S18909C5, buf);
    S18909C5 *dp, &lv = *(dp=new (buf) S18909C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S18909C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18909C5)");
    test_class_info(&lv, &cd_S18909C5);
    dp->~S18909C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18909C5(Test_S18909C5, "S18909C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S18909C5C1Ev();
extern void _ZN8S18909C5D1Ev();
Name_Map name_map_S18909C5[] = {
  NSPAIR(_ZN8S18909C5C1Ev),
  NSPAIR(_ZN8S18909C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18909C5[];
extern void _ZN8S18909C53v13Ev();
extern void _ZN8S18909C53v14Ev();
extern void _ZN8S18909C53v15Ev();
extern void _ZN8S18909C53v16Ev();
extern void _ZN8S18909C53v17Ev();
extern void _ZN8S18909C53v18Ev();
extern void _ZN8S18909C53v19Ev();
extern void _ZN8S18909C53v20Ev();
extern void _ZN8S18909C53v21Ev();
static  VTBL_ENTRY vtc_S18909C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18909C5[0]),
  (VTBL_ENTRY)&_ZN8S18909C53v13Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v14Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v15Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v16Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v17Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v18Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v19Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v20Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v21Ev,
};
extern VTBL_ENTRY _ZTI8S18909C5[];
extern  VTBL_ENTRY _ZTV8S18909C5[];
Class_Descriptor cd_S18909C5 = {  "S18909C5", // class name
  0,0,//no base classes
  &(vtc_S18909C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S18909C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18909C5),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18909C7  {
  int s18909c7f0;
  __tsi64 s18909c7f1;
  virtual  ~S18909C7(); // _ZN8S18909C7D1Ev
  virtual void  v22(); // _ZN8S18909C73v22Ev
  virtual void  v23(); // _ZN8S18909C73v23Ev
  virtual void  v24(); // _ZN8S18909C73v24Ev
  S18909C7(); // tgen
};
//SIG(-1 S18909C7) C1{ vd v1 v2 v3 Fi FL}


 S18909C7 ::~S18909C7(){ note_dtor("S18909C7", this);}
void  S18909C7 ::v22(){vfunc_called(this, "_ZN8S18909C73v22Ev");}
void  S18909C7 ::v23(){vfunc_called(this, "_ZN8S18909C73v23Ev");}
void  S18909C7 ::v24(){vfunc_called(this, "_ZN8S18909C73v24Ev");}
S18909C7 ::S18909C7(){ note_ctor("S18909C7", this);} // tgen

static void Test_S18909C7()
{
  extern Class_Descriptor cd_S18909C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S18909C7, buf);
    S18909C7 *dp, &lv = *(dp=new (buf) S18909C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S18909C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18909C7)");
    check_field_offset(lv, s18909c7f0, ABISELECT(8,4), "S18909C7.s18909c7f0");
    check_field_offset(lv, s18909c7f1, ABISELECT(16,8), "S18909C7.s18909c7f1");
    test_class_info(&lv, &cd_S18909C7);
    dp->~S18909C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18909C7(Test_S18909C7, "S18909C7", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S18909C7C1Ev();
extern void _ZN8S18909C7D1Ev();
Name_Map name_map_S18909C7[] = {
  NSPAIR(_ZN8S18909C7C1Ev),
  NSPAIR(_ZN8S18909C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18909C7[];
extern void _ZN8S18909C7D1Ev();
extern void _ZN8S18909C7D0Ev();
extern void _ZN8S18909C73v22Ev();
extern void _ZN8S18909C73v23Ev();
extern void _ZN8S18909C73v24Ev();
static  VTBL_ENTRY vtc_S18909C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18909C7[0]),
  (VTBL_ENTRY)&_ZN8S18909C7D1Ev,
  (VTBL_ENTRY)&_ZN8S18909C7D0Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v22Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v23Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v24Ev,
};
extern VTBL_ENTRY _ZTI8S18909C7[];
extern  VTBL_ENTRY _ZTV8S18909C7[];
Class_Descriptor cd_S18909C7 = {  "S18909C7", // class name
  0,0,//no base classes
  &(vtc_S18909C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S18909C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18909C7),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18909C6  : S18909C7 {
  int s18909c6f0;
  ::S18909C7 s18909c6f1;
  virtual  ~S18909C6(); // _ZN8S18909C6D1Ev
  virtual void  v25(); // _ZN8S18909C63v25Ev
  virtual void  v26(); // _ZN8S18909C63v26Ev
  virtual void  v27(); // _ZN8S18909C63v27Ev
  S18909C6(); // tgen
};
//SIG(-1 S18909C6) C1{ BC2{ vd v4 v5 v6 Fi FL} vd v1 v2 v3 Fi FC2}


 S18909C6 ::~S18909C6(){ note_dtor("S18909C6", this);}
void  S18909C6 ::v25(){vfunc_called(this, "_ZN8S18909C63v25Ev");}
void  S18909C6 ::v26(){vfunc_called(this, "_ZN8S18909C63v26Ev");}
void  S18909C6 ::v27(){vfunc_called(this, "_ZN8S18909C63v27Ev");}
S18909C6 ::S18909C6(){ note_ctor("S18909C6", this);} // tgen

static void Test_S18909C6()
{
  extern Class_Descriptor cd_S18909C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S18909C6, buf);
    S18909C6 *dp, &lv = *(dp=new (buf) S18909C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S18909C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18909C6)");
    check_base_class_offset(lv, (S18909C7*), 0, "S18909C6");
    check_field_offset(lv, s18909c6f0, ABISELECT(24,16), "S18909C6.s18909c6f0");
    check_field_offset(lv, s18909c6f1, ABISELECT(32,20), "S18909C6.s18909c6f1");
    test_class_info(&lv, &cd_S18909C6);
    dp->~S18909C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18909C6(Test_S18909C6, "S18909C6", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN8S18909C6C1Ev();
extern void _ZN8S18909C6D1Ev();
Name_Map name_map_S18909C6[] = {
  NSPAIR(_ZN8S18909C6C1Ev),
  NSPAIR(_ZN8S18909C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S18909C7;
extern VTBL_ENTRY _ZTI8S18909C7[];
extern  VTBL_ENTRY _ZTV8S18909C7[];
static Base_Class bases_S18909C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18909C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S18909C6[];
extern void _ZN8S18909C6D1Ev();
extern void _ZN8S18909C6D0Ev();
extern void _ZN8S18909C73v22Ev();
extern void _ZN8S18909C73v23Ev();
extern void _ZN8S18909C73v24Ev();
extern void _ZN8S18909C63v25Ev();
extern void _ZN8S18909C63v26Ev();
extern void _ZN8S18909C63v27Ev();
static  VTBL_ENTRY vtc_S18909C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18909C6[0]),
  (VTBL_ENTRY)&_ZN8S18909C6D1Ev,
  (VTBL_ENTRY)&_ZN8S18909C6D0Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v22Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v23Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v24Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v25Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v26Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v27Ev,
};
extern VTBL_ENTRY _ZTI8S18909C6[];
extern  VTBL_ENTRY _ZTV8S18909C6[];
Class_Descriptor cd_S18909C6 = {  "S18909C6", // class name
  bases_S18909C6, 1,
  &(vtc_S18909C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI8S18909C6),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S18909C6),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18909C4  : virtual S18909C5 , virtual S18909C6 {
  ::S18909C6 s18909c4f0[3];
  int s18909c4f1;
  void *s18909c4f2[8];
  int s18909c4f3;
  long double s18909c4f4[3];
  virtual void  v28(); // _ZN8S18909C43v28Ev
  virtual void  v29(); // _ZN8S18909C43v29Ev
  virtual void  v30(); // _ZN8S18909C43v30Ev
  virtual void  v31(); // _ZN8S18909C43v31Ev
  ~S18909C4(); // tgen
  S18909C4(); // tgen
};
//SIG(-1 S18909C4) C1{ VBC2{ v5 v6 v7 v8 v9 v10 v11 v12 v13} VBC3{ BC4{ vd v14 v15 v16 Fi FL} vd v17 v18 v19 Fi FC4} v1 v2 v3 v4 FC3[3] Fi Fp[8] Fi FD[3]}


void  S18909C4 ::v28(){vfunc_called(this, "_ZN8S18909C43v28Ev");}
void  S18909C4 ::v29(){vfunc_called(this, "_ZN8S18909C43v29Ev");}
void  S18909C4 ::v30(){vfunc_called(this, "_ZN8S18909C43v30Ev");}
void  S18909C4 ::v31(){vfunc_called(this, "_ZN8S18909C43v31Ev");}
S18909C4 ::~S18909C4(){ note_dtor("S18909C4", this);} // tgen
S18909C4 ::S18909C4(){ note_ctor("S18909C4", this);} // tgen

static void Test_S18909C4()
{
  extern Class_Descriptor cd_S18909C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(24,57)];
    init_test(&cd_S18909C4, buf);
    S18909C4 *dp, &lv = *(dp=new (buf) S18909C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(368,224), "sizeof(S18909C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18909C4)");
    check_base_class_offset(lv, (S18909C5*), 0, "S18909C4");
    check_base_class_offset(lv, (S18909C7*)(S18909C6*), ABISELECT(304,188), "S18909C4");
    check_base_class_offset(lv, (S18909C6*), ABISELECT(304,188), "S18909C4");
    check_field_offset(lv, s18909c4f0, ABISELECT(8,4), "S18909C4.s18909c4f0");
    check_field_offset(lv, s18909c4f1, ABISELECT(176,112), "S18909C4.s18909c4f1");
    check_field_offset(lv, s18909c4f2, ABISELECT(184,116), "S18909C4.s18909c4f2");
    check_field_offset(lv, s18909c4f3, ABISELECT(248,148), "S18909C4.s18909c4f3");
    check_field_offset(lv, s18909c4f4, ABISELECT(256,152), "S18909C4.s18909c4f4");
    test_class_info(&lv, &cd_S18909C4);
    dp->~S18909C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18909C4(Test_S18909C4, "S18909C4", ABISELECT(368,224));

#else // __cplusplus

extern void _ZN8S18909C4C1Ev();
extern void _ZN8S18909C4D1Ev();
Name_Map name_map_S18909C4[] = {
  NSPAIR(_ZN8S18909C4C1Ev),
  NSPAIR(_ZN8S18909C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S18909C5;
extern VTBL_ENTRY _ZTI8S18909C5[];
extern  VTBL_ENTRY _ZTV8S18909C5[];
extern Class_Descriptor cd_S18909C7;
extern VTBL_ENTRY _ZTI8S18909C7[];
extern  VTBL_ENTRY _ZTV8S18909C7[];
extern Class_Descriptor cd_S18909C6;
extern VTBL_ENTRY _ZTI8S18909C6[];
extern  VTBL_ENTRY _ZTV8S18909C6[];
static Base_Class bases_S18909C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18909C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S18909C7,    ABISELECT(304,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S18909C6,    ABISELECT(304,188), //bcp->offset
    28, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S18909C4[];
extern void _ZN8S18909C53v13Ev();
extern void _ZN8S18909C53v14Ev();
extern void _ZN8S18909C53v15Ev();
extern void _ZN8S18909C53v16Ev();
extern void _ZN8S18909C53v17Ev();
extern void _ZN8S18909C53v18Ev();
extern void _ZN8S18909C53v19Ev();
extern void _ZN8S18909C53v20Ev();
extern void _ZN8S18909C53v21Ev();
extern void _ZN8S18909C43v28Ev();
extern void _ZN8S18909C43v29Ev();
extern void _ZN8S18909C43v30Ev();
extern void _ZN8S18909C43v31Ev();
extern void _ZN8S18909C4D1Ev();
extern void _ZN8S18909C4D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S18909C4D1Ev,_ZTv0_n12_N8S18909C4D1Ev)();
extern void ABISELECT(_ZThn304_N8S18909C4D1Ev,_ZThn188_N8S18909C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S18909C4D0Ev,_ZTv0_n12_N8S18909C4D0Ev)();
extern void ABISELECT(_ZThn304_N8S18909C4D0Ev,_ZThn188_N8S18909C4D0Ev)() __attribute__((weak));
extern void _ZN8S18909C73v22Ev();
extern void _ZN8S18909C73v23Ev();
extern void _ZN8S18909C73v24Ev();
extern void _ZN8S18909C63v25Ev();
extern void _ZN8S18909C63v26Ev();
extern void _ZN8S18909C63v27Ev();
static  VTBL_ENTRY vtc_S18909C4[] = {
  ABISELECT(304,188),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S18909C4[0]),
  (VTBL_ENTRY)&_ZN8S18909C53v13Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v14Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v15Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v16Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v17Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v18Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v19Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v20Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v21Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v28Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v29Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v30Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v31Ev,
  (VTBL_ENTRY)&_ZN8S18909C4D1Ev,
  (VTBL_ENTRY)&_ZN8S18909C4D0Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-304,-188),
  ABISELECT(-304,-188),
  (VTBL_ENTRY)&(_ZTI8S18909C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18909C4D1Ev,_ZTv0_n12_N8S18909C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18909C4D0Ev,_ZTv0_n12_N8S18909C4D0Ev),
  (VTBL_ENTRY)&_ZN8S18909C73v22Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v23Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v24Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v25Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v26Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v27Ev,
};
extern VTBL_ENTRY _ZTV8S18909C4[];
static  VTT_ENTRY vtt_S18909C4[] = {
  {&(_ZTV8S18909C4[13]),  13,45},
  {&(_ZTV8S18909C4[13]),  13,45},
  {&(_ZTV8S18909C4[37]),  37,45},
};
extern VTBL_ENTRY _ZTI8S18909C4[];
extern  VTBL_ENTRY _ZTV8S18909C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18909C4[];
static VTBL_ENTRY alt_thunk_names17[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S18909C4D0Ev,_ZTv0_n12_N8S18909C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S18909C4D0Ev,_ZThn188_N8S18909C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S18909C4D1Ev,_ZTv0_n12_N8S18909C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S18909C4D1Ev,_ZThn188_N8S18909C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S18909C4 = {  "S18909C4", // class name
  bases_S18909C4, 3,
  &(vtc_S18909C4[0]), // expected_vtbl_contents
  &(vtt_S18909C4[0]), // expected_vtt_contents
  ABISELECT(368,224), // object size
  NSPAIRA(_ZTI8S18909C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S18909C4),45, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S18909C4),3, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names17,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18909C3  : S18909C4 , S18909C6 {
  int s18909c3f0;
  virtual  ~S18909C3(); // _ZN8S18909C3D2Ev
  virtual void  v32(); // _ZN8S18909C33v32Ev
  virtual void  v33(); // _ZN8S18909C33v33Ev
  virtual void  v34(); // _ZN8S18909C33v34Ev
  virtual void  v35(); // _ZN8S18909C33v35Ev
  virtual void  v36(); // _ZN8S18909C33v36Ev
  virtual void  v37(); // _ZN8S18909C33v37Ev
  virtual void  v38(); // _ZN8S18909C33v38Ev
  virtual void  v39(); // _ZN8S18909C33v39Ev
  virtual void  v40(); // _ZN8S18909C33v40Ev
  S18909C3(); // tgen
};
//SIG(-1 S18909C3) C1{ BC2{ VBC3{ v10 v11 v12 v13 v14 v15 v16 v17 v18} VBC4{ BC5{ vd v19 v20 v21 Fi FL} vd v22 v23 v24 Fi FC5} v25 v26 v27 v28 FC4[3] Fi Fp[8] Fi FD[3]} BC4 vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fi}


 S18909C3 ::~S18909C3(){ note_dtor("S18909C3", this);}
void  S18909C3 ::v32(){vfunc_called(this, "_ZN8S18909C33v32Ev");}
void  S18909C3 ::v33(){vfunc_called(this, "_ZN8S18909C33v33Ev");}
void  S18909C3 ::v34(){vfunc_called(this, "_ZN8S18909C33v34Ev");}
void  S18909C3 ::v35(){vfunc_called(this, "_ZN8S18909C33v35Ev");}
void  S18909C3 ::v36(){vfunc_called(this, "_ZN8S18909C33v36Ev");}
void  S18909C3 ::v37(){vfunc_called(this, "_ZN8S18909C33v37Ev");}
void  S18909C3 ::v38(){vfunc_called(this, "_ZN8S18909C33v38Ev");}
void  S18909C3 ::v39(){vfunc_called(this, "_ZN8S18909C33v39Ev");}
void  S18909C3 ::v40(){vfunc_called(this, "_ZN8S18909C33v40Ev");}
S18909C3 ::S18909C3(){ note_ctor("S18909C3", this);} // tgen

static void Test_S18909C3()
{
  extern Class_Descriptor cd_S18909C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(28,67)];
    init_test(&cd_S18909C3, buf);
    S18909C3 *dp, &lv = *(dp=new (buf) S18909C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(432,264), "sizeof(S18909C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18909C3)");
    check_base_class_offset(lv, (S18909C5*)(S18909C4*), 0, "S18909C3");
    /*is_ambiguous_... S18909C3::S18909C6 */ AMB_check_base_class_offset(lv, (S18909C7*)(S18909C6*), ABISELECT(368,228), "S18909C3");
    check_base_class_offset(lv, (S18909C6*)(S18909C4*), ABISELECT(368,228), "S18909C3");
    check_base_class_offset(lv, (S18909C4*), 0, "S18909C3");
    /*is_ambiguous_... S18909C3::S18909C6 */ AMB_check_base_class_offset(lv, (S18909C7*)(S18909C6*), ABISELECT(304,188), "S18909C3");
    /*is_ambiguous_... S18909C3::S18909C6 */ AMB_check_base_class_offset(lv, (S18909C6*), ABISELECT(304,188), "S18909C3");
    check_field_offset(lv, s18909c3f0, ABISELECT(360,224), "S18909C3.s18909c3f0");
    test_class_info(&lv, &cd_S18909C3);
    dp->~S18909C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18909C3(Test_S18909C3, "S18909C3", ABISELECT(432,264));

#else // __cplusplus

extern void _ZN8S18909C3C1Ev();
extern void _ZN8S18909C3D2Ev();
Name_Map name_map_S18909C3[] = {
  NSPAIR(_ZN8S18909C3C1Ev),
  NSPAIR(_ZN8S18909C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S18909C5;
extern VTBL_ENTRY _ZTI8S18909C5[];
extern  VTBL_ENTRY _ZTV8S18909C5[];
extern Class_Descriptor cd_S18909C7;
extern VTBL_ENTRY _ZTI8S18909C7[];
extern  VTBL_ENTRY _ZTV8S18909C7[];
extern Class_Descriptor cd_S18909C6;
extern VTBL_ENTRY _ZTI8S18909C6[];
extern  VTBL_ENTRY _ZTV8S18909C6[];
extern Class_Descriptor cd_S18909C4;
extern VTBL_ENTRY _ZTI8S18909C4[];
extern  VTBL_ENTRY _ZTV8S18909C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18909C4[];
extern Class_Descriptor cd_S18909C7;
extern VTBL_ENTRY _ZTI8S18909C7[];
extern  VTBL_ENTRY _ZTV8S18909C7[];
extern Class_Descriptor cd_S18909C6;
extern VTBL_ENTRY _ZTI8S18909C6[];
extern  VTBL_ENTRY _ZTV8S18909C6[];
static Base_Class bases_S18909C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18909C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S18909C7,    ABISELECT(368,228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S18909C6,    ABISELECT(368,228), //bcp->offset
    47, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S18909C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S18909C7,    ABISELECT(304,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S18909C6,    ABISELECT(304,188), //bcp->offset
    37, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S18909C3[];
extern void _ZN8S18909C53v13Ev();
extern void _ZN8S18909C53v14Ev();
extern void _ZN8S18909C53v15Ev();
extern void _ZN8S18909C53v16Ev();
extern void _ZN8S18909C53v17Ev();
extern void _ZN8S18909C53v18Ev();
extern void _ZN8S18909C53v19Ev();
extern void _ZN8S18909C53v20Ev();
extern void _ZN8S18909C53v21Ev();
extern void _ZN8S18909C43v28Ev();
extern void _ZN8S18909C43v29Ev();
extern void _ZN8S18909C43v30Ev();
extern void _ZN8S18909C43v31Ev();
extern void _ZN8S18909C3D1Ev();
extern void _ZN8S18909C3D0Ev();
extern void _ZN8S18909C33v32Ev();
extern void _ZN8S18909C33v33Ev();
extern void _ZN8S18909C33v34Ev();
extern void _ZN8S18909C33v35Ev();
extern void _ZN8S18909C33v36Ev();
extern void _ZN8S18909C33v37Ev();
extern void _ZN8S18909C33v38Ev();
extern void _ZN8S18909C33v39Ev();
extern void _ZN8S18909C33v40Ev();
extern void ABISELECT(_ZThn304_N8S18909C3D1Ev,_ZThn188_N8S18909C3D1Ev)();
extern void ABISELECT(_ZThn304_N8S18909C3D0Ev,_ZThn188_N8S18909C3D0Ev)();
extern void _ZN8S18909C73v22Ev();
extern void _ZN8S18909C73v23Ev();
extern void _ZN8S18909C73v24Ev();
extern void _ZN8S18909C63v25Ev();
extern void _ZN8S18909C63v26Ev();
extern void _ZN8S18909C63v27Ev();
extern void ABISELECT(_ZTv0_n24_N8S18909C3D1Ev,_ZTv0_n12_N8S18909C3D1Ev)();
extern void ABISELECT(_ZThn368_N8S18909C3D1Ev,_ZThn228_N8S18909C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S18909C3D0Ev,_ZTv0_n12_N8S18909C3D0Ev)();
extern void ABISELECT(_ZThn368_N8S18909C3D0Ev,_ZThn228_N8S18909C3D0Ev)() __attribute__((weak));
extern void _ZN8S18909C73v22Ev();
extern void _ZN8S18909C73v23Ev();
extern void _ZN8S18909C73v24Ev();
extern void _ZN8S18909C63v25Ev();
extern void _ZN8S18909C63v26Ev();
extern void _ZN8S18909C63v27Ev();
static  VTBL_ENTRY vtc_S18909C3[] = {
  ABISELECT(368,228),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S18909C3[0]),
  (VTBL_ENTRY)&_ZN8S18909C53v13Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v14Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v15Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v16Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v17Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v18Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v19Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v20Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v21Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v28Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v29Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v30Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v31Ev,
  (VTBL_ENTRY)&_ZN8S18909C3D1Ev,
  (VTBL_ENTRY)&_ZN8S18909C3D0Ev,
  (VTBL_ENTRY)&_ZN8S18909C33v32Ev,
  (VTBL_ENTRY)&_ZN8S18909C33v33Ev,
  (VTBL_ENTRY)&_ZN8S18909C33v34Ev,
  (VTBL_ENTRY)&_ZN8S18909C33v35Ev,
  (VTBL_ENTRY)&_ZN8S18909C33v36Ev,
  (VTBL_ENTRY)&_ZN8S18909C33v37Ev,
  (VTBL_ENTRY)&_ZN8S18909C33v38Ev,
  (VTBL_ENTRY)&_ZN8S18909C33v39Ev,
  (VTBL_ENTRY)&_ZN8S18909C33v40Ev,
  ABISELECT(-304,-188),
  (VTBL_ENTRY)&(_ZTI8S18909C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn304_N8S18909C3D1Ev,_ZThn188_N8S18909C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn304_N8S18909C3D0Ev,_ZThn188_N8S18909C3D0Ev),
  (VTBL_ENTRY)&_ZN8S18909C73v22Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v23Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v24Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v25Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v26Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v27Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-228),
  ABISELECT(-368,-228),
  (VTBL_ENTRY)&(_ZTI8S18909C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18909C3D1Ev,_ZTv0_n12_N8S18909C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18909C3D0Ev,_ZTv0_n12_N8S18909C3D0Ev),
  (VTBL_ENTRY)&_ZN8S18909C73v22Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v23Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v24Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v25Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v26Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v27Ev,
};
extern VTBL_ENTRY _ZTV8S18909C3[];
extern void _ZN8S18909C53v13Ev();
extern void _ZN8S18909C53v14Ev();
extern void _ZN8S18909C53v15Ev();
extern void _ZN8S18909C53v16Ev();
extern void _ZN8S18909C53v17Ev();
extern void _ZN8S18909C53v18Ev();
extern void _ZN8S18909C53v19Ev();
extern void _ZN8S18909C53v20Ev();
extern void _ZN8S18909C53v21Ev();
extern void _ZN8S18909C43v28Ev();
extern void _ZN8S18909C43v29Ev();
extern void _ZN8S18909C43v30Ev();
extern void _ZN8S18909C43v31Ev();
extern void _ZN8S18909C4D1Ev();
extern void _ZN8S18909C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S18909C4__8S18909C3[] = {
  ABISELECT(368,228),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S18909C4[0]),
  (VTBL_ENTRY)&_ZN8S18909C53v13Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v14Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v15Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v16Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v17Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v18Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v19Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v20Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v21Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v28Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v29Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v30Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v31Ev,
  (VTBL_ENTRY)&_ZN8S18909C4D1Ev,
  (VTBL_ENTRY)&_ZN8S18909C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S18909C4D1Ev,_ZTv0_n12_N8S18909C4D1Ev)();
extern void ABISELECT(_ZThn368_N8S18909C4D1Ev,_ZThn228_N8S18909C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S18909C4D0Ev,_ZTv0_n12_N8S18909C4D0Ev)();
extern void ABISELECT(_ZThn368_N8S18909C4D0Ev,_ZThn228_N8S18909C4D0Ev)() __attribute__((weak));
extern void _ZN8S18909C73v22Ev();
extern void _ZN8S18909C73v23Ev();
extern void _ZN8S18909C73v24Ev();
extern void _ZN8S18909C63v25Ev();
extern void _ZN8S18909C63v26Ev();
extern void _ZN8S18909C63v27Ev();
static  VTBL_ENTRY _tg__ZTV8S18909C6__8S18909C4__8S18909C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-228),
  ABISELECT(-368,-228),
  (VTBL_ENTRY)&(_ZTI8S18909C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18909C4D1Ev,_ZTv0_n12_N8S18909C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18909C4D0Ev,_ZTv0_n12_N8S18909C4D0Ev),
  (VTBL_ENTRY)&_ZN8S18909C73v22Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v23Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v24Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v25Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v26Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v27Ev,
};
static  VTT_ENTRY vtt_S18909C3[] = {
  {&(_ZTV8S18909C3[13]),  13,64},
  {&(_tg__ZTV8S18909C4__8S18909C3[13]),  13,28},
  {&(_tg__ZTV8S18909C4__8S18909C3[13]),  13,28},
  {&(_tg__ZTV8S18909C6__8S18909C4__8S18909C3[9]),  9,17},
  {&(_ZTV8S18909C3[13]),  13,64},
  {&(_ZTV8S18909C3[56]),  56,64},
};
extern VTBL_ENTRY _ZTI8S18909C3[];
extern  VTBL_ENTRY _ZTV8S18909C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18909C3[];
static VTBL_ENTRY alt_thunk_names18[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S18909C4D0Ev,_ZTv0_n12_N8S18909C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S18909C4D0Ev,_ZThn228_N8S18909C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S18909C4D1Ev,_ZTv0_n12_N8S18909C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S18909C4D1Ev,_ZThn228_N8S18909C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S18909C3D0Ev,_ZTv0_n12_N8S18909C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S18909C3D0Ev,_ZThn228_N8S18909C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S18909C3D1Ev,_ZTv0_n12_N8S18909C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S18909C3D1Ev,_ZThn228_N8S18909C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S18909C3 = {  "S18909C3", // class name
  bases_S18909C3, 6,
  &(vtc_S18909C3[0]), // expected_vtbl_contents
  &(vtt_S18909C3[0]), // expected_vtt_contents
  ABISELECT(432,264), // object size
  NSPAIRA(_ZTI8S18909C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S18909C3),64, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S18909C3),6, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names18,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18909C9  : virtual S18909C4 , virtual S18909C7 {
  virtual  ~S18909C9(); // _ZN8S18909C9D2Ev
  virtual void  v41(); // _ZN8S18909C93v41Ev
  virtual void  v42(); // _ZN8S18909C93v42Ev
  virtual void  v43(); // _ZN8S18909C93v43Ev
  S18909C9(); // tgen
};
//SIG(-1 S18909C9) C1{ VBC2{ VBC3{ v4 v5 v6 v7 v8 v9 v10 v11 v12} VBC4{ BC5{ vd v13 v14 v15 Fi FL} vd v16 v17 v18 Fi FC5} v19 v20 v21 v22 FC4[3] Fi Fp[8] Fi FD[3]} VBC5 vd v1 v2 v3}


 S18909C9 ::~S18909C9(){ note_dtor("S18909C9", this);}
void  S18909C9 ::v41(){vfunc_called(this, "_ZN8S18909C93v41Ev");}
void  S18909C9 ::v42(){vfunc_called(this, "_ZN8S18909C93v42Ev");}
void  S18909C9 ::v43(){vfunc_called(this, "_ZN8S18909C93v43Ev");}
S18909C9 ::S18909C9(){ note_ctor("S18909C9", this);} // tgen

static void Test_S18909C9()
{
  extern Class_Descriptor cd_S18909C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(26,62)];
    init_test(&cd_S18909C9, buf);
    S18909C9 *dp, &lv = *(dp=new (buf) S18909C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(400,244), "sizeof(S18909C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18909C9)");
    check_base_class_offset(lv, (S18909C5*)(S18909C4*), 0, "S18909C9");
    check_base_class_offset(lv, (S18909C7*)(S18909C6*), ABISELECT(320,192), "S18909C9");
    check_base_class_offset(lv, (S18909C6*)(S18909C4*), ABISELECT(320,192), "S18909C9");
    check_base_class_offset(lv, (S18909C4*), ABISELECT(16,4), "S18909C9");
    /*is_ambiguous_... S18909C9::S18909C7 */ AMB_check_base_class_offset(lv, (S18909C7*), ABISELECT(376,228), "S18909C9");
    test_class_info(&lv, &cd_S18909C9);
    dp->~S18909C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18909C9(Test_S18909C9, "S18909C9", ABISELECT(400,244));

#else // __cplusplus

extern void _ZN8S18909C9C1Ev();
extern void _ZN8S18909C9D2Ev();
Name_Map name_map_S18909C9[] = {
  NSPAIR(_ZN8S18909C9C1Ev),
  NSPAIR(_ZN8S18909C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S18909C5;
extern VTBL_ENTRY _ZTI8S18909C5[];
extern  VTBL_ENTRY _ZTV8S18909C5[];
extern Class_Descriptor cd_S18909C7;
extern VTBL_ENTRY _ZTI8S18909C7[];
extern  VTBL_ENTRY _ZTV8S18909C7[];
extern Class_Descriptor cd_S18909C6;
extern VTBL_ENTRY _ZTI8S18909C6[];
extern  VTBL_ENTRY _ZTV8S18909C6[];
extern Class_Descriptor cd_S18909C4;
extern VTBL_ENTRY _ZTI8S18909C4[];
extern  VTBL_ENTRY _ZTV8S18909C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18909C4[];
extern Class_Descriptor cd_S18909C7;
extern VTBL_ENTRY _ZTI8S18909C7[];
extern  VTBL_ENTRY _ZTV8S18909C7[];
static Base_Class bases_S18909C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18909C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S18909C7,    ABISELECT(320,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S18909C6,    ABISELECT(320,192), //bcp->offset
    62, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S18909C4,    ABISELECT(16,4), //bcp->offset
    29, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S18909C7,    ABISELECT(376,228), //bcp->offset
    79, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S18909C9[];
extern void _ZN8S18909C53v13Ev();
extern void _ZN8S18909C53v14Ev();
extern void _ZN8S18909C53v15Ev();
extern void _ZN8S18909C53v16Ev();
extern void _ZN8S18909C53v17Ev();
extern void _ZN8S18909C53v18Ev();
extern void _ZN8S18909C53v19Ev();
extern void _ZN8S18909C53v20Ev();
extern void _ZN8S18909C53v21Ev();
extern void _ZN8S18909C9D1Ev();
extern void _ZN8S18909C9D0Ev();
extern void _ZN8S18909C93v41Ev();
extern void _ZN8S18909C93v42Ev();
extern void _ZN8S18909C93v43Ev();
extern void _ZN8S18909C53v13Ev();
extern void _ZN8S18909C53v14Ev();
extern void _ZN8S18909C53v15Ev();
extern void _ZN8S18909C53v16Ev();
extern void _ZN8S18909C53v17Ev();
extern void _ZN8S18909C53v18Ev();
extern void _ZN8S18909C53v19Ev();
extern void _ZN8S18909C53v20Ev();
extern void _ZN8S18909C53v21Ev();
extern void _ZN8S18909C43v28Ev();
extern void _ZN8S18909C43v29Ev();
extern void _ZN8S18909C43v30Ev();
extern void _ZN8S18909C43v31Ev();
extern void ABISELECT(_ZTv0_n144_N8S18909C9D1Ev,_ZTv0_n72_N8S18909C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S18909C9D1Ev,_ZThn4_N8S18909C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N8S18909C9D0Ev,_ZTv0_n72_N8S18909C9D0Ev)();
extern void ABISELECT(_ZThn16_N8S18909C9D0Ev,_ZThn4_N8S18909C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S18909C9D1Ev,_ZTv0_n12_N8S18909C9D1Ev)();
extern void ABISELECT(_ZThn320_N8S18909C9D1Ev,_ZThn192_N8S18909C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S18909C9D0Ev,_ZTv0_n12_N8S18909C9D0Ev)();
extern void ABISELECT(_ZThn320_N8S18909C9D0Ev,_ZThn192_N8S18909C9D0Ev)() __attribute__((weak));
extern void _ZN8S18909C73v22Ev();
extern void _ZN8S18909C73v23Ev();
extern void _ZN8S18909C73v24Ev();
extern void _ZN8S18909C63v25Ev();
extern void _ZN8S18909C63v26Ev();
extern void _ZN8S18909C63v27Ev();
extern void ABISELECT(_ZTv0_n24_N8S18909C9D1Ev,_ZTv0_n12_N8S18909C9D1Ev)();
extern void ABISELECT(_ZThn376_N8S18909C9D1Ev,_ZThn228_N8S18909C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S18909C9D0Ev,_ZTv0_n12_N8S18909C9D0Ev)();
extern void ABISELECT(_ZThn376_N8S18909C9D0Ev,_ZThn228_N8S18909C9D0Ev)() __attribute__((weak));
extern void _ZN8S18909C73v22Ev();
extern void _ZN8S18909C73v23Ev();
extern void _ZN8S18909C73v24Ev();
static  VTBL_ENTRY vtc_S18909C9[] = {
  ABISELECT(376,228),
  ABISELECT(320,192),
  0,
  ABISELECT(16,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S18909C9[0]),
  (VTBL_ENTRY)&_ZN8S18909C53v13Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v14Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v15Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v16Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v17Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v18Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v19Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v20Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v21Ev,
  (VTBL_ENTRY)&_ZN8S18909C9D1Ev,
  (VTBL_ENTRY)&_ZN8S18909C9D0Ev,
  (VTBL_ENTRY)&_ZN8S18909C93v41Ev,
  (VTBL_ENTRY)&_ZN8S18909C93v42Ev,
  (VTBL_ENTRY)&_ZN8S18909C93v43Ev,
  ABISELECT(-16,-4),
  0,
  0,
  0,
  0,
  ABISELECT(304,188),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S18909C9[0]),
  (VTBL_ENTRY)&_ZN8S18909C53v13Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v14Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v15Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v16Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v17Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v18Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v19Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v20Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v21Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v28Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v29Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v30Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v31Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S18909C9D1Ev,_ZTv0_n72_N8S18909C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S18909C9D0Ev,_ZTv0_n72_N8S18909C9D0Ev),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-320,-192),
  ABISELECT(-320,-192),
  (VTBL_ENTRY)&(_ZTI8S18909C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18909C9D1Ev,_ZTv0_n12_N8S18909C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18909C9D0Ev,_ZTv0_n12_N8S18909C9D0Ev),
  (VTBL_ENTRY)&_ZN8S18909C73v22Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v23Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v24Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v25Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v26Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v27Ev,
  0,
  0,
  0,
  ABISELECT(-376,-228),
  ABISELECT(-376,-228),
  (VTBL_ENTRY)&(_ZTI8S18909C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18909C9D1Ev,_ZTv0_n12_N8S18909C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18909C9D0Ev,_ZTv0_n12_N8S18909C9D0Ev),
  (VTBL_ENTRY)&_ZN8S18909C73v22Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v23Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v24Ev,
};
extern VTBL_ENTRY _ZTV8S18909C9[];
extern void _ZN8S18909C53v13Ev();
extern void _ZN8S18909C53v14Ev();
extern void _ZN8S18909C53v15Ev();
extern void _ZN8S18909C53v16Ev();
extern void _ZN8S18909C53v17Ev();
extern void _ZN8S18909C53v18Ev();
extern void _ZN8S18909C53v19Ev();
extern void _ZN8S18909C53v20Ev();
extern void _ZN8S18909C53v21Ev();
extern void _ZN8S18909C43v28Ev();
extern void _ZN8S18909C43v29Ev();
extern void _ZN8S18909C43v30Ev();
extern void _ZN8S18909C43v31Ev();
extern void _ZN8S18909C4D1Ev();
extern void _ZN8S18909C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S18909C4__8S18909C9[] = {
  ABISELECT(304,188),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S18909C4[0]),
  (VTBL_ENTRY)&_ZN8S18909C53v13Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v14Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v15Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v16Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v17Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v18Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v19Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v20Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v21Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v28Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v29Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v30Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v31Ev,
  (VTBL_ENTRY)&_ZN8S18909C4D1Ev,
  (VTBL_ENTRY)&_ZN8S18909C4D0Ev,
};
extern void _ZN8S18909C53v13Ev();
extern void _ZN8S18909C53v14Ev();
extern void _ZN8S18909C53v15Ev();
extern void _ZN8S18909C53v16Ev();
extern void _ZN8S18909C53v17Ev();
extern void _ZN8S18909C53v18Ev();
extern void _ZN8S18909C53v19Ev();
extern void _ZN8S18909C53v20Ev();
extern void _ZN8S18909C53v21Ev();
static  VTBL_ENTRY _tg__ZTV8S18909C5__8S18909C4__8S18909C9[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI8S18909C4[0]),
  (VTBL_ENTRY)&_ZN8S18909C53v13Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v14Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v15Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v16Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v17Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v18Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v19Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v20Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v21Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S18909C4D1Ev,_ZTv0_n12_N8S18909C4D1Ev)();
extern void ABISELECT(_ZThn304_N8S18909C4D1Ev,_ZThn188_N8S18909C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S18909C4D0Ev,_ZTv0_n12_N8S18909C4D0Ev)();
extern void ABISELECT(_ZThn304_N8S18909C4D0Ev,_ZThn188_N8S18909C4D0Ev)() __attribute__((weak));
extern void _ZN8S18909C73v22Ev();
extern void _ZN8S18909C73v23Ev();
extern void _ZN8S18909C73v24Ev();
extern void _ZN8S18909C63v25Ev();
extern void _ZN8S18909C63v26Ev();
extern void _ZN8S18909C63v27Ev();
static  VTBL_ENTRY _tg__ZTV8S18909C6__8S18909C4__8S18909C9[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-304,-188),
  ABISELECT(-304,-188),
  (VTBL_ENTRY)&(_ZTI8S18909C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18909C4D1Ev,_ZTv0_n12_N8S18909C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18909C4D0Ev,_ZTv0_n12_N8S18909C4D0Ev),
  (VTBL_ENTRY)&_ZN8S18909C73v22Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v23Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v24Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v25Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v26Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v27Ev,
};
static  VTT_ENTRY vtt_S18909C9[] = {
  {&(_ZTV8S18909C9[15]),  15,90},
  {&(_ZTV8S18909C9[47]),  47,90},
  {&(_ZTV8S18909C9[15]),  15,90},
  {&(_ZTV8S18909C9[71]),  71,90},
  {&(_ZTV8S18909C9[85]),  85,90},
  {&(_tg__ZTV8S18909C4__8S18909C9[13]),  13,28},
  {&(_tg__ZTV8S18909C5__8S18909C4__8S18909C9[11]),  11,20},
  {&(_tg__ZTV8S18909C6__8S18909C4__8S18909C9[9]),  9,17},
};
extern VTBL_ENTRY _ZTI8S18909C9[];
extern  VTBL_ENTRY _ZTV8S18909C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18909C9[];
static VTBL_ENTRY alt_thunk_names19[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S18909C4D0Ev,_ZTv0_n12_N8S18909C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S18909C4D0Ev,_ZThn188_N8S18909C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S18909C4D1Ev,_ZTv0_n12_N8S18909C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S18909C4D1Ev,_ZThn188_N8S18909C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S18909C9D0Ev,_ZTv0_n12_N8S18909C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn376_N8S18909C9D0Ev,_ZThn228_N8S18909C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S18909C9D0Ev,_ZThn192_N8S18909C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S18909C9D1Ev,_ZTv0_n12_N8S18909C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn376_N8S18909C9D1Ev,_ZThn228_N8S18909C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S18909C9D1Ev,_ZThn192_N8S18909C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S18909C9D0Ev,_ZTv0_n72_N8S18909C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S18909C9D0Ev,_ZThn4_N8S18909C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S18909C9D1Ev,_ZTv0_n72_N8S18909C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S18909C9D1Ev,_ZThn4_N8S18909C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S18909C9 = {  "S18909C9", // class name
  bases_S18909C9, 5,
  &(vtc_S18909C9[0]), // expected_vtbl_contents
  &(vtt_S18909C9[0]), // expected_vtt_contents
  ABISELECT(400,244), // object size
  NSPAIRA(_ZTI8S18909C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S18909C9),90, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S18909C9),8, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names19,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18909C10  {
  ::S18909C6 s18909c10f0;
  int s18909c10f1;
  virtual  ~S18909C10(); // _ZN9S18909C10D1Ev
  virtual void  v44(); // _ZN9S18909C103v44Ev
  virtual void  v45(); // _ZN9S18909C103v45Ev
  virtual void  v46(); // _ZN9S18909C103v46Ev
  virtual void  v47(); // _ZN9S18909C103v47Ev
  virtual void  v48(); // _ZN9S18909C103v48Ev
  S18909C10(); // tgen
};
//SIG(-1 S18909C10) C1{ vd v1 v2 v3 v4 v5 FC2{ BC3{ vd v9 v10 v11 Fi FL} vd v6 v7 v8 Fi FC3} Fi}


 S18909C10 ::~S18909C10(){ note_dtor("S18909C10", this);}
void  S18909C10 ::v44(){vfunc_called(this, "_ZN9S18909C103v44Ev");}
void  S18909C10 ::v45(){vfunc_called(this, "_ZN9S18909C103v45Ev");}
void  S18909C10 ::v46(){vfunc_called(this, "_ZN9S18909C103v46Ev");}
void  S18909C10 ::v47(){vfunc_called(this, "_ZN9S18909C103v47Ev");}
void  S18909C10 ::v48(){vfunc_called(this, "_ZN9S18909C103v48Ev");}
S18909C10 ::S18909C10(){ note_ctor("S18909C10", this);} // tgen

static void Test_S18909C10()
{
  extern Class_Descriptor cd_S18909C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,12)];
    init_test(&cd_S18909C10, buf);
    S18909C10 *dp, &lv = *(dp=new (buf) S18909C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S18909C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18909C10)");
    check_field_offset(lv, s18909c10f0, ABISELECT(8,4), "S18909C10.s18909c10f0");
    check_field_offset(lv, s18909c10f1, ABISELECT(64,40), "S18909C10.s18909c10f1");
    test_class_info(&lv, &cd_S18909C10);
    dp->~S18909C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18909C10(Test_S18909C10, "S18909C10", ABISELECT(72,44));

#else // __cplusplus

extern void _ZN9S18909C10C1Ev();
extern void _ZN9S18909C10D1Ev();
Name_Map name_map_S18909C10[] = {
  NSPAIR(_ZN9S18909C10C1Ev),
  NSPAIR(_ZN9S18909C10D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S18909C10[];
extern void _ZN9S18909C10D1Ev();
extern void _ZN9S18909C10D0Ev();
extern void _ZN9S18909C103v44Ev();
extern void _ZN9S18909C103v45Ev();
extern void _ZN9S18909C103v46Ev();
extern void _ZN9S18909C103v47Ev();
extern void _ZN9S18909C103v48Ev();
static  VTBL_ENTRY vtc_S18909C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S18909C10[0]),
  (VTBL_ENTRY)&_ZN9S18909C10D1Ev,
  (VTBL_ENTRY)&_ZN9S18909C10D0Ev,
  (VTBL_ENTRY)&_ZN9S18909C103v44Ev,
  (VTBL_ENTRY)&_ZN9S18909C103v45Ev,
  (VTBL_ENTRY)&_ZN9S18909C103v46Ev,
  (VTBL_ENTRY)&_ZN9S18909C103v47Ev,
  (VTBL_ENTRY)&_ZN9S18909C103v48Ev,
};
extern VTBL_ENTRY _ZTI9S18909C10[];
extern  VTBL_ENTRY _ZTV9S18909C10[];
Class_Descriptor cd_S18909C10 = {  "S18909C10", // class name
  0,0,//no base classes
  &(vtc_S18909C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,44), // object size
  NSPAIRA(_ZTI9S18909C10),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S18909C10),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18909C8  : virtual S18909C9 , S18909C10 {
  __tsi64 s18909c8f0;
  virtual  ~S18909C8(); // _ZN8S18909C8D2Ev
  virtual void  v49(); // _ZN8S18909C83v49Ev
  virtual void  v50(); // _ZN8S18909C83v50Ev
  virtual void  v51(); // _ZN8S18909C83v51Ev
  virtual void  v52(); // _ZN8S18909C83v52Ev
  virtual void  v53(); // _ZN8S18909C83v53Ev
  virtual void  v54(); // _ZN8S18909C83v54Ev
  S18909C8(); // tgen
};
//SIG(-1 S18909C8) C1{ VBC2{ VBC3{ VBC4{ v7 v8 v9 v10 v11 v12 v13 v14 v15} VBC5{ BC6{ vd v16 v17 v18 Fi FL} vd v19 v20 v21 Fi FC6} v22 v23 v24 v25 FC5[3] Fi Fp[8] Fi FD[3]} VBC6 vd v26 v27 v28} BC7{ vd v29 v30 v31 v32 v33 FC5 Fi} vd v1 v2 v3 v4 v5 v6 FL}


 S18909C8 ::~S18909C8(){ note_dtor("S18909C8", this);}
void  S18909C8 ::v49(){vfunc_called(this, "_ZN8S18909C83v49Ev");}
void  S18909C8 ::v50(){vfunc_called(this, "_ZN8S18909C83v50Ev");}
void  S18909C8 ::v51(){vfunc_called(this, "_ZN8S18909C83v51Ev");}
void  S18909C8 ::v52(){vfunc_called(this, "_ZN8S18909C83v52Ev");}
void  S18909C8 ::v53(){vfunc_called(this, "_ZN8S18909C83v53Ev");}
void  S18909C8 ::v54(){vfunc_called(this, "_ZN8S18909C83v54Ev");}
S18909C8 ::S18909C8(){ note_ctor("S18909C8", this);} // tgen

static void Test_S18909C8()
{
  extern Class_Descriptor cd_S18909C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(31,75)];
    init_test(&cd_S18909C8, buf);
    S18909C8 *dp, &lv = *(dp=new (buf) S18909C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(480,296), "sizeof(S18909C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18909C8)");
    check_base_class_offset(lv, (S18909C5*)(S18909C4*), ABISELECT(80,52), "S18909C8");
    check_base_class_offset(lv, (S18909C7*)(S18909C6*), ABISELECT(400,244), "S18909C8");
    check_base_class_offset(lv, (S18909C6*)(S18909C4*), ABISELECT(400,244), "S18909C8");
    check_base_class_offset(lv, (S18909C4*)(S18909C9*), ABISELECT(96,56), "S18909C8");
    /*is_ambiguous_... S18909C9::S18909C7 */ AMB_check_base_class_offset(lv, (S18909C7*)(S18909C9*), ABISELECT(456,280), "S18909C8");
    check_base_class_offset(lv, (S18909C9*), ABISELECT(80,52), "S18909C8");
    check_base_class_offset(lv, (S18909C10*), 0, "S18909C8");
    check_field_offset(lv, s18909c8f0, ABISELECT(72,44), "S18909C8.s18909c8f0");
    test_class_info(&lv, &cd_S18909C8);
    dp->~S18909C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18909C8(Test_S18909C8, "S18909C8", ABISELECT(480,296));

#else // __cplusplus

extern void _ZN8S18909C8C1Ev();
extern void _ZN8S18909C8D2Ev();
Name_Map name_map_S18909C8[] = {
  NSPAIR(_ZN8S18909C8C1Ev),
  NSPAIR(_ZN8S18909C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S18909C5;
extern VTBL_ENTRY _ZTI8S18909C5[];
extern  VTBL_ENTRY _ZTV8S18909C5[];
extern Class_Descriptor cd_S18909C7;
extern VTBL_ENTRY _ZTI8S18909C7[];
extern  VTBL_ENTRY _ZTV8S18909C7[];
extern Class_Descriptor cd_S18909C6;
extern VTBL_ENTRY _ZTI8S18909C6[];
extern  VTBL_ENTRY _ZTV8S18909C6[];
extern Class_Descriptor cd_S18909C4;
extern VTBL_ENTRY _ZTI8S18909C4[];
extern  VTBL_ENTRY _ZTV8S18909C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18909C4[];
extern Class_Descriptor cd_S18909C7;
extern VTBL_ENTRY _ZTI8S18909C7[];
extern  VTBL_ENTRY _ZTV8S18909C7[];
extern Class_Descriptor cd_S18909C9;
extern VTBL_ENTRY _ZTI8S18909C9[];
extern  VTBL_ENTRY _ZTV8S18909C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18909C9[];
extern Class_Descriptor cd_S18909C10;
extern VTBL_ENTRY _ZTI9S18909C10[];
extern  VTBL_ENTRY _ZTV9S18909C10[];
static Base_Class bases_S18909C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18909C5,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S18909C7,    ABISELECT(400,244), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S18909C6,    ABISELECT(400,244), //bcp->offset
    86, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S18909C4,    ABISELECT(96,56), //bcp->offset
    53, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S18909C7,    ABISELECT(456,280), //bcp->offset
    103, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S18909C9,    ABISELECT(80,52), //bcp->offset
    20, //bcp->virtual_function_table_offset
    19, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S18909C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S18909C8[];
extern void _ZN8S18909C8D1Ev();
extern void _ZN8S18909C8D0Ev();
extern void _ZN9S18909C103v44Ev();
extern void _ZN9S18909C103v45Ev();
extern void _ZN9S18909C103v46Ev();
extern void _ZN9S18909C103v47Ev();
extern void _ZN9S18909C103v48Ev();
extern void _ZN8S18909C83v49Ev();
extern void _ZN8S18909C83v50Ev();
extern void _ZN8S18909C83v51Ev();
extern void _ZN8S18909C83v52Ev();
extern void _ZN8S18909C83v53Ev();
extern void _ZN8S18909C83v54Ev();
extern void _ZN8S18909C53v13Ev();
extern void _ZN8S18909C53v14Ev();
extern void _ZN8S18909C53v15Ev();
extern void _ZN8S18909C53v16Ev();
extern void _ZN8S18909C53v17Ev();
extern void _ZN8S18909C53v18Ev();
extern void _ZN8S18909C53v19Ev();
extern void _ZN8S18909C53v20Ev();
extern void _ZN8S18909C53v21Ev();
extern void ABISELECT(_ZTv0_n128_N8S18909C8D1Ev,_ZTv0_n64_N8S18909C8D1Ev)();
extern void ABISELECT(_ZThn80_N8S18909C8D1Ev,_ZThn52_N8S18909C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N8S18909C8D0Ev,_ZTv0_n64_N8S18909C8D0Ev)();
extern void ABISELECT(_ZThn80_N8S18909C8D0Ev,_ZThn52_N8S18909C8D0Ev)() __attribute__((weak));
extern void _ZN8S18909C93v41Ev();
extern void _ZN8S18909C93v42Ev();
extern void _ZN8S18909C93v43Ev();
extern void _ZN8S18909C53v13Ev();
extern void _ZN8S18909C53v14Ev();
extern void _ZN8S18909C53v15Ev();
extern void _ZN8S18909C53v16Ev();
extern void _ZN8S18909C53v17Ev();
extern void _ZN8S18909C53v18Ev();
extern void _ZN8S18909C53v19Ev();
extern void _ZN8S18909C53v20Ev();
extern void _ZN8S18909C53v21Ev();
extern void _ZN8S18909C43v28Ev();
extern void _ZN8S18909C43v29Ev();
extern void _ZN8S18909C43v30Ev();
extern void _ZN8S18909C43v31Ev();
extern void ABISELECT(_ZTv0_n144_N8S18909C8D1Ev,_ZTv0_n72_N8S18909C8D1Ev)();
extern void ABISELECT(_ZThn96_N8S18909C8D1Ev,_ZThn56_N8S18909C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N8S18909C8D0Ev,_ZTv0_n72_N8S18909C8D0Ev)();
extern void ABISELECT(_ZThn96_N8S18909C8D0Ev,_ZThn56_N8S18909C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S18909C8D1Ev,_ZTv0_n12_N8S18909C8D1Ev)();
extern void ABISELECT(_ZThn400_N8S18909C8D1Ev,_ZThn244_N8S18909C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S18909C8D0Ev,_ZTv0_n12_N8S18909C8D0Ev)();
extern void ABISELECT(_ZThn400_N8S18909C8D0Ev,_ZThn244_N8S18909C8D0Ev)() __attribute__((weak));
extern void _ZN8S18909C73v22Ev();
extern void _ZN8S18909C73v23Ev();
extern void _ZN8S18909C73v24Ev();
extern void _ZN8S18909C63v25Ev();
extern void _ZN8S18909C63v26Ev();
extern void _ZN8S18909C63v27Ev();
extern void ABISELECT(_ZTv0_n24_N8S18909C8D1Ev,_ZTv0_n12_N8S18909C8D1Ev)();
extern void ABISELECT(_ZThn456_N8S18909C8D1Ev,_ZThn280_N8S18909C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S18909C8D0Ev,_ZTv0_n12_N8S18909C8D0Ev)();
extern void ABISELECT(_ZThn456_N8S18909C8D0Ev,_ZThn280_N8S18909C8D0Ev)() __attribute__((weak));
extern void _ZN8S18909C73v22Ev();
extern void _ZN8S18909C73v23Ev();
extern void _ZN8S18909C73v24Ev();
static  VTBL_ENTRY vtc_S18909C8[] = {
  ABISELECT(456,280),
  ABISELECT(400,244),
  ABISELECT(80,52),
  ABISELECT(96,56),
  ABISELECT(80,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S18909C8[0]),
  (VTBL_ENTRY)&_ZN8S18909C8D1Ev,
  (VTBL_ENTRY)&_ZN8S18909C8D0Ev,
  (VTBL_ENTRY)&_ZN9S18909C103v44Ev,
  (VTBL_ENTRY)&_ZN9S18909C103v45Ev,
  (VTBL_ENTRY)&_ZN9S18909C103v46Ev,
  (VTBL_ENTRY)&_ZN9S18909C103v47Ev,
  (VTBL_ENTRY)&_ZN9S18909C103v48Ev,
  (VTBL_ENTRY)&_ZN8S18909C83v49Ev,
  (VTBL_ENTRY)&_ZN8S18909C83v50Ev,
  (VTBL_ENTRY)&_ZN8S18909C83v51Ev,
  (VTBL_ENTRY)&_ZN8S18909C83v52Ev,
  (VTBL_ENTRY)&_ZN8S18909C83v53Ev,
  (VTBL_ENTRY)&_ZN8S18909C83v54Ev,
  0,
  0,
  0,
  ABISELECT(-80,-52),
  ABISELECT(376,228),
  ABISELECT(320,192),
  0,
  ABISELECT(16,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S18909C8[0]),
  (VTBL_ENTRY)&_ZN8S18909C53v13Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v14Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v15Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v16Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v17Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v18Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v19Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v20Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v21Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S18909C8D1Ev,_ZTv0_n64_N8S18909C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S18909C8D0Ev,_ZTv0_n64_N8S18909C8D0Ev),
  (VTBL_ENTRY)&_ZN8S18909C93v41Ev,
  (VTBL_ENTRY)&_ZN8S18909C93v42Ev,
  (VTBL_ENTRY)&_ZN8S18909C93v43Ev,
  ABISELECT(-96,-56),
  0,
  0,
  0,
  0,
  ABISELECT(304,188),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S18909C8[0]),
  (VTBL_ENTRY)&_ZN8S18909C53v13Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v14Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v15Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v16Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v17Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v18Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v19Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v20Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v21Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v28Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v29Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v30Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v31Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S18909C8D1Ev,_ZTv0_n72_N8S18909C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S18909C8D0Ev,_ZTv0_n72_N8S18909C8D0Ev),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-400,-244),
  ABISELECT(-400,-244),
  (VTBL_ENTRY)&(_ZTI8S18909C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18909C8D1Ev,_ZTv0_n12_N8S18909C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18909C8D0Ev,_ZTv0_n12_N8S18909C8D0Ev),
  (VTBL_ENTRY)&_ZN8S18909C73v22Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v23Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v24Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v25Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v26Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v27Ev,
  0,
  0,
  0,
  ABISELECT(-456,-280),
  ABISELECT(-456,-280),
  (VTBL_ENTRY)&(_ZTI8S18909C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18909C8D1Ev,_ZTv0_n12_N8S18909C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18909C8D0Ev,_ZTv0_n12_N8S18909C8D0Ev),
  (VTBL_ENTRY)&_ZN8S18909C73v22Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v23Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v24Ev,
};
extern VTBL_ENTRY _ZTV8S18909C8[];
extern void _ZN8S18909C53v13Ev();
extern void _ZN8S18909C53v14Ev();
extern void _ZN8S18909C53v15Ev();
extern void _ZN8S18909C53v16Ev();
extern void _ZN8S18909C53v17Ev();
extern void _ZN8S18909C53v18Ev();
extern void _ZN8S18909C53v19Ev();
extern void _ZN8S18909C53v20Ev();
extern void _ZN8S18909C53v21Ev();
extern void _ZN8S18909C9D1Ev();
extern void _ZN8S18909C9D0Ev();
extern void _ZN8S18909C93v41Ev();
extern void _ZN8S18909C93v42Ev();
extern void _ZN8S18909C93v43Ev();
static  VTBL_ENTRY _tg__ZTV8S18909C9__8S18909C8[] = {
  ABISELECT(376,228),
  ABISELECT(320,192),
  0,
  ABISELECT(16,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S18909C9[0]),
  (VTBL_ENTRY)&_ZN8S18909C53v13Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v14Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v15Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v16Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v17Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v18Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v19Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v20Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v21Ev,
  (VTBL_ENTRY)&_ZN8S18909C9D1Ev,
  (VTBL_ENTRY)&_ZN8S18909C9D0Ev,
  (VTBL_ENTRY)&_ZN8S18909C93v41Ev,
  (VTBL_ENTRY)&_ZN8S18909C93v42Ev,
  (VTBL_ENTRY)&_ZN8S18909C93v43Ev,
};
extern void _ZN8S18909C53v13Ev();
extern void _ZN8S18909C53v14Ev();
extern void _ZN8S18909C53v15Ev();
extern void _ZN8S18909C53v16Ev();
extern void _ZN8S18909C53v17Ev();
extern void _ZN8S18909C53v18Ev();
extern void _ZN8S18909C53v19Ev();
extern void _ZN8S18909C53v20Ev();
extern void _ZN8S18909C53v21Ev();
extern void _ZN8S18909C43v28Ev();
extern void _ZN8S18909C43v29Ev();
extern void _ZN8S18909C43v30Ev();
extern void _ZN8S18909C43v31Ev();
extern void ABISELECT(_ZTv0_n144_N8S18909C9D1Ev,_ZTv0_n72_N8S18909C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S18909C9D1Ev,_ZThn4_N8S18909C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N8S18909C9D0Ev,_ZTv0_n72_N8S18909C9D0Ev)();
extern void ABISELECT(_ZThn16_N8S18909C9D0Ev,_ZThn4_N8S18909C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S18909C4__8S18909C9__8S18909C8[] = {
  ABISELECT(-16,-4),
  0,
  0,
  0,
  0,
  ABISELECT(304,188),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S18909C9[0]),
  (VTBL_ENTRY)&_ZN8S18909C53v13Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v14Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v15Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v16Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v17Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v18Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v19Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v20Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v21Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v28Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v29Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v30Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v31Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S18909C9D1Ev,_ZTv0_n72_N8S18909C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S18909C9D0Ev,_ZTv0_n72_N8S18909C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S18909C9D1Ev,_ZTv0_n12_N8S18909C9D1Ev)();
extern void ABISELECT(_ZThn320_N8S18909C9D1Ev,_ZThn192_N8S18909C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S18909C9D0Ev,_ZTv0_n12_N8S18909C9D0Ev)();
extern void ABISELECT(_ZThn320_N8S18909C9D0Ev,_ZThn192_N8S18909C9D0Ev)() __attribute__((weak));
extern void _ZN8S18909C73v22Ev();
extern void _ZN8S18909C73v23Ev();
extern void _ZN8S18909C73v24Ev();
extern void _ZN8S18909C63v25Ev();
extern void _ZN8S18909C63v26Ev();
extern void _ZN8S18909C63v27Ev();
static  VTBL_ENTRY _tg__ZTV8S18909C6__8S18909C9__8S18909C8[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-320,-192),
  ABISELECT(-320,-192),
  (VTBL_ENTRY)&(_ZTI8S18909C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18909C9D1Ev,_ZTv0_n12_N8S18909C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18909C9D0Ev,_ZTv0_n12_N8S18909C9D0Ev),
  (VTBL_ENTRY)&_ZN8S18909C73v22Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v23Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v24Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v25Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v26Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v27Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S18909C9D1Ev,_ZTv0_n12_N8S18909C9D1Ev)();
extern void ABISELECT(_ZThn376_N8S18909C9D1Ev,_ZThn228_N8S18909C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S18909C9D0Ev,_ZTv0_n12_N8S18909C9D0Ev)();
extern void ABISELECT(_ZThn376_N8S18909C9D0Ev,_ZThn228_N8S18909C9D0Ev)() __attribute__((weak));
extern void _ZN8S18909C73v22Ev();
extern void _ZN8S18909C73v23Ev();
extern void _ZN8S18909C73v24Ev();
static  VTBL_ENTRY _tg__ZTV8S18909C7__A1__8S18909C9__8S18909C8[] = {
  0,
  0,
  0,
  ABISELECT(-376,-228),
  ABISELECT(-376,-228),
  (VTBL_ENTRY)&(_ZTI8S18909C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18909C9D1Ev,_ZTv0_n12_N8S18909C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18909C9D0Ev,_ZTv0_n12_N8S18909C9D0Ev),
  (VTBL_ENTRY)&_ZN8S18909C73v22Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v23Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v24Ev,
};
extern void _ZN8S18909C53v13Ev();
extern void _ZN8S18909C53v14Ev();
extern void _ZN8S18909C53v15Ev();
extern void _ZN8S18909C53v16Ev();
extern void _ZN8S18909C53v17Ev();
extern void _ZN8S18909C53v18Ev();
extern void _ZN8S18909C53v19Ev();
extern void _ZN8S18909C53v20Ev();
extern void _ZN8S18909C53v21Ev();
extern void _ZN8S18909C43v28Ev();
extern void _ZN8S18909C43v29Ev();
extern void _ZN8S18909C43v30Ev();
extern void _ZN8S18909C43v31Ev();
extern void _ZN8S18909C4D1Ev();
extern void _ZN8S18909C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S18909C4__8S18909C8[] = {
  ABISELECT(304,188),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S18909C4[0]),
  (VTBL_ENTRY)&_ZN8S18909C53v13Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v14Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v15Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v16Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v17Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v18Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v19Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v20Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v21Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v28Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v29Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v30Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v31Ev,
  (VTBL_ENTRY)&_ZN8S18909C4D1Ev,
  (VTBL_ENTRY)&_ZN8S18909C4D0Ev,
};
extern void _ZN8S18909C53v13Ev();
extern void _ZN8S18909C53v14Ev();
extern void _ZN8S18909C53v15Ev();
extern void _ZN8S18909C53v16Ev();
extern void _ZN8S18909C53v17Ev();
extern void _ZN8S18909C53v18Ev();
extern void _ZN8S18909C53v19Ev();
extern void _ZN8S18909C53v20Ev();
extern void _ZN8S18909C53v21Ev();
static  VTBL_ENTRY _tg__ZTV8S18909C5__8S18909C4__8S18909C8[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI8S18909C4[0]),
  (VTBL_ENTRY)&_ZN8S18909C53v13Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v14Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v15Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v16Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v17Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v18Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v19Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v20Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v21Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S18909C4D1Ev,_ZTv0_n12_N8S18909C4D1Ev)();
extern void ABISELECT(_ZThn304_N8S18909C4D1Ev,_ZThn188_N8S18909C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S18909C4D0Ev,_ZTv0_n12_N8S18909C4D0Ev)();
extern void ABISELECT(_ZThn304_N8S18909C4D0Ev,_ZThn188_N8S18909C4D0Ev)() __attribute__((weak));
extern void _ZN8S18909C73v22Ev();
extern void _ZN8S18909C73v23Ev();
extern void _ZN8S18909C73v24Ev();
extern void _ZN8S18909C63v25Ev();
extern void _ZN8S18909C63v26Ev();
extern void _ZN8S18909C63v27Ev();
static  VTBL_ENTRY _tg__ZTV8S18909C6__8S18909C4__8S18909C8[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-304,-188),
  ABISELECT(-304,-188),
  (VTBL_ENTRY)&(_ZTI8S18909C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18909C4D1Ev,_ZTv0_n12_N8S18909C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18909C4D0Ev,_ZTv0_n12_N8S18909C4D0Ev),
  (VTBL_ENTRY)&_ZN8S18909C73v22Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v23Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v24Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v25Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v26Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v27Ev,
};
static  VTT_ENTRY vtt_S18909C8[] = {
  {&(_ZTV8S18909C8[7]),  7,114},
  {&(_ZTV8S18909C8[39]),  39,114},
  {&(_ZTV8S18909C8[71]),  71,114},
  {&(_ZTV8S18909C8[39]),  39,114},
  {&(_ZTV8S18909C8[95]),  95,114},
  {&(_ZTV8S18909C8[109]),  109,114},
  {&(_tg__ZTV8S18909C9__8S18909C8[15]),  15,29},
  {&(_tg__ZTV8S18909C4__8S18909C9__8S18909C8[18]),  18,33},
  {&(_tg__ZTV8S18909C9__8S18909C8[15]),  15,29},
  {&(_tg__ZTV8S18909C6__8S18909C9__8S18909C8[9]),  9,17},
  {&(_tg__ZTV8S18909C7__A1__8S18909C9__8S18909C8[6]),  6,11},
  {&(_tg__ZTV8S18909C4__8S18909C8[13]),  13,28},
  {&(_tg__ZTV8S18909C5__8S18909C4__8S18909C8[11]),  11,20},
  {&(_tg__ZTV8S18909C6__8S18909C4__8S18909C8[9]),  9,17},
};
extern VTBL_ENTRY _ZTI8S18909C8[];
extern  VTBL_ENTRY _ZTV8S18909C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18909C8[];
static VTBL_ENTRY alt_thunk_names20[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S18909C4D0Ev,_ZTv0_n12_N8S18909C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S18909C4D0Ev,_ZThn188_N8S18909C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S18909C4D1Ev,_ZTv0_n12_N8S18909C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S18909C4D1Ev,_ZThn188_N8S18909C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S18909C9D0Ev,_ZTv0_n12_N8S18909C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn376_N8S18909C9D0Ev,_ZThn228_N8S18909C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S18909C9D0Ev,_ZThn192_N8S18909C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S18909C9D1Ev,_ZTv0_n12_N8S18909C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn376_N8S18909C9D1Ev,_ZThn228_N8S18909C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S18909C9D1Ev,_ZThn192_N8S18909C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S18909C9D0Ev,_ZTv0_n72_N8S18909C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S18909C9D0Ev,_ZThn4_N8S18909C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S18909C9D1Ev,_ZTv0_n72_N8S18909C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S18909C9D1Ev,_ZThn4_N8S18909C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S18909C8D0Ev,_ZTv0_n12_N8S18909C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N8S18909C8D0Ev,_ZThn280_N8S18909C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S18909C8D0Ev,_ZThn244_N8S18909C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S18909C8D1Ev,_ZTv0_n12_N8S18909C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N8S18909C8D1Ev,_ZThn280_N8S18909C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S18909C8D1Ev,_ZThn244_N8S18909C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S18909C8D0Ev,_ZTv0_n72_N8S18909C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S18909C8D0Ev,_ZThn56_N8S18909C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S18909C8D1Ev,_ZTv0_n72_N8S18909C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S18909C8D1Ev,_ZThn56_N8S18909C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S18909C8D0Ev,_ZTv0_n64_N8S18909C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S18909C8D0Ev,_ZThn52_N8S18909C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N8S18909C8D1Ev,_ZTv0_n64_N8S18909C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S18909C8D1Ev,_ZThn52_N8S18909C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S18909C8 = {  "S18909C8", // class name
  bases_S18909C8, 7,
  &(vtc_S18909C8[0]), // expected_vtbl_contents
  &(vtt_S18909C8[0]), // expected_vtt_contents
  ABISELECT(480,296), // object size
  NSPAIRA(_ZTI8S18909C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S18909C8),114, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S18909C8),14, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names20,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18909C2  : virtual S18909C3 , virtual S18909C8 {
  virtual  ~S18909C2(); // _ZN8S18909C2D2Ev
  virtual void  v4(); // _ZN8S18909C22v4Ev
  virtual void  v5(); // _ZN8S18909C22v5Ev
  virtual void  v6(); // _ZN8S18909C22v6Ev
  virtual void  v7(); // _ZN8S18909C22v7Ev
  virtual void  v8(); // _ZN8S18909C22v8Ev
  virtual void  v9(); // _ZN8S18909C22v9Ev
  virtual void  v10(); // _ZN8S18909C23v10Ev
  virtual void  v11(); // _ZN8S18909C23v11Ev
  virtual void  v12(); // _ZN8S18909C23v12Ev
  S18909C2(); // tgen
};
//SIG(-1 S18909C2) C1{ VBC2{ BC3{ VBC4{ v10 v11 v12 v13 v14 v15 v16 v17 v18} VBC5{ BC6{ vd v19 v20 v21 Fi FL} vd v22 v23 v24 Fi FC6} v25 v26 v27 v28 FC5[3] Fi Fp[8] Fi FD[3]} BC5 vd v29 v30 v31 v32 v33 v34 v35 v36 v37 Fi} VBC7{ VBC8{ VBC3 VBC6 vd v38 v39 v40} BC9{ vd v41 v42 v43 v44 v45 FC5 Fi} vd v46 v47 v48 v49 v50 v51 FL} vd v1 v2 v3 v4 v5 v6 v7 v8 v9}


 S18909C2 ::~S18909C2(){ note_dtor("S18909C2", this);}
void  S18909C2 ::v4(){vfunc_called(this, "_ZN8S18909C22v4Ev");}
void  S18909C2 ::v5(){vfunc_called(this, "_ZN8S18909C22v5Ev");}
void  S18909C2 ::v6(){vfunc_called(this, "_ZN8S18909C22v6Ev");}
void  S18909C2 ::v7(){vfunc_called(this, "_ZN8S18909C22v7Ev");}
void  S18909C2 ::v8(){vfunc_called(this, "_ZN8S18909C22v8Ev");}
void  S18909C2 ::v9(){vfunc_called(this, "_ZN8S18909C22v9Ev");}
void  S18909C2 ::v10(){vfunc_called(this, "_ZN8S18909C23v10Ev");}
void  S18909C2 ::v11(){vfunc_called(this, "_ZN8S18909C23v11Ev");}
void  S18909C2 ::v12(){vfunc_called(this, "_ZN8S18909C23v12Ev");}
S18909C2 ::S18909C2(){ note_ctor("S18909C2", this);} // tgen

static void Test_S18909C2()
{
  extern Class_Descriptor cd_S18909C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(55,132)];
    init_test(&cd_S18909C2, buf);
    S18909C2 *dp, &lv = *(dp=new (buf) S18909C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(864,524), "sizeof(S18909C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18909C2)");
    check_base_class_offset(lv, (S18909C5*)(S18909C4*)(S18909C3*), ABISELECT(16,4), "S18909C2");
    /*is_ambiguous_... S18909C2::S18909C4 */ AMB_check_base_class_offset(lv, (S18909C5*)(S18909C4*), ABISELECT(16,4), "S18909C2");
    /*is_ambiguous_... S18909C2::S18909C6 */ AMB_check_base_class_offset(lv, (S18909C7*)(S18909C6*), ABISELECT(384,232), "S18909C2");
    check_base_class_offset(lv, (S18909C6*)(S18909C4*)(S18909C3*), ABISELECT(384,232), "S18909C2");
    /*is_ambiguous_... S18909C2::S18909C4 */ AMB_check_base_class_offset(lv, (S18909C6*)(S18909C4*), ABISELECT(384,232), "S18909C2");
    check_base_class_offset(lv, (S18909C4*)(S18909C3*), ABISELECT(16,4), "S18909C2");
    /*is_ambiguous_... S18909C3::S18909C6 */ AMB_check_base_class_offset(lv, (S18909C7*)(S18909C6*)(S18909C3*), ABISELECT(320,192), "S18909C2");
    /*is_ambiguous_... S18909C3::S18909C6 */ AMB_check_base_class_offset(lv, (S18909C6*)(S18909C3*), ABISELECT(320,192), "S18909C2");
    check_base_class_offset(lv, (S18909C3*), ABISELECT(16,4), "S18909C2");
    check_base_class_offset(lv, (S18909C4*)(S18909C9*), ABISELECT(528,320), "S18909C2");
    /*is_ambiguous_... S18909C9::S18909C7 */ AMB_check_base_class_offset(lv, (S18909C7*)(S18909C9*), ABISELECT(832,508), "S18909C2");
    check_base_class_offset(lv, (S18909C9*)(S18909C8*), 0, "S18909C2");
    check_base_class_offset(lv, (S18909C10*)(S18909C8*), ABISELECT(440,268), "S18909C2");
    check_base_class_offset(lv, (S18909C8*), ABISELECT(440,268), "S18909C2");
    test_class_info(&lv, &cd_S18909C2);
    dp->~S18909C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18909C2(Test_S18909C2, "S18909C2", ABISELECT(864,524));

#else // __cplusplus

extern void _ZN8S18909C2C1Ev();
extern void _ZN8S18909C2D2Ev();
Name_Map name_map_S18909C2[] = {
  NSPAIR(_ZN8S18909C2C1Ev),
  NSPAIR(_ZN8S18909C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S18909C5;
extern VTBL_ENTRY _ZTI8S18909C5[];
extern  VTBL_ENTRY _ZTV8S18909C5[];
extern Class_Descriptor cd_S18909C7;
extern VTBL_ENTRY _ZTI8S18909C7[];
extern  VTBL_ENTRY _ZTV8S18909C7[];
extern Class_Descriptor cd_S18909C6;
extern VTBL_ENTRY _ZTI8S18909C6[];
extern  VTBL_ENTRY _ZTV8S18909C6[];
extern Class_Descriptor cd_S18909C4;
extern VTBL_ENTRY _ZTI8S18909C4[];
extern  VTBL_ENTRY _ZTV8S18909C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18909C4[];
extern Class_Descriptor cd_S18909C7;
extern VTBL_ENTRY _ZTI8S18909C7[];
extern  VTBL_ENTRY _ZTV8S18909C7[];
extern Class_Descriptor cd_S18909C6;
extern VTBL_ENTRY _ZTI8S18909C6[];
extern  VTBL_ENTRY _ZTV8S18909C6[];
extern Class_Descriptor cd_S18909C3;
extern VTBL_ENTRY _ZTI8S18909C3[];
extern  VTBL_ENTRY _ZTV8S18909C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18909C3[];
extern Class_Descriptor cd_S18909C4;
extern VTBL_ENTRY _ZTI8S18909C4[];
extern  VTBL_ENTRY _ZTV8S18909C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18909C4[];
extern Class_Descriptor cd_S18909C7;
extern VTBL_ENTRY _ZTI8S18909C7[];
extern  VTBL_ENTRY _ZTV8S18909C7[];
extern Class_Descriptor cd_S18909C9;
extern VTBL_ENTRY _ZTI8S18909C9[];
extern  VTBL_ENTRY _ZTV8S18909C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18909C9[];
extern Class_Descriptor cd_S18909C10;
extern VTBL_ENTRY _ZTI9S18909C10[];
extern  VTBL_ENTRY _ZTV9S18909C10[];
extern Class_Descriptor cd_S18909C8;
extern VTBL_ENTRY _ZTI8S18909C8[];
extern  VTBL_ENTRY _ZTV8S18909C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18909C8[];
static Base_Class bases_S18909C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18909C5,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S18909C7,    ABISELECT(384,232), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S18909C6,    ABISELECT(384,232), //bcp->offset
    112, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S18909C4,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S18909C7,    ABISELECT(320,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S18909C6,    ABISELECT(320,192), //bcp->offset
    102, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S18909C3,    ABISELECT(16,4), //bcp->offset
    45, //bcp->virtual_function_table_offset
    33, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S18909C4,    ABISELECT(528,320), //bcp->offset
    161, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S18909C7,    ABISELECT(832,508), //bcp->offset
    194, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S18909C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    19, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S18909C10,    ABISELECT(440,268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S18909C8,    ABISELECT(440,268), //bcp->offset
    129, //bcp->virtual_function_table_offset
    19, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S18909C2[];
extern void _ZN8S18909C53v13Ev();
extern void _ZN8S18909C53v14Ev();
extern void _ZN8S18909C53v15Ev();
extern void _ZN8S18909C53v16Ev();
extern void _ZN8S18909C53v17Ev();
extern void _ZN8S18909C53v18Ev();
extern void _ZN8S18909C53v19Ev();
extern void _ZN8S18909C53v20Ev();
extern void _ZN8S18909C53v21Ev();
extern void _ZN8S18909C2D1Ev();
extern void _ZN8S18909C2D0Ev();
extern void _ZN8S18909C93v41Ev();
extern void _ZN8S18909C93v42Ev();
extern void _ZN8S18909C93v43Ev();
extern void _ZN8S18909C22v4Ev();
extern void _ZN8S18909C22v5Ev();
extern void _ZN8S18909C22v6Ev();
extern void _ZN8S18909C22v7Ev();
extern void _ZN8S18909C22v8Ev();
extern void _ZN8S18909C22v9Ev();
extern void _ZN8S18909C23v10Ev();
extern void _ZN8S18909C23v11Ev();
extern void _ZN8S18909C23v12Ev();
extern void _ZN8S18909C53v13Ev();
extern void _ZN8S18909C53v14Ev();
extern void _ZN8S18909C53v15Ev();
extern void _ZN8S18909C53v16Ev();
extern void _ZN8S18909C53v17Ev();
extern void _ZN8S18909C53v18Ev();
extern void _ZN8S18909C53v19Ev();
extern void _ZN8S18909C53v20Ev();
extern void _ZN8S18909C53v21Ev();
extern void _ZN8S18909C43v28Ev();
extern void _ZN8S18909C43v29Ev();
extern void _ZN8S18909C43v30Ev();
extern void _ZN8S18909C43v31Ev();
extern void ABISELECT(_ZTv0_n144_N8S18909C2D1Ev,_ZTv0_n72_N8S18909C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S18909C2D1Ev,_ZThn4_N8S18909C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N8S18909C2D0Ev,_ZTv0_n72_N8S18909C2D0Ev)();
extern void ABISELECT(_ZThn16_N8S18909C2D0Ev,_ZThn4_N8S18909C2D0Ev)() __attribute__((weak));
extern void _ZN8S18909C33v32Ev();
extern void _ZN8S18909C33v33Ev();
extern void _ZN8S18909C33v34Ev();
extern void _ZN8S18909C33v35Ev();
extern void _ZN8S18909C33v36Ev();
extern void _ZN8S18909C33v37Ev();
extern void _ZN8S18909C33v38Ev();
extern void _ZN8S18909C33v39Ev();
extern void _ZN8S18909C33v40Ev();
extern void ABISELECT(_ZTvn304_n144_N8S18909C2D1Ev,_ZTvn188_n72_N8S18909C2D1Ev)();
extern void ABISELECT(_ZTvn304_n144_N8S18909C2D0Ev,_ZTvn188_n72_N8S18909C2D0Ev)();
extern void _ZN8S18909C73v22Ev();
extern void _ZN8S18909C73v23Ev();
extern void _ZN8S18909C73v24Ev();
extern void _ZN8S18909C63v25Ev();
extern void _ZN8S18909C63v26Ev();
extern void _ZN8S18909C63v27Ev();
extern void ABISELECT(_ZTv0_n24_N8S18909C2D1Ev,_ZTv0_n12_N8S18909C2D1Ev)();
extern void ABISELECT(_ZThn384_N8S18909C2D1Ev,_ZThn232_N8S18909C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S18909C2D0Ev,_ZTv0_n12_N8S18909C2D0Ev)();
extern void ABISELECT(_ZThn384_N8S18909C2D0Ev,_ZThn232_N8S18909C2D0Ev)() __attribute__((weak));
extern void _ZN8S18909C73v22Ev();
extern void _ZN8S18909C73v23Ev();
extern void _ZN8S18909C73v24Ev();
extern void _ZN8S18909C63v25Ev();
extern void _ZN8S18909C63v26Ev();
extern void _ZN8S18909C63v27Ev();
extern void ABISELECT(_ZTv0_n64_N8S18909C2D1Ev,_ZTv0_n32_N8S18909C2D1Ev)();
extern void ABISELECT(_ZThn440_N8S18909C2D1Ev,_ZThn268_N8S18909C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S18909C2D0Ev,_ZTv0_n32_N8S18909C2D0Ev)();
extern void ABISELECT(_ZThn440_N8S18909C2D0Ev,_ZThn268_N8S18909C2D0Ev)() __attribute__((weak));
extern void _ZN9S18909C103v44Ev();
extern void _ZN9S18909C103v45Ev();
extern void _ZN9S18909C103v46Ev();
extern void _ZN9S18909C103v47Ev();
extern void _ZN9S18909C103v48Ev();
extern void _ZN8S18909C83v49Ev();
extern void _ZN8S18909C83v50Ev();
extern void _ZN8S18909C83v51Ev();
extern void _ZN8S18909C83v52Ev();
extern void _ZN8S18909C83v53Ev();
extern void _ZN8S18909C83v54Ev();
extern void _ZN8S18909C53v13Ev();
extern void _ZN8S18909C53v14Ev();
extern void _ZN8S18909C53v15Ev();
extern void _ZN8S18909C53v16Ev();
extern void _ZN8S18909C53v17Ev();
extern void _ZN8S18909C53v18Ev();
extern void _ZN8S18909C53v19Ev();
extern void _ZN8S18909C53v20Ev();
extern void _ZN8S18909C53v21Ev();
extern void _ZN8S18909C43v28Ev();
extern void _ZN8S18909C43v29Ev();
extern void _ZN8S18909C43v30Ev();
extern void _ZN8S18909C43v31Ev();
extern void ABISELECT(_ZTv0_n144_N8S18909C2D1Ev,_ZTv0_n72_N8S18909C2D1Ev)();
extern void ABISELECT(_ZThn528_N8S18909C2D1Ev,_ZThn320_N8S18909C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N8S18909C2D0Ev,_ZTv0_n72_N8S18909C2D0Ev)();
extern void ABISELECT(_ZThn528_N8S18909C2D0Ev,_ZThn320_N8S18909C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S18909C2D1Ev,_ZTv0_n12_N8S18909C2D1Ev)();
extern void ABISELECT(_ZThn832_N8S18909C2D1Ev,_ZThn508_N8S18909C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S18909C2D0Ev,_ZTv0_n12_N8S18909C2D0Ev)();
extern void ABISELECT(_ZThn832_N8S18909C2D0Ev,_ZThn508_N8S18909C2D0Ev)() __attribute__((weak));
extern void _ZN8S18909C73v22Ev();
extern void _ZN8S18909C73v23Ev();
extern void _ZN8S18909C73v24Ev();
static  VTBL_ENTRY vtc_S18909C2[] = {
  0,
  ABISELECT(440,268),
  ABISELECT(16,4),
  0,
  0,
  0,
  0,
  ABISELECT(832,508),
  ABISELECT(384,232),
  ABISELECT(16,4),
  ABISELECT(528,320),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S18909C2[0]),
  (VTBL_ENTRY)&_ZN8S18909C53v13Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v14Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v15Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v16Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v17Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v18Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v19Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v20Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v21Ev,
  (VTBL_ENTRY)&_ZN8S18909C2D1Ev,
  (VTBL_ENTRY)&_ZN8S18909C2D0Ev,
  (VTBL_ENTRY)&_ZN8S18909C93v41Ev,
  (VTBL_ENTRY)&_ZN8S18909C93v42Ev,
  (VTBL_ENTRY)&_ZN8S18909C93v43Ev,
  (VTBL_ENTRY)&_ZN8S18909C22v4Ev,
  (VTBL_ENTRY)&_ZN8S18909C22v5Ev,
  (VTBL_ENTRY)&_ZN8S18909C22v6Ev,
  (VTBL_ENTRY)&_ZN8S18909C22v7Ev,
  (VTBL_ENTRY)&_ZN8S18909C22v8Ev,
  (VTBL_ENTRY)&_ZN8S18909C22v9Ev,
  (VTBL_ENTRY)&_ZN8S18909C23v10Ev,
  (VTBL_ENTRY)&_ZN8S18909C23v11Ev,
  (VTBL_ENTRY)&_ZN8S18909C23v12Ev,
  ABISELECT(304,188),
  ABISELECT(304,188),
  ABISELECT(304,188),
  ABISELECT(304,188),
  ABISELECT(304,188),
  ABISELECT(304,188),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-4),
  0,
  0,
  0,
  0,
  ABISELECT(368,228),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S18909C2[0]),
  (VTBL_ENTRY)&_ZN8S18909C53v13Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v14Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v15Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v16Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v17Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v18Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v19Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v20Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v21Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v28Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v29Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v30Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v31Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S18909C2D1Ev,_ZTv0_n72_N8S18909C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S18909C2D0Ev,_ZTv0_n72_N8S18909C2D0Ev),
  (VTBL_ENTRY)&_ZN8S18909C33v32Ev,
  (VTBL_ENTRY)&_ZN8S18909C33v33Ev,
  (VTBL_ENTRY)&_ZN8S18909C33v34Ev,
  (VTBL_ENTRY)&_ZN8S18909C33v35Ev,
  (VTBL_ENTRY)&_ZN8S18909C33v36Ev,
  (VTBL_ENTRY)&_ZN8S18909C33v37Ev,
  (VTBL_ENTRY)&_ZN8S18909C33v38Ev,
  (VTBL_ENTRY)&_ZN8S18909C33v39Ev,
  (VTBL_ENTRY)&_ZN8S18909C33v40Ev,
  ABISELECT(-320,-192),
  (VTBL_ENTRY)&(_ZTI8S18909C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn304_n144_N8S18909C2D1Ev,_ZTvn188_n72_N8S18909C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn304_n144_N8S18909C2D0Ev,_ZTvn188_n72_N8S18909C2D0Ev),
  (VTBL_ENTRY)&_ZN8S18909C73v22Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v23Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v24Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v25Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v26Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v27Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-384,-232),
  ABISELECT(-384,-232),
  (VTBL_ENTRY)&(_ZTI8S18909C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18909C2D1Ev,_ZTv0_n12_N8S18909C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18909C2D0Ev,_ZTv0_n12_N8S18909C2D0Ev),
  (VTBL_ENTRY)&_ZN8S18909C73v22Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v23Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v24Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v25Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v26Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v27Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-440,-268),
  ABISELECT(392,240),
  ABISELECT(-56,-36),
  ABISELECT(-424,-264),
  ABISELECT(88,52),
  ABISELECT(-440,-268),
  ABISELECT(-440,-268),
  (VTBL_ENTRY)&(_ZTI8S18909C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S18909C2D1Ev,_ZTv0_n32_N8S18909C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S18909C2D0Ev,_ZTv0_n32_N8S18909C2D0Ev),
  (VTBL_ENTRY)&_ZN9S18909C103v44Ev,
  (VTBL_ENTRY)&_ZN9S18909C103v45Ev,
  (VTBL_ENTRY)&_ZN9S18909C103v46Ev,
  (VTBL_ENTRY)&_ZN9S18909C103v47Ev,
  (VTBL_ENTRY)&_ZN9S18909C103v48Ev,
  (VTBL_ENTRY)&_ZN8S18909C83v49Ev,
  (VTBL_ENTRY)&_ZN8S18909C83v50Ev,
  (VTBL_ENTRY)&_ZN8S18909C83v51Ev,
  (VTBL_ENTRY)&_ZN8S18909C83v52Ev,
  (VTBL_ENTRY)&_ZN8S18909C83v53Ev,
  (VTBL_ENTRY)&_ZN8S18909C83v54Ev,
  ABISELECT(-528,-320),
  0,
  0,
  0,
  0,
  ABISELECT(-144,-88),
  ABISELECT(-512,-316),
  ABISELECT(-512,-316),
  ABISELECT(-512,-316),
  ABISELECT(-512,-316),
  ABISELECT(-512,-316),
  ABISELECT(-512,-316),
  ABISELECT(-512,-316),
  ABISELECT(-512,-316),
  ABISELECT(-512,-316),
  ABISELECT(-512,-316),
  ABISELECT(-528,-320),
  (VTBL_ENTRY)&(_ZTI8S18909C2[0]),
  (VTBL_ENTRY)&_ZN8S18909C53v13Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v14Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v15Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v16Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v17Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v18Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v19Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v20Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v21Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v28Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v29Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v30Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v31Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S18909C2D1Ev,_ZTv0_n72_N8S18909C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S18909C2D0Ev,_ZTv0_n72_N8S18909C2D0Ev),
  0,
  0,
  0,
  ABISELECT(-832,-508),
  ABISELECT(-832,-508),
  (VTBL_ENTRY)&(_ZTI8S18909C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18909C2D1Ev,_ZTv0_n12_N8S18909C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18909C2D0Ev,_ZTv0_n12_N8S18909C2D0Ev),
  (VTBL_ENTRY)&_ZN8S18909C73v22Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v23Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v24Ev,
};
extern VTBL_ENTRY _ZTV8S18909C2[];
extern void _ZN8S18909C53v13Ev();
extern void _ZN8S18909C53v14Ev();
extern void _ZN8S18909C53v15Ev();
extern void _ZN8S18909C53v16Ev();
extern void _ZN8S18909C53v17Ev();
extern void _ZN8S18909C53v18Ev();
extern void _ZN8S18909C53v19Ev();
extern void _ZN8S18909C53v20Ev();
extern void _ZN8S18909C53v21Ev();
extern void _ZN8S18909C43v28Ev();
extern void _ZN8S18909C43v29Ev();
extern void _ZN8S18909C43v30Ev();
extern void _ZN8S18909C43v31Ev();
extern void _ZN8S18909C3D1Ev();
extern void _ZN8S18909C3D0Ev();
extern void _ZN8S18909C33v32Ev();
extern void _ZN8S18909C33v33Ev();
extern void _ZN8S18909C33v34Ev();
extern void _ZN8S18909C33v35Ev();
extern void _ZN8S18909C33v36Ev();
extern void _ZN8S18909C33v37Ev();
extern void _ZN8S18909C33v38Ev();
extern void _ZN8S18909C33v39Ev();
extern void _ZN8S18909C33v40Ev();
static  VTBL_ENTRY _tg__ZTV8S18909C3__8S18909C2[] = {
  ABISELECT(368,228),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S18909C3[0]),
  (VTBL_ENTRY)&_ZN8S18909C53v13Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v14Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v15Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v16Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v17Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v18Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v19Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v20Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v21Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v28Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v29Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v30Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v31Ev,
  (VTBL_ENTRY)&_ZN8S18909C3D1Ev,
  (VTBL_ENTRY)&_ZN8S18909C3D0Ev,
  (VTBL_ENTRY)&_ZN8S18909C33v32Ev,
  (VTBL_ENTRY)&_ZN8S18909C33v33Ev,
  (VTBL_ENTRY)&_ZN8S18909C33v34Ev,
  (VTBL_ENTRY)&_ZN8S18909C33v35Ev,
  (VTBL_ENTRY)&_ZN8S18909C33v36Ev,
  (VTBL_ENTRY)&_ZN8S18909C33v37Ev,
  (VTBL_ENTRY)&_ZN8S18909C33v38Ev,
  (VTBL_ENTRY)&_ZN8S18909C33v39Ev,
  (VTBL_ENTRY)&_ZN8S18909C33v40Ev,
};
extern void _ZN8S18909C53v13Ev();
extern void _ZN8S18909C53v14Ev();
extern void _ZN8S18909C53v15Ev();
extern void _ZN8S18909C53v16Ev();
extern void _ZN8S18909C53v17Ev();
extern void _ZN8S18909C53v18Ev();
extern void _ZN8S18909C53v19Ev();
extern void _ZN8S18909C53v20Ev();
extern void _ZN8S18909C53v21Ev();
extern void _ZN8S18909C43v28Ev();
extern void _ZN8S18909C43v29Ev();
extern void _ZN8S18909C43v30Ev();
extern void _ZN8S18909C43v31Ev();
extern void _ZN8S18909C4D1Ev();
extern void _ZN8S18909C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S18909C48S18909C3__8S18909C2[] = {
  ABISELECT(368,228),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S18909C4[0]),
  (VTBL_ENTRY)&_ZN8S18909C53v13Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v14Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v15Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v16Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v17Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v18Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v19Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v20Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v21Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v28Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v29Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v30Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v31Ev,
  (VTBL_ENTRY)&_ZN8S18909C4D1Ev,
  (VTBL_ENTRY)&_ZN8S18909C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S18909C4D1Ev,_ZTv0_n12_N8S18909C4D1Ev)();
extern void ABISELECT(_ZThn368_N8S18909C4D1Ev,_ZThn228_N8S18909C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S18909C4D0Ev,_ZTv0_n12_N8S18909C4D0Ev)();
extern void ABISELECT(_ZThn368_N8S18909C4D0Ev,_ZThn228_N8S18909C4D0Ev)() __attribute__((weak));
extern void _ZN8S18909C73v22Ev();
extern void _ZN8S18909C73v23Ev();
extern void _ZN8S18909C73v24Ev();
extern void _ZN8S18909C63v25Ev();
extern void _ZN8S18909C63v26Ev();
extern void _ZN8S18909C63v27Ev();
static  VTBL_ENTRY _tg__ZTV8S18909C6__8S18909C48S18909C3__8S18909C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-228),
  ABISELECT(-368,-228),
  (VTBL_ENTRY)&(_ZTI8S18909C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18909C4D1Ev,_ZTv0_n12_N8S18909C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18909C4D0Ev,_ZTv0_n12_N8S18909C4D0Ev),
  (VTBL_ENTRY)&_ZN8S18909C73v22Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v23Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v24Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v25Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v26Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v27Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S18909C3D1Ev,_ZTv0_n12_N8S18909C3D1Ev)();
extern void ABISELECT(_ZThn368_N8S18909C3D1Ev,_ZThn228_N8S18909C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S18909C3D0Ev,_ZTv0_n12_N8S18909C3D0Ev)();
extern void ABISELECT(_ZThn368_N8S18909C3D0Ev,_ZThn228_N8S18909C3D0Ev)() __attribute__((weak));
extern void _ZN8S18909C73v22Ev();
extern void _ZN8S18909C73v23Ev();
extern void _ZN8S18909C73v24Ev();
extern void _ZN8S18909C63v25Ev();
extern void _ZN8S18909C63v26Ev();
extern void _ZN8S18909C63v27Ev();
static  VTBL_ENTRY _tg__ZTV8S18909C6__8S18909C3__8S18909C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-228),
  ABISELECT(-368,-228),
  (VTBL_ENTRY)&(_ZTI8S18909C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18909C3D1Ev,_ZTv0_n12_N8S18909C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18909C3D0Ev,_ZTv0_n12_N8S18909C3D0Ev),
  (VTBL_ENTRY)&_ZN8S18909C73v22Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v23Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v24Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v25Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v26Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v27Ev,
};
extern void _ZN8S18909C8D1Ev();
extern void _ZN8S18909C8D0Ev();
extern void _ZN9S18909C103v44Ev();
extern void _ZN9S18909C103v45Ev();
extern void _ZN9S18909C103v46Ev();
extern void _ZN9S18909C103v47Ev();
extern void _ZN9S18909C103v48Ev();
extern void _ZN8S18909C83v49Ev();
extern void _ZN8S18909C83v50Ev();
extern void _ZN8S18909C83v51Ev();
extern void _ZN8S18909C83v52Ev();
extern void _ZN8S18909C83v53Ev();
extern void _ZN8S18909C83v54Ev();
static  VTBL_ENTRY _tg__ZTV8S18909C8__8S18909C2[] = {
  ABISELECT(392,240),
  ABISELECT(-56,-36),
  ABISELECT(-424,-264),
  ABISELECT(88,52),
  ABISELECT(-440,-268),
  0,
  (VTBL_ENTRY)&(_ZTI8S18909C8[0]),
  (VTBL_ENTRY)&_ZN8S18909C8D1Ev,
  (VTBL_ENTRY)&_ZN8S18909C8D0Ev,
  (VTBL_ENTRY)&_ZN9S18909C103v44Ev,
  (VTBL_ENTRY)&_ZN9S18909C103v45Ev,
  (VTBL_ENTRY)&_ZN9S18909C103v46Ev,
  (VTBL_ENTRY)&_ZN9S18909C103v47Ev,
  (VTBL_ENTRY)&_ZN9S18909C103v48Ev,
  (VTBL_ENTRY)&_ZN8S18909C83v49Ev,
  (VTBL_ENTRY)&_ZN8S18909C83v50Ev,
  (VTBL_ENTRY)&_ZN8S18909C83v51Ev,
  (VTBL_ENTRY)&_ZN8S18909C83v52Ev,
  (VTBL_ENTRY)&_ZN8S18909C83v53Ev,
  (VTBL_ENTRY)&_ZN8S18909C83v54Ev,
};
extern void _ZN8S18909C53v13Ev();
extern void _ZN8S18909C53v14Ev();
extern void _ZN8S18909C53v15Ev();
extern void _ZN8S18909C53v16Ev();
extern void _ZN8S18909C53v17Ev();
extern void _ZN8S18909C53v18Ev();
extern void _ZN8S18909C53v19Ev();
extern void _ZN8S18909C53v20Ev();
extern void _ZN8S18909C53v21Ev();
extern void ABISELECT(_ZTv0_n128_N8S18909C8D1Ev,_ZTv0_n64_N8S18909C8D1Ev)();
extern void ABISELECT(_ZTv0_n128_N8S18909C8D0Ev,_ZTv0_n64_N8S18909C8D0Ev)();
extern void _ZN8S18909C93v41Ev();
extern void _ZN8S18909C93v42Ev();
extern void _ZN8S18909C93v43Ev();
static  VTBL_ENTRY _tg__ZTV8S18909C9__8S18909C8__8S18909C2[] = {
  0,
  0,
  0,
  ABISELECT(440,268),
  ABISELECT(832,508),
  ABISELECT(384,232),
  ABISELECT(16,4),
  ABISELECT(528,320),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(440,268),
  (VTBL_ENTRY)&(_ZTI8S18909C8[0]),
  (VTBL_ENTRY)&_ZN8S18909C53v13Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v14Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v15Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v16Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v17Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v18Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v19Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v20Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v21Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S18909C8D1Ev,_ZTv0_n64_N8S18909C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N8S18909C8D0Ev,_ZTv0_n64_N8S18909C8D0Ev),
  (VTBL_ENTRY)&_ZN8S18909C93v41Ev,
  (VTBL_ENTRY)&_ZN8S18909C93v42Ev,
  (VTBL_ENTRY)&_ZN8S18909C93v43Ev,
};
extern void _ZN8S18909C53v13Ev();
extern void _ZN8S18909C53v14Ev();
extern void _ZN8S18909C53v15Ev();
extern void _ZN8S18909C53v16Ev();
extern void _ZN8S18909C53v17Ev();
extern void _ZN8S18909C53v18Ev();
extern void _ZN8S18909C53v19Ev();
extern void _ZN8S18909C53v20Ev();
extern void _ZN8S18909C53v21Ev();
extern void _ZN8S18909C43v28Ev();
extern void _ZN8S18909C43v29Ev();
extern void _ZN8S18909C43v30Ev();
extern void _ZN8S18909C43v31Ev();
extern void ABISELECT(_ZTv0_n144_N8S18909C8D1Ev,_ZTv0_n72_N8S18909C8D1Ev)();
extern void ABISELECT(_ZThn88_N8S18909C8D1Ev,_ZThn52_N8S18909C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N8S18909C8D0Ev,_ZTv0_n72_N8S18909C8D0Ev)();
extern void ABISELECT(_ZThn88_N8S18909C8D0Ev,_ZThn52_N8S18909C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S18909C4__8S18909C8__8S18909C2[] = {
  ABISELECT(-88,-52),
  0,
  0,
  0,
  0,
  ABISELECT(-144,-88),
  ABISELECT(-512,-316),
  ABISELECT(-512,-316),
  ABISELECT(-512,-316),
  ABISELECT(-512,-316),
  ABISELECT(-512,-316),
  ABISELECT(-512,-316),
  ABISELECT(-512,-316),
  ABISELECT(-512,-316),
  ABISELECT(-512,-316),
  ABISELECT(-512,-316),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S18909C8[0]),
  (VTBL_ENTRY)&_ZN8S18909C53v13Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v14Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v15Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v16Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v17Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v18Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v19Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v20Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v21Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v28Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v29Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v30Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v31Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S18909C8D1Ev,_ZTv0_n72_N8S18909C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S18909C8D0Ev,_ZTv0_n72_N8S18909C8D0Ev),
};
extern void _ZN8S18909C53v13Ev();
extern void _ZN8S18909C53v14Ev();
extern void _ZN8S18909C53v15Ev();
extern void _ZN8S18909C53v16Ev();
extern void _ZN8S18909C53v17Ev();
extern void _ZN8S18909C53v18Ev();
extern void _ZN8S18909C53v19Ev();
extern void _ZN8S18909C53v20Ev();
extern void _ZN8S18909C53v21Ev();
static  VTBL_ENTRY _tg__ZTV8S18909C5__8S18909C8__8S18909C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(424,264),
  (VTBL_ENTRY)&(_ZTI8S18909C8[0]),
  (VTBL_ENTRY)&_ZN8S18909C53v13Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v14Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v15Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v16Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v17Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v18Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v19Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v20Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v21Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S18909C8D1Ev,_ZTv0_n12_N8S18909C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S18909C8D0Ev,_ZTv0_n12_N8S18909C8D0Ev)();
extern void _ZN8S18909C73v22Ev();
extern void _ZN8S18909C73v23Ev();
extern void _ZN8S18909C73v24Ev();
extern void _ZN8S18909C63v25Ev();
extern void _ZN8S18909C63v26Ev();
extern void _ZN8S18909C63v27Ev();
static  VTBL_ENTRY _tg__ZTV8S18909C6__8S18909C8__8S18909C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,36),
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI8S18909C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18909C8D1Ev,_ZTv0_n12_N8S18909C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18909C8D0Ev,_ZTv0_n12_N8S18909C8D0Ev),
  (VTBL_ENTRY)&_ZN8S18909C73v22Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v23Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v24Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v25Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v26Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v27Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S18909C8D1Ev,_ZTv0_n12_N8S18909C8D1Ev)();
extern void ABISELECT(_ZThn392_N8S18909C8D1Ev,_ZThn240_N8S18909C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S18909C8D0Ev,_ZTv0_n12_N8S18909C8D0Ev)();
extern void ABISELECT(_ZThn392_N8S18909C8D0Ev,_ZThn240_N8S18909C8D0Ev)() __attribute__((weak));
extern void _ZN8S18909C73v22Ev();
extern void _ZN8S18909C73v23Ev();
extern void _ZN8S18909C73v24Ev();
static  VTBL_ENTRY _tg__ZTV8S18909C7__A1__8S18909C8__8S18909C2[] = {
  0,
  0,
  0,
  ABISELECT(-392,-240),
  ABISELECT(-392,-240),
  (VTBL_ENTRY)&(_ZTI8S18909C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18909C8D1Ev,_ZTv0_n12_N8S18909C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18909C8D0Ev,_ZTv0_n12_N8S18909C8D0Ev),
  (VTBL_ENTRY)&_ZN8S18909C73v22Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v23Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v24Ev,
};
extern void _ZN8S18909C53v13Ev();
extern void _ZN8S18909C53v14Ev();
extern void _ZN8S18909C53v15Ev();
extern void _ZN8S18909C53v16Ev();
extern void _ZN8S18909C53v17Ev();
extern void _ZN8S18909C53v18Ev();
extern void _ZN8S18909C53v19Ev();
extern void _ZN8S18909C53v20Ev();
extern void _ZN8S18909C53v21Ev();
extern void _ZN8S18909C9D1Ev();
extern void _ZN8S18909C9D0Ev();
extern void _ZN8S18909C93v41Ev();
extern void _ZN8S18909C93v42Ev();
extern void _ZN8S18909C93v43Ev();
static  VTBL_ENTRY _tg__ZTV8S18909C9__8S18909C2[] = {
  ABISELECT(832,508),
  ABISELECT(384,232),
  ABISELECT(16,4),
  ABISELECT(528,320),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S18909C9[0]),
  (VTBL_ENTRY)&_ZN8S18909C53v13Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v14Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v15Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v16Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v17Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v18Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v19Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v20Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v21Ev,
  (VTBL_ENTRY)&_ZN8S18909C9D1Ev,
  (VTBL_ENTRY)&_ZN8S18909C9D0Ev,
  (VTBL_ENTRY)&_ZN8S18909C93v41Ev,
  (VTBL_ENTRY)&_ZN8S18909C93v42Ev,
  (VTBL_ENTRY)&_ZN8S18909C93v43Ev,
};
extern void _ZN8S18909C53v13Ev();
extern void _ZN8S18909C53v14Ev();
extern void _ZN8S18909C53v15Ev();
extern void _ZN8S18909C53v16Ev();
extern void _ZN8S18909C53v17Ev();
extern void _ZN8S18909C53v18Ev();
extern void _ZN8S18909C53v19Ev();
extern void _ZN8S18909C53v20Ev();
extern void _ZN8S18909C53v21Ev();
extern void _ZN8S18909C43v28Ev();
extern void _ZN8S18909C43v29Ev();
extern void _ZN8S18909C43v30Ev();
extern void _ZN8S18909C43v31Ev();
extern void ABISELECT(_ZTv0_n144_N8S18909C9D1Ev,_ZTv0_n72_N8S18909C9D1Ev)();
extern void ABISELECT(_ZThn528_N8S18909C9D1Ev,_ZThn320_N8S18909C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N8S18909C9D0Ev,_ZTv0_n72_N8S18909C9D0Ev)();
extern void ABISELECT(_ZThn528_N8S18909C9D0Ev,_ZThn320_N8S18909C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S18909C4__8S18909C9__8S18909C2[] = {
  ABISELECT(-528,-320),
  0,
  0,
  0,
  0,
  ABISELECT(-144,-88),
  ABISELECT(-512,-316),
  ABISELECT(-512,-316),
  ABISELECT(-512,-316),
  ABISELECT(-512,-316),
  ABISELECT(-512,-316),
  ABISELECT(-512,-316),
  ABISELECT(-512,-316),
  ABISELECT(-512,-316),
  ABISELECT(-512,-316),
  ABISELECT(-512,-316),
  ABISELECT(-528,-320),
  (VTBL_ENTRY)&(_ZTI8S18909C9[0]),
  (VTBL_ENTRY)&_ZN8S18909C53v13Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v14Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v15Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v16Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v17Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v18Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v19Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v20Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v21Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v28Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v29Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v30Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v31Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S18909C9D1Ev,_ZTv0_n72_N8S18909C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S18909C9D0Ev,_ZTv0_n72_N8S18909C9D0Ev),
};
extern void _ZN8S18909C53v13Ev();
extern void _ZN8S18909C53v14Ev();
extern void _ZN8S18909C53v15Ev();
extern void _ZN8S18909C53v16Ev();
extern void _ZN8S18909C53v17Ev();
extern void _ZN8S18909C53v18Ev();
extern void _ZN8S18909C53v19Ev();
extern void _ZN8S18909C53v20Ev();
extern void _ZN8S18909C53v21Ev();
static  VTBL_ENTRY _tg__ZTV8S18909C5__8S18909C9__8S18909C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S18909C9[0]),
  (VTBL_ENTRY)&_ZN8S18909C53v13Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v14Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v15Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v16Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v17Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v18Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v19Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v20Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v21Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S18909C9D1Ev,_ZTv0_n12_N8S18909C9D1Ev)();
extern void ABISELECT(_ZThn384_N8S18909C9D1Ev,_ZThn232_N8S18909C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S18909C9D0Ev,_ZTv0_n12_N8S18909C9D0Ev)();
extern void ABISELECT(_ZThn384_N8S18909C9D0Ev,_ZThn232_N8S18909C9D0Ev)() __attribute__((weak));
extern void _ZN8S18909C73v22Ev();
extern void _ZN8S18909C73v23Ev();
extern void _ZN8S18909C73v24Ev();
extern void _ZN8S18909C63v25Ev();
extern void _ZN8S18909C63v26Ev();
extern void _ZN8S18909C63v27Ev();
static  VTBL_ENTRY _tg__ZTV8S18909C6__8S18909C9__8S18909C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-384,-232),
  ABISELECT(-384,-232),
  (VTBL_ENTRY)&(_ZTI8S18909C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18909C9D1Ev,_ZTv0_n12_N8S18909C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18909C9D0Ev,_ZTv0_n12_N8S18909C9D0Ev),
  (VTBL_ENTRY)&_ZN8S18909C73v22Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v23Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v24Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v25Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v26Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v27Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S18909C9D1Ev,_ZTv0_n12_N8S18909C9D1Ev)();
extern void ABISELECT(_ZThn832_N8S18909C9D1Ev,_ZThn508_N8S18909C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S18909C9D0Ev,_ZTv0_n12_N8S18909C9D0Ev)();
extern void ABISELECT(_ZThn832_N8S18909C9D0Ev,_ZThn508_N8S18909C9D0Ev)() __attribute__((weak));
extern void _ZN8S18909C73v22Ev();
extern void _ZN8S18909C73v23Ev();
extern void _ZN8S18909C73v24Ev();
static  VTBL_ENTRY _tg__ZTV8S18909C7__A1__8S18909C9__8S18909C2[] = {
  0,
  0,
  0,
  ABISELECT(-832,-508),
  ABISELECT(-832,-508),
  (VTBL_ENTRY)&(_ZTI8S18909C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18909C9D1Ev,_ZTv0_n12_N8S18909C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18909C9D0Ev,_ZTv0_n12_N8S18909C9D0Ev),
  (VTBL_ENTRY)&_ZN8S18909C73v22Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v23Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v24Ev,
};
extern void _ZN8S18909C53v13Ev();
extern void _ZN8S18909C53v14Ev();
extern void _ZN8S18909C53v15Ev();
extern void _ZN8S18909C53v16Ev();
extern void _ZN8S18909C53v17Ev();
extern void _ZN8S18909C53v18Ev();
extern void _ZN8S18909C53v19Ev();
extern void _ZN8S18909C53v20Ev();
extern void _ZN8S18909C53v21Ev();
extern void _ZN8S18909C43v28Ev();
extern void _ZN8S18909C43v29Ev();
extern void _ZN8S18909C43v30Ev();
extern void _ZN8S18909C43v31Ev();
extern void _ZN8S18909C4D1Ev();
extern void _ZN8S18909C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S18909C4__A1__8S18909C2[] = {
  ABISELECT(-144,-88),
  ABISELECT(-512,-316),
  ABISELECT(-512,-316),
  ABISELECT(-512,-316),
  ABISELECT(-512,-316),
  ABISELECT(-512,-316),
  ABISELECT(-512,-316),
  ABISELECT(-512,-316),
  ABISELECT(-512,-316),
  ABISELECT(-512,-316),
  ABISELECT(-512,-316),
  0,
  (VTBL_ENTRY)&(_ZTI8S18909C4[0]),
  (VTBL_ENTRY)&_ZN8S18909C53v13Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v14Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v15Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v16Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v17Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v18Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v19Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v20Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v21Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v28Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v29Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v30Ev,
  (VTBL_ENTRY)&_ZN8S18909C43v31Ev,
  (VTBL_ENTRY)&_ZN8S18909C4D1Ev,
  (VTBL_ENTRY)&_ZN8S18909C4D0Ev,
};
extern void _ZN8S18909C53v13Ev();
extern void _ZN8S18909C53v14Ev();
extern void _ZN8S18909C53v15Ev();
extern void _ZN8S18909C53v16Ev();
extern void _ZN8S18909C53v17Ev();
extern void _ZN8S18909C53v18Ev();
extern void _ZN8S18909C53v19Ev();
extern void _ZN8S18909C53v20Ev();
extern void _ZN8S18909C53v21Ev();
static  VTBL_ENTRY _tg__ZTV8S18909C5__8S18909C4__A1__8S18909C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(512,316),
  (VTBL_ENTRY)&(_ZTI8S18909C4[0]),
  (VTBL_ENTRY)&_ZN8S18909C53v13Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v14Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v15Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v16Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v17Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v18Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v19Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v20Ev,
  (VTBL_ENTRY)&_ZN8S18909C53v21Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S18909C4D1Ev,_ZTv0_n12_N8S18909C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S18909C4D0Ev,_ZTv0_n12_N8S18909C4D0Ev)();
extern void _ZN8S18909C73v22Ev();
extern void _ZN8S18909C73v23Ev();
extern void _ZN8S18909C73v24Ev();
extern void _ZN8S18909C63v25Ev();
extern void _ZN8S18909C63v26Ev();
extern void _ZN8S18909C63v27Ev();
static  VTBL_ENTRY _tg__ZTV8S18909C6__8S18909C4__A1__8S18909C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(144,88),
  ABISELECT(144,88),
  (VTBL_ENTRY)&(_ZTI8S18909C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18909C4D1Ev,_ZTv0_n12_N8S18909C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18909C4D0Ev,_ZTv0_n12_N8S18909C4D0Ev),
  (VTBL_ENTRY)&_ZN8S18909C73v22Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v23Ev,
  (VTBL_ENTRY)&_ZN8S18909C73v24Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v25Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v26Ev,
  (VTBL_ENTRY)&_ZN8S18909C63v27Ev,
};
static  VTT_ENTRY vtt_S18909C2[] = {
  {&(_ZTV8S18909C2[22]),  22,205},
  {&(_ZTV8S18909C2[78]),  78,205},
  {&(_ZTV8S18909C2[78]),  78,205},
  {&(_ZTV8S18909C2[121]),  121,205},
  {&(_ZTV8S18909C2[104]),  104,205},
  {&(_ZTV8S18909C2[148]),  148,205},
  {&(_ZTV8S18909C2[22]),  22,205},
  {&(_ZTV8S18909C2[179]),  179,205},
  {&(_ZTV8S18909C2[200]),  200,205},
  {&(_tg__ZTV8S18909C3__8S18909C2[13]),  13,37},
  {&(_tg__ZTV8S18909C48S18909C3__8S18909C2[13]),  13,28},
  {&(_tg__ZTV8S18909C48S18909C3__8S18909C2[13]),  13,28},
  {&(_tg__ZTV8S18909C6__8S18909C48S18909C3__8S18909C2[9]),  9,17},
  {&(_tg__ZTV8S18909C3__8S18909C2[13]),  13,37},
  {&(_tg__ZTV8S18909C6__8S18909C3__8S18909C2[9]),  9,17},
  {&(_tg__ZTV8S18909C8__8S18909C2[7]),  7,20},
  {&(_tg__ZTV8S18909C9__8S18909C8__8S18909C2[19]),  19,33},
  {&(_tg__ZTV8S18909C4__8S18909C8__8S18909C2[18]),  18,33},
  {&(_tg__ZTV8S18909C5__8S18909C8__8S18909C2[11]),  11,20},
  {&(_tg__ZTV8S18909C6__8S18909C8__8S18909C2[9]),  9,17},
  {&(_tg__ZTV8S18909C7__A1__8S18909C8__8S18909C2[6]),  6,11},
  {&(_tg__ZTV8S18909C9__8S18909C2[15]),  15,29},
  {&(_tg__ZTV8S18909C4__8S18909C9__8S18909C2[18]),  18,33},
  {&(_tg__ZTV8S18909C5__8S18909C9__8S18909C2[11]),  11,20},
  {&(_tg__ZTV8S18909C6__8S18909C9__8S18909C2[9]),  9,17},
  {&(_tg__ZTV8S18909C7__A1__8S18909C9__8S18909C2[6]),  6,11},
  {&(_tg__ZTV8S18909C4__A1__8S18909C2[13]),  13,28},
  {&(_tg__ZTV8S18909C5__8S18909C4__A1__8S18909C2[11]),  11,20},
  {&(_tg__ZTV8S18909C6__8S18909C4__A1__8S18909C2[9]),  9,17},
};
extern VTBL_ENTRY _ZTI8S18909C2[];
extern  VTBL_ENTRY _ZTV8S18909C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18909C2[];
static VTBL_ENTRY alt_thunk_names21[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S18909C9D0Ev,_ZTv0_n12_N8S18909C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S18909C9D0Ev,_ZThn508_N8S18909C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S18909C9D0Ev,_ZThn232_N8S18909C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S18909C9D1Ev,_ZTv0_n12_N8S18909C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S18909C9D1Ev,_ZThn508_N8S18909C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S18909C9D1Ev,_ZThn232_N8S18909C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S18909C9D0Ev,_ZTv0_n72_N8S18909C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S18909C9D0Ev,_ZThn320_N8S18909C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S18909C9D1Ev,_ZTv0_n72_N8S18909C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S18909C9D1Ev,_ZThn320_N8S18909C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S18909C8D0Ev,_ZTv0_n12_N8S18909C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N8S18909C8D0Ev,_ZThn240_N8S18909C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S18909C8D1Ev,_ZTv0_n12_N8S18909C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N8S18909C8D1Ev,_ZThn240_N8S18909C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S18909C8D0Ev,_ZTv0_n72_N8S18909C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S18909C8D0Ev,_ZThn52_N8S18909C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S18909C8D1Ev,_ZTv0_n72_N8S18909C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S18909C8D1Ev,_ZThn52_N8S18909C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S18909C3D0Ev,_ZTv0_n12_N8S18909C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S18909C3D0Ev,_ZThn228_N8S18909C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S18909C3D1Ev,_ZTv0_n12_N8S18909C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S18909C3D1Ev,_ZThn228_N8S18909C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S18909C4D0Ev,_ZTv0_n12_N8S18909C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S18909C4D0Ev,_ZThn228_N8S18909C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S18909C4D1Ev,_ZTv0_n12_N8S18909C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S18909C4D1Ev,_ZThn228_N8S18909C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S18909C2D0Ev,_ZTv0_n32_N8S18909C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn440_N8S18909C2D0Ev,_ZThn268_N8S18909C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S18909C2D1Ev,_ZTv0_n32_N8S18909C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn440_N8S18909C2D1Ev,_ZThn268_N8S18909C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S18909C2D0Ev,_ZTv0_n12_N8S18909C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S18909C2D0Ev,_ZThn508_N8S18909C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S18909C2D0Ev,_ZThn232_N8S18909C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S18909C2D1Ev,_ZTv0_n12_N8S18909C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S18909C2D1Ev,_ZThn508_N8S18909C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S18909C2D1Ev,_ZThn232_N8S18909C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S18909C2D0Ev,_ZTv0_n72_N8S18909C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S18909C2D0Ev,_ZThn320_N8S18909C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S18909C2D0Ev,_ZThn4_N8S18909C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S18909C2D1Ev,_ZTv0_n72_N8S18909C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S18909C2D1Ev,_ZThn320_N8S18909C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S18909C2D1Ev,_ZThn4_N8S18909C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S18909C2 = {  "S18909C2", // class name
  bases_S18909C2, 12,
  &(vtc_S18909C2[0]), // expected_vtbl_contents
  &(vtt_S18909C2[0]), // expected_vtt_contents
  ABISELECT(864,524), // object size
  NSPAIRA(_ZTI8S18909C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S18909C2),205, //virtual function table var
  22, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S18909C2),29, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names21,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18909C1  {
  ::S18909C2 s18909c1f0;
  int s18909c1f1;
  ::S18909C3 s18909c1f2;
  virtual  ~S18909C1(); // _ZN8S18909C1D1Ev
  virtual void  v1(); // _ZN8S18909C12v1Ev
  virtual void  v2(); // _ZN8S18909C12v2Ev
  virtual void  v3(); // _ZN8S18909C12v3Ev
  S18909C1(); // tgen
};
//SIG(1 S18909C1) C1{ vd v1 v2 v3 FC2{ VBC3{ BC4{ VBC5{ v13 v14 v15 v16 v17 v18 v19 v20 v21} VBC6{ BC7{ vd v22 v23 v24 Fi FL} vd v25 v26 v27 Fi FC7} v28 v29 v30 v31 FC6[3] Fi Fp[8] Fi FD[3]} BC6 vd v32 v33 v34 v35 v36 v37 v38 v39 v40 Fi} VBC8{ VBC9{ VBC4 VBC7 vd v41 v42 v43} BC10{ vd v44 v45 v46 v47 v48 FC6 Fi} vd v49 v50 v51 v52 v53 v54 FL} vd v4 v5 v6 v7 v8 v9 v10 v11 v12} Fi FC3}


 S18909C1 ::~S18909C1(){ note_dtor("S18909C1", this);}
void  S18909C1 ::v1(){vfunc_called(this, "_ZN8S18909C12v1Ev");}
void  S18909C1 ::v2(){vfunc_called(this, "_ZN8S18909C12v2Ev");}
void  S18909C1 ::v3(){vfunc_called(this, "_ZN8S18909C12v3Ev");}
S18909C1 ::S18909C1(){ note_ctor("S18909C1", this);} // tgen

static void Test_S18909C1()
{
  extern Class_Descriptor cd_S18909C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(84,200)];
    init_test(&cd_S18909C1, buf);
    S18909C1 *dp, &lv = *(dp=new (buf) S18909C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1328,796), "sizeof(S18909C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18909C1)");
    check_field_offset(lv, s18909c1f0, ABISELECT(16,4), "S18909C1.s18909c1f0");
    check_field_offset(lv, s18909c1f1, ABISELECT(880,528), "S18909C1.s18909c1f1");
    check_field_offset(lv, s18909c1f2, ABISELECT(896,532), "S18909C1.s18909c1f2");
    test_class_info(&lv, &cd_S18909C1);
    dp->~S18909C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18909C1(Test_S18909C1, "S18909C1", ABISELECT(1328,796));

#else // __cplusplus

extern void _ZN8S18909C1C1Ev();
extern void _ZN8S18909C1D1Ev();
Name_Map name_map_S18909C1[] = {
  NSPAIR(_ZN8S18909C1C1Ev),
  NSPAIR(_ZN8S18909C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18909C1[];
extern void _ZN8S18909C1D1Ev();
extern void _ZN8S18909C1D0Ev();
extern void _ZN8S18909C12v1Ev();
extern void _ZN8S18909C12v2Ev();
extern void _ZN8S18909C12v3Ev();
static  VTBL_ENTRY vtc_S18909C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18909C1[0]),
  (VTBL_ENTRY)&_ZN8S18909C1D1Ev,
  (VTBL_ENTRY)&_ZN8S18909C1D0Ev,
  (VTBL_ENTRY)&_ZN8S18909C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18909C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18909C12v3Ev,
};
extern VTBL_ENTRY _ZTI8S18909C1[];
extern  VTBL_ENTRY _ZTV8S18909C1[];
Class_Descriptor cd_S18909C1 = {  "S18909C1", // class name
  0,0,//no base classes
  &(vtc_S18909C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1328,796), // object size
  NSPAIRA(_ZTI8S18909C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18909C1),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20753C8  : virtual S19905C19 {
  long double s20753c8f0;
  char s20753c8f1;
  short s20753c8f2[4];
  ~S20753C8(); // tgen
  S20753C8(); // tgen
};
//SIG(-1 S20753C8) C1{ VBC2{ vd m} FD Fc Fs[4]}


S20753C8 ::~S20753C8(){ note_dtor("S20753C8", this);} // tgen
S20753C8 ::S20753C8(){ note_ctor("S20753C8", this);} // tgen

static void Test_S20753C8()
{
  extern Class_Descriptor cd_S20753C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,8)];
    init_test(&cd_S20753C8, buf);
    S20753C8 *dp, &lv = *(dp=new (buf) S20753C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S20753C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20753C8)");
    check_base_class_offset(lv, (S19905C19*), 0, "S20753C8");
    check_field_offset(lv, s20753c8f0, ABISELECT(16,4), "S20753C8.s20753c8f0");
    check_field_offset(lv, s20753c8f1, ABISELECT(32,16), "S20753C8.s20753c8f1");
    check_field_offset(lv, s20753c8f2, ABISELECT(34,18), "S20753C8.s20753c8f2");
    test_class_info(&lv, &cd_S20753C8);
    dp->~S20753C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20753C8(Test_S20753C8, "S20753C8", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN8S20753C8C1Ev();
extern void _ZN8S20753C8D1Ev();
Name_Map name_map_S20753C8[] = {
  NSPAIR(_ZN8S20753C8C1Ev),
  NSPAIR(_ZN8S20753C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
static Base_Class bases_S20753C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19905C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20753C8[];
extern void _ZN8S20753C8D1Ev();
extern void _ZN8S20753C8D0Ev();
static  VTBL_ENTRY vtc_S20753C8[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&_ZN8S20753C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20753C8D0Ev,
};
extern VTBL_ENTRY _ZTV8S20753C8[];
static  VTT_ENTRY vtt_S20753C8[] = {
  {&(_ZTV8S20753C8[4]),  4,6},
  {&(_ZTV8S20753C8[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20753C8[];
extern  VTBL_ENTRY _ZTV8S20753C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C8[];
Class_Descriptor cd_S20753C8 = {  "S20753C8", // class name
  bases_S20753C8, 1,
  &(vtc_S20753C8[0]), // expected_vtbl_contents
  &(vtt_S20753C8[0]), // expected_vtt_contents
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI8S20753C8),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20753C8),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20753C8),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20753C7  : virtual S19905C19 , virtual S20753C8 {
  int s20753c7f0;
  virtual  ~S20753C7(); // _ZN8S20753C7D2Ev
  S20753C7(); // tgen
};
//SIG(-1 S20753C7) C1{ VBC2{ vd m} VBC3{ VBC2 FD Fc Fs[4]} vd Fi}


 S20753C7 ::~S20753C7(){ note_dtor("S20753C7", this);}
S20753C7 ::S20753C7(){ note_ctor("S20753C7", this);} // tgen

static void Test_S20753C7()
{
  extern Class_Descriptor cd_S20753C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,10)];
    init_test(&cd_S20753C7, buf);
    S20753C7 *dp, &lv = *(dp=new (buf) S20753C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S20753C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20753C7)");
    check_base_class_offset(lv, (S19905C19*), 0, "S20753C7");
    check_base_class_offset(lv, (S19905C19*)(S20753C8*), 0, "S20753C7");
    check_base_class_offset(lv, (S20753C8*), ABISELECT(16,8), "S20753C7");
    check_field_offset(lv, s20753c7f0, ABISELECT(8,4), "S20753C7.s20753c7f0");
    test_class_info(&lv, &cd_S20753C7);
    dp->~S20753C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20753C7(Test_S20753C7, "S20753C7", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN8S20753C7C1Ev();
extern void _ZN8S20753C7D2Ev();
Name_Map name_map_S20753C7[] = {
  NSPAIR(_ZN8S20753C7C1Ev),
  NSPAIR(_ZN8S20753C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S20753C8;
extern VTBL_ENTRY _ZTI8S20753C8[];
extern  VTBL_ENTRY _ZTV8S20753C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C8[];
static Base_Class bases_S20753C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19905C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20753C8,    ABISELECT(16,8), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20753C7[];
extern void _ZN8S20753C7D1Ev();
extern void _ZN8S20753C7D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void ABISELECT(_ZThn16_N8S20753C7D1Ev,_ZThn8_N8S20753C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
extern void ABISELECT(_ZThn16_N8S20753C7D0Ev,_ZThn8_N8S20753C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20753C7[] = {
  ABISELECT(16,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&_ZN8S20753C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20753C7D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern VTBL_ENTRY _ZTV8S20753C7[];
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void _ZN8S20753C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
extern void _ZN8S20753C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C7[] = {
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C8__8S20753C7[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
static  VTT_ENTRY vtt_S20753C7[] = {
  {&(_ZTV8S20753C7[5]),  5,13},
  {&(_ZTV8S20753C7[5]),  5,13},
  {&(_ZTV8S20753C7[11]),  11,13},
  {&(_tg__ZTV8S20753C8__8S20753C7[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S20753C8__8S20753C7[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20753C7[];
extern  VTBL_ENTRY _ZTV8S20753C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C7[];
static VTBL_ENTRY alt_thunk_names22[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev), // 
  (VTBL_ENTRY)_ZN8S20753C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev), // 
  (VTBL_ENTRY)_ZN8S20753C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20753C7D0Ev,_ZThn8_N8S20753C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20753C7D1Ev,_ZThn8_N8S20753C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20753C7 = {  "S20753C7", // class name
  bases_S20753C7, 2,
  &(vtc_S20753C7[0]), // expected_vtbl_contents
  &(vtt_S20753C7[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI8S20753C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20753C7),13, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20753C7),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names22,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20753C5  : virtual S19905C19 , S20753C7 , S17777C6_nt {
  short s20753c5f0;
  __tsi64 s20753c5f1;
  void *s20753c5f2;
  __tsi64 s20753c5f3;
  virtual  ~S20753C5(); // _ZN8S20753C5D2Ev
  S20753C5(); // tgen
};
//SIG(-1 S20753C5) C1{ VBC2{ vd m} BC3{ VBC2 VBC4{ VBC2 FD Fc Fs[4]} vd Fi} BC5{ m Fp} vd Fs FL Fp FL}


 S20753C5 ::~S20753C5(){ note_dtor("S20753C5", this);}
S20753C5 ::S20753C5(){ note_ctor("S20753C5", this);} // tgen

static void Test_S20753C5()
{
  extern Class_Descriptor cd_S20753C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(8,17)];
    init_test(&cd_S20753C5, buf);
    S20753C5 *dp, &lv = *(dp=new (buf) S20753C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,64), "sizeof(S20753C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20753C5)");
    check_base_class_offset(lv, (S19905C19*), 0, "S20753C5");
    check_base_class_offset(lv, (S19905C19*)(S20753C7*), 0, "S20753C5");
    check_base_class_offset(lv, (S19905C19*)(S20753C8*), 0, "S20753C5");
    check_base_class_offset(lv, (S20753C8*)(S20753C7*), ABISELECT(64,36), "S20753C5");
    check_base_class_offset(lv, (S20753C7*), 0, "S20753C5");
    check_base_class_offset(lv, (S17777C6_nt*), ABISELECT(16,8), "S20753C5");
    check_field_offset(lv, s20753c5f0, ABISELECT(24,12), "S20753C5.s20753c5f0");
    check_field_offset(lv, s20753c5f1, ABISELECT(32,16), "S20753C5.s20753c5f1");
    check_field_offset(lv, s20753c5f2, ABISELECT(40,24), "S20753C5.s20753c5f2");
    check_field_offset(lv, s20753c5f3, ABISELECT(48,28), "S20753C5.s20753c5f3");
    test_class_info(&lv, &cd_S20753C5);
    dp->~S20753C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20753C5(Test_S20753C5, "S20753C5", ABISELECT(112,64));

#else // __cplusplus

extern void _ZN8S20753C5C1Ev();
extern void _ZN8S20753C5D2Ev();
Name_Map name_map_S20753C5[] = {
  NSPAIR(_ZN8S20753C5C1Ev),
  NSPAIR(_ZN8S20753C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S20753C8;
extern VTBL_ENTRY _ZTI8S20753C8[];
extern  VTBL_ENTRY _ZTV8S20753C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C8[];
extern Class_Descriptor cd_S20753C7;
extern VTBL_ENTRY _ZTI8S20753C7[];
extern  VTBL_ENTRY _ZTV8S20753C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C7[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
static Base_Class bases_S20753C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19905C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20753C8,    ABISELECT(64,36), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20753C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S17777C6_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20753C5[];
extern void _ZN8S20753C5D1Ev();
extern void _ZN8S20753C5D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev)();
extern void ABISELECT(_ZThn64_N8S20753C5D1Ev,_ZThn36_N8S20753C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev)();
extern void ABISELECT(_ZThn64_N8S20753C5D0Ev,_ZThn36_N8S20753C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20753C5[] = {
  ABISELECT(64,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&_ZN8S20753C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20753C5D0Ev,
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev),
};
extern VTBL_ENTRY _ZTV8S20753C5[];
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void _ZN8S20753C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
extern void _ZN8S20753C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C7__8S20753C5[] = {
  ABISELECT(64,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void ABISELECT(_ZThn64_N8S20753C7D1Ev,_ZThn36_N8S20753C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
extern void ABISELECT(_ZThn64_N8S20753C7D0Ev,_ZThn36_N8S20753C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C7__8S20753C5[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void _ZN8S20753C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
extern void _ZN8S20753C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C5[] = {
  ABISELECT(-64,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C8__8S20753C5[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
static  VTT_ENTRY vtt_S20753C5[] = {
  {&(_ZTV8S20753C5[5]),  5,13},
  {&(_tg__ZTV8S20753C7__8S20753C5[5]),  5,7},
  {&(_tg__ZTV8S20753C7__8S20753C5[5]),  5,7},
  {&(_tg__ZTV8S20753C8__8S20753C7__8S20753C5[4]),  4,6},
  {&(_ZTV8S20753C5[5]),  5,13},
  {&(_ZTV8S20753C5[11]),  11,13},
  {&(_tg__ZTV8S20753C8__8S20753C5[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S20753C8__8S20753C5[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20753C5[];
extern  VTBL_ENTRY _ZTV8S20753C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C5[];
static VTBL_ENTRY alt_thunk_names23[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev), // 
  (VTBL_ENTRY)_ZN8S20753C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev), // 
  (VTBL_ENTRY)_ZN8S20753C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C7D0Ev,_ZThn36_N8S20753C7D0Ev),
  (VTBL_ENTRY)_ZN8S20753C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C7D1Ev,_ZThn36_N8S20753C7D1Ev),
  (VTBL_ENTRY)_ZN8S20753C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C5D0Ev,_ZThn36_N8S20753C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C5D1Ev,_ZThn36_N8S20753C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20753C5 = {  "S20753C5", // class name
  bases_S20753C5, 4,
  &(vtc_S20753C5[0]), // expected_vtbl_contents
  &(vtt_S20753C5[0]), // expected_vtt_contents
  ABISELECT(112,64), // object size
  NSPAIRA(_ZTI8S20753C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20753C5),13, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20753C5),8, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names23,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20753C4  : virtual S20753C5 , S17777C6_nt , S19905C19 , S20753C8 {
  int s20753c4f0;
  virtual  ~S20753C4(); // _ZN8S20753C4D2Ev
  S20753C4(); // tgen
};
//SIG(-1 S20753C4) C1{ VBC2{ VBC3{ vd m} BC4{ VBC3 VBC5{ VBC3 FD Fc Fs[4]} vd Fi} BC6{ m Fp} vd Fs FL Fp FL} BC6 BC3 BC5 vd Fi}


 S20753C4 ::~S20753C4(){ note_dtor("S20753C4", this);}
S20753C4 ::S20753C4(){ note_ctor("S20753C4", this);} // tgen

static void Test_S20753C4()
{
  extern Class_Descriptor cd_S20753C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,27)];
    init_test(&cd_S20753C4, buf);
    S20753C4 *dp, &lv = *(dp=new (buf) S20753C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,104), "sizeof(S20753C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20753C4)");
    check_base_class_offset(lv, (S19905C19*)(S20753C5*), ABISELECT(64,40), "S20753C4");
    check_base_class_offset(lv, (S19905C19*)(S20753C7*)(S20753C5*), ABISELECT(64,40), "S20753C4");
    /*is_ambiguous_... S20753C4::S20753C8 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C8*), ABISELECT(64,40), "S20753C4");
    /*is_ambiguous_... S20753C4::S20753C8 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C8*), ABISELECT(64,40), "S20753C4");
    check_base_class_offset(lv, (S20753C8*)(S20753C7*)(S20753C5*), ABISELECT(128,76), "S20753C4");
    check_base_class_offset(lv, (S20753C7*)(S20753C5*), ABISELECT(64,40), "S20753C4");
    check_base_class_offset(lv, (S17777C6_nt*)(S20753C5*), ABISELECT(80,48), "S20753C4");
    check_base_class_offset(lv, (S20753C5*), ABISELECT(64,40), "S20753C4");
    /*is_ambiguous_... S20753C4::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*), ABISELECT(8,4), "S20753C4");
    /*is_ambiguous_... S20753C4::S19905C19 */ AMB_check_base_class_offset(lv, (S19905C19*), 0, "S20753C4");
    /*is_ambiguous_... S20753C4::S20753C8 */ AMB_check_base_class_offset(lv, (S20753C8*), ABISELECT(16,8), "S20753C4");
    check_field_offset(lv, s20753c4f0, ABISELECT(60,36), "S20753C4.s20753c4f0");
    test_class_info(&lv, &cd_S20753C4);
    dp->~S20753C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20753C4(Test_S20753C4, "S20753C4", ABISELECT(176,104));

#else // __cplusplus

extern void _ZN8S20753C4C1Ev();
extern void _ZN8S20753C4D2Ev();
Name_Map name_map_S20753C4[] = {
  NSPAIR(_ZN8S20753C4C1Ev),
  NSPAIR(_ZN8S20753C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S20753C8;
extern VTBL_ENTRY _ZTI8S20753C8[];
extern  VTBL_ENTRY _ZTV8S20753C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C8[];
extern Class_Descriptor cd_S20753C7;
extern VTBL_ENTRY _ZTI8S20753C7[];
extern  VTBL_ENTRY _ZTV8S20753C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C7[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S20753C5;
extern VTBL_ENTRY _ZTI8S20753C5[];
extern  VTBL_ENTRY _ZTV8S20753C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C5[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S20753C8;
extern VTBL_ENTRY _ZTI8S20753C8[];
extern  VTBL_ENTRY _ZTV8S20753C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C8[];
static Base_Class bases_S20753C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19905C19,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20753C8,    ABISELECT(128,76), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20753C7,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20753C5,    ABISELECT(64,40), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S17777C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19905C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20753C8,    ABISELECT(16,8), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20753C4[];
extern void _ZN8S20753C4D1Ev();
extern void _ZN8S20753C4D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S20753C4D1Ev,_ZThn8_N8S20753C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev)();
extern void ABISELECT(_ZThn16_N8S20753C4D0Ev,_ZThn8_N8S20753C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev)();
extern void ABISELECT(_ZThn64_N8S20753C4D1Ev,_ZThn40_N8S20753C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev)();
extern void ABISELECT(_ZThn64_N8S20753C4D0Ev,_ZThn40_N8S20753C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev)();
extern void ABISELECT(_ZThn128_N8S20753C4D1Ev,_ZThn76_N8S20753C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev)();
extern void ABISELECT(_ZThn128_N8S20753C4D0Ev,_ZThn76_N8S20753C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20753C4[] = {
  ABISELECT(128,76),
  ABISELECT(64,40),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C4[0]),
  (VTBL_ENTRY)&_ZN8S20753C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20753C4D0Ev,
  ABISELECT(48,32),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20753C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev),
  ABISELECT(64,36),
  0,
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S20753C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S20753C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S20753C4[];
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void _ZN8S20753C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
extern void _ZN8S20753C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__A__8S20753C4[] = {
  ABISELECT(48,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void ABISELECT(_ZThn48_N8S20753C8D1Ev,_ZThn32_N8S20753C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
extern void ABISELECT(_ZThn48_N8S20753C8D0Ev,_ZThn32_N8S20753C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C8__A__8S20753C4[] = {
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev)();
extern void _ZN8S20753C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev)();
extern void _ZN8S20753C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C5__8S20753C4[] = {
  ABISELECT(64,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void _ZN8S20753C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
extern void _ZN8S20753C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C78S20753C5__8S20753C4[] = {
  ABISELECT(64,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void ABISELECT(_ZThn64_N8S20753C7D1Ev,_ZThn36_N8S20753C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
extern void ABISELECT(_ZThn64_N8S20753C7D0Ev,_ZThn36_N8S20753C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C78S20753C5__8S20753C4[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev)();
extern void ABISELECT(_ZThn64_N8S20753C5D1Ev,_ZThn36_N8S20753C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev)();
extern void ABISELECT(_ZThn64_N8S20753C5D0Ev,_ZThn36_N8S20753C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C5__8S20753C4[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void _ZN8S20753C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
extern void _ZN8S20753C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C4[] = {
  ABISELECT(-64,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C8__8S20753C4[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
static  VTT_ENTRY vtt_S20753C4[] = {
  {&(_ZTV8S20753C4[5]),  5,26},
  {&(_tg__ZTV8S20753C8__A__8S20753C4[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S20753C8__A__8S20753C4[3]),  3,5},
  {&(_ZTV8S20753C4[18]),  18,26},
  {&(_ZTV8S20753C4[18]),  18,26},
  {&(_ZTV8S20753C4[24]),  24,26},
  {&(_ZTV8S20753C4[11]),  11,26},
  {&(_tg__ZTV8S20753C5__8S20753C4[5]),  5,7},
  {&(_tg__ZTV8S20753C78S20753C5__8S20753C4[5]),  5,7},
  {&(_tg__ZTV8S20753C78S20753C5__8S20753C4[5]),  5,7},
  {&(_tg__ZTV8S20753C8__8S20753C78S20753C5__8S20753C4[4]),  4,6},
  {&(_tg__ZTV8S20753C5__8S20753C4[5]),  5,7},
  {&(_tg__ZTV8S20753C8__8S20753C5__8S20753C4[4]),  4,6},
  {&(_tg__ZTV8S20753C8__8S20753C4[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S20753C8__8S20753C4[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20753C4[];
extern  VTBL_ENTRY _ZTV8S20753C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C4[];
static VTBL_ENTRY alt_thunk_names24[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C7D0Ev,_ZThn36_N8S20753C7D0Ev),
  (VTBL_ENTRY)_ZN8S20753C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C7D1Ev,_ZThn36_N8S20753C7D1Ev),
  (VTBL_ENTRY)_ZN8S20753C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C5D0Ev,_ZThn36_N8S20753C5D0Ev),
  (VTBL_ENTRY)_ZN8S20753C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C5D1Ev,_ZThn36_N8S20753C5D1Ev),
  (VTBL_ENTRY)_ZN8S20753C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev), // 
  (VTBL_ENTRY)_ZN8S20753C8D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20753C8D0Ev,_ZThn32_N8S20753C8D0Ev),
  (VTBL_ENTRY)_ZN8S20753C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev), // 
  (VTBL_ENTRY)_ZN8S20753C8D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20753C8D1Ev,_ZThn32_N8S20753C8D1Ev),
  (VTBL_ENTRY)_ZN8S20753C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20753C4D0Ev,_ZThn76_N8S20753C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C4D0Ev,_ZThn40_N8S20753C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20753C4D0Ev,_ZThn8_N8S20753C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20753C4D1Ev,_ZThn76_N8S20753C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C4D1Ev,_ZThn40_N8S20753C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20753C4D1Ev,_ZThn8_N8S20753C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20753C4 = {  "S20753C4", // class name
  bases_S20753C4, 8,
  &(vtc_S20753C4[0]), // expected_vtbl_contents
  &(vtt_S20753C4[0]), // expected_vtt_contents
  ABISELECT(176,104), // object size
  NSPAIRA(_ZTI8S20753C4),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20753C4),26, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20753C4),15, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names24,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20753C2  : virtual S5266C29 , virtual S20753C4 , S20753C8 {
  short s20753c2f0;
  virtual  ~S20753C2(); // _ZN8S20753C2D2Ev
  S20753C2(); // tgen
};
//SIG(-1 S20753C2) C1{ VBC2{ m} VBC3{ VBC4{ VBC5{ vd m} BC6{ VBC5 VBC7{ VBC5 FD Fc Fs[4]} vd Fi} BC8{ m Fp} vd Fs FL Fp FL} BC8 BC5 BC7 vd Fi} BC7 vd Fs}


 S20753C2 ::~S20753C2(){ note_dtor("S20753C2", this);}
S20753C2 ::S20753C2(){ note_ctor("S20753C2", this);} // tgen

static void Test_S20753C2()
{
  extern Class_Descriptor cd_S20753C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(15,34)];
    init_test(&cd_S20753C2, buf);
    S20753C2 *dp, &lv = *(dp=new (buf) S20753C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,132), "sizeof(S20753C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20753C2)");
    check_base_class_offset(lv, (S5266C29*), 0, "S20753C2");
    check_base_class_offset(lv, (S19905C19*)(S20753C5*), ABISELECT(112,68), "S20753C2");
    check_base_class_offset(lv, (S19905C19*)(S20753C7*)(S20753C5*), ABISELECT(112,68), "S20753C2");
    /*is_ambiguous_... S20753C2::S20753C8 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C8*), ABISELECT(112,68), "S20753C2");
    /*is_ambiguous_... S20753C4::S20753C8 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C8*)(S20753C4*), ABISELECT(112,68), "S20753C2");
    /*is_ambiguous_... S20753C2::S20753C8 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C8*), ABISELECT(112,68), "S20753C2");
    check_base_class_offset(lv, (S20753C8*)(S20753C7*)(S20753C5*), ABISELECT(176,104), "S20753C2");
    check_base_class_offset(lv, (S20753C7*)(S20753C5*), ABISELECT(112,68), "S20753C2");
    check_base_class_offset(lv, (S17777C6_nt*)(S20753C5*), ABISELECT(128,76), "S20753C2");
    check_base_class_offset(lv, (S20753C5*)(S20753C4*), ABISELECT(112,68), "S20753C2");
    /*is_ambiguous_... S20753C4::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S20753C4*), ABISELECT(56,32), "S20753C2");
    /*is_ambiguous_... S20753C4::S19905C19 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C4*), ABISELECT(48,28), "S20753C2");
    /*is_ambiguous_... S20753C4::S20753C8 */ AMB_check_base_class_offset(lv, (S20753C8*)(S20753C4*), ABISELECT(64,36), "S20753C2");
    check_base_class_offset(lv, (S20753C4*), ABISELECT(48,28), "S20753C2");
    /*is_ambiguous_... S20753C2::S20753C8 */ AMB_check_base_class_offset(lv, (S20753C8*), 0, "S20753C2");
    check_field_offset(lv, s20753c2f0, ABISELECT(42,26), "S20753C2.s20753c2f0");
    test_class_info(&lv, &cd_S20753C2);
    dp->~S20753C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20753C2(Test_S20753C2, "S20753C2", ABISELECT(224,132));

#else // __cplusplus

extern void _ZN8S20753C2C1Ev();
extern void _ZN8S20753C2D2Ev();
Name_Map name_map_S20753C2[] = {
  NSPAIR(_ZN8S20753C2C1Ev),
  NSPAIR(_ZN8S20753C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S20753C8;
extern VTBL_ENTRY _ZTI8S20753C8[];
extern  VTBL_ENTRY _ZTV8S20753C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C8[];
extern Class_Descriptor cd_S20753C7;
extern VTBL_ENTRY _ZTI8S20753C7[];
extern  VTBL_ENTRY _ZTV8S20753C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C7[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S20753C5;
extern VTBL_ENTRY _ZTI8S20753C5[];
extern  VTBL_ENTRY _ZTV8S20753C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C5[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S20753C8;
extern VTBL_ENTRY _ZTI8S20753C8[];
extern  VTBL_ENTRY _ZTV8S20753C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C8[];
extern Class_Descriptor cd_S20753C4;
extern VTBL_ENTRY _ZTI8S20753C4[];
extern  VTBL_ENTRY _ZTV8S20753C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C4[];
extern Class_Descriptor cd_S20753C8;
extern VTBL_ENTRY _ZTI8S20753C8[];
extern  VTBL_ENTRY _ZTV8S20753C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C8[];
static Base_Class bases_S20753C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19905C19,    ABISELECT(112,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20753C8,    ABISELECT(176,104), //bcp->offset
    31, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20753C7,    ABISELECT(112,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(128,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20753C5,    ABISELECT(112,68), //bcp->offset
    24, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S17777C6_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19905C19,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20753C8,    ABISELECT(64,36), //bcp->offset
    18, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20753C4,    ABISELECT(48,28), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20753C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20753C2[];
extern void ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev)();
extern void _ZN8S20753C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev)();
extern void _ZN8S20753C2D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20753C2D1Ev,_ZTv0_n24_N8S20753C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S20753C2D1Ev,_ZThn28_N8S20753C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20753C2D0Ev,_ZTv0_n24_N8S20753C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S20753C2D0Ev,_ZThn28_N8S20753C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S20753C2D1Ev,_ZThn36_N8S20753C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev)();
extern void ABISELECT(_ZThn64_N8S20753C2D0Ev,_ZThn36_N8S20753C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev)();
extern void ABISELECT(_ZThn112_N8S20753C2D1Ev,_ZThn68_N8S20753C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev)();
extern void ABISELECT(_ZThn112_N8S20753C2D0Ev,_ZThn68_N8S20753C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev)();
extern void ABISELECT(_ZThn176_N8S20753C2D1Ev,_ZThn104_N8S20753C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev)();
extern void ABISELECT(_ZThn176_N8S20753C2D0Ev,_ZThn104_N8S20753C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20753C2[] = {
  ABISELECT(176,104),
  ABISELECT(112,68),
  ABISELECT(48,28),
  0,
  ABISELECT(112,68),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(128,76),
  ABISELECT(64,40),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20753C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20753C2D1Ev,_ZTv0_n24_N8S20753C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20753C2D0Ev,_ZTv0_n24_N8S20753C2D0Ev),
  ABISELECT(48,32),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S20753C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev),
  ABISELECT(64,36),
  0,
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S20753C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI8S20753C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S20753C2[];
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void _ZN8S20753C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
extern void _ZN8S20753C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__A__8S20753C2[] = {
  ABISELECT(112,68),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void ABISELECT(_ZThn112_N8S20753C8D1Ev,_ZThn68_N8S20753C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
extern void ABISELECT(_ZThn112_N8S20753C8D0Ev,_ZThn68_N8S20753C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C8__A__8S20753C2[] = {
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void _ZN8S20753C4D1Ev();
extern void _ZN8S20753C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20753C4__8S20753C2[] = {
  ABISELECT(128,76),
  ABISELECT(64,40),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C4[0]),
  (VTBL_ENTRY)&_ZN8S20753C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20753C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void _ZN8S20753C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
extern void _ZN8S20753C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C88S20753C4__A1__8S20753C2[] = {
  ABISELECT(48,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void ABISELECT(_ZThn48_N8S20753C8D1Ev,_ZThn32_N8S20753C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
extern void ABISELECT(_ZThn48_N8S20753C8D0Ev,_ZThn32_N8S20753C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C88S20753C4__A1__8S20753C2[] = {
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev)();
extern void ABISELECT(_ZThn64_N8S20753C4D1Ev,_ZThn40_N8S20753C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev)();
extern void ABISELECT(_ZThn64_N8S20753C4D0Ev,_ZThn40_N8S20753C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C5__8S20753C4__8S20753C2[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S20753C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev)();
extern void ABISELECT(_ZThn128_N8S20753C4D1Ev,_ZThn76_N8S20753C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev)();
extern void ABISELECT(_ZThn128_N8S20753C4D0Ev,_ZThn76_N8S20753C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C4__8S20753C2[] = {
  ABISELECT(-64,-36),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S20753C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S20753C4D1Ev,_ZThn8_N8S20753C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev)();
extern void ABISELECT(_ZThn16_N8S20753C4D0Ev,_ZThn8_N8S20753C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__A__8S20753C4__8S20753C2[] = {
  ABISELECT(48,32),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20753C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev)();
extern void _ZN8S20753C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev)();
extern void _ZN8S20753C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C5__8S20753C2[] = {
  ABISELECT(64,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void _ZN8S20753C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
extern void _ZN8S20753C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C78S20753C5__8S20753C2[] = {
  ABISELECT(64,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void ABISELECT(_ZThn64_N8S20753C7D1Ev,_ZThn36_N8S20753C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
extern void ABISELECT(_ZThn64_N8S20753C7D0Ev,_ZThn36_N8S20753C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C78S20753C5__8S20753C2[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev)();
extern void ABISELECT(_ZThn64_N8S20753C5D1Ev,_ZThn36_N8S20753C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev)();
extern void ABISELECT(_ZThn64_N8S20753C5D0Ev,_ZThn36_N8S20753C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C5__8S20753C2[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void _ZN8S20753C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
extern void _ZN8S20753C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C2[] = {
  ABISELECT(-64,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C8__8S20753C2[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
static  VTT_ENTRY vtt_S20753C2[] = {
  {&(_ZTV8S20753C2[8]),  8,37},
  {&(_tg__ZTV8S20753C8__A__8S20753C2[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S20753C8__A__8S20753C2[3]),  3,5},
  {&(_ZTV8S20753C2[16]),  16,37},
  {&(_ZTV8S20753C2[29]),  29,37},
  {&(_ZTV8S20753C2[29]),  29,37},
  {&(_ZTV8S20753C2[35]),  35,37},
  {&(_ZTV8S20753C2[22]),  22,37},
  {&(_tg__ZTV8S20753C4__8S20753C2[5]),  5,7},
  {&(_tg__ZTV8S20753C88S20753C4__A1__8S20753C2[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S20753C88S20753C4__A1__8S20753C2[3]),  3,5},
  {&(_tg__ZTV8S20753C5__8S20753C4__8S20753C2[5]),  5,7},
  {&(_tg__ZTV8S20753C5__8S20753C4__8S20753C2[5]),  5,7},
  {&(_tg__ZTV8S20753C8__8S20753C4__8S20753C2[4]),  4,6},
  {&(_tg__ZTV8S20753C8__A__8S20753C4__8S20753C2[4]),  4,6},
  {&(_tg__ZTV8S20753C5__8S20753C2[5]),  5,7},
  {&(_tg__ZTV8S20753C78S20753C5__8S20753C2[5]),  5,7},
  {&(_tg__ZTV8S20753C78S20753C5__8S20753C2[5]),  5,7},
  {&(_tg__ZTV8S20753C8__8S20753C78S20753C5__8S20753C2[4]),  4,6},
  {&(_tg__ZTV8S20753C5__8S20753C2[5]),  5,7},
  {&(_tg__ZTV8S20753C8__8S20753C5__8S20753C2[4]),  4,6},
  {&(_tg__ZTV8S20753C8__8S20753C2[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S20753C8__8S20753C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20753C2[];
extern  VTBL_ENTRY _ZTV8S20753C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C2[];
static VTBL_ENTRY alt_thunk_names25[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C7D0Ev,_ZThn36_N8S20753C7D0Ev),
  (VTBL_ENTRY)_ZN8S20753C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C7D1Ev,_ZThn36_N8S20753C7D1Ev),
  (VTBL_ENTRY)_ZN8S20753C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C5D0Ev,_ZThn36_N8S20753C5D0Ev),
  (VTBL_ENTRY)_ZN8S20753C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C5D1Ev,_ZThn36_N8S20753C5D1Ev),
  (VTBL_ENTRY)_ZN8S20753C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20753C4D0Ev,_ZThn8_N8S20753C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20753C4D0Ev,_ZThn76_N8S20753C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C4D0Ev,_ZThn40_N8S20753C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20753C4D1Ev,_ZThn8_N8S20753C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20753C4D1Ev,_ZThn76_N8S20753C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C4D1Ev,_ZThn40_N8S20753C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev), // 
  (VTBL_ENTRY)_ZN8S20753C8D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20753C8D0Ev,_ZThn32_N8S20753C8D0Ev),
  (VTBL_ENTRY)_ZN8S20753C8D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20753C8D0Ev,_ZThn68_N8S20753C8D0Ev),
  (VTBL_ENTRY)_ZN8S20753C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev), // 
  (VTBL_ENTRY)_ZN8S20753C8D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20753C8D1Ev,_ZThn32_N8S20753C8D1Ev),
  (VTBL_ENTRY)_ZN8S20753C8D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20753C8D1Ev,_ZThn68_N8S20753C8D1Ev),
  (VTBL_ENTRY)_ZN8S20753C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20753C2D0Ev,_ZTv0_n24_N8S20753C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20753C2D0Ev,_ZThn28_N8S20753C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20753C2D1Ev,_ZTv0_n24_N8S20753C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20753C2D1Ev,_ZThn28_N8S20753C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20753C2D0Ev,_ZThn104_N8S20753C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20753C2D0Ev,_ZThn68_N8S20753C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C2D0Ev,_ZThn36_N8S20753C2D0Ev),
  (VTBL_ENTRY)_ZN8S20753C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20753C2D1Ev,_ZThn104_N8S20753C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20753C2D1Ev,_ZThn68_N8S20753C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C2D1Ev,_ZThn36_N8S20753C2D1Ev),
  (VTBL_ENTRY)_ZN8S20753C2D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20753C2 = {  "S20753C2", // class name
  bases_S20753C2, 11,
  &(vtc_S20753C2[0]), // expected_vtbl_contents
  &(vtt_S20753C2[0]), // expected_vtt_contents
  ABISELECT(224,132), // object size
  NSPAIRA(_ZTI8S20753C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20753C2),37, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20753C2),23, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names25,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20753C11  : virtual S19905C19 , S20753C8 , virtual S20753C2 , S20753C5 {
  void *s20753c11f0;
  ~S20753C11(); // tgen
  S20753C11(); // tgen
};
//SIG(-1 S20753C11) C1{ VBC2{ vd m} BC3{ VBC2 FD Fc Fs[4]} VBC4{ VBC5{ m} VBC6{ VBC7{ VBC2 BC8{ VBC2 VBC3 vd Fi} BC9{ m Fp} vd Fs FL Fp FL} BC9 BC2 BC3 vd Fi} BC3 vd Fs} BC7 Fp}


S20753C11 ::~S20753C11(){ note_dtor("S20753C11", this);} // tgen
S20753C11 ::S20753C11(){ note_ctor("S20753C11", this);} // tgen

static void Test_S20753C11()
{
  extern Class_Descriptor cd_S20753C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(22,51)];
    init_test(&cd_S20753C11, buf);
    S20753C11 *dp, &lv = *(dp=new (buf) S20753C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(336,200), "sizeof(S20753C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20753C11)");
    /*is_ambiguous_... S20753C11::S19905C19 */ AMB_check_base_class_offset(lv, (S19905C19*), 0, "S20753C11");
    /*is_ambiguous_... S20753C11::S20753C8 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C8*), 0, "S20753C11");
    /*is_ambiguous_... S20753C11::S20753C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C5*), 0, "S20753C11");
    /*is_ambiguous_... S20753C11::S20753C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C7*)(S20753C5*), 0, "S20753C11");
    /*is_ambiguous_... S20753C11::S20753C8 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C8*), 0, "S20753C11");
    /*is_ambiguous_... S20753C4::S20753C8 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C8*)(S20753C4*), 0, "S20753C11");
    /*is_ambiguous_... S20753C2::S20753C8 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C8*)(S20753C2*), 0, "S20753C11");
    /*is_ambiguous_... S20753C11::S20753C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C5*), 0, "S20753C11");
    /*is_ambiguous_... S20753C11::S20753C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C7*)(S20753C5*), 0, "S20753C11");
    /*is_ambiguous_... S20753C11::S20753C8 */ AMB_check_base_class_offset(lv, (S20753C8*), 0, "S20753C11");
    check_base_class_offset(lv, (S5266C29*)(S20753C2*), 0, "S20753C11");
    /*is_ambiguous_... S20753C11::S20753C5 */ AMB_check_base_class_offset(lv, (S20753C8*)(S20753C7*)(S20753C5*), ABISELECT(288,172), "S20753C11");
    /*is_ambiguous_... S20753C11::S20753C5 */ AMB_check_base_class_offset(lv, (S20753C8*)(S20753C7*)(S20753C5*), ABISELECT(288,172), "S20753C11");
    /*is_ambiguous_... S20753C11::S20753C5 */ AMB_check_base_class_offset(lv, (S20753C7*)(S20753C5*), ABISELECT(224,136), "S20753C11");
    /*is_ambiguous_... S20753C11::S20753C5 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S20753C5*), ABISELECT(240,144), "S20753C11");
    check_base_class_offset(lv, (S20753C5*)(S20753C4*), ABISELECT(224,136), "S20753C11");
    /*is_ambiguous_... S20753C4::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S20753C4*), ABISELECT(168,100), "S20753C11");
    /*is_ambiguous_... S20753C4::S19905C19 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C4*), ABISELECT(160,96), "S20753C11");
    /*is_ambiguous_... S20753C4::S20753C8 */ AMB_check_base_class_offset(lv, (S20753C8*)(S20753C4*), ABISELECT(176,104), "S20753C11");
    check_base_class_offset(lv, (S20753C4*)(S20753C2*), ABISELECT(160,96), "S20753C11");
    /*is_ambiguous_... S20753C2::S20753C8 */ AMB_check_base_class_offset(lv, (S20753C8*)(S20753C2*), ABISELECT(112,68), "S20753C11");
    check_base_class_offset(lv, (S20753C2*), ABISELECT(112,68), "S20753C11");
    /*is_ambiguous_... S20753C11::S20753C5 */ AMB_check_base_class_offset(lv, (S20753C7*)(S20753C5*), ABISELECT(48,28), "S20753C11");
    /*is_ambiguous_... S20753C11::S20753C5 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S20753C5*), ABISELECT(64,36), "S20753C11");
    /*is_ambiguous_... S20753C11::S20753C5 */ AMB_check_base_class_offset(lv, (S20753C5*), ABISELECT(48,28), "S20753C11");
    check_field_offset(lv, s20753c11f0, ABISELECT(104,64), "S20753C11.s20753c11f0");
    test_class_info(&lv, &cd_S20753C11);
    dp->~S20753C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20753C11(Test_S20753C11, "S20753C11", ABISELECT(336,200));

#else // __cplusplus

extern void _ZN9S20753C11C1Ev();
extern void _ZN9S20753C11D1Ev();
Name_Map name_map_S20753C11[] = {
  NSPAIR(_ZN9S20753C11C1Ev),
  NSPAIR(_ZN9S20753C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S20753C8;
extern VTBL_ENTRY _ZTI8S20753C8[];
extern  VTBL_ENTRY _ZTV8S20753C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C8[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S20753C8;
extern VTBL_ENTRY _ZTI8S20753C8[];
extern  VTBL_ENTRY _ZTV8S20753C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C8[];
extern Class_Descriptor cd_S20753C7;
extern VTBL_ENTRY _ZTI8S20753C7[];
extern  VTBL_ENTRY _ZTV8S20753C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C7[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S20753C5;
extern VTBL_ENTRY _ZTI8S20753C5[];
extern  VTBL_ENTRY _ZTV8S20753C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C5[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S20753C8;
extern VTBL_ENTRY _ZTI8S20753C8[];
extern  VTBL_ENTRY _ZTV8S20753C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C8[];
extern Class_Descriptor cd_S20753C4;
extern VTBL_ENTRY _ZTI8S20753C4[];
extern  VTBL_ENTRY _ZTV8S20753C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C4[];
extern Class_Descriptor cd_S20753C8;
extern VTBL_ENTRY _ZTI8S20753C8[];
extern  VTBL_ENTRY _ZTV8S20753C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C8[];
extern Class_Descriptor cd_S20753C2;
extern VTBL_ENTRY _ZTI8S20753C2[];
extern  VTBL_ENTRY _ZTV8S20753C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C2[];
extern Class_Descriptor cd_S20753C7;
extern VTBL_ENTRY _ZTI8S20753C7[];
extern  VTBL_ENTRY _ZTV8S20753C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C7[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S20753C5;
extern VTBL_ENTRY _ZTI8S20753C5[];
extern  VTBL_ENTRY _ZTV8S20753C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C5[];
static Base_Class bases_S20753C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19905C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20753C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20753C8,    ABISELECT(288,172), //bcp->offset
    49, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20753C7,    ABISELECT(224,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(240,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20753C5,    ABISELECT(224,136), //bcp->offset
    42, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S17777C6_nt,    ABISELECT(168,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19905C19,    ABISELECT(160,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20753C8,    ABISELECT(176,104), //bcp->offset
    36, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20753C4,    ABISELECT(160,96), //bcp->offset
    28, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20753C8,    ABISELECT(112,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20753C2,    ABISELECT(112,68), //bcp->offset
    18, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20753C7,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20753C5,    ABISELECT(48,28), //bcp->offset
    11, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20753C11[];
extern void ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev)();
extern void _ZN9S20753C11D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev)();
extern void _ZN9S20753C11D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev)();
extern void ABISELECT(_ZThn48_N9S20753C11D1Ev,_ZThn28_N9S20753C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev)();
extern void ABISELECT(_ZThn48_N9S20753C11D0Ev,_ZThn28_N9S20753C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S20753C11D1Ev,_ZThn68_N9S20753C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev)();
extern void ABISELECT(_ZThn112_N9S20753C11D0Ev,_ZThn68_N9S20753C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20753C11D1Ev,_ZTv0_n24_N9S20753C11D1Ev)();
extern void ABISELECT(_ZThn160_N9S20753C11D1Ev,_ZThn96_N9S20753C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20753C11D0Ev,_ZTv0_n24_N9S20753C11D0Ev)();
extern void ABISELECT(_ZThn160_N9S20753C11D0Ev,_ZThn96_N9S20753C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev)();
extern void ABISELECT(_ZThn176_N9S20753C11D1Ev,_ZThn104_N9S20753C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev)();
extern void ABISELECT(_ZThn176_N9S20753C11D0Ev,_ZThn104_N9S20753C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev)();
extern void ABISELECT(_ZThn224_N9S20753C11D1Ev,_ZThn136_N9S20753C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev)();
extern void ABISELECT(_ZThn224_N9S20753C11D0Ev,_ZThn136_N9S20753C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev)();
extern void ABISELECT(_ZThn288_N9S20753C11D1Ev,_ZThn172_N9S20753C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev)();
extern void ABISELECT(_ZThn288_N9S20753C11D0Ev,_ZThn172_N9S20753C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20753C11[] = {
  ABISELECT(288,172),
  ABISELECT(224,136),
  ABISELECT(160,96),
  0,
  ABISELECT(112,68),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20753C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev),
  ABISELECT(240,144),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S20753C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev),
  ABISELECT(176,104),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI9S20753C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev),
  ABISELECT(-160,-96),
  ABISELECT(128,76),
  ABISELECT(-160,-96),
  ABISELECT(64,40),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI9S20753C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20753C11D1Ev,_ZTv0_n24_N9S20753C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20753C11D0Ev,_ZTv0_n24_N9S20753C11D0Ev),
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI9S20753C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev),
  ABISELECT(64,36),
  ABISELECT(-224,-136),
  ABISELECT(-224,-136),
  ABISELECT(-224,-136),
  (VTBL_ENTRY)&(_ZTI9S20753C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev),
  ABISELECT(-288,-172),
  ABISELECT(-288,-172),
  ABISELECT(-288,-172),
  (VTBL_ENTRY)&(_ZTI9S20753C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S20753C11[];
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void _ZN8S20753C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
extern void _ZN8S20753C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__A__9S20753C11[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev)();
extern void _ZN8S20753C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev)();
extern void _ZN8S20753C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C5__A__9S20753C11[] = {
  ABISELECT(240,144),
  ABISELECT(-48,-28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void _ZN8S20753C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
extern void _ZN8S20753C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C78S20753C5__A1__9S20753C11[] = {
  ABISELECT(240,144),
  ABISELECT(-48,-28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C78S20753C5__A1__9S20753C11[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void ABISELECT(_ZThn240_N8S20753C7D1Ev,_ZThn144_N8S20753C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
extern void ABISELECT(_ZThn240_N8S20753C7D0Ev,_ZThn144_N8S20753C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C78S20753C5__A1__9S20753C11[] = {
  ABISELECT(-288,-172),
  ABISELECT(-240,-144),
  ABISELECT(-240,-144),
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C5__A__9S20753C11[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev)();
extern void ABISELECT(_ZThn240_N8S20753C5D1Ev,_ZThn144_N8S20753C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev)();
extern void ABISELECT(_ZThn240_N8S20753C5D0Ev,_ZThn144_N8S20753C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C5__A__9S20753C11[] = {
  ABISELECT(-288,-172),
  ABISELECT(-240,-144),
  ABISELECT(-240,-144),
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev)();
extern void _ZN8S20753C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev)();
extern void _ZN8S20753C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C2__9S20753C11[] = {
  ABISELECT(176,104),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void _ZN8S20753C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
extern void _ZN8S20753C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C88S20753C2__A3__9S20753C11[] = {
  ABISELECT(-112,-68),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C88S20753C2__A3__9S20753C11[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S20753C2D1Ev,_ZTv0_n24_N8S20753C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S20753C2D1Ev,_ZThn28_N8S20753C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20753C2D0Ev,_ZTv0_n24_N8S20753C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S20753C2D0Ev,_ZThn28_N8S20753C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C4__8S20753C2__9S20753C11[] = {
  ABISELECT(-48,-28),
  ABISELECT(128,76),
  ABISELECT(-160,-96),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20753C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20753C2D1Ev,_ZTv0_n24_N8S20753C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20753C2D0Ev,_ZTv0_n24_N8S20753C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev)();
extern void ABISELECT(_ZThn112_N8S20753C2D1Ev,_ZThn68_N8S20753C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev)();
extern void ABISELECT(_ZThn112_N8S20753C2D0Ev,_ZThn68_N8S20753C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C5__8S20753C2__9S20753C11[] = {
  ABISELECT(64,36),
  ABISELECT(-224,-136),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S20753C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C2__9S20753C11[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI8S20753C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev)();
extern void ABISELECT(_ZThn176_N8S20753C2D1Ev,_ZThn104_N8S20753C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev)();
extern void ABISELECT(_ZThn176_N8S20753C2D0Ev,_ZThn104_N8S20753C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C2__9S20753C11[] = {
  ABISELECT(-288,-172),
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI8S20753C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S20753C2D1Ev,_ZThn36_N8S20753C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev)();
extern void ABISELECT(_ZThn64_N8S20753C2D0Ev,_ZThn36_N8S20753C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C88S20753C4__A1__8S20753C2__9S20753C11[] = {
  ABISELECT(-176,-104),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S20753C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev),
};
extern void _ZN8S20753C4D1Ev();
extern void _ZN8S20753C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20753C4__9S20753C11[] = {
  ABISELECT(128,76),
  ABISELECT(-160,-96),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C4[0]),
  (VTBL_ENTRY)&_ZN8S20753C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20753C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void _ZN8S20753C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
extern void _ZN8S20753C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C88S20753C4__A2__9S20753C11[] = {
  ABISELECT(-176,-104),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C88S20753C4__A2__9S20753C11[] = {
  ABISELECT(176,104),
  ABISELECT(176,104),
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev)();
extern void ABISELECT(_ZThn64_N8S20753C4D1Ev,_ZThn40_N8S20753C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev)();
extern void ABISELECT(_ZThn64_N8S20753C4D0Ev,_ZThn40_N8S20753C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C5__8S20753C4__9S20753C11[] = {
  ABISELECT(64,36),
  ABISELECT(-224,-136),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S20753C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C4__9S20753C11[] = {
  ABISELECT(160,96),
  ABISELECT(160,96),
  (VTBL_ENTRY)&(_ZTI8S20753C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev)();
extern void ABISELECT(_ZThn128_N8S20753C4D1Ev,_ZThn76_N8S20753C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev)();
extern void ABISELECT(_ZThn128_N8S20753C4D0Ev,_ZThn76_N8S20753C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C4__9S20753C11[] = {
  ABISELECT(-288,-172),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S20753C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S20753C4D1Ev,_ZThn8_N8S20753C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev)();
extern void ABISELECT(_ZThn16_N8S20753C4D0Ev,_ZThn8_N8S20753C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__A__8S20753C4__9S20753C11[] = {
  ABISELECT(-176,-104),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20753C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev)();
extern void _ZN8S20753C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev)();
extern void _ZN8S20753C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C5__9S20753C11[] = {
  ABISELECT(64,36),
  ABISELECT(-224,-136),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void _ZN8S20753C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
extern void _ZN8S20753C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C78S20753C5__9S20753C11[] = {
  ABISELECT(64,36),
  ABISELECT(-224,-136),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C78S20753C5__9S20753C11[] = {
  ABISELECT(224,136),
  ABISELECT(224,136),
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void ABISELECT(_ZThn64_N8S20753C7D1Ev,_ZThn36_N8S20753C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
extern void ABISELECT(_ZThn64_N8S20753C7D0Ev,_ZThn36_N8S20753C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C78S20753C5__9S20753C11[] = {
  ABISELECT(-288,-172),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C5__9S20753C11[] = {
  ABISELECT(224,136),
  ABISELECT(224,136),
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev)();
extern void ABISELECT(_ZThn64_N8S20753C5D1Ev,_ZThn36_N8S20753C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev)();
extern void ABISELECT(_ZThn64_N8S20753C5D0Ev,_ZThn36_N8S20753C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C5__9S20753C11[] = {
  ABISELECT(-288,-172),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void _ZN8S20753C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
extern void _ZN8S20753C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__A1__9S20753C11[] = {
  ABISELECT(-288,-172),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C8__A1__9S20753C11[] = {
  ABISELECT(288,172),
  ABISELECT(288,172),
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
static  VTT_ENTRY vtt_S20753C11[] = {
  {&(_ZTV9S20753C11[9]),  9,55},
  {&(_tg__ZTV8S20753C8__A__9S20753C11[4]),  4,6},
  {&(_tg__ZTV8S20753C8__A__9S20753C11[4]),  4,6},
  {&(_tg__ZTV8S20753C5__A__9S20753C11[5]),  5,7},
  {&(_tg__ZTV8S20753C78S20753C5__A1__9S20753C11[5]),  5,7},
  {&(_tg__ZTV9S19905C19__8S20753C78S20753C5__A1__9S20753C11[3]),  3,5},
  {&(_tg__ZTV8S20753C8__8S20753C78S20753C5__A1__9S20753C11[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S20753C5__A__9S20753C11[3]),  3,5},
  {&(_tg__ZTV8S20753C8__8S20753C5__A__9S20753C11[4]),  4,6},
  {&(_ZTV9S20753C11[9]),  9,55},
  {&(_ZTV9S20753C11[26]),  26,55},
  {&(_ZTV9S20753C11[34]),  34,55},
  {&(_ZTV9S20753C11[47]),  47,55},
  {&(_ZTV9S20753C11[53]),  53,55},
  {&(_ZTV9S20753C11[40]),  40,55},
  {&(_ZTV9S20753C11[16]),  16,55},
  {&(_tg__ZTV8S20753C2__9S20753C11[8]),  8,10},
  {&(_tg__ZTV8S20753C88S20753C2__A3__9S20753C11[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S20753C88S20753C2__A3__9S20753C11[3]),  3,5},
  {&(_tg__ZTV8S20753C4__8S20753C2__9S20753C11[6]),  6,8},
  {&(_tg__ZTV8S20753C5__8S20753C2__9S20753C11[5]),  5,7},
  {&(_tg__ZTV9S19905C19__8S20753C2__9S20753C11[3]),  3,5},
  {&(_tg__ZTV8S20753C8__8S20753C2__9S20753C11[4]),  4,6},
  {&(_tg__ZTV8S20753C88S20753C4__A1__8S20753C2__9S20753C11[4]),  4,6},
  {&(_tg__ZTV8S20753C4__9S20753C11[5]),  5,7},
  {&(_tg__ZTV8S20753C88S20753C4__A2__9S20753C11[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S20753C88S20753C4__A2__9S20753C11[3]),  3,5},
  {&(_tg__ZTV8S20753C5__8S20753C4__9S20753C11[5]),  5,7},
  {&(_tg__ZTV9S19905C19__8S20753C4__9S20753C11[3]),  3,5},
  {&(_tg__ZTV8S20753C8__8S20753C4__9S20753C11[4]),  4,6},
  {&(_tg__ZTV8S20753C8__A__8S20753C4__9S20753C11[4]),  4,6},
  {&(_tg__ZTV8S20753C5__9S20753C11[5]),  5,7},
  {&(_tg__ZTV8S20753C78S20753C5__9S20753C11[5]),  5,7},
  {&(_tg__ZTV9S19905C19__8S20753C78S20753C5__9S20753C11[3]),  3,5},
  {&(_tg__ZTV8S20753C8__8S20753C78S20753C5__9S20753C11[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S20753C5__9S20753C11[3]),  3,5},
  {&(_tg__ZTV8S20753C8__8S20753C5__9S20753C11[4]),  4,6},
  {&(_tg__ZTV8S20753C8__A1__9S20753C11[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S20753C8__A1__9S20753C11[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20753C11[];
extern  VTBL_ENTRY _ZTV9S20753C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20753C11[];
static VTBL_ENTRY alt_thunk_names26[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20753C4D0Ev,_ZThn8_N8S20753C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20753C4D0Ev,_ZThn76_N8S20753C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C4D0Ev,_ZThn40_N8S20753C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20753C4D1Ev,_ZThn8_N8S20753C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20753C4D1Ev,_ZThn76_N8S20753C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C4D1Ev,_ZThn40_N8S20753C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20753C2D0Ev,_ZTv0_n24_N8S20753C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20753C2D0Ev,_ZThn28_N8S20753C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20753C2D1Ev,_ZTv0_n24_N8S20753C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20753C2D1Ev,_ZThn28_N8S20753C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C2D0Ev,_ZThn36_N8S20753C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20753C2D0Ev,_ZThn104_N8S20753C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20753C2D0Ev,_ZThn68_N8S20753C2D0Ev),
  (VTBL_ENTRY)_ZN8S20753C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C2D1Ev,_ZThn36_N8S20753C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20753C2D1Ev,_ZThn104_N8S20753C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20753C2D1Ev,_ZThn68_N8S20753C2D1Ev),
  (VTBL_ENTRY)_ZN8S20753C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C7D0Ev,_ZThn36_N8S20753C7D0Ev),
  (VTBL_ENTRY)_ZN8S20753C7D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S20753C7D0Ev,_ZThn144_N8S20753C7D0Ev),
  (VTBL_ENTRY)_ZN8S20753C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C7D1Ev,_ZThn36_N8S20753C7D1Ev),
  (VTBL_ENTRY)_ZN8S20753C7D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S20753C7D1Ev,_ZThn144_N8S20753C7D1Ev),
  (VTBL_ENTRY)_ZN8S20753C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C5D0Ev,_ZThn36_N8S20753C5D0Ev),
  (VTBL_ENTRY)_ZN8S20753C5D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S20753C5D0Ev,_ZThn144_N8S20753C5D0Ev),
  (VTBL_ENTRY)_ZN8S20753C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C5D1Ev,_ZThn36_N8S20753C5D1Ev),
  (VTBL_ENTRY)_ZN8S20753C5D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S20753C5D1Ev,_ZThn144_N8S20753C5D1Ev),
  (VTBL_ENTRY)_ZN8S20753C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev), // 
  (VTBL_ENTRY)_ZN8S20753C8D0Ev,
  (VTBL_ENTRY)_ZN8S20753C8D0Ev,
  (VTBL_ENTRY)_ZN8S20753C8D0Ev,
  (VTBL_ENTRY)_ZN8S20753C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev), // 
  (VTBL_ENTRY)_ZN8S20753C8D1Ev,
  (VTBL_ENTRY)_ZN8S20753C8D1Ev,
  (VTBL_ENTRY)_ZN8S20753C8D1Ev,
  (VTBL_ENTRY)_ZN8S20753C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20753C11D0Ev,_ZTv0_n24_N9S20753C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20753C11D0Ev,_ZThn96_N9S20753C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20753C11D1Ev,_ZTv0_n24_N9S20753C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20753C11D1Ev,_ZThn96_N9S20753C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S20753C11D0Ev,_ZThn172_N9S20753C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S20753C11D0Ev,_ZThn136_N9S20753C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20753C11D0Ev,_ZThn104_N9S20753C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20753C11D0Ev,_ZThn68_N9S20753C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20753C11D0Ev,_ZThn28_N9S20753C11D0Ev),
  (VTBL_ENTRY)_ZN9S20753C11D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S20753C11D1Ev,_ZThn172_N9S20753C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S20753C11D1Ev,_ZThn136_N9S20753C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20753C11D1Ev,_ZThn104_N9S20753C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20753C11D1Ev,_ZThn68_N9S20753C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20753C11D1Ev,_ZThn28_N9S20753C11D1Ev),
  (VTBL_ENTRY)_ZN9S20753C11D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20753C11 = {  "S20753C11", // class name
  bases_S20753C11, 16,
  &(vtc_S20753C11[0]), // expected_vtbl_contents
  &(vtt_S20753C11[0]), // expected_vtt_contents
  ABISELECT(336,200), // object size
  NSPAIRA(_ZTI9S20753C11),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20753C11),55, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20753C11),39, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names26,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20753C12  : S5266C26 , virtual S20753C5 , S17777C6_nt , virtual S5266C29 {
  ::S20753C7 s20753c12f0;
  short s20753c12f1;
  virtual  ~S20753C12(); // _ZN9S20753C12D2Ev
  S20753C12(); // tgen
};
//SIG(-1 S20753C12) C1{ BC2{ m} VBC3{ VBC4{ vd m} BC5{ VBC4 VBC6{ VBC4 FD Fc Fs[4]} vd Fi} BC7{ m Fp} vd Fs FL Fp FL} BC7 VBC8{ m} vd FC5 Fs}


 S20753C12 ::~S20753C12(){ note_dtor("S20753C12", this);}
S20753C12 ::S20753C12(){ note_ctor("S20753C12", this);} // tgen

static void Test_S20753C12()
{
  extern Class_Descriptor cd_S20753C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,29)];
    init_test(&cd_S20753C12, buf);
    S20753C12 *dp, &lv = *(dp=new (buf) S20753C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,112), "sizeof(S20753C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20753C12)");
    check_base_class_offset(lv, (S5266C26*), 0, "S20753C12");
    check_base_class_offset(lv, (S19905C19*)(S20753C5*), 0, "S20753C12");
    check_base_class_offset(lv, (S19905C19*)(S20753C7*)(S20753C5*), 0, "S20753C12");
    check_base_class_offset(lv, (S19905C19*)(S20753C8*), 0, "S20753C12");
    check_base_class_offset(lv, (S20753C8*)(S20753C7*)(S20753C5*), ABISELECT(144,84), "S20753C12");
    check_base_class_offset(lv, (S20753C7*)(S20753C5*), ABISELECT(88,48), "S20753C12");
    check_base_class_offset(lv, (S17777C6_nt*)(S20753C5*), ABISELECT(104,56), "S20753C12");
    check_base_class_offset(lv, (S20753C5*), ABISELECT(88,48), "S20753C12");
    /*is_ambiguous_... S20753C12::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*), ABISELECT(8,4), "S20753C12");
    check_base_class_offset(lv, (S5266C29*), 0, "S20753C12");
    check_field_offset(lv, s20753c12f0, ABISELECT(16,8), "S20753C12.s20753c12f0");
    check_field_offset(lv, s20753c12f1, ABISELECT(80,44), "S20753C12.s20753c12f1");
    test_class_info(&lv, &cd_S20753C12);
    dp->~S20753C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20753C12(Test_S20753C12, "S20753C12", ABISELECT(192,112));

#else // __cplusplus

extern void _ZN9S20753C12C1Ev();
extern void _ZN9S20753C12D2Ev();
Name_Map name_map_S20753C12[] = {
  NSPAIR(_ZN9S20753C12C1Ev),
  NSPAIR(_ZN9S20753C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S20753C8;
extern VTBL_ENTRY _ZTI8S20753C8[];
extern  VTBL_ENTRY _ZTV8S20753C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C8[];
extern Class_Descriptor cd_S20753C7;
extern VTBL_ENTRY _ZTI8S20753C7[];
extern  VTBL_ENTRY _ZTV8S20753C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C7[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S20753C5;
extern VTBL_ENTRY _ZTI8S20753C5[];
extern  VTBL_ENTRY _ZTV8S20753C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C5[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
static Base_Class bases_S20753C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19905C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20753C8,    ABISELECT(144,84), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20753C7,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20753C5,    ABISELECT(88,48), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S17777C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20753C12[];
extern void _ZN9S20753C12D1Ev();
extern void _ZN9S20753C12D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev)();
extern void ABISELECT(_ZThn88_N9S20753C12D1Ev,_ZThn48_N9S20753C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev)();
extern void ABISELECT(_ZThn88_N9S20753C12D0Ev,_ZThn48_N9S20753C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev)();
extern void ABISELECT(_ZThn144_N9S20753C12D1Ev,_ZThn84_N9S20753C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev)();
extern void ABISELECT(_ZThn144_N9S20753C12D0Ev,_ZThn84_N9S20753C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20753C12[] = {
  0,
  ABISELECT(144,84),
  0,
  ABISELECT(88,48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20753C12[0]),
  (VTBL_ENTRY)&_ZN9S20753C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20753C12D0Ev,
  ABISELECT(56,36),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S20753C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S20753C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev),
};
extern VTBL_ENTRY _ZTV9S20753C12[];
extern void ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev)();
extern void _ZN8S20753C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev)();
extern void _ZN8S20753C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C5__9S20753C12[] = {
  ABISELECT(56,36),
  ABISELECT(-88,-48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void _ZN8S20753C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
extern void _ZN8S20753C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C78S20753C5__9S20753C12[] = {
  ABISELECT(56,36),
  ABISELECT(-88,-48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C78S20753C5__9S20753C12[] = {
  ABISELECT(88,48),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void ABISELECT(_ZThn56_N8S20753C7D1Ev,_ZThn36_N8S20753C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
extern void ABISELECT(_ZThn56_N8S20753C7D0Ev,_ZThn36_N8S20753C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C78S20753C5__9S20753C12[] = {
  ABISELECT(-144,-84),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C5__9S20753C12[] = {
  ABISELECT(88,48),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev)();
extern void ABISELECT(_ZThn56_N8S20753C5D1Ev,_ZThn36_N8S20753C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev)();
extern void ABISELECT(_ZThn56_N8S20753C5D0Ev,_ZThn36_N8S20753C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C5__9S20753C12[] = {
  ABISELECT(-144,-84),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void _ZN8S20753C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
extern void _ZN8S20753C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__9S20753C12[] = {
  ABISELECT(-144,-84),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C8__9S20753C12[] = {
  ABISELECT(144,84),
  ABISELECT(144,84),
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
static  VTT_ENTRY vtt_S20753C12[] = {
  {&(_ZTV9S20753C12[7]),  7,22},
  {&(_ZTV9S20753C12[14]),  14,22},
  {&(_ZTV9S20753C12[7]),  7,22},
  {&(_ZTV9S20753C12[20]),  20,22},
  {&(_tg__ZTV8S20753C5__9S20753C12[5]),  5,7},
  {&(_tg__ZTV8S20753C78S20753C5__9S20753C12[5]),  5,7},
  {&(_tg__ZTV9S19905C19__8S20753C78S20753C5__9S20753C12[3]),  3,5},
  {&(_tg__ZTV8S20753C8__8S20753C78S20753C5__9S20753C12[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S20753C5__9S20753C12[3]),  3,5},
  {&(_tg__ZTV8S20753C8__8S20753C5__9S20753C12[4]),  4,6},
  {&(_tg__ZTV8S20753C8__9S20753C12[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S20753C8__9S20753C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20753C12[];
extern  VTBL_ENTRY _ZTV9S20753C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20753C12[];
static VTBL_ENTRY alt_thunk_names27[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev), // 
  (VTBL_ENTRY)_ZN8S20753C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev), // 
  (VTBL_ENTRY)_ZN8S20753C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20753C7D0Ev,_ZThn36_N8S20753C7D0Ev),
  (VTBL_ENTRY)_ZN8S20753C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20753C7D1Ev,_ZThn36_N8S20753C7D1Ev),
  (VTBL_ENTRY)_ZN8S20753C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20753C5D0Ev,_ZThn36_N8S20753C5D0Ev),
  (VTBL_ENTRY)_ZN8S20753C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20753C5D1Ev,_ZThn36_N8S20753C5D1Ev),
  (VTBL_ENTRY)_ZN8S20753C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S20753C12D0Ev,_ZThn84_N9S20753C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20753C12D0Ev,_ZThn48_N9S20753C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S20753C12D1Ev,_ZThn84_N9S20753C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20753C12D1Ev,_ZThn48_N9S20753C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20753C12 = {  "S20753C12", // class name
  bases_S20753C12, 8,
  &(vtc_S20753C12[0]), // expected_vtbl_contents
  &(vtt_S20753C12[0]), // expected_vtt_contents
  ABISELECT(192,112), // object size
  NSPAIRA(_ZTI9S20753C12),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20753C12),22, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20753C12),12, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names27,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20753C10  : virtual S20753C8 , virtual S20753C11 , virtual S17777C6_nt , S20753C12 {
  int s20753c10f0;
  ::S19905C17_nt s20753c10f1;
  virtual  ~S20753C10(); // _ZN9S20753C10D2Ev
  S20753C10(); // tgen
};
//SIG(-1 S20753C10) C1{ VBC2{ VBC3{ vd m} FD Fc Fs[4]} VBC4{ VBC3 BC2 VBC5{ VBC6{ m} VBC7{ VBC8{ VBC3 BC9{ VBC3 VBC2 vd Fi} BC10{ m Fp} vd Fs FL Fp FL} BC10 BC3 BC2 vd Fi} BC2 vd Fs} BC8 Fp} VBC10 BC11{ BC12{ m} VBC8 BC10 VBC6 vd FC9 Fs} vd Fi FC13{}}


 S20753C10 ::~S20753C10(){ note_dtor("S20753C10", this);}
S20753C10 ::S20753C10(){ note_ctor("S20753C10", this);} // tgen

static void Test_S20753C10()
{
  extern Class_Descriptor cd_S20753C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(28,66)];
    init_test(&cd_S20753C10, buf);
    S20753C10 *dp, &lv = *(dp=new (buf) S20753C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(432,260), "sizeof(S20753C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20753C10)");
    /*is_ambiguous_... S20753C10::S20753C8 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C8*), ABISELECT(96,56), "S20753C10");
    /*is_ambiguous_... S20753C11::S19905C19 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C11*), ABISELECT(96,56), "S20753C10");
    /*is_ambiguous_... S20753C11::S20753C8 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C8*)(S20753C11*), ABISELECT(96,56), "S20753C10");
    /*is_ambiguous_... S20753C10::S20753C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C5*), ABISELECT(96,56), "S20753C10");
    /*is_ambiguous_... S20753C10::S20753C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C7*)(S20753C5*), ABISELECT(96,56), "S20753C10");
    /*is_ambiguous_... S20753C4::S20753C8 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C8*)(S20753C4*), ABISELECT(96,56), "S20753C10");
    /*is_ambiguous_... S20753C2::S20753C8 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C8*)(S20753C2*), ABISELECT(96,56), "S20753C10");
    /*is_ambiguous_... S20753C11::S20753C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C5*)(S20753C11*), ABISELECT(96,56), "S20753C10");
    /*is_ambiguous_... S20753C11::S20753C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C7*)(S20753C5*)(S20753C11*), ABISELECT(96,56), "S20753C10");
    /*is_ambiguous_... S20753C10::S20753C8 */ AMB_check_base_class_offset(lv, (S20753C8*), ABISELECT(96,56), "S20753C10");
    /*is_ambiguous_... S20753C10::S20753C5 */ AMB_check_base_class_offset(lv, (S20753C8*)(S20753C7*)(S20753C5*), ABISELECT(96,56), "S20753C10");
    /*is_ambiguous_... S20753C11::S20753C5 */ AMB_check_base_class_offset(lv, (S20753C8*)(S20753C7*)(S20753C5*)(S20753C11*), ABISELECT(96,56), "S20753C10");
    /*is_ambiguous_... S20753C11::S20753C8 */ AMB_check_base_class_offset(lv, (S20753C8*)(S20753C11*), ABISELECT(144,84), "S20753C10");
    check_base_class_offset(lv, (S5266C29*)(S20753C2*), 0, "S20753C10");
    check_base_class_offset(lv, (S5266C29*)(S20753C12*), 0, "S20753C10");
    /*is_ambiguous_... S20753C10::S20753C5 */ AMB_check_base_class_offset(lv, (S20753C7*)(S20753C5*), ABISELECT(368,220), "S20753C10");
    /*is_ambiguous_... S20753C10::S20753C5 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S20753C5*), ABISELECT(384,228), "S20753C10");
    check_base_class_offset(lv, (S20753C5*)(S20753C4*), ABISELECT(368,220), "S20753C10");
    check_base_class_offset(lv, (S20753C5*)(S20753C12*), ABISELECT(368,220), "S20753C10");
    /*is_ambiguous_... S20753C4::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S20753C4*), ABISELECT(312,184), "S20753C10");
    /*is_ambiguous_... S20753C4::S19905C19 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C4*), ABISELECT(304,180), "S20753C10");
    /*is_ambiguous_... S20753C4::S20753C8 */ AMB_check_base_class_offset(lv, (S20753C8*)(S20753C4*), ABISELECT(320,188), "S20753C10");
    check_base_class_offset(lv, (S20753C4*)(S20753C2*), ABISELECT(304,180), "S20753C10");
    /*is_ambiguous_... S20753C2::S20753C8 */ AMB_check_base_class_offset(lv, (S20753C8*)(S20753C2*), ABISELECT(256,152), "S20753C10");
    check_base_class_offset(lv, (S20753C2*)(S20753C11*), ABISELECT(256,152), "S20753C10");
    /*is_ambiguous_... S20753C11::S20753C5 */ AMB_check_base_class_offset(lv, (S20753C7*)(S20753C5*)(S20753C11*), ABISELECT(192,112), "S20753C10");
    /*is_ambiguous_... S20753C11::S20753C5 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S20753C5*)(S20753C11*), ABISELECT(208,120), "S20753C10");
    /*is_ambiguous_... S20753C11::S20753C5 */ AMB_check_base_class_offset(lv, (S20753C5*)(S20753C11*), ABISELECT(192,112), "S20753C10");
    check_base_class_offset(lv, (S20753C11*), ABISELECT(144,84), "S20753C10");
    /*is_ambiguous_... S20753C10::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*), ABISELECT(424,256), "S20753C10");
    check_base_class_offset(lv, (S5266C26*)(S20753C12*), 0, "S20753C10");
    /*is_ambiguous_... S20753C12::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S20753C12*), ABISELECT(8,4), "S20753C10");
    check_base_class_offset(lv, (S20753C12*), 0, "S20753C10");
    check_field_offset(lv, s20753c10f0, ABISELECT(84,48), "S20753C10.s20753c10f0");
    check_field_offset(lv, s20753c10f1, ABISELECT(88,52), "S20753C10.s20753c10f1");
    test_class_info(&lv, &cd_S20753C10);
    dp->~S20753C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20753C10(Test_S20753C10, "S20753C10", ABISELECT(432,260));

#else // __cplusplus

extern void _ZN9S20753C10C1Ev();
extern void _ZN9S20753C10D2Ev();
Name_Map name_map_S20753C10[] = {
  NSPAIR(_ZN9S20753C10C1Ev),
  NSPAIR(_ZN9S20753C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S20753C8;
extern VTBL_ENTRY _ZTI8S20753C8[];
extern  VTBL_ENTRY _ZTV8S20753C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C8[];
extern Class_Descriptor cd_S20753C8;
extern VTBL_ENTRY _ZTI8S20753C8[];
extern  VTBL_ENTRY _ZTV8S20753C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C8[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S20753C7;
extern VTBL_ENTRY _ZTI8S20753C7[];
extern  VTBL_ENTRY _ZTV8S20753C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C7[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S20753C5;
extern VTBL_ENTRY _ZTI8S20753C5[];
extern  VTBL_ENTRY _ZTV8S20753C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C5[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S20753C8;
extern VTBL_ENTRY _ZTI8S20753C8[];
extern  VTBL_ENTRY _ZTV8S20753C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C8[];
extern Class_Descriptor cd_S20753C4;
extern VTBL_ENTRY _ZTI8S20753C4[];
extern  VTBL_ENTRY _ZTV8S20753C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C4[];
extern Class_Descriptor cd_S20753C8;
extern VTBL_ENTRY _ZTI8S20753C8[];
extern  VTBL_ENTRY _ZTV8S20753C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C8[];
extern Class_Descriptor cd_S20753C2;
extern VTBL_ENTRY _ZTI8S20753C2[];
extern  VTBL_ENTRY _ZTV8S20753C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C2[];
extern Class_Descriptor cd_S20753C7;
extern VTBL_ENTRY _ZTI8S20753C7[];
extern  VTBL_ENTRY _ZTV8S20753C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C7[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S20753C5;
extern VTBL_ENTRY _ZTI8S20753C5[];
extern  VTBL_ENTRY _ZTV8S20753C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C5[];
extern Class_Descriptor cd_S20753C11;
extern VTBL_ENTRY _ZTI9S20753C11[];
extern  VTBL_ENTRY _ZTV9S20753C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20753C11[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S20753C12;
extern VTBL_ENTRY _ZTI9S20753C12[];
extern  VTBL_ENTRY _ZTV9S20753C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20753C12[];
static Base_Class bases_S20753C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19905C19,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20753C8,    ABISELECT(96,56), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20753C8,    ABISELECT(144,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20753C7,    ABISELECT(368,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(384,228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20753C5,    ABISELECT(368,220), //bcp->offset
    61, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S17777C6_nt,    ABISELECT(312,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19905C19,    ABISELECT(304,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20753C8,    ABISELECT(320,188), //bcp->offset
    55, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20753C4,    ABISELECT(304,180), //bcp->offset
    47, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20753C8,    ABISELECT(256,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20753C2,    ABISELECT(256,152), //bcp->offset
    37, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20753C7,    ABISELECT(192,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(208,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20753C5,    ABISELECT(192,112), //bcp->offset
    30, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20753C11,    ABISELECT(144,84), //bcp->offset
    19, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S17777C6_nt,    ABISELECT(424,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20753C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20753C10[];
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void _ZN9S20753C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
extern void _ZN9S20753C10D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void ABISELECT(_ZThn96_N9S20753C10D1Ev,_ZThn56_N9S20753C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
extern void ABISELECT(_ZThn96_N9S20753C10D0Ev,_ZThn56_N9S20753C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void ABISELECT(_ZThn144_N9S20753C10D1Ev,_ZThn84_N9S20753C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
extern void ABISELECT(_ZThn144_N9S20753C10D0Ev,_ZThn84_N9S20753C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void ABISELECT(_ZThn192_N9S20753C10D1Ev,_ZThn112_N9S20753C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
extern void ABISELECT(_ZThn192_N9S20753C10D0Ev,_ZThn112_N9S20753C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void ABISELECT(_ZThn256_N9S20753C10D1Ev,_ZThn152_N9S20753C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
extern void ABISELECT(_ZThn256_N9S20753C10D0Ev,_ZThn152_N9S20753C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20753C10D1Ev,_ZTv0_n24_N9S20753C10D1Ev)();
extern void ABISELECT(_ZThn304_N9S20753C10D1Ev,_ZThn180_N9S20753C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20753C10D0Ev,_ZTv0_n24_N9S20753C10D0Ev)();
extern void ABISELECT(_ZThn304_N9S20753C10D0Ev,_ZThn180_N9S20753C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void ABISELECT(_ZThn320_N9S20753C10D1Ev,_ZThn188_N9S20753C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
extern void ABISELECT(_ZThn320_N9S20753C10D0Ev,_ZThn188_N9S20753C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void ABISELECT(_ZThn368_N9S20753C10D1Ev,_ZThn220_N9S20753C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
extern void ABISELECT(_ZThn368_N9S20753C10D0Ev,_ZThn220_N9S20753C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20753C10[] = {
  ABISELECT(424,256),
  ABISELECT(304,180),
  ABISELECT(256,152),
  ABISELECT(144,84),
  0,
  ABISELECT(96,56),
  ABISELECT(96,56),
  ABISELECT(368,220),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
  0,
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(224,136),
  ABISELECT(160,96),
  ABISELECT(-144,-84),
  ABISELECT(112,68),
  ABISELECT(-48,-28),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
  ABISELECT(-160,-96),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-256,-152),
  ABISELECT(-160,-96),
  ABISELECT(-256,-152),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
  ABISELECT(-304,-180),
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  ABISELECT(64,40),
  ABISELECT(-304,-180),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20753C10D1Ev,_ZTv0_n24_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20753C10D0Ev,_ZTv0_n24_N9S20753C10D0Ev),
  ABISELECT(-224,-132),
  ABISELECT(-320,-188),
  ABISELECT(-320,-188),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
  ABISELECT(-272,-164),
  ABISELECT(-272,-164),
  ABISELECT(-368,-220),
  ABISELECT(-368,-220),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
};
extern VTBL_ENTRY _ZTV9S20753C10[];
extern void ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev)();
extern void _ZN9S20753C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev)();
extern void _ZN9S20753C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20753C12__9S20753C10[] = {
  0,
  ABISELECT(96,56),
  ABISELECT(96,56),
  ABISELECT(368,220),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20753C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev)();
extern void ABISELECT(_ZThn368_N9S20753C12D1Ev,_ZThn220_N9S20753C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev)();
extern void ABISELECT(_ZThn368_N9S20753C12D0Ev,_ZThn220_N9S20753C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C5__9S20753C12__9S20753C10[] = {
  ABISELECT(-272,-164),
  ABISELECT(-272,-164),
  ABISELECT(-368,-220),
  ABISELECT(-368,-220),
  (VTBL_ENTRY)&(_ZTI9S20753C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev)();
extern void ABISELECT(_ZThn96_N9S20753C12D1Ev,_ZThn56_N9S20753C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev)();
extern void ABISELECT(_ZThn96_N9S20753C12D0Ev,_ZThn56_N9S20753C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__9S20753C12__9S20753C10[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20753C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void _ZN8S20753C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
extern void _ZN8S20753C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__9S20753C10[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev)();
extern void _ZN9S20753C11D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev)();
extern void _ZN9S20753C11D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20753C11__9S20753C10[] = {
  ABISELECT(-48,-28),
  ABISELECT(224,136),
  ABISELECT(160,96),
  ABISELECT(-144,-84),
  ABISELECT(112,68),
  ABISELECT(-48,-28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20753C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void _ZN8S20753C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
extern void _ZN8S20753C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C89S20753C11__A1__9S20753C10[] = {
  ABISELECT(-48,-28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C89S20753C11__A1__9S20753C10[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev)();
extern void _ZN8S20753C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev)();
extern void _ZN8S20753C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C59S20753C11__A1__9S20753C10[] = {
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void _ZN8S20753C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
extern void _ZN8S20753C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C78S20753C59S20753C11__A1__9S20753C10[] = {
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C78S20753C59S20753C11__A1__9S20753C10[] = {
  0,
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C59S20753C11__A1__9S20753C10[] = {
  0,
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C8__A1__9S20753C11__9S20753C10[] = {
  0,
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S20753C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S20753C11D1Ev,_ZThn68_N9S20753C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev)();
extern void ABISELECT(_ZThn112_N9S20753C11D0Ev,_ZThn68_N9S20753C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C2__9S20753C11__9S20753C10[] = {
  ABISELECT(-160,-96),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-256,-152),
  ABISELECT(-160,-96),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI9S20753C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20753C11D1Ev,_ZTv0_n24_N9S20753C11D1Ev)();
extern void ABISELECT(_ZThn160_N9S20753C11D1Ev,_ZThn96_N9S20753C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20753C11D0Ev,_ZTv0_n24_N9S20753C11D0Ev)();
extern void ABISELECT(_ZThn160_N9S20753C11D0Ev,_ZThn96_N9S20753C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C4__9S20753C11__9S20753C10[] = {
  ABISELECT(-160,-96),
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  ABISELECT(64,40),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI9S20753C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20753C11D1Ev,_ZTv0_n24_N9S20753C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20753C11D0Ev,_ZTv0_n24_N9S20753C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev)();
extern void ABISELECT(_ZThn224_N9S20753C11D1Ev,_ZThn136_N9S20753C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev)();
extern void ABISELECT(_ZThn224_N9S20753C11D0Ev,_ZThn136_N9S20753C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C5__9S20753C11__9S20753C10[] = {
  ABISELECT(-272,-164),
  ABISELECT(-272,-164),
  ABISELECT(-224,-136),
  ABISELECT(-224,-136),
  (VTBL_ENTRY)&(_ZTI9S20753C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev)();
extern void ABISELECT(_ZThn176_N9S20753C11D1Ev,_ZThn104_N9S20753C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev)();
extern void ABISELECT(_ZThn176_N9S20753C11D0Ev,_ZThn104_N9S20753C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C88S20753C4__A2__9S20753C11__9S20753C10[] = {
  ABISELECT(-224,-132),
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI9S20753C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev)();
extern void ABISELECT(_ZThn48_N9S20753C11D1Ev,_ZThn28_N9S20753C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev)();
extern void ABISELECT(_ZThn48_N9S20753C11D0Ev,_ZThn28_N9S20753C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C5__A__9S20753C11__9S20753C10[] = {
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S20753C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev)();
extern void _ZN8S20753C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev)();
extern void _ZN8S20753C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C2__9S20753C10[] = {
  ABISELECT(-160,-96),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-256,-152),
  ABISELECT(-160,-96),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void _ZN8S20753C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
extern void _ZN8S20753C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C88S20753C2__A3__9S20753C10[] = {
  ABISELECT(-160,-96),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C88S20753C2__A3__9S20753C10[] = {
  ABISELECT(160,96),
  ABISELECT(160,96),
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S20753C2D1Ev,_ZTv0_n24_N8S20753C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S20753C2D1Ev,_ZThn28_N8S20753C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20753C2D0Ev,_ZTv0_n24_N8S20753C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S20753C2D0Ev,_ZThn28_N8S20753C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C4__8S20753C2__9S20753C10[] = {
  ABISELECT(-48,-28),
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20753C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20753C2D1Ev,_ZTv0_n24_N8S20753C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20753C2D0Ev,_ZTv0_n24_N8S20753C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev)();
extern void ABISELECT(_ZThn112_N8S20753C2D1Ev,_ZThn68_N8S20753C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev)();
extern void ABISELECT(_ZThn112_N8S20753C2D0Ev,_ZThn68_N8S20753C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C5__8S20753C2__9S20753C10[] = {
  ABISELECT(-272,-164),
  ABISELECT(-272,-164),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S20753C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C2__9S20753C10[] = {
  0,
  ABISELECT(160,96),
  ABISELECT(160,96),
  (VTBL_ENTRY)&(_ZTI8S20753C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S20753C2D1Ev,_ZThn36_N8S20753C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev)();
extern void ABISELECT(_ZThn64_N8S20753C2D0Ev,_ZThn36_N8S20753C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C88S20753C4__A1__8S20753C2__9S20753C10[] = {
  ABISELECT(-224,-132),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S20753C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev),
};
extern void _ZN8S20753C4D1Ev();
extern void _ZN8S20753C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20753C4__9S20753C10[] = {
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C4[0]),
  (VTBL_ENTRY)&_ZN8S20753C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20753C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void _ZN8S20753C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
extern void _ZN8S20753C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C88S20753C4__A2__9S20753C10[] = {
  ABISELECT(-224,-132),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C88S20753C4__A2__9S20753C10[] = {
  ABISELECT(224,132),
  ABISELECT(224,132),
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev)();
extern void ABISELECT(_ZThn64_N8S20753C4D1Ev,_ZThn40_N8S20753C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev)();
extern void ABISELECT(_ZThn64_N8S20753C4D0Ev,_ZThn40_N8S20753C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C5__8S20753C4__9S20753C10[] = {
  ABISELECT(-272,-164),
  ABISELECT(-272,-164),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S20753C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C4__9S20753C10[] = {
  0,
  ABISELECT(208,124),
  ABISELECT(208,124),
  (VTBL_ENTRY)&(_ZTI8S20753C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S20753C4D1Ev,_ZThn8_N8S20753C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev)();
extern void ABISELECT(_ZThn16_N8S20753C4D0Ev,_ZThn8_N8S20753C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__A__8S20753C4__9S20753C10[] = {
  ABISELECT(-224,-132),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20753C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev)();
extern void _ZN8S20753C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev)();
extern void _ZN8S20753C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C5__9S20753C10[] = {
  ABISELECT(-272,-164),
  ABISELECT(-272,-164),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void _ZN8S20753C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
extern void _ZN8S20753C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C78S20753C5__9S20753C10[] = {
  ABISELECT(-272,-164),
  ABISELECT(-272,-164),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C78S20753C5__9S20753C10[] = {
  0,
  ABISELECT(272,164),
  ABISELECT(272,164),
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C5__9S20753C10[] = {
  0,
  ABISELECT(272,164),
  ABISELECT(272,164),
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev),
};
static  VTT_ENTRY vtt_S20753C10[] = {
  {&(_ZTV9S20753C10[11]),  11,68},
  {&(_tg__ZTV9S20753C12__9S20753C10[7]),  7,9},
  {&(_tg__ZTV8S20753C5__9S20753C12__9S20753C10[5]),  5,7},
  {&(_tg__ZTV8S20753C8__9S20753C12__9S20753C10[4]),  4,6},
  {&(_tg__ZTV8S20753C8__9S20753C12__9S20753C10[4]),  4,6},
  {&(_ZTV9S20753C10[17]),  17,68},
  {&(_ZTV9S20753C10[17]),  17,68},
  {&(_ZTV9S20753C10[28]),  28,68},
  {&(_ZTV9S20753C10[45]),  45,68},
  {&(_ZTV9S20753C10[53]),  53,68},
  {&(_ZTV9S20753C10[66]),  66,68},
  {&(_ZTV9S20753C10[59]),  59,68},
  {&(_ZTV9S20753C10[35]),  35,68},
  {&(_tg__ZTV8S20753C8__9S20753C10[4]),  4,6},
  {&(_tg__ZTV8S20753C8__9S20753C10[4]),  4,6},
  {&(_tg__ZTV9S20753C11__9S20753C10[9]),  9,11},
  {&(_tg__ZTV8S20753C89S20753C11__A1__9S20753C10[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S20753C89S20753C11__A1__9S20753C10[3]),  3,5},
  {&(_tg__ZTV8S20753C59S20753C11__A1__9S20753C10[5]),  5,7},
  {&(_tg__ZTV8S20753C78S20753C59S20753C11__A1__9S20753C10[5]),  5,7},
  {&(_tg__ZTV8S20753C8__8S20753C78S20753C59S20753C11__A1__9S20753C10[4]),  4,6},
  {&(_tg__ZTV8S20753C8__8S20753C78S20753C59S20753C11__A1__9S20753C10[4]),  4,6},
  {&(_tg__ZTV8S20753C8__8S20753C59S20753C11__A1__9S20753C10[4]),  4,6},
  {&(_tg__ZTV8S20753C8__8S20753C59S20753C11__A1__9S20753C10[4]),  4,6},
  {&(_tg__ZTV8S20753C8__A1__9S20753C11__9S20753C10[4]),  4,6},
  {&(_tg__ZTV8S20753C2__9S20753C11__9S20753C10[8]),  8,10},
  {&(_tg__ZTV8S20753C4__9S20753C11__9S20753C10[6]),  6,8},
  {&(_tg__ZTV8S20753C5__9S20753C11__9S20753C10[5]),  5,7},
  {&(_tg__ZTV8S20753C8__A1__9S20753C11__9S20753C10[4]),  4,6},
  {&(_tg__ZTV8S20753C88S20753C4__A2__9S20753C11__9S20753C10[4]),  4,6},
  {&(_tg__ZTV8S20753C5__A__9S20753C11__9S20753C10[5]),  5,7},
  {&(_tg__ZTV8S20753C2__9S20753C10[8]),  8,10},
  {&(_tg__ZTV8S20753C88S20753C2__A3__9S20753C10[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S20753C88S20753C2__A3__9S20753C10[3]),  3,5},
  {&(_tg__ZTV8S20753C4__8S20753C2__9S20753C10[6]),  6,8},
  {&(_tg__ZTV8S20753C5__8S20753C2__9S20753C10[5]),  5,7},
  {&(_tg__ZTV8S20753C8__8S20753C2__9S20753C10[4]),  4,6},
  {&(_tg__ZTV8S20753C8__8S20753C2__9S20753C10[4]),  4,6},
  {&(_tg__ZTV8S20753C88S20753C4__A1__8S20753C2__9S20753C10[4]),  4,6},
  {&(_tg__ZTV8S20753C4__9S20753C10[5]),  5,7},
  {&(_tg__ZTV8S20753C88S20753C4__A2__9S20753C10[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S20753C88S20753C4__A2__9S20753C10[3]),  3,5},
  {&(_tg__ZTV8S20753C5__8S20753C4__9S20753C10[5]),  5,7},
  {&(_tg__ZTV8S20753C8__8S20753C4__9S20753C10[4]),  4,6},
  {&(_tg__ZTV8S20753C8__8S20753C4__9S20753C10[4]),  4,6},
  {&(_tg__ZTV8S20753C8__A__8S20753C4__9S20753C10[4]),  4,6},
  {&(_tg__ZTV8S20753C5__9S20753C10[5]),  5,7},
  {&(_tg__ZTV8S20753C78S20753C5__9S20753C10[5]),  5,7},
  {&(_tg__ZTV8S20753C8__8S20753C78S20753C5__9S20753C10[4]),  4,6},
  {&(_tg__ZTV8S20753C8__8S20753C78S20753C5__9S20753C10[4]),  4,6},
  {&(_tg__ZTV8S20753C8__8S20753C5__9S20753C10[4]),  4,6},
  {&(_tg__ZTV8S20753C8__8S20753C5__9S20753C10[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S20753C10[];
extern  VTBL_ENTRY _ZTV9S20753C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20753C10[];
static VTBL_ENTRY alt_thunk_names28[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20753C4D0Ev,_ZThn8_N8S20753C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C4D0Ev,_ZThn40_N8S20753C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20753C4D1Ev,_ZThn8_N8S20753C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C4D1Ev,_ZThn40_N8S20753C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20753C2D0Ev,_ZTv0_n24_N8S20753C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20753C2D0Ev,_ZThn28_N8S20753C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20753C2D1Ev,_ZTv0_n24_N8S20753C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20753C2D1Ev,_ZThn28_N8S20753C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C2D0Ev,_ZThn36_N8S20753C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20753C2D0Ev,_ZThn68_N8S20753C2D0Ev),
  (VTBL_ENTRY)_ZN8S20753C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C2D1Ev,_ZThn36_N8S20753C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20753C2D1Ev,_ZThn68_N8S20753C2D1Ev),
  (VTBL_ENTRY)_ZN8S20753C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20753C11D0Ev,_ZTv0_n24_N9S20753C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20753C11D0Ev,_ZThn96_N9S20753C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20753C11D1Ev,_ZTv0_n24_N9S20753C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20753C11D1Ev,_ZThn96_N9S20753C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S20753C7D0Ev,
  (VTBL_ENTRY)_ZN8S20753C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S20753C7D1Ev,
  (VTBL_ENTRY)_ZN8S20753C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S20753C5D0Ev,
  (VTBL_ENTRY)_ZN8S20753C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S20753C5D1Ev,
  (VTBL_ENTRY)_ZN8S20753C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20753C11D0Ev,_ZThn28_N9S20753C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20753C11D0Ev,_ZThn104_N9S20753C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S20753C11D0Ev,_ZThn136_N9S20753C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20753C11D0Ev,_ZThn68_N9S20753C11D0Ev),
  (VTBL_ENTRY)_ZN9S20753C11D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20753C11D1Ev,_ZThn28_N9S20753C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20753C11D1Ev,_ZThn104_N9S20753C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S20753C11D1Ev,_ZThn136_N9S20753C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20753C11D1Ev,_ZThn68_N9S20753C11D1Ev),
  (VTBL_ENTRY)_ZN9S20753C11D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev), // 
  (VTBL_ENTRY)_ZN8S20753C8D0Ev,
  (VTBL_ENTRY)_ZN8S20753C8D0Ev,
  (VTBL_ENTRY)_ZN8S20753C8D0Ev,
  (VTBL_ENTRY)_ZN8S20753C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev), // 
  (VTBL_ENTRY)_ZN8S20753C8D1Ev,
  (VTBL_ENTRY)_ZN8S20753C8D1Ev,
  (VTBL_ENTRY)_ZN8S20753C8D1Ev,
  (VTBL_ENTRY)_ZN8S20753C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20753C12D0Ev,_ZThn56_N9S20753C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S20753C12D0Ev,_ZThn220_N9S20753C12D0Ev),
  (VTBL_ENTRY)_ZN9S20753C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20753C12D1Ev,_ZThn56_N9S20753C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S20753C12D1Ev,_ZThn220_N9S20753C12D1Ev),
  (VTBL_ENTRY)_ZN9S20753C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20753C10D0Ev,_ZTv0_n24_N9S20753C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S20753C10D0Ev,_ZThn180_N9S20753C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20753C10D1Ev,_ZTv0_n24_N9S20753C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S20753C10D1Ev,_ZThn180_N9S20753C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S20753C10D0Ev,_ZThn220_N9S20753C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S20753C10D0Ev,_ZThn188_N9S20753C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S20753C10D0Ev,_ZThn152_N9S20753C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20753C10D0Ev,_ZThn112_N9S20753C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S20753C10D0Ev,_ZThn84_N9S20753C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20753C10D0Ev,_ZThn56_N9S20753C10D0Ev),
  (VTBL_ENTRY)_ZN9S20753C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S20753C10D1Ev,_ZThn220_N9S20753C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S20753C10D1Ev,_ZThn188_N9S20753C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S20753C10D1Ev,_ZThn152_N9S20753C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20753C10D1Ev,_ZThn112_N9S20753C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S20753C10D1Ev,_ZThn84_N9S20753C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20753C10D1Ev,_ZThn56_N9S20753C10D1Ev),
  (VTBL_ENTRY)_ZN9S20753C10D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20753C10 = {  "S20753C10", // class name
  bases_S20753C10, 21,
  &(vtc_S20753C10[0]), // expected_vtbl_contents
  &(vtt_S20753C10[0]), // expected_vtt_contents
  ABISELECT(432,260), // object size
  NSPAIRA(_ZTI9S20753C10),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20753C10),68, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20753C10),52, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names28,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20753C15  : virtual S20753C2 , S20753C10 , S19905C5_nt {
  int s20753c15f0;
  virtual  ~S20753C15(); // _ZN9S20753C15D2Ev
  S20753C15(); // tgen
};
//SIG(-1 S20753C15) C1{ VBC2{ VBC3{ m} VBC4{ VBC5{ VBC6{ vd m} BC7{ VBC6 VBC8{ VBC6 FD Fc Fs[4]} vd Fi} BC9{ m Fp} vd Fs FL Fp FL} BC9 BC6 BC8 vd Fi} BC8 vd Fs} BC10{ VBC8 VBC11{ VBC6 BC8 VBC2 BC5 Fp} VBC9 BC12{ BC13{ m} VBC5 BC9 VBC3 vd FC7 Fs} vd Fi FC14{}} BC15{ vd m} vd Fi}


 S20753C15 ::~S20753C15(){ note_dtor("S20753C15", this);}
S20753C15 ::S20753C15(){ note_ctor("S20753C15", this);} // tgen

static void Test_S20753C15()
{
  extern Class_Descriptor cd_S20753C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(30,68)];
    init_test(&cd_S20753C15, buf);
    S20753C15 *dp, &lv = *(dp=new (buf) S20753C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,268), "sizeof(S20753C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20753C15)");
    check_base_class_offset(lv, (S5266C29*)(S20753C2*), 0, "S20753C15");
    check_base_class_offset(lv, (S5266C29*)(S20753C12*)(S20753C10*), 0, "S20753C15");
    /*is_ambiguous_... S20753C15::S20753C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C5*), ABISELECT(224,132), "S20753C15");
    /*is_ambiguous_... S20753C15::S20753C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C7*)(S20753C5*), ABISELECT(224,132), "S20753C15");
    /*is_ambiguous_... S20753C15::S20753C8 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C8*), ABISELECT(224,132), "S20753C15");
    /*is_ambiguous_... S20753C4::S20753C8 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C8*)(S20753C4*), ABISELECT(224,132), "S20753C15");
    /*is_ambiguous_... S20753C2::S20753C8 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C8*)(S20753C2*), ABISELECT(224,132), "S20753C15");
    /*is_ambiguous_... S20753C11::S19905C19 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C11*), ABISELECT(224,132), "S20753C15");
    /*is_ambiguous_... S20753C11::S20753C8 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C8*)(S20753C11*), ABISELECT(224,132), "S20753C15");
    /*is_ambiguous_... S20753C11::S20753C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C5*)(S20753C11*), ABISELECT(224,132), "S20753C15");
    /*is_ambiguous_... S20753C11::S20753C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C7*)(S20753C5*)(S20753C11*), ABISELECT(224,132), "S20753C15");
    /*is_ambiguous_... S20753C15::S20753C5 */ AMB_check_base_class_offset(lv, (S20753C8*)(S20753C7*)(S20753C5*), ABISELECT(288,168), "S20753C15");
    /*is_ambiguous_... S20753C10::S20753C8 */ AMB_check_base_class_offset(lv, (S20753C8*)(S20753C10*), ABISELECT(288,168), "S20753C15");
    /*is_ambiguous_... S20753C11::S20753C5 */ AMB_check_base_class_offset(lv, (S20753C8*)(S20753C7*)(S20753C5*)(S20753C11*), ABISELECT(288,168), "S20753C15");
    /*is_ambiguous_... S20753C15::S20753C5 */ AMB_check_base_class_offset(lv, (S20753C7*)(S20753C5*), ABISELECT(224,132), "S20753C15");
    /*is_ambiguous_... S20753C15::S20753C5 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S20753C5*), ABISELECT(240,140), "S20753C15");
    check_base_class_offset(lv, (S20753C5*)(S20753C4*), ABISELECT(224,132), "S20753C15");
    check_base_class_offset(lv, (S20753C5*)(S20753C12*)(S20753C10*), ABISELECT(224,132), "S20753C15");
    /*is_ambiguous_... S20753C4::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S20753C4*), ABISELECT(168,96), "S20753C15");
    /*is_ambiguous_... S20753C4::S19905C19 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C4*), ABISELECT(160,92), "S20753C15");
    /*is_ambiguous_... S20753C4::S20753C8 */ AMB_check_base_class_offset(lv, (S20753C8*)(S20753C4*), ABISELECT(176,100), "S20753C15");
    check_base_class_offset(lv, (S20753C4*)(S20753C2*), ABISELECT(160,92), "S20753C15");
    /*is_ambiguous_... S20753C2::S20753C8 */ AMB_check_base_class_offset(lv, (S20753C8*)(S20753C2*), ABISELECT(112,64), "S20753C15");
    check_base_class_offset(lv, (S20753C2*), ABISELECT(112,64), "S20753C15");
    check_base_class_offset(lv, (S20753C2*)(S20753C11*), ABISELECT(112,64), "S20753C15");
    /*is_ambiguous_... S20753C11::S20753C8 */ AMB_check_base_class_offset(lv, (S20753C8*)(S20753C11*), ABISELECT(336,196), "S20753C15");
    /*is_ambiguous_... S20753C11::S20753C5 */ AMB_check_base_class_offset(lv, (S20753C7*)(S20753C5*)(S20753C11*), ABISELECT(384,224), "S20753C15");
    /*is_ambiguous_... S20753C11::S20753C5 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S20753C5*)(S20753C11*), ABISELECT(400,232), "S20753C15");
    /*is_ambiguous_... S20753C11::S20753C5 */ AMB_check_base_class_offset(lv, (S20753C5*)(S20753C11*), ABISELECT(384,224), "S20753C15");
    check_base_class_offset(lv, (S20753C11*)(S20753C10*), ABISELECT(336,196), "S20753C15");
    /*is_ambiguous_... S20753C10::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S20753C10*), ABISELECT(448,264), "S20753C15");
    check_base_class_offset(lv, (S5266C26*)(S20753C12*)(S20753C10*), 0, "S20753C15");
    /*is_ambiguous_... S20753C12::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S20753C12*)(S20753C10*), ABISELECT(8,4), "S20753C15");
    check_base_class_offset(lv, (S20753C12*)(S20753C10*), 0, "S20753C15");
    check_base_class_offset(lv, (S20753C10*), 0, "S20753C15");
    check_base_class_offset(lv, (S19905C5_nt*), ABISELECT(96,56), "S20753C15");
    check_field_offset(lv, s20753c15f0, ABISELECT(104,60), "S20753C15.s20753c15f0");
    test_class_info(&lv, &cd_S20753C15);
    dp->~S20753C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20753C15(Test_S20753C15, "S20753C15", ABISELECT(464,268));

#else // __cplusplus

extern void _ZN9S20753C15C1Ev();
extern void _ZN9S20753C15D2Ev();
Name_Map name_map_S20753C15[] = {
  NSPAIR(_ZN9S20753C15C1Ev),
  NSPAIR(_ZN9S20753C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S20753C8;
extern VTBL_ENTRY _ZTI8S20753C8[];
extern  VTBL_ENTRY _ZTV8S20753C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C8[];
extern Class_Descriptor cd_S20753C7;
extern VTBL_ENTRY _ZTI8S20753C7[];
extern  VTBL_ENTRY _ZTV8S20753C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C7[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S20753C5;
extern VTBL_ENTRY _ZTI8S20753C5[];
extern  VTBL_ENTRY _ZTV8S20753C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C5[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S20753C8;
extern VTBL_ENTRY _ZTI8S20753C8[];
extern  VTBL_ENTRY _ZTV8S20753C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C8[];
extern Class_Descriptor cd_S20753C4;
extern VTBL_ENTRY _ZTI8S20753C4[];
extern  VTBL_ENTRY _ZTV8S20753C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C4[];
extern Class_Descriptor cd_S20753C8;
extern VTBL_ENTRY _ZTI8S20753C8[];
extern  VTBL_ENTRY _ZTV8S20753C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C8[];
extern Class_Descriptor cd_S20753C2;
extern VTBL_ENTRY _ZTI8S20753C2[];
extern  VTBL_ENTRY _ZTV8S20753C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C2[];
extern Class_Descriptor cd_S20753C8;
extern VTBL_ENTRY _ZTI8S20753C8[];
extern  VTBL_ENTRY _ZTV8S20753C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C8[];
extern Class_Descriptor cd_S20753C7;
extern VTBL_ENTRY _ZTI8S20753C7[];
extern  VTBL_ENTRY _ZTV8S20753C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C7[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S20753C5;
extern VTBL_ENTRY _ZTI8S20753C5[];
extern  VTBL_ENTRY _ZTV8S20753C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C5[];
extern Class_Descriptor cd_S20753C11;
extern VTBL_ENTRY _ZTI9S20753C11[];
extern  VTBL_ENTRY _ZTV9S20753C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20753C11[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S20753C12;
extern VTBL_ENTRY _ZTI9S20753C12[];
extern  VTBL_ENTRY _ZTV9S20753C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20753C12[];
extern Class_Descriptor cd_S20753C10;
extern VTBL_ENTRY _ZTI9S20753C10[];
extern  VTBL_ENTRY _ZTV9S20753C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20753C10[];
extern Class_Descriptor cd_S19905C5_nt;
extern VTBL_ENTRY _ZTI11S19905C5_nt[];
extern  VTBL_ENTRY _ZTV11S19905C5_nt[];
static Base_Class bases_S20753C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19905C19,    ABISELECT(224,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20753C8,    ABISELECT(288,168), //bcp->offset
    48, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20753C7,    ABISELECT(224,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(240,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20753C5,    ABISELECT(224,132), //bcp->offset
    41, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S17777C6_nt,    ABISELECT(168,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19905C19,    ABISELECT(160,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20753C8,    ABISELECT(176,100), //bcp->offset
    35, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20753C4,    ABISELECT(160,92), //bcp->offset
    27, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20753C8,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20753C2,    ABISELECT(112,64), //bcp->offset
    17, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20753C8,    ABISELECT(336,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20753C7,    ABISELECT(384,224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(400,232), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20753C5,    ABISELECT(384,224), //bcp->offset
    65, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20753C11,    ABISELECT(336,196), //bcp->offset
    54, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S17777C6_nt,    ABISELECT(448,264), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20753C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20753C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19905C5_nt,    ABISELECT(96,56), //bcp->offset
    13, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20753C15[];
extern void ABISELECT(_ZTv0_n24_N9S20753C15D1Ev,_ZTv0_n12_N9S20753C15D1Ev)();
extern void _ZN9S20753C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C15D0Ev,_ZTv0_n12_N9S20753C15D0Ev)();
extern void _ZN9S20753C15D0Ev() __attribute__((weak));
extern void ABISELECT(_ZThn96_N9S20753C15D1Ev,_ZThn56_N9S20753C15D1Ev)();
extern void ABISELECT(_ZThn96_N9S20753C15D0Ev,_ZThn56_N9S20753C15D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C15D1Ev,_ZTv0_n12_N9S20753C15D1Ev)();
extern void ABISELECT(_ZThn112_N9S20753C15D1Ev,_ZThn64_N9S20753C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C15D0Ev,_ZTv0_n12_N9S20753C15D0Ev)();
extern void ABISELECT(_ZThn112_N9S20753C15D0Ev,_ZThn64_N9S20753C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20753C15D1Ev,_ZTv0_n24_N9S20753C15D1Ev)();
extern void ABISELECT(_ZThn160_N9S20753C15D1Ev,_ZThn92_N9S20753C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20753C15D0Ev,_ZTv0_n24_N9S20753C15D0Ev)();
extern void ABISELECT(_ZThn160_N9S20753C15D0Ev,_ZThn92_N9S20753C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C15D1Ev,_ZTv0_n12_N9S20753C15D1Ev)();
extern void ABISELECT(_ZThn176_N9S20753C15D1Ev,_ZThn100_N9S20753C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C15D0Ev,_ZTv0_n12_N9S20753C15D0Ev)();
extern void ABISELECT(_ZThn176_N9S20753C15D0Ev,_ZThn100_N9S20753C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C15D1Ev,_ZTv0_n12_N9S20753C15D1Ev)();
extern void ABISELECT(_ZThn224_N9S20753C15D1Ev,_ZThn132_N9S20753C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C15D0Ev,_ZTv0_n12_N9S20753C15D0Ev)();
extern void ABISELECT(_ZThn224_N9S20753C15D0Ev,_ZThn132_N9S20753C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C15D1Ev,_ZTv0_n12_N9S20753C15D1Ev)();
extern void ABISELECT(_ZThn288_N9S20753C15D1Ev,_ZThn168_N9S20753C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C15D0Ev,_ZTv0_n12_N9S20753C15D0Ev)();
extern void ABISELECT(_ZThn288_N9S20753C15D0Ev,_ZThn168_N9S20753C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C15D1Ev,_ZTv0_n12_N9S20753C15D1Ev)();
extern void ABISELECT(_ZThn336_N9S20753C15D1Ev,_ZThn196_N9S20753C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C15D0Ev,_ZTv0_n12_N9S20753C15D0Ev)();
extern void ABISELECT(_ZThn336_N9S20753C15D0Ev,_ZThn196_N9S20753C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C15D1Ev,_ZTv0_n12_N9S20753C15D1Ev)();
extern void ABISELECT(_ZThn384_N9S20753C15D1Ev,_ZThn224_N9S20753C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C15D0Ev,_ZTv0_n12_N9S20753C15D0Ev)();
extern void ABISELECT(_ZThn384_N9S20753C15D0Ev,_ZThn224_N9S20753C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20753C15[] = {
  ABISELECT(448,264),
  ABISELECT(160,92),
  ABISELECT(112,64),
  ABISELECT(336,196),
  0,
  ABISELECT(288,168),
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20753C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C15D1Ev,_ZTv0_n12_N9S20753C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C15D0Ev,_ZTv0_n12_N9S20753C15D0Ev),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20753C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20753C15D1Ev,_ZThn56_N9S20753C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20753C15D0Ev,_ZThn56_N9S20753C15D0Ev),
  ABISELECT(176,104),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-112,-64),
  ABISELECT(112,68),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20753C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C15D1Ev,_ZTv0_n12_N9S20753C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C15D0Ev,_ZTv0_n12_N9S20753C15D0Ev),
  ABISELECT(-160,-92),
  ABISELECT(128,76),
  ABISELECT(64,40),
  ABISELECT(64,40),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI9S20753C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20753C15D1Ev,_ZTv0_n24_N9S20753C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20753C15D0Ev,_ZTv0_n24_N9S20753C15D0Ev),
  ABISELECT(48,32),
  ABISELECT(-176,-100),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI9S20753C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C15D1Ev,_ZTv0_n12_N9S20753C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C15D0Ev,_ZTv0_n12_N9S20753C15D0Ev),
  ABISELECT(64,36),
  0,
  ABISELECT(-224,-132),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI9S20753C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C15D1Ev,_ZTv0_n12_N9S20753C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C15D0Ev,_ZTv0_n12_N9S20753C15D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-288,-168),
  ABISELECT(-288,-168),
  (VTBL_ENTRY)&(_ZTI9S20753C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C15D1Ev,_ZTv0_n12_N9S20753C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C15D0Ev,_ZTv0_n12_N9S20753C15D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(-112,-64),
  ABISELECT(-176,-104),
  ABISELECT(-336,-196),
  ABISELECT(-224,-132),
  ABISELECT(-112,-64),
  ABISELECT(-336,-196),
  ABISELECT(-336,-196),
  (VTBL_ENTRY)&(_ZTI9S20753C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C15D1Ev,_ZTv0_n12_N9S20753C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C15D0Ev,_ZTv0_n12_N9S20753C15D0Ev),
  ABISELECT(-96,-56),
  ABISELECT(-160,-92),
  ABISELECT(-384,-224),
  ABISELECT(-384,-224),
  (VTBL_ENTRY)&(_ZTI9S20753C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C15D1Ev,_ZTv0_n12_N9S20753C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C15D0Ev,_ZTv0_n12_N9S20753C15D0Ev),
};
extern VTBL_ENTRY _ZTV9S20753C15[];
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void _ZN9S20753C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
extern void _ZN9S20753C10D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20753C10__9S20753C15[] = {
  ABISELECT(448,264),
  ABISELECT(160,92),
  ABISELECT(112,64),
  ABISELECT(336,196),
  0,
  ABISELECT(288,168),
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev)();
extern void _ZN9S20753C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev)();
extern void _ZN9S20753C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20753C129S20753C10__9S20753C15[] = {
  0,
  ABISELECT(288,168),
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20753C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev)();
extern void ABISELECT(_ZThn224_N9S20753C12D1Ev,_ZThn132_N9S20753C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev)();
extern void ABISELECT(_ZThn224_N9S20753C12D0Ev,_ZThn132_N9S20753C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C5__9S20753C129S20753C10__9S20753C15[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(-224,-132),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI9S20753C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev)();
extern void ABISELECT(_ZThn288_N9S20753C12D1Ev,_ZThn168_N9S20753C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev)();
extern void ABISELECT(_ZThn288_N9S20753C12D0Ev,_ZThn168_N9S20753C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__9S20753C129S20753C10__9S20753C15[] = {
  ABISELECT(-64,-36),
  ABISELECT(-288,-168),
  ABISELECT(-288,-168),
  (VTBL_ENTRY)&(_ZTI9S20753C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void ABISELECT(_ZThn288_N9S20753C10D1Ev,_ZThn168_N9S20753C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
extern void ABISELECT(_ZThn288_N9S20753C10D0Ev,_ZThn168_N9S20753C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__9S20753C10__9S20753C15[] = {
  ABISELECT(-64,-36),
  ABISELECT(-288,-168),
  ABISELECT(-288,-168),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void ABISELECT(_ZThn224_N9S20753C10D1Ev,_ZThn132_N9S20753C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
extern void ABISELECT(_ZThn224_N9S20753C10D0Ev,_ZThn132_N9S20753C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C5__9S20753C10__9S20753C15[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(-224,-132),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void ABISELECT(_ZThn336_N9S20753C10D1Ev,_ZThn196_N9S20753C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
extern void ABISELECT(_ZThn336_N9S20753C10D0Ev,_ZThn196_N9S20753C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20753C11__9S20753C10__9S20753C15[] = {
  ABISELECT(-48,-28),
  ABISELECT(-112,-64),
  ABISELECT(-176,-104),
  ABISELECT(-336,-196),
  ABISELECT(-224,-132),
  ABISELECT(-112,-64),
  ABISELECT(-336,-196),
  ABISELECT(-336,-196),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void ABISELECT(_ZThn112_N9S20753C10D1Ev,_ZThn64_N9S20753C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
extern void ABISELECT(_ZThn112_N9S20753C10D0Ev,_ZThn64_N9S20753C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C2__9S20753C10__9S20753C15[] = {
  ABISELECT(176,104),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-112,-64),
  ABISELECT(112,68),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20753C10D1Ev,_ZTv0_n24_N9S20753C10D1Ev)();
extern void ABISELECT(_ZThn160_N9S20753C10D1Ev,_ZThn92_N9S20753C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20753C10D0Ev,_ZTv0_n24_N9S20753C10D0Ev)();
extern void ABISELECT(_ZThn160_N9S20753C10D0Ev,_ZThn92_N9S20753C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C4__9S20753C10__9S20753C15[] = {
  ABISELECT(-160,-92),
  ABISELECT(128,76),
  ABISELECT(64,40),
  ABISELECT(64,40),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20753C10D1Ev,_ZTv0_n24_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20753C10D0Ev,_ZTv0_n24_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void ABISELECT(_ZThn176_N9S20753C10D1Ev,_ZThn100_N9S20753C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
extern void ABISELECT(_ZThn176_N9S20753C10D0Ev,_ZThn100_N9S20753C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C88S20753C4__A2__9S20753C10__9S20753C15[] = {
  ABISELECT(48,32),
  ABISELECT(-176,-100),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void ABISELECT(_ZThn384_N9S20753C10D1Ev,_ZThn224_N9S20753C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
extern void ABISELECT(_ZThn384_N9S20753C10D0Ev,_ZThn224_N9S20753C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C59S20753C11__A1__9S20753C10__9S20753C15[] = {
  ABISELECT(-96,-56),
  ABISELECT(-160,-92),
  ABISELECT(-384,-224),
  ABISELECT(-384,-224),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev)();
extern void _ZN8S20753C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev)();
extern void _ZN8S20753C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C2__9S20753C15[] = {
  ABISELECT(176,104),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-112,-64),
  ABISELECT(112,68),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void _ZN8S20753C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
extern void _ZN8S20753C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C88S20753C2__A2__9S20753C15[] = {
  ABISELECT(112,68),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void ABISELECT(_ZThn112_N8S20753C8D1Ev,_ZThn68_N8S20753C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
extern void ABISELECT(_ZThn112_N8S20753C8D0Ev,_ZThn68_N8S20753C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C88S20753C2__A2__9S20753C15[] = {
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S20753C2D1Ev,_ZTv0_n24_N8S20753C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S20753C2D1Ev,_ZThn28_N8S20753C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20753C2D0Ev,_ZTv0_n24_N8S20753C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S20753C2D0Ev,_ZThn28_N8S20753C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C4__8S20753C2__9S20753C15[] = {
  ABISELECT(-48,-28),
  ABISELECT(128,76),
  ABISELECT(64,40),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20753C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20753C2D1Ev,_ZTv0_n24_N8S20753C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20753C2D0Ev,_ZTv0_n24_N8S20753C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev)();
extern void ABISELECT(_ZThn112_N8S20753C2D1Ev,_ZThn68_N8S20753C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev)();
extern void ABISELECT(_ZThn112_N8S20753C2D0Ev,_ZThn68_N8S20753C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C5__8S20753C2__9S20753C15[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S20753C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev)();
extern void ABISELECT(_ZThn176_N8S20753C2D1Ev,_ZThn104_N8S20753C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev)();
extern void ABISELECT(_ZThn176_N8S20753C2D0Ev,_ZThn104_N8S20753C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C2__9S20753C15[] = {
  ABISELECT(-64,-36),
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI8S20753C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S20753C2D1Ev,_ZThn36_N8S20753C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev)();
extern void ABISELECT(_ZThn64_N8S20753C2D0Ev,_ZThn36_N8S20753C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C88S20753C4__A1__8S20753C2__9S20753C15[] = {
  ABISELECT(48,32),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S20753C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev),
};
extern void _ZN8S20753C4D1Ev();
extern void _ZN8S20753C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20753C4__9S20753C15[] = {
  ABISELECT(128,76),
  ABISELECT(64,40),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C4[0]),
  (VTBL_ENTRY)&_ZN8S20753C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20753C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void _ZN8S20753C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
extern void _ZN8S20753C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C88S20753C4__A1__9S20753C15[] = {
  ABISELECT(48,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void ABISELECT(_ZThn48_N8S20753C8D1Ev,_ZThn32_N8S20753C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
extern void ABISELECT(_ZThn48_N8S20753C8D0Ev,_ZThn32_N8S20753C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C88S20753C4__A1__9S20753C15[] = {
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev)();
extern void ABISELECT(_ZThn64_N8S20753C4D1Ev,_ZThn40_N8S20753C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev)();
extern void ABISELECT(_ZThn64_N8S20753C4D0Ev,_ZThn40_N8S20753C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C5__8S20753C4__9S20753C15[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S20753C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev)();
extern void ABISELECT(_ZThn128_N8S20753C4D1Ev,_ZThn76_N8S20753C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev)();
extern void ABISELECT(_ZThn128_N8S20753C4D0Ev,_ZThn76_N8S20753C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C4__9S20753C15[] = {
  ABISELECT(-64,-36),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S20753C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S20753C4D1Ev,_ZThn8_N8S20753C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev)();
extern void ABISELECT(_ZThn16_N8S20753C4D0Ev,_ZThn8_N8S20753C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__A__8S20753C4__9S20753C15[] = {
  ABISELECT(48,32),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20753C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev)();
extern void _ZN8S20753C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev)();
extern void _ZN8S20753C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C5__9S20753C15[] = {
  ABISELECT(64,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void _ZN8S20753C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
extern void _ZN8S20753C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C78S20753C5__9S20753C15[] = {
  ABISELECT(64,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void ABISELECT(_ZThn64_N8S20753C7D1Ev,_ZThn36_N8S20753C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
extern void ABISELECT(_ZThn64_N8S20753C7D0Ev,_ZThn36_N8S20753C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C78S20753C5__9S20753C15[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev)();
extern void ABISELECT(_ZThn64_N8S20753C5D1Ev,_ZThn36_N8S20753C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev)();
extern void ABISELECT(_ZThn64_N8S20753C5D0Ev,_ZThn36_N8S20753C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C5__9S20753C15[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void _ZN8S20753C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
extern void _ZN8S20753C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__9S20753C15[] = {
  ABISELECT(-64,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C8__9S20753C15[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev)();
extern void _ZN9S20753C11D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev)();
extern void _ZN9S20753C11D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20753C11__9S20753C15[] = {
  ABISELECT(-48,-28),
  ABISELECT(-112,-64),
  ABISELECT(-176,-104),
  ABISELECT(-336,-196),
  ABISELECT(-224,-132),
  ABISELECT(-112,-64),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20753C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void _ZN8S20753C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
extern void _ZN8S20753C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C89S20753C11__A3__9S20753C15[] = {
  ABISELECT(-112,-64),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C89S20753C11__A3__9S20753C15[] = {
  ABISELECT(112,64),
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev)();
extern void _ZN8S20753C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev)();
extern void _ZN8S20753C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C59S20753C11__A1__9S20753C15[] = {
  ABISELECT(-96,-56),
  ABISELECT(-160,-92),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void _ZN8S20753C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
extern void _ZN8S20753C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C78S20753C59S20753C11__A1__9S20753C15[] = {
  ABISELECT(-96,-56),
  ABISELECT(-160,-92),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C78S20753C59S20753C11__A1__9S20753C15[] = {
  ABISELECT(160,92),
  ABISELECT(160,92),
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C78S20753C59S20753C11__A1__9S20753C15[] = {
  ABISELECT(-64,-36),
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C59S20753C11__A1__9S20753C15[] = {
  ABISELECT(160,92),
  ABISELECT(160,92),
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C59S20753C11__A1__9S20753C15[] = {
  ABISELECT(-64,-36),
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C5__9S20753C11__9S20753C15[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(112,64),
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI9S20753C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C2__9S20753C11__9S20753C15[] = {
  ABISELECT(176,104),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-112,-64),
  ABISELECT(112,68),
  ABISELECT(224,132),
  ABISELECT(224,132),
  (VTBL_ENTRY)&(_ZTI9S20753C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20753C11D1Ev,_ZTv0_n24_N9S20753C11D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20753C11D0Ev,_ZTv0_n24_N9S20753C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C4__9S20753C11__9S20753C15[] = {
  ABISELECT(176,104),
  ABISELECT(128,76),
  ABISELECT(64,40),
  ABISELECT(64,40),
  ABISELECT(176,104),
  (VTBL_ENTRY)&(_ZTI9S20753C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20753C11D1Ev,_ZTv0_n24_N9S20753C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20753C11D0Ev,_ZTv0_n24_N9S20753C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C8__A1__9S20753C11__9S20753C15[] = {
  ABISELECT(-64,-36),
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S20753C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C88S20753C4__A2__9S20753C11__9S20753C15[] = {
  ABISELECT(48,32),
  ABISELECT(160,96),
  ABISELECT(160,96),
  (VTBL_ENTRY)&(_ZTI9S20753C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev)();
extern void ABISELECT(_ZThn48_N9S20753C11D1Ev,_ZThn28_N9S20753C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev)();
extern void ABISELECT(_ZThn48_N9S20753C11D0Ev,_ZThn28_N9S20753C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C5__A__9S20753C11__9S20753C15[] = {
  ABISELECT(-96,-56),
  ABISELECT(-160,-92),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S20753C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev),
};
static  VTT_ENTRY vtt_S20753C15[] = {
  {&(_ZTV9S20753C15[11]),  11,72},
  {&(_tg__ZTV9S20753C10__9S20753C15[11]),  11,13},
  {&(_tg__ZTV9S20753C129S20753C10__9S20753C15[7]),  7,9},
  {&(_tg__ZTV8S20753C5__9S20753C129S20753C10__9S20753C15[5]),  5,7},
  {&(_tg__ZTV8S20753C5__9S20753C129S20753C10__9S20753C15[5]),  5,7},
  {&(_tg__ZTV8S20753C8__9S20753C129S20753C10__9S20753C15[4]),  4,6},
  {&(_tg__ZTV8S20753C8__9S20753C10__9S20753C15[4]),  4,6},
  {&(_tg__ZTV8S20753C5__9S20753C10__9S20753C15[5]),  5,7},
  {&(_tg__ZTV9S20753C11__9S20753C10__9S20753C15[9]),  9,11},
  {&(_tg__ZTV8S20753C2__9S20753C10__9S20753C15[8]),  8,10},
  {&(_tg__ZTV8S20753C4__9S20753C10__9S20753C15[6]),  6,8},
  {&(_tg__ZTV8S20753C5__9S20753C10__9S20753C15[5]),  5,7},
  {&(_tg__ZTV8S20753C88S20753C4__A2__9S20753C10__9S20753C15[4]),  4,6},
  {&(_tg__ZTV8S20753C59S20753C11__A1__9S20753C10__9S20753C15[5]),  5,7},
  {&(_ZTV9S20753C15[25]),  25,72},
  {&(_ZTV9S20753C15[33]),  33,72},
  {&(_ZTV9S20753C15[46]),  46,72},
  {&(_ZTV9S20753C15[46]),  46,72},
  {&(_ZTV9S20753C15[52]),  52,72},
  {&(_ZTV9S20753C15[39]),  39,72},
  {&(_ZTV9S20753C15[63]),  63,72},
  {&(_ZTV9S20753C15[70]),  70,72},
  {&(_tg__ZTV8S20753C2__9S20753C15[8]),  8,10},
  {&(_tg__ZTV8S20753C88S20753C2__A2__9S20753C15[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S20753C88S20753C2__A2__9S20753C15[3]),  3,5},
  {&(_tg__ZTV8S20753C4__8S20753C2__9S20753C15[6]),  6,8},
  {&(_tg__ZTV8S20753C5__8S20753C2__9S20753C15[5]),  5,7},
  {&(_tg__ZTV8S20753C5__8S20753C2__9S20753C15[5]),  5,7},
  {&(_tg__ZTV8S20753C8__8S20753C2__9S20753C15[4]),  4,6},
  {&(_tg__ZTV8S20753C88S20753C4__A1__8S20753C2__9S20753C15[4]),  4,6},
  {&(_tg__ZTV8S20753C4__9S20753C15[5]),  5,7},
  {&(_tg__ZTV8S20753C88S20753C4__A1__9S20753C15[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S20753C88S20753C4__A1__9S20753C15[3]),  3,5},
  {&(_tg__ZTV8S20753C5__8S20753C4__9S20753C15[5]),  5,7},
  {&(_tg__ZTV8S20753C5__8S20753C4__9S20753C15[5]),  5,7},
  {&(_tg__ZTV8S20753C8__8S20753C4__9S20753C15[4]),  4,6},
  {&(_tg__ZTV8S20753C8__A__8S20753C4__9S20753C15[4]),  4,6},
  {&(_tg__ZTV8S20753C5__9S20753C15[5]),  5,7},
  {&(_tg__ZTV8S20753C78S20753C5__9S20753C15[5]),  5,7},
  {&(_tg__ZTV8S20753C78S20753C5__9S20753C15[5]),  5,7},
  {&(_tg__ZTV8S20753C8__8S20753C78S20753C5__9S20753C15[4]),  4,6},
  {&(_tg__ZTV8S20753C5__9S20753C15[5]),  5,7},
  {&(_tg__ZTV8S20753C8__8S20753C5__9S20753C15[4]),  4,6},
  {&(_tg__ZTV8S20753C8__9S20753C15[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S20753C8__9S20753C15[3]),  3,5},
  {&(_tg__ZTV9S20753C11__9S20753C15[9]),  9,11},
  {&(_tg__ZTV8S20753C89S20753C11__A3__9S20753C15[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S20753C89S20753C11__A3__9S20753C15[3]),  3,5},
  {&(_tg__ZTV8S20753C59S20753C11__A1__9S20753C15[5]),  5,7},
  {&(_tg__ZTV8S20753C78S20753C59S20753C11__A1__9S20753C15[5]),  5,7},
  {&(_tg__ZTV9S19905C19__8S20753C78S20753C59S20753C11__A1__9S20753C15[3]),  3,5},
  {&(_tg__ZTV8S20753C8__8S20753C78S20753C59S20753C11__A1__9S20753C15[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S20753C59S20753C11__A1__9S20753C15[3]),  3,5},
  {&(_tg__ZTV8S20753C8__8S20753C59S20753C11__A1__9S20753C15[4]),  4,6},
  {&(_tg__ZTV8S20753C5__9S20753C11__9S20753C15[5]),  5,7},
  {&(_tg__ZTV8S20753C2__9S20753C11__9S20753C15[8]),  8,10},
  {&(_tg__ZTV8S20753C4__9S20753C11__9S20753C15[6]),  6,8},
  {&(_tg__ZTV8S20753C5__9S20753C11__9S20753C15[5]),  5,7},
  {&(_tg__ZTV8S20753C8__A1__9S20753C11__9S20753C15[4]),  4,6},
  {&(_tg__ZTV8S20753C88S20753C4__A2__9S20753C11__9S20753C15[4]),  4,6},
  {&(_tg__ZTV8S20753C5__A__9S20753C11__9S20753C15[5]),  5,7},
};
extern VTBL_ENTRY _ZTI9S20753C15[];
extern  VTBL_ENTRY _ZTV9S20753C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20753C15[];
static VTBL_ENTRY alt_thunk_names29[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20753C11D0Ev,_ZThn28_N9S20753C11D0Ev),
  (VTBL_ENTRY)_ZN9S20753C11D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20753C11D1Ev,_ZThn28_N9S20753C11D1Ev),
  (VTBL_ENTRY)_ZN9S20753C11D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S20753C7D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C7D0Ev,_ZThn36_N8S20753C7D0Ev),
  (VTBL_ENTRY)_ZN8S20753C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S20753C7D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C7D1Ev,_ZThn36_N8S20753C7D1Ev),
  (VTBL_ENTRY)_ZN8S20753C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S20753C5D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C5D0Ev,_ZThn36_N8S20753C5D0Ev),
  (VTBL_ENTRY)_ZN8S20753C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S20753C5D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C5D1Ev,_ZThn36_N8S20753C5D1Ev),
  (VTBL_ENTRY)_ZN8S20753C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20753C4D0Ev,_ZThn8_N8S20753C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20753C4D0Ev,_ZThn76_N8S20753C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C4D0Ev,_ZThn40_N8S20753C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20753C4D1Ev,_ZThn8_N8S20753C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20753C4D1Ev,_ZThn76_N8S20753C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C4D1Ev,_ZThn40_N8S20753C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20753C2D0Ev,_ZTv0_n24_N8S20753C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20753C2D0Ev,_ZThn28_N8S20753C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20753C2D1Ev,_ZTv0_n24_N8S20753C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20753C2D1Ev,_ZThn28_N8S20753C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev), // 
  (VTBL_ENTRY)_ZN8S20753C8D0Ev,
  (VTBL_ENTRY)_ZN8S20753C8D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20753C8D0Ev,_ZThn32_N8S20753C8D0Ev),
  (VTBL_ENTRY)_ZN8S20753C8D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20753C8D0Ev,_ZThn68_N8S20753C8D0Ev),
  (VTBL_ENTRY)_ZN8S20753C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev), // 
  (VTBL_ENTRY)_ZN8S20753C8D1Ev,
  (VTBL_ENTRY)_ZN8S20753C8D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20753C8D1Ev,_ZThn32_N8S20753C8D1Ev),
  (VTBL_ENTRY)_ZN8S20753C8D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20753C8D1Ev,_ZThn68_N8S20753C8D1Ev),
  (VTBL_ENTRY)_ZN8S20753C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C2D0Ev,_ZThn36_N8S20753C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20753C2D0Ev,_ZThn104_N8S20753C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20753C2D0Ev,_ZThn68_N8S20753C2D0Ev),
  (VTBL_ENTRY)_ZN8S20753C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C2D1Ev,_ZThn36_N8S20753C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20753C2D1Ev,_ZThn104_N8S20753C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20753C2D1Ev,_ZThn68_N8S20753C2D1Ev),
  (VTBL_ENTRY)_ZN8S20753C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20753C10D0Ev,_ZTv0_n24_N9S20753C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20753C10D0Ev,_ZThn92_N9S20753C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20753C10D1Ev,_ZTv0_n24_N9S20753C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20753C10D1Ev,_ZThn92_N9S20753C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S20753C12D0Ev,_ZThn168_N9S20753C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S20753C12D0Ev,_ZThn132_N9S20753C12D0Ev),
  (VTBL_ENTRY)_ZN9S20753C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S20753C12D1Ev,_ZThn168_N9S20753C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S20753C12D1Ev,_ZThn132_N9S20753C12D1Ev),
  (VTBL_ENTRY)_ZN9S20753C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S20753C10D0Ev,_ZThn224_N9S20753C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20753C10D0Ev,_ZThn100_N9S20753C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20753C10D0Ev,_ZThn64_N9S20753C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S20753C10D0Ev,_ZThn196_N9S20753C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S20753C10D0Ev,_ZThn132_N9S20753C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S20753C10D0Ev,_ZThn168_N9S20753C10D0Ev),
  (VTBL_ENTRY)_ZN9S20753C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S20753C10D1Ev,_ZThn224_N9S20753C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20753C10D1Ev,_ZThn100_N9S20753C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20753C10D1Ev,_ZThn64_N9S20753C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S20753C10D1Ev,_ZThn196_N9S20753C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S20753C10D1Ev,_ZThn132_N9S20753C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S20753C10D1Ev,_ZThn168_N9S20753C10D1Ev),
  (VTBL_ENTRY)_ZN9S20753C10D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20753C15D0Ev,_ZTv0_n24_N9S20753C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20753C15D0Ev,_ZThn92_N9S20753C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20753C15D1Ev,_ZTv0_n24_N9S20753C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20753C15D1Ev,_ZThn92_N9S20753C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C15D0Ev,_ZTv0_n12_N9S20753C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S20753C15D0Ev,_ZThn224_N9S20753C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S20753C15D0Ev,_ZThn196_N9S20753C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S20753C15D0Ev,_ZThn168_N9S20753C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S20753C15D0Ev,_ZThn132_N9S20753C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20753C15D0Ev,_ZThn100_N9S20753C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20753C15D0Ev,_ZThn64_N9S20753C15D0Ev),
  (VTBL_ENTRY)_ZN9S20753C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C15D1Ev,_ZTv0_n12_N9S20753C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S20753C15D1Ev,_ZThn224_N9S20753C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S20753C15D1Ev,_ZThn196_N9S20753C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S20753C15D1Ev,_ZThn168_N9S20753C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S20753C15D1Ev,_ZThn132_N9S20753C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20753C15D1Ev,_ZThn100_N9S20753C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20753C15D1Ev,_ZThn64_N9S20753C15D1Ev),
  (VTBL_ENTRY)_ZN9S20753C15D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20753C15 = {  "S20753C15", // class name
  bases_S20753C15, 23,
  &(vtc_S20753C15[0]), // expected_vtbl_contents
  &(vtt_S20753C15[0]), // expected_vtt_contents
  ABISELECT(464,268), // object size
  NSPAIRA(_ZTI9S20753C15),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20753C15),72, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20753C15),61, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names29,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20753C18  : virtual S20753C8 , virtual S20753C7 , virtual S5266C26 , virtual S20753C2 , S20753C5 {
  ::S20753C4 s20753c18f0;
  int s20753c18f1;
  short s20753c18f2;
  virtual  ~S20753C18(); // _ZN9S20753C18D2Ev
  S20753C18(); // tgen
};
//SIG(-1 S20753C18) C1{ VBC2{ VBC3{ vd m} FD Fc Fs[4]} VBC4{ VBC3 VBC2 vd Fi} VBC5{ m} VBC6{ VBC7{ m} VBC8{ VBC9{ VBC3 BC4 BC10{ m Fp} vd Fs FL Fp FL} BC10 BC3 BC2 vd Fi} BC2 vd Fs} BC9 vd FC8 Fi Fs}


 S20753C18 ::~S20753C18(){ note_dtor("S20753C18", this);}
S20753C18 ::S20753C18(){ note_ctor("S20753C18", this);} // tgen

static void Test_S20753C18()
{
  extern Class_Descriptor cd_S20753C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(32,73)];
    init_test(&cd_S20753C18, buf);
    S20753C18 *dp, &lv = *(dp=new (buf) S20753C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(496,288), "sizeof(S20753C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20753C18)");
    /*is_ambiguous_... S20753C18::S20753C8 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C8*), ABISELECT(256,148), "S20753C18");
    /*is_ambiguous_... S20753C18::S20753C7 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C7*), ABISELECT(256,148), "S20753C18");
    /*is_ambiguous_... S20753C18::S20753C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C5*), ABISELECT(256,148), "S20753C18");
    /*is_ambiguous_... S20753C18::S20753C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C7*)(S20753C5*), ABISELECT(256,148), "S20753C18");
    /*is_ambiguous_... S20753C4::S20753C8 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C8*)(S20753C4*), ABISELECT(256,148), "S20753C18");
    /*is_ambiguous_... S20753C2::S20753C8 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C8*)(S20753C2*), ABISELECT(256,148), "S20753C18");
    /*is_ambiguous_... S20753C18::S20753C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C5*), ABISELECT(256,148), "S20753C18");
    /*is_ambiguous_... S20753C18::S20753C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C7*)(S20753C5*), ABISELECT(256,148), "S20753C18");
    /*is_ambiguous_... S20753C18::S20753C8 */ AMB_check_base_class_offset(lv, (S20753C8*), ABISELECT(256,148), "S20753C18");
    /*is_ambiguous_... S20753C18::S20753C7 */ AMB_check_base_class_offset(lv, (S20753C8*)(S20753C7*), ABISELECT(256,148), "S20753C18");
    /*is_ambiguous_... S20753C18::S20753C5 */ AMB_check_base_class_offset(lv, (S20753C8*)(S20753C7*)(S20753C5*), ABISELECT(256,148), "S20753C18");
    /*is_ambiguous_... S20753C18::S20753C5 */ AMB_check_base_class_offset(lv, (S20753C8*)(S20753C7*)(S20753C5*), ABISELECT(256,148), "S20753C18");
    /*is_ambiguous_... S20753C18::S20753C7 */ AMB_check_base_class_offset(lv, (S20753C7*), ABISELECT(304,176), "S20753C18");
    check_base_class_offset(lv, (S5266C26*), 0, "S20753C18");
    check_base_class_offset(lv, (S5266C29*)(S20753C2*), 0, "S20753C18");
    /*is_ambiguous_... S20753C18::S20753C5 */ AMB_check_base_class_offset(lv, (S20753C7*)(S20753C5*), ABISELECT(432,252), "S20753C18");
    /*is_ambiguous_... S20753C18::S20753C5 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S20753C5*), ABISELECT(448,260), "S20753C18");
    check_base_class_offset(lv, (S20753C5*)(S20753C4*), ABISELECT(432,252), "S20753C18");
    /*is_ambiguous_... S20753C4::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S20753C4*), ABISELECT(376,216), "S20753C18");
    /*is_ambiguous_... S20753C4::S19905C19 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C4*), ABISELECT(368,212), "S20753C18");
    /*is_ambiguous_... S20753C4::S20753C8 */ AMB_check_base_class_offset(lv, (S20753C8*)(S20753C4*), ABISELECT(384,220), "S20753C18");
    check_base_class_offset(lv, (S20753C4*)(S20753C2*), ABISELECT(368,212), "S20753C18");
    /*is_ambiguous_... S20753C2::S20753C8 */ AMB_check_base_class_offset(lv, (S20753C8*)(S20753C2*), ABISELECT(320,184), "S20753C18");
    check_base_class_offset(lv, (S20753C2*), ABISELECT(320,184), "S20753C18");
    /*is_ambiguous_... S20753C18::S20753C5 */ AMB_check_base_class_offset(lv, (S20753C7*)(S20753C5*), 0, "S20753C18");
    /*is_ambiguous_... S20753C18::S20753C5 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S20753C5*), ABISELECT(16,8), "S20753C18");
    /*is_ambiguous_... S20753C18::S20753C5 */ AMB_check_base_class_offset(lv, (S20753C5*), 0, "S20753C18");
    check_field_offset(lv, s20753c18f0, ABISELECT(64,36), "S20753C18.s20753c18f0");
    check_field_offset(lv, s20753c18f1, ABISELECT(240,140), "S20753C18.s20753c18f1");
    check_field_offset(lv, s20753c18f2, ABISELECT(244,144), "S20753C18.s20753c18f2");
    test_class_info(&lv, &cd_S20753C18);
    dp->~S20753C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20753C18(Test_S20753C18, "S20753C18", ABISELECT(496,288));

#else // __cplusplus

extern void _ZN9S20753C18C1Ev();
extern void _ZN9S20753C18D2Ev();
Name_Map name_map_S20753C18[] = {
  NSPAIR(_ZN9S20753C18C1Ev),
  NSPAIR(_ZN9S20753C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S20753C8;
extern VTBL_ENTRY _ZTI8S20753C8[];
extern  VTBL_ENTRY _ZTV8S20753C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C8[];
extern Class_Descriptor cd_S20753C7;
extern VTBL_ENTRY _ZTI8S20753C7[];
extern  VTBL_ENTRY _ZTV8S20753C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C7[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S20753C7;
extern VTBL_ENTRY _ZTI8S20753C7[];
extern  VTBL_ENTRY _ZTV8S20753C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C7[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S20753C5;
extern VTBL_ENTRY _ZTI8S20753C5[];
extern  VTBL_ENTRY _ZTV8S20753C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C5[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S20753C8;
extern VTBL_ENTRY _ZTI8S20753C8[];
extern  VTBL_ENTRY _ZTV8S20753C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C8[];
extern Class_Descriptor cd_S20753C4;
extern VTBL_ENTRY _ZTI8S20753C4[];
extern  VTBL_ENTRY _ZTV8S20753C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C4[];
extern Class_Descriptor cd_S20753C8;
extern VTBL_ENTRY _ZTI8S20753C8[];
extern  VTBL_ENTRY _ZTV8S20753C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C8[];
extern Class_Descriptor cd_S20753C2;
extern VTBL_ENTRY _ZTI8S20753C2[];
extern  VTBL_ENTRY _ZTV8S20753C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C2[];
extern Class_Descriptor cd_S20753C7;
extern VTBL_ENTRY _ZTI8S20753C7[];
extern  VTBL_ENTRY _ZTV8S20753C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C7[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S20753C5;
extern VTBL_ENTRY _ZTI8S20753C5[];
extern  VTBL_ENTRY _ZTV8S20753C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C5[];
static Base_Class bases_S20753C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19905C19,    ABISELECT(256,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20753C8,    ABISELECT(256,148), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20753C7,    ABISELECT(304,176), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20753C7,    ABISELECT(432,252), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(448,260), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20753C5,    ABISELECT(432,252), //bcp->offset
    50, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S17777C6_nt,    ABISELECT(376,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19905C19,    ABISELECT(368,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20753C8,    ABISELECT(384,220), //bcp->offset
    44, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20753C4,    ABISELECT(368,212), //bcp->offset
    36, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20753C8,    ABISELECT(320,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20753C2,    ABISELECT(320,184), //bcp->offset
    26, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20753C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20753C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20753C18[];
extern void ABISELECT(_ZTv0_n24_N9S20753C18D1Ev,_ZTv0_n12_N9S20753C18D1Ev)();
extern void _ZN9S20753C18D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C18D0Ev,_ZTv0_n12_N9S20753C18D0Ev)();
extern void _ZN9S20753C18D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C18D1Ev,_ZTv0_n12_N9S20753C18D1Ev)();
extern void ABISELECT(_ZThn256_N9S20753C18D1Ev,_ZThn148_N9S20753C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C18D0Ev,_ZTv0_n12_N9S20753C18D0Ev)();
extern void ABISELECT(_ZThn256_N9S20753C18D0Ev,_ZThn148_N9S20753C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C18D1Ev,_ZTv0_n12_N9S20753C18D1Ev)();
extern void ABISELECT(_ZThn304_N9S20753C18D1Ev,_ZThn176_N9S20753C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C18D0Ev,_ZTv0_n12_N9S20753C18D0Ev)();
extern void ABISELECT(_ZThn304_N9S20753C18D0Ev,_ZThn176_N9S20753C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C18D1Ev,_ZTv0_n12_N9S20753C18D1Ev)();
extern void ABISELECT(_ZThn320_N9S20753C18D1Ev,_ZThn184_N9S20753C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C18D0Ev,_ZTv0_n12_N9S20753C18D0Ev)();
extern void ABISELECT(_ZThn320_N9S20753C18D0Ev,_ZThn184_N9S20753C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20753C18D1Ev,_ZTv0_n24_N9S20753C18D1Ev)();
extern void ABISELECT(_ZThn368_N9S20753C18D1Ev,_ZThn212_N9S20753C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20753C18D0Ev,_ZTv0_n24_N9S20753C18D0Ev)();
extern void ABISELECT(_ZThn368_N9S20753C18D0Ev,_ZThn212_N9S20753C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C18D1Ev,_ZTv0_n12_N9S20753C18D1Ev)();
extern void ABISELECT(_ZThn384_N9S20753C18D1Ev,_ZThn220_N9S20753C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C18D0Ev,_ZTv0_n12_N9S20753C18D0Ev)();
extern void ABISELECT(_ZThn384_N9S20753C18D0Ev,_ZThn220_N9S20753C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C18D1Ev,_ZTv0_n12_N9S20753C18D1Ev)();
extern void ABISELECT(_ZThn432_N9S20753C18D1Ev,_ZThn252_N9S20753C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C18D0Ev,_ZTv0_n12_N9S20753C18D0Ev)();
extern void ABISELECT(_ZThn432_N9S20753C18D0Ev,_ZThn252_N9S20753C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20753C18[] = {
  ABISELECT(432,252),
  ABISELECT(368,212),
  0,
  ABISELECT(320,184),
  0,
  ABISELECT(304,176),
  ABISELECT(256,148),
  ABISELECT(256,148),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20753C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C18D1Ev,_ZTv0_n12_N9S20753C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C18D0Ev,_ZTv0_n12_N9S20753C18D0Ev),
  0,
  ABISELECT(-256,-148),
  ABISELECT(-256,-148),
  (VTBL_ENTRY)&(_ZTI9S20753C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C18D1Ev,_ZTv0_n12_N9S20753C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C18D0Ev,_ZTv0_n12_N9S20753C18D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-304,-176),
  ABISELECT(-304,-176),
  (VTBL_ENTRY)&(_ZTI9S20753C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C18D1Ev,_ZTv0_n12_N9S20753C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C18D0Ev,_ZTv0_n12_N9S20753C18D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-320,-184),
  ABISELECT(-64,-36),
  ABISELECT(-320,-184),
  ABISELECT(-320,-184),
  (VTBL_ENTRY)&(_ZTI9S20753C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C18D1Ev,_ZTv0_n12_N9S20753C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C18D0Ev,_ZTv0_n12_N9S20753C18D0Ev),
  ABISELECT(-368,-212),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(64,40),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI9S20753C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20753C18D1Ev,_ZTv0_n24_N9S20753C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20753C18D0Ev,_ZTv0_n24_N9S20753C18D0Ev),
  ABISELECT(-128,-72),
  ABISELECT(-384,-220),
  ABISELECT(-384,-220),
  (VTBL_ENTRY)&(_ZTI9S20753C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C18D1Ev,_ZTv0_n12_N9S20753C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C18D0Ev,_ZTv0_n12_N9S20753C18D0Ev),
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  ABISELECT(-432,-252),
  ABISELECT(-432,-252),
  (VTBL_ENTRY)&(_ZTI9S20753C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C18D1Ev,_ZTv0_n12_N9S20753C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C18D0Ev,_ZTv0_n12_N9S20753C18D0Ev),
};
extern VTBL_ENTRY _ZTV9S20753C18[];
extern void ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev)();
extern void _ZN8S20753C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev)();
extern void _ZN8S20753C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C5__A__9S20753C18[] = {
  ABISELECT(256,148),
  ABISELECT(256,148),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void _ZN8S20753C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
extern void _ZN8S20753C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C78S20753C5__A2__9S20753C18[] = {
  ABISELECT(256,148),
  ABISELECT(256,148),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void ABISELECT(_ZThn256_N8S20753C7D1Ev,_ZThn148_N8S20753C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
extern void ABISELECT(_ZThn256_N8S20753C7D0Ev,_ZThn148_N8S20753C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C78S20753C5__A2__9S20753C18[] = {
  0,
  ABISELECT(-256,-148),
  ABISELECT(-256,-148),
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev)();
extern void ABISELECT(_ZThn256_N8S20753C5D1Ev,_ZThn148_N8S20753C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev)();
extern void ABISELECT(_ZThn256_N8S20753C5D0Ev,_ZThn148_N8S20753C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C5__A__9S20753C18[] = {
  0,
  ABISELECT(-256,-148),
  ABISELECT(-256,-148),
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void _ZN8S20753C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
extern void _ZN8S20753C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__9S20753C18[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void _ZN8S20753C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
extern void _ZN8S20753C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C7__9S20753C18[] = {
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C7__9S20753C18[] = {
  0,
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev)();
extern void _ZN8S20753C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev)();
extern void _ZN8S20753C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C2__9S20753C18[] = {
  ABISELECT(-64,-36),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-320,-184),
  ABISELECT(-64,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void _ZN8S20753C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
extern void _ZN8S20753C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C88S20753C2__A2__9S20753C18[] = {
  ABISELECT(-64,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C88S20753C2__A2__9S20753C18[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S20753C2D1Ev,_ZTv0_n24_N8S20753C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S20753C2D1Ev,_ZThn28_N8S20753C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20753C2D0Ev,_ZTv0_n24_N8S20753C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S20753C2D0Ev,_ZThn28_N8S20753C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C4__8S20753C2__9S20753C18[] = {
  ABISELECT(-48,-28),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20753C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20753C2D1Ev,_ZTv0_n24_N8S20753C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20753C2D0Ev,_ZTv0_n24_N8S20753C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev)();
extern void ABISELECT(_ZThn112_N8S20753C2D1Ev,_ZThn68_N8S20753C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev)();
extern void ABISELECT(_ZThn112_N8S20753C2D0Ev,_ZThn68_N8S20753C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C5__8S20753C2__9S20753C18[] = {
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S20753C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C2__9S20753C18[] = {
  0,
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S20753C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S20753C2D1Ev,_ZThn36_N8S20753C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev)();
extern void ABISELECT(_ZThn64_N8S20753C2D0Ev,_ZThn36_N8S20753C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C88S20753C4__A1__8S20753C2__9S20753C18[] = {
  ABISELECT(-128,-72),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S20753C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev),
};
extern void _ZN8S20753C4D1Ev();
extern void _ZN8S20753C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20753C4__9S20753C18[] = {
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C4[0]),
  (VTBL_ENTRY)&_ZN8S20753C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20753C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void _ZN8S20753C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
extern void _ZN8S20753C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C88S20753C4__A1__9S20753C18[] = {
  ABISELECT(-128,-72),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C88S20753C4__A1__9S20753C18[] = {
  ABISELECT(128,72),
  ABISELECT(128,72),
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev)();
extern void ABISELECT(_ZThn64_N8S20753C4D1Ev,_ZThn40_N8S20753C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev)();
extern void ABISELECT(_ZThn64_N8S20753C4D0Ev,_ZThn40_N8S20753C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C5__8S20753C4__9S20753C18[] = {
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S20753C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C4__9S20753C18[] = {
  0,
  ABISELECT(112,64),
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI8S20753C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S20753C4D1Ev,_ZThn8_N8S20753C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev)();
extern void ABISELECT(_ZThn16_N8S20753C4D0Ev,_ZThn8_N8S20753C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__A__8S20753C4__9S20753C18[] = {
  ABISELECT(-128,-72),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20753C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev)();
extern void _ZN8S20753C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev)();
extern void _ZN8S20753C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C5__9S20753C18[] = {
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void _ZN8S20753C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
extern void _ZN8S20753C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C78S20753C5__A1__9S20753C18[] = {
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C78S20753C5__A1__9S20753C18[] = {
  0,
  ABISELECT(176,104),
  ABISELECT(176,104),
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C5__9S20753C18[] = {
  0,
  ABISELECT(176,104),
  ABISELECT(176,104),
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev),
};
static  VTT_ENTRY vtt_S20753C18[] = {
  {&(_ZTV9S20753C18[11]),  11,57},
  {&(_tg__ZTV8S20753C5__A__9S20753C18[5]),  5,7},
  {&(_tg__ZTV8S20753C78S20753C5__A2__9S20753C18[5]),  5,7},
  {&(_tg__ZTV8S20753C8__8S20753C78S20753C5__A2__9S20753C18[4]),  4,6},
  {&(_tg__ZTV8S20753C8__8S20753C78S20753C5__A2__9S20753C18[4]),  4,6},
  {&(_tg__ZTV8S20753C8__8S20753C5__A__9S20753C18[4]),  4,6},
  {&(_tg__ZTV8S20753C8__8S20753C5__A__9S20753C18[4]),  4,6},
  {&(_ZTV9S20753C18[17]),  17,57},
  {&(_ZTV9S20753C18[17]),  17,57},
  {&(_ZTV9S20753C18[24]),  24,57},
  {&(_ZTV9S20753C18[34]),  34,57},
  {&(_ZTV9S20753C18[42]),  42,57},
  {&(_ZTV9S20753C18[55]),  55,57},
  {&(_ZTV9S20753C18[48]),  48,57},
  {&(_tg__ZTV8S20753C8__9S20753C18[4]),  4,6},
  {&(_tg__ZTV8S20753C8__9S20753C18[4]),  4,6},
  {&(_tg__ZTV8S20753C7__9S20753C18[5]),  5,7},
  {&(_tg__ZTV8S20753C8__8S20753C7__9S20753C18[4]),  4,6},
  {&(_tg__ZTV8S20753C8__8S20753C7__9S20753C18[4]),  4,6},
  {&(_tg__ZTV8S20753C2__9S20753C18[8]),  8,10},
  {&(_tg__ZTV8S20753C88S20753C2__A2__9S20753C18[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S20753C88S20753C2__A2__9S20753C18[3]),  3,5},
  {&(_tg__ZTV8S20753C4__8S20753C2__9S20753C18[6]),  6,8},
  {&(_tg__ZTV8S20753C5__8S20753C2__9S20753C18[5]),  5,7},
  {&(_tg__ZTV8S20753C8__8S20753C2__9S20753C18[4]),  4,6},
  {&(_tg__ZTV8S20753C8__8S20753C2__9S20753C18[4]),  4,6},
  {&(_tg__ZTV8S20753C88S20753C4__A1__8S20753C2__9S20753C18[4]),  4,6},
  {&(_tg__ZTV8S20753C4__9S20753C18[5]),  5,7},
  {&(_tg__ZTV8S20753C88S20753C4__A1__9S20753C18[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S20753C88S20753C4__A1__9S20753C18[3]),  3,5},
  {&(_tg__ZTV8S20753C5__8S20753C4__9S20753C18[5]),  5,7},
  {&(_tg__ZTV8S20753C8__8S20753C4__9S20753C18[4]),  4,6},
  {&(_tg__ZTV8S20753C8__8S20753C4__9S20753C18[4]),  4,6},
  {&(_tg__ZTV8S20753C8__A__8S20753C4__9S20753C18[4]),  4,6},
  {&(_tg__ZTV8S20753C5__9S20753C18[5]),  5,7},
  {&(_tg__ZTV8S20753C78S20753C5__A1__9S20753C18[5]),  5,7},
  {&(_tg__ZTV8S20753C8__8S20753C78S20753C5__A1__9S20753C18[4]),  4,6},
  {&(_tg__ZTV8S20753C8__8S20753C78S20753C5__A1__9S20753C18[4]),  4,6},
  {&(_tg__ZTV8S20753C8__8S20753C5__9S20753C18[4]),  4,6},
  {&(_tg__ZTV8S20753C8__8S20753C5__9S20753C18[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S20753C18[];
extern  VTBL_ENTRY _ZTV9S20753C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20753C18[];
static VTBL_ENTRY alt_thunk_names30[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20753C4D0Ev,_ZThn8_N8S20753C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C4D0Ev,_ZThn40_N8S20753C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20753C4D1Ev,_ZThn8_N8S20753C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C4D1Ev,_ZThn40_N8S20753C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20753C2D0Ev,_ZTv0_n24_N8S20753C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20753C2D0Ev,_ZThn28_N8S20753C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20753C2D1Ev,_ZTv0_n24_N8S20753C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20753C2D1Ev,_ZThn28_N8S20753C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C2D0Ev,_ZThn36_N8S20753C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20753C2D0Ev,_ZThn68_N8S20753C2D0Ev),
  (VTBL_ENTRY)_ZN8S20753C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C2D1Ev,_ZThn36_N8S20753C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20753C2D1Ev,_ZThn68_N8S20753C2D1Ev),
  (VTBL_ENTRY)_ZN8S20753C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev), // 
  (VTBL_ENTRY)_ZN8S20753C8D0Ev,
  (VTBL_ENTRY)_ZN8S20753C8D0Ev,
  (VTBL_ENTRY)_ZN8S20753C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev), // 
  (VTBL_ENTRY)_ZN8S20753C8D1Ev,
  (VTBL_ENTRY)_ZN8S20753C8D1Ev,
  (VTBL_ENTRY)_ZN8S20753C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S20753C7D0Ev,
  (VTBL_ENTRY)_ZN8S20753C7D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S20753C7D0Ev,_ZThn148_N8S20753C7D0Ev),
  (VTBL_ENTRY)_ZN8S20753C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S20753C7D1Ev,
  (VTBL_ENTRY)_ZN8S20753C7D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S20753C7D1Ev,_ZThn148_N8S20753C7D1Ev),
  (VTBL_ENTRY)_ZN8S20753C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S20753C5D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S20753C5D0Ev,_ZThn148_N8S20753C5D0Ev),
  (VTBL_ENTRY)_ZN8S20753C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S20753C5D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S20753C5D1Ev,_ZThn148_N8S20753C5D1Ev),
  (VTBL_ENTRY)_ZN8S20753C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20753C18D0Ev,_ZTv0_n24_N9S20753C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S20753C18D0Ev,_ZThn212_N9S20753C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20753C18D1Ev,_ZTv0_n24_N9S20753C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S20753C18D1Ev,_ZThn212_N9S20753C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C18D0Ev,_ZTv0_n12_N9S20753C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn432_N9S20753C18D0Ev,_ZThn252_N9S20753C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S20753C18D0Ev,_ZThn220_N9S20753C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S20753C18D0Ev,_ZThn184_N9S20753C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S20753C18D0Ev,_ZThn176_N9S20753C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S20753C18D0Ev,_ZThn148_N9S20753C18D0Ev),
  (VTBL_ENTRY)_ZN9S20753C18D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C18D1Ev,_ZTv0_n12_N9S20753C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn432_N9S20753C18D1Ev,_ZThn252_N9S20753C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S20753C18D1Ev,_ZThn220_N9S20753C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S20753C18D1Ev,_ZThn184_N9S20753C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S20753C18D1Ev,_ZThn176_N9S20753C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S20753C18D1Ev,_ZThn148_N9S20753C18D1Ev),
  (VTBL_ENTRY)_ZN9S20753C18D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20753C18 = {  "S20753C18", // class name
  bases_S20753C18, 17,
  &(vtc_S20753C18[0]), // expected_vtbl_contents
  &(vtt_S20753C18[0]), // expected_vtt_contents
  ABISELECT(496,288), // object size
  NSPAIRA(_ZTI9S20753C18),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20753C18),57, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20753C18),40, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names30,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20753C19  : virtual S5266C26 , S20753C10 , S5266C29 {
  virtual  ~S20753C19(); // _ZN9S20753C19D2Ev
  S20753C19(); // tgen
};
//SIG(-1 S20753C19) C1{ VBC2{ m} BC3{ VBC4{ VBC5{ vd m} FD Fc Fs[4]} VBC6{ VBC5 BC4 VBC7{ VBC8{ m} VBC9{ VBC10{ VBC5 BC11{ VBC5 VBC4 vd Fi} BC12{ m Fp} vd Fs FL Fp FL} BC12 BC5 BC4 vd Fi} BC4 vd Fs} BC10 Fp} VBC12 BC13{ BC2 VBC10 BC12 VBC8 vd FC11 Fs} vd Fi FC14{}} BC8 vd}


 S20753C19 ::~S20753C19(){ note_dtor("S20753C19", this);}
S20753C19 ::S20753C19(){ note_ctor("S20753C19", this);} // tgen

static void Test_S20753C19()
{
  extern Class_Descriptor cd_S20753C19;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(28,66)];
    init_test(&cd_S20753C19, buf);
    S20753C19 *dp, &lv = *(dp=new (buf) S20753C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(432,260), "sizeof(S20753C19)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20753C19)");
    /*is_ambiguous_... S20753C19::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*), ABISELECT(89,53), "S20753C19");
    /*is_ambiguous_... S20753C19::S20753C8 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C8*), ABISELECT(96,56), "S20753C19");
    /*is_ambiguous_... S20753C11::S19905C19 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C11*), ABISELECT(96,56), "S20753C19");
    /*is_ambiguous_... S20753C11::S20753C8 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C8*)(S20753C11*), ABISELECT(96,56), "S20753C19");
    /*is_ambiguous_... S20753C19::S20753C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C5*), ABISELECT(96,56), "S20753C19");
    /*is_ambiguous_... S20753C19::S20753C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C7*)(S20753C5*), ABISELECT(96,56), "S20753C19");
    /*is_ambiguous_... S20753C4::S20753C8 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C8*)(S20753C4*), ABISELECT(96,56), "S20753C19");
    /*is_ambiguous_... S20753C2::S20753C8 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C8*)(S20753C2*), ABISELECT(96,56), "S20753C19");
    /*is_ambiguous_... S20753C11::S20753C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C5*)(S20753C11*), ABISELECT(96,56), "S20753C19");
    /*is_ambiguous_... S20753C11::S20753C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C7*)(S20753C5*)(S20753C11*), ABISELECT(96,56), "S20753C19");
    /*is_ambiguous_... S20753C10::S20753C8 */ AMB_check_base_class_offset(lv, (S20753C8*)(S20753C10*), ABISELECT(96,56), "S20753C19");
    /*is_ambiguous_... S20753C19::S20753C5 */ AMB_check_base_class_offset(lv, (S20753C8*)(S20753C7*)(S20753C5*), ABISELECT(96,56), "S20753C19");
    /*is_ambiguous_... S20753C11::S20753C5 */ AMB_check_base_class_offset(lv, (S20753C8*)(S20753C7*)(S20753C5*)(S20753C11*), ABISELECT(96,56), "S20753C19");
    /*is_ambiguous_... S20753C11::S20753C8 */ AMB_check_base_class_offset(lv, (S20753C8*)(S20753C11*), ABISELECT(144,84), "S20753C19");
    check_base_class_offset(lv, (S5266C29*)(S20753C2*), ABISELECT(300,180), "S20753C19");
    check_base_class_offset(lv, (S5266C29*)(S20753C12*)(S20753C10*), ABISELECT(300,180), "S20753C19");
    /*is_ambiguous_... S20753C19::S20753C5 */ AMB_check_base_class_offset(lv, (S20753C7*)(S20753C5*), ABISELECT(368,220), "S20753C19");
    /*is_ambiguous_... S20753C19::S20753C5 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S20753C5*), ABISELECT(384,228), "S20753C19");
    check_base_class_offset(lv, (S20753C5*)(S20753C4*), ABISELECT(368,220), "S20753C19");
    check_base_class_offset(lv, (S20753C5*)(S20753C12*)(S20753C10*), ABISELECT(368,220), "S20753C19");
    /*is_ambiguous_... S20753C4::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S20753C4*), ABISELECT(312,184), "S20753C19");
    /*is_ambiguous_... S20753C4::S19905C19 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C4*), ABISELECT(304,180), "S20753C19");
    /*is_ambiguous_... S20753C4::S20753C8 */ AMB_check_base_class_offset(lv, (S20753C8*)(S20753C4*), ABISELECT(320,188), "S20753C19");
    check_base_class_offset(lv, (S20753C4*)(S20753C2*), ABISELECT(304,180), "S20753C19");
    /*is_ambiguous_... S20753C2::S20753C8 */ AMB_check_base_class_offset(lv, (S20753C8*)(S20753C2*), ABISELECT(256,152), "S20753C19");
    check_base_class_offset(lv, (S20753C2*)(S20753C11*), ABISELECT(256,152), "S20753C19");
    /*is_ambiguous_... S20753C11::S20753C5 */ AMB_check_base_class_offset(lv, (S20753C7*)(S20753C5*)(S20753C11*), ABISELECT(192,112), "S20753C19");
    /*is_ambiguous_... S20753C11::S20753C5 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S20753C5*)(S20753C11*), ABISELECT(208,120), "S20753C19");
    /*is_ambiguous_... S20753C11::S20753C5 */ AMB_check_base_class_offset(lv, (S20753C5*)(S20753C11*), ABISELECT(192,112), "S20753C19");
    check_base_class_offset(lv, (S20753C11*)(S20753C10*), ABISELECT(144,84), "S20753C19");
    /*is_ambiguous_... S20753C10::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S20753C10*), ABISELECT(424,256), "S20753C19");
    check_base_class_offset(lv, (S5266C26*)(S20753C12*)(S20753C10*), 0, "S20753C19");
    /*is_ambiguous_... S20753C12::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S20753C12*)(S20753C10*), ABISELECT(8,4), "S20753C19");
    check_base_class_offset(lv, (S20753C12*)(S20753C10*), 0, "S20753C19");
    check_base_class_offset(lv, (S20753C10*), 0, "S20753C19");
    /*is_ambiguous_... S20753C19::S5266C29 */ AMB_check_base_class_offset(lv, (S5266C29*), 0, "S20753C19");
    test_class_info(&lv, &cd_S20753C19);
    dp->~S20753C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20753C19(Test_S20753C19, "S20753C19", ABISELECT(432,260));

#else // __cplusplus

extern void _ZN9S20753C19C1Ev();
extern void _ZN9S20753C19D2Ev();
Name_Map name_map_S20753C19[] = {
  NSPAIR(_ZN9S20753C19C1Ev),
  NSPAIR(_ZN9S20753C19D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S20753C8;
extern VTBL_ENTRY _ZTI8S20753C8[];
extern  VTBL_ENTRY _ZTV8S20753C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C8[];
extern Class_Descriptor cd_S20753C8;
extern VTBL_ENTRY _ZTI8S20753C8[];
extern  VTBL_ENTRY _ZTV8S20753C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C8[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S20753C7;
extern VTBL_ENTRY _ZTI8S20753C7[];
extern  VTBL_ENTRY _ZTV8S20753C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C7[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S20753C5;
extern VTBL_ENTRY _ZTI8S20753C5[];
extern  VTBL_ENTRY _ZTV8S20753C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C5[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S20753C8;
extern VTBL_ENTRY _ZTI8S20753C8[];
extern  VTBL_ENTRY _ZTV8S20753C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C8[];
extern Class_Descriptor cd_S20753C4;
extern VTBL_ENTRY _ZTI8S20753C4[];
extern  VTBL_ENTRY _ZTV8S20753C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C4[];
extern Class_Descriptor cd_S20753C8;
extern VTBL_ENTRY _ZTI8S20753C8[];
extern  VTBL_ENTRY _ZTV8S20753C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C8[];
extern Class_Descriptor cd_S20753C2;
extern VTBL_ENTRY _ZTI8S20753C2[];
extern  VTBL_ENTRY _ZTV8S20753C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C2[];
extern Class_Descriptor cd_S20753C7;
extern VTBL_ENTRY _ZTI8S20753C7[];
extern  VTBL_ENTRY _ZTV8S20753C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C7[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S20753C5;
extern VTBL_ENTRY _ZTI8S20753C5[];
extern  VTBL_ENTRY _ZTV8S20753C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C5[];
extern Class_Descriptor cd_S20753C11;
extern VTBL_ENTRY _ZTI9S20753C11[];
extern  VTBL_ENTRY _ZTV9S20753C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20753C11[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S20753C12;
extern VTBL_ENTRY _ZTI9S20753C12[];
extern  VTBL_ENTRY _ZTV9S20753C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20753C12[];
extern Class_Descriptor cd_S20753C10;
extern VTBL_ENTRY _ZTI9S20753C10[];
extern  VTBL_ENTRY _ZTV9S20753C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20753C10[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
static Base_Class bases_S20753C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C26,    ABISELECT(89,53), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19905C19,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20753C8,    ABISELECT(96,56), //bcp->offset
    14, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20753C8,    ABISELECT(144,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S5266C29,    ABISELECT(300,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20753C7,    ABISELECT(368,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(384,228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20753C5,    ABISELECT(368,220), //bcp->offset
    62, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S17777C6_nt,    ABISELECT(312,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19905C19,    ABISELECT(304,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20753C8,    ABISELECT(320,188), //bcp->offset
    56, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20753C4,    ABISELECT(304,180), //bcp->offset
    48, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20753C8,    ABISELECT(256,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20753C2,    ABISELECT(256,152), //bcp->offset
    38, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S20753C7,    ABISELECT(192,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(208,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20753C5,    ABISELECT(192,112), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20753C11,    ABISELECT(144,84), //bcp->offset
    20, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S17777C6_nt,    ABISELECT(424,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20753C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20753C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20753C19[];
extern void ABISELECT(_ZTv0_n24_N9S20753C19D1Ev,_ZTv0_n12_N9S20753C19D1Ev)();
extern void _ZN9S20753C19D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C19D0Ev,_ZTv0_n12_N9S20753C19D0Ev)();
extern void _ZN9S20753C19D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C19D1Ev,_ZTv0_n12_N9S20753C19D1Ev)();
extern void ABISELECT(_ZThn96_N9S20753C19D1Ev,_ZThn56_N9S20753C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C19D0Ev,_ZTv0_n12_N9S20753C19D0Ev)();
extern void ABISELECT(_ZThn96_N9S20753C19D0Ev,_ZThn56_N9S20753C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C19D1Ev,_ZTv0_n12_N9S20753C19D1Ev)();
extern void ABISELECT(_ZThn144_N9S20753C19D1Ev,_ZThn84_N9S20753C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C19D0Ev,_ZTv0_n12_N9S20753C19D0Ev)();
extern void ABISELECT(_ZThn144_N9S20753C19D0Ev,_ZThn84_N9S20753C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C19D1Ev,_ZTv0_n12_N9S20753C19D1Ev)();
extern void ABISELECT(_ZThn192_N9S20753C19D1Ev,_ZThn112_N9S20753C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C19D0Ev,_ZTv0_n12_N9S20753C19D0Ev)();
extern void ABISELECT(_ZThn192_N9S20753C19D0Ev,_ZThn112_N9S20753C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C19D1Ev,_ZTv0_n12_N9S20753C19D1Ev)();
extern void ABISELECT(_ZThn256_N9S20753C19D1Ev,_ZThn152_N9S20753C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C19D0Ev,_ZTv0_n12_N9S20753C19D0Ev)();
extern void ABISELECT(_ZThn256_N9S20753C19D0Ev,_ZThn152_N9S20753C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20753C19D1Ev,_ZTv0_n24_N9S20753C19D1Ev)();
extern void ABISELECT(_ZThn304_N9S20753C19D1Ev,_ZThn180_N9S20753C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20753C19D0Ev,_ZTv0_n24_N9S20753C19D0Ev)();
extern void ABISELECT(_ZThn304_N9S20753C19D0Ev,_ZThn180_N9S20753C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C19D1Ev,_ZTv0_n12_N9S20753C19D1Ev)();
extern void ABISELECT(_ZThn320_N9S20753C19D1Ev,_ZThn188_N9S20753C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C19D0Ev,_ZTv0_n12_N9S20753C19D0Ev)();
extern void ABISELECT(_ZThn320_N9S20753C19D0Ev,_ZThn188_N9S20753C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C19D1Ev,_ZTv0_n12_N9S20753C19D1Ev)();
extern void ABISELECT(_ZThn368_N9S20753C19D1Ev,_ZThn220_N9S20753C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C19D0Ev,_ZTv0_n12_N9S20753C19D0Ev)();
extern void ABISELECT(_ZThn368_N9S20753C19D0Ev,_ZThn220_N9S20753C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20753C19[] = {
  ABISELECT(89,53),
  ABISELECT(424,256),
  ABISELECT(304,180),
  ABISELECT(256,152),
  ABISELECT(144,84),
  ABISELECT(300,180),
  ABISELECT(96,56),
  ABISELECT(96,56),
  ABISELECT(368,220),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20753C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C19D1Ev,_ZTv0_n12_N9S20753C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C19D0Ev,_ZTv0_n12_N9S20753C19D0Ev),
  0,
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20753C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C19D1Ev,_ZTv0_n12_N9S20753C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C19D0Ev,_ZTv0_n12_N9S20753C19D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(224,136),
  ABISELECT(160,96),
  ABISELECT(156,96),
  ABISELECT(112,68),
  ABISELECT(-48,-28),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S20753C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C19D1Ev,_ZTv0_n12_N9S20753C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C19D0Ev,_ZTv0_n12_N9S20753C19D0Ev),
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI9S20753C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C19D1Ev,_ZTv0_n12_N9S20753C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C19D0Ev,_ZTv0_n12_N9S20753C19D0Ev),
  ABISELECT(-160,-96),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(44,28),
  ABISELECT(-160,-96),
  ABISELECT(-256,-152),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI9S20753C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C19D1Ev,_ZTv0_n12_N9S20753C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C19D0Ev,_ZTv0_n12_N9S20753C19D0Ev),
  ABISELECT(-304,-180),
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  ABISELECT(64,40),
  ABISELECT(-304,-180),
  (VTBL_ENTRY)&(_ZTI9S20753C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20753C19D1Ev,_ZTv0_n24_N9S20753C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20753C19D0Ev,_ZTv0_n24_N9S20753C19D0Ev),
  ABISELECT(-224,-132),
  ABISELECT(-320,-188),
  ABISELECT(-320,-188),
  (VTBL_ENTRY)&(_ZTI9S20753C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C19D1Ev,_ZTv0_n12_N9S20753C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C19D0Ev,_ZTv0_n12_N9S20753C19D0Ev),
  ABISELECT(-272,-164),
  ABISELECT(-272,-164),
  ABISELECT(-368,-220),
  ABISELECT(-368,-220),
  (VTBL_ENTRY)&(_ZTI9S20753C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C19D1Ev,_ZTv0_n12_N9S20753C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C19D0Ev,_ZTv0_n12_N9S20753C19D0Ev),
};
extern VTBL_ENTRY _ZTV9S20753C19[];
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void _ZN9S20753C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
extern void _ZN9S20753C10D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20753C10__9S20753C19[] = {
  ABISELECT(424,256),
  ABISELECT(304,180),
  ABISELECT(256,152),
  ABISELECT(144,84),
  ABISELECT(300,180),
  ABISELECT(96,56),
  ABISELECT(96,56),
  ABISELECT(368,220),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev)();
extern void _ZN9S20753C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev)();
extern void _ZN9S20753C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20753C129S20753C10__9S20753C19[] = {
  ABISELECT(300,180),
  ABISELECT(96,56),
  ABISELECT(96,56),
  ABISELECT(368,220),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20753C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev)();
extern void ABISELECT(_ZThn368_N9S20753C12D1Ev,_ZThn220_N9S20753C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev)();
extern void ABISELECT(_ZThn368_N9S20753C12D0Ev,_ZThn220_N9S20753C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C5__9S20753C129S20753C10__9S20753C19[] = {
  ABISELECT(-272,-164),
  ABISELECT(-272,-164),
  ABISELECT(-368,-220),
  ABISELECT(-368,-220),
  (VTBL_ENTRY)&(_ZTI9S20753C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev)();
extern void ABISELECT(_ZThn96_N9S20753C12D1Ev,_ZThn56_N9S20753C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev)();
extern void ABISELECT(_ZThn96_N9S20753C12D0Ev,_ZThn56_N9S20753C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__9S20753C129S20753C10__9S20753C19[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20753C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void ABISELECT(_ZThn96_N9S20753C10D1Ev,_ZThn56_N9S20753C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
extern void ABISELECT(_ZThn96_N9S20753C10D0Ev,_ZThn56_N9S20753C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__9S20753C10__9S20753C19[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void ABISELECT(_ZThn144_N9S20753C10D1Ev,_ZThn84_N9S20753C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
extern void ABISELECT(_ZThn144_N9S20753C10D0Ev,_ZThn84_N9S20753C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20753C11__9S20753C10__9S20753C19[] = {
  ABISELECT(-48,-28),
  ABISELECT(224,136),
  ABISELECT(160,96),
  ABISELECT(156,96),
  ABISELECT(112,68),
  ABISELECT(-48,-28),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void ABISELECT(_ZThn256_N9S20753C10D1Ev,_ZThn152_N9S20753C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
extern void ABISELECT(_ZThn256_N9S20753C10D0Ev,_ZThn152_N9S20753C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C2__9S20753C10__9S20753C19[] = {
  ABISELECT(-160,-96),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(44,28),
  ABISELECT(-160,-96),
  ABISELECT(-256,-152),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20753C10D1Ev,_ZTv0_n24_N9S20753C10D1Ev)();
extern void ABISELECT(_ZThn304_N9S20753C10D1Ev,_ZThn180_N9S20753C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20753C10D0Ev,_ZTv0_n24_N9S20753C10D0Ev)();
extern void ABISELECT(_ZThn304_N9S20753C10D0Ev,_ZThn180_N9S20753C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C4__9S20753C10__9S20753C19[] = {
  ABISELECT(-304,-180),
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  ABISELECT(64,40),
  ABISELECT(-304,-180),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20753C10D1Ev,_ZTv0_n24_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20753C10D0Ev,_ZTv0_n24_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void ABISELECT(_ZThn368_N9S20753C10D1Ev,_ZThn220_N9S20753C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
extern void ABISELECT(_ZThn368_N9S20753C10D0Ev,_ZThn220_N9S20753C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C5__9S20753C10__9S20753C19[] = {
  ABISELECT(-272,-164),
  ABISELECT(-272,-164),
  ABISELECT(-368,-220),
  ABISELECT(-368,-220),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void ABISELECT(_ZThn320_N9S20753C10D1Ev,_ZThn188_N9S20753C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
extern void ABISELECT(_ZThn320_N9S20753C10D0Ev,_ZThn188_N9S20753C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C88S20753C4__A2__9S20753C10__9S20753C19[] = {
  ABISELECT(-224,-132),
  ABISELECT(-320,-188),
  ABISELECT(-320,-188),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void ABISELECT(_ZThn192_N9S20753C10D1Ev,_ZThn112_N9S20753C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
extern void ABISELECT(_ZThn192_N9S20753C10D0Ev,_ZThn112_N9S20753C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C59S20753C11__A1__9S20753C10__9S20753C19[] = {
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void _ZN8S20753C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
extern void _ZN8S20753C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__9S20753C19[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev)();
extern void _ZN9S20753C11D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev)();
extern void _ZN9S20753C11D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20753C11__9S20753C19[] = {
  ABISELECT(-48,-28),
  ABISELECT(224,136),
  ABISELECT(160,96),
  ABISELECT(156,96),
  ABISELECT(112,68),
  ABISELECT(-48,-28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20753C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void _ZN8S20753C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
extern void _ZN8S20753C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C89S20753C11__A1__9S20753C19[] = {
  ABISELECT(-48,-28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C89S20753C11__A1__9S20753C19[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev)();
extern void _ZN8S20753C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev)();
extern void _ZN8S20753C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C59S20753C11__A1__9S20753C19[] = {
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void _ZN8S20753C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
extern void _ZN8S20753C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C78S20753C59S20753C11__A1__9S20753C19[] = {
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C78S20753C59S20753C11__A1__9S20753C19[] = {
  0,
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C59S20753C11__A1__9S20753C19[] = {
  0,
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C8__A1__9S20753C11__9S20753C19[] = {
  0,
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S20753C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S20753C11D1Ev,_ZThn68_N9S20753C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev)();
extern void ABISELECT(_ZThn112_N9S20753C11D0Ev,_ZThn68_N9S20753C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C2__9S20753C11__9S20753C19[] = {
  ABISELECT(-160,-96),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(44,28),
  ABISELECT(-160,-96),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI9S20753C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20753C11D1Ev,_ZTv0_n24_N9S20753C11D1Ev)();
extern void ABISELECT(_ZThn160_N9S20753C11D1Ev,_ZThn96_N9S20753C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20753C11D0Ev,_ZTv0_n24_N9S20753C11D0Ev)();
extern void ABISELECT(_ZThn160_N9S20753C11D0Ev,_ZThn96_N9S20753C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C4__9S20753C11__9S20753C19[] = {
  ABISELECT(-160,-96),
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  ABISELECT(64,40),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI9S20753C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20753C11D1Ev,_ZTv0_n24_N9S20753C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20753C11D0Ev,_ZTv0_n24_N9S20753C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev)();
extern void ABISELECT(_ZThn224_N9S20753C11D1Ev,_ZThn136_N9S20753C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev)();
extern void ABISELECT(_ZThn224_N9S20753C11D0Ev,_ZThn136_N9S20753C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C5__9S20753C11__9S20753C19[] = {
  ABISELECT(-272,-164),
  ABISELECT(-272,-164),
  ABISELECT(-224,-136),
  ABISELECT(-224,-136),
  (VTBL_ENTRY)&(_ZTI9S20753C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev)();
extern void ABISELECT(_ZThn176_N9S20753C11D1Ev,_ZThn104_N9S20753C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev)();
extern void ABISELECT(_ZThn176_N9S20753C11D0Ev,_ZThn104_N9S20753C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C88S20753C4__A2__9S20753C11__9S20753C19[] = {
  ABISELECT(-224,-132),
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI9S20753C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev)();
extern void ABISELECT(_ZThn48_N9S20753C11D1Ev,_ZThn28_N9S20753C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev)();
extern void ABISELECT(_ZThn48_N9S20753C11D0Ev,_ZThn28_N9S20753C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C5__A__9S20753C11__9S20753C19[] = {
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S20753C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev)();
extern void _ZN8S20753C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev)();
extern void _ZN8S20753C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C2__9S20753C19[] = {
  ABISELECT(-160,-96),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(44,28),
  ABISELECT(-160,-96),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void _ZN8S20753C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
extern void _ZN8S20753C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C88S20753C2__A3__9S20753C19[] = {
  ABISELECT(-160,-96),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C88S20753C2__A3__9S20753C19[] = {
  ABISELECT(160,96),
  ABISELECT(160,96),
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S20753C2D1Ev,_ZTv0_n24_N8S20753C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S20753C2D1Ev,_ZThn28_N8S20753C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20753C2D0Ev,_ZTv0_n24_N8S20753C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S20753C2D0Ev,_ZThn28_N8S20753C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C4__8S20753C2__9S20753C19[] = {
  ABISELECT(-48,-28),
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20753C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20753C2D1Ev,_ZTv0_n24_N8S20753C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20753C2D0Ev,_ZTv0_n24_N8S20753C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev)();
extern void ABISELECT(_ZThn112_N8S20753C2D1Ev,_ZThn68_N8S20753C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev)();
extern void ABISELECT(_ZThn112_N8S20753C2D0Ev,_ZThn68_N8S20753C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C5__8S20753C2__9S20753C19[] = {
  ABISELECT(-272,-164),
  ABISELECT(-272,-164),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S20753C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C2__9S20753C19[] = {
  0,
  ABISELECT(160,96),
  ABISELECT(160,96),
  (VTBL_ENTRY)&(_ZTI8S20753C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S20753C2D1Ev,_ZThn36_N8S20753C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev)();
extern void ABISELECT(_ZThn64_N8S20753C2D0Ev,_ZThn36_N8S20753C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C88S20753C4__A1__8S20753C2__9S20753C19[] = {
  ABISELECT(-224,-132),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S20753C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev),
};
extern void _ZN8S20753C4D1Ev();
extern void _ZN8S20753C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20753C4__9S20753C19[] = {
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C4[0]),
  (VTBL_ENTRY)&_ZN8S20753C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20753C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void _ZN8S20753C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
extern void _ZN8S20753C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C88S20753C4__A2__9S20753C19[] = {
  ABISELECT(-224,-132),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C88S20753C4__A2__9S20753C19[] = {
  ABISELECT(224,132),
  ABISELECT(224,132),
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev)();
extern void ABISELECT(_ZThn64_N8S20753C4D1Ev,_ZThn40_N8S20753C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev)();
extern void ABISELECT(_ZThn64_N8S20753C4D0Ev,_ZThn40_N8S20753C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C5__8S20753C4__9S20753C19[] = {
  ABISELECT(-272,-164),
  ABISELECT(-272,-164),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S20753C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C4__9S20753C19[] = {
  0,
  ABISELECT(208,124),
  ABISELECT(208,124),
  (VTBL_ENTRY)&(_ZTI8S20753C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S20753C4D1Ev,_ZThn8_N8S20753C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev)();
extern void ABISELECT(_ZThn16_N8S20753C4D0Ev,_ZThn8_N8S20753C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__A__8S20753C4__9S20753C19[] = {
  ABISELECT(-224,-132),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20753C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev)();
extern void _ZN8S20753C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev)();
extern void _ZN8S20753C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C5__9S20753C19[] = {
  ABISELECT(-272,-164),
  ABISELECT(-272,-164),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void _ZN8S20753C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
extern void _ZN8S20753C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C78S20753C5__9S20753C19[] = {
  ABISELECT(-272,-164),
  ABISELECT(-272,-164),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C78S20753C5__9S20753C19[] = {
  0,
  ABISELECT(272,164),
  ABISELECT(272,164),
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C5__9S20753C19[] = {
  0,
  ABISELECT(272,164),
  ABISELECT(272,164),
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev),
};
static  VTT_ENTRY vtt_S20753C19[] = {
  {&(_ZTV9S20753C19[12]),  12,69},
  {&(_tg__ZTV9S20753C10__9S20753C19[11]),  11,13},
  {&(_tg__ZTV9S20753C129S20753C10__9S20753C19[7]),  7,9},
  {&(_tg__ZTV8S20753C5__9S20753C129S20753C10__9S20753C19[5]),  5,7},
  {&(_tg__ZTV8S20753C8__9S20753C129S20753C10__9S20753C19[4]),  4,6},
  {&(_tg__ZTV8S20753C8__9S20753C129S20753C10__9S20753C19[4]),  4,6},
  {&(_tg__ZTV8S20753C8__9S20753C10__9S20753C19[4]),  4,6},
  {&(_tg__ZTV8S20753C8__9S20753C10__9S20753C19[4]),  4,6},
  {&(_tg__ZTV9S20753C11__9S20753C10__9S20753C19[9]),  9,11},
  {&(_tg__ZTV8S20753C2__9S20753C10__9S20753C19[8]),  8,10},
  {&(_tg__ZTV8S20753C4__9S20753C10__9S20753C19[6]),  6,8},
  {&(_tg__ZTV8S20753C5__9S20753C10__9S20753C19[5]),  5,7},
  {&(_tg__ZTV8S20753C88S20753C4__A2__9S20753C10__9S20753C19[4]),  4,6},
  {&(_tg__ZTV8S20753C59S20753C11__A1__9S20753C10__9S20753C19[5]),  5,7},
  {&(_ZTV9S20753C19[18]),  18,69},
  {&(_ZTV9S20753C19[18]),  18,69},
  {&(_ZTV9S20753C19[29]),  29,69},
  {&(_ZTV9S20753C19[46]),  46,69},
  {&(_ZTV9S20753C19[54]),  54,69},
  {&(_ZTV9S20753C19[67]),  67,69},
  {&(_ZTV9S20753C19[60]),  60,69},
  {&(_ZTV9S20753C19[36]),  36,69},
  {&(_tg__ZTV8S20753C8__9S20753C19[4]),  4,6},
  {&(_tg__ZTV8S20753C8__9S20753C19[4]),  4,6},
  {&(_tg__ZTV9S20753C11__9S20753C19[9]),  9,11},
  {&(_tg__ZTV8S20753C89S20753C11__A1__9S20753C19[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S20753C89S20753C11__A1__9S20753C19[3]),  3,5},
  {&(_tg__ZTV8S20753C59S20753C11__A1__9S20753C19[5]),  5,7},
  {&(_tg__ZTV8S20753C78S20753C59S20753C11__A1__9S20753C19[5]),  5,7},
  {&(_tg__ZTV8S20753C8__8S20753C78S20753C59S20753C11__A1__9S20753C19[4]),  4,6},
  {&(_tg__ZTV8S20753C8__8S20753C78S20753C59S20753C11__A1__9S20753C19[4]),  4,6},
  {&(_tg__ZTV8S20753C8__8S20753C59S20753C11__A1__9S20753C19[4]),  4,6},
  {&(_tg__ZTV8S20753C8__8S20753C59S20753C11__A1__9S20753C19[4]),  4,6},
  {&(_tg__ZTV8S20753C8__A1__9S20753C11__9S20753C19[4]),  4,6},
  {&(_tg__ZTV8S20753C2__9S20753C11__9S20753C19[8]),  8,10},
  {&(_tg__ZTV8S20753C4__9S20753C11__9S20753C19[6]),  6,8},
  {&(_tg__ZTV8S20753C5__9S20753C11__9S20753C19[5]),  5,7},
  {&(_tg__ZTV8S20753C8__A1__9S20753C11__9S20753C19[4]),  4,6},
  {&(_tg__ZTV8S20753C88S20753C4__A2__9S20753C11__9S20753C19[4]),  4,6},
  {&(_tg__ZTV8S20753C5__A__9S20753C11__9S20753C19[5]),  5,7},
  {&(_tg__ZTV8S20753C2__9S20753C19[8]),  8,10},
  {&(_tg__ZTV8S20753C88S20753C2__A3__9S20753C19[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S20753C88S20753C2__A3__9S20753C19[3]),  3,5},
  {&(_tg__ZTV8S20753C4__8S20753C2__9S20753C19[6]),  6,8},
  {&(_tg__ZTV8S20753C5__8S20753C2__9S20753C19[5]),  5,7},
  {&(_tg__ZTV8S20753C8__8S20753C2__9S20753C19[4]),  4,6},
  {&(_tg__ZTV8S20753C8__8S20753C2__9S20753C19[4]),  4,6},
  {&(_tg__ZTV8S20753C88S20753C4__A1__8S20753C2__9S20753C19[4]),  4,6},
  {&(_tg__ZTV8S20753C4__9S20753C19[5]),  5,7},
  {&(_tg__ZTV8S20753C88S20753C4__A2__9S20753C19[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S20753C88S20753C4__A2__9S20753C19[3]),  3,5},
  {&(_tg__ZTV8S20753C5__8S20753C4__9S20753C19[5]),  5,7},
  {&(_tg__ZTV8S20753C8__8S20753C4__9S20753C19[4]),  4,6},
  {&(_tg__ZTV8S20753C8__8S20753C4__9S20753C19[4]),  4,6},
  {&(_tg__ZTV8S20753C8__A__8S20753C4__9S20753C19[4]),  4,6},
  {&(_tg__ZTV8S20753C5__9S20753C19[5]),  5,7},
  {&(_tg__ZTV8S20753C78S20753C5__9S20753C19[5]),  5,7},
  {&(_tg__ZTV8S20753C8__8S20753C78S20753C5__9S20753C19[4]),  4,6},
  {&(_tg__ZTV8S20753C8__8S20753C78S20753C5__9S20753C19[4]),  4,6},
  {&(_tg__ZTV8S20753C8__8S20753C5__9S20753C19[4]),  4,6},
  {&(_tg__ZTV8S20753C8__8S20753C5__9S20753C19[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S20753C19[];
extern  VTBL_ENTRY _ZTV9S20753C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20753C19[];
static VTBL_ENTRY alt_thunk_names31[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20753C4D0Ev,_ZThn8_N8S20753C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C4D0Ev,_ZThn40_N8S20753C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20753C4D1Ev,_ZThn8_N8S20753C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C4D1Ev,_ZThn40_N8S20753C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20753C2D0Ev,_ZTv0_n24_N8S20753C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20753C2D0Ev,_ZThn28_N8S20753C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20753C2D1Ev,_ZTv0_n24_N8S20753C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20753C2D1Ev,_ZThn28_N8S20753C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C2D0Ev,_ZThn36_N8S20753C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20753C2D0Ev,_ZThn68_N8S20753C2D0Ev),
  (VTBL_ENTRY)_ZN8S20753C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C2D1Ev,_ZThn36_N8S20753C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20753C2D1Ev,_ZThn68_N8S20753C2D1Ev),
  (VTBL_ENTRY)_ZN8S20753C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20753C11D0Ev,_ZTv0_n24_N9S20753C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20753C11D0Ev,_ZThn96_N9S20753C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20753C11D1Ev,_ZTv0_n24_N9S20753C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20753C11D1Ev,_ZThn96_N9S20753C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S20753C7D0Ev,
  (VTBL_ENTRY)_ZN8S20753C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S20753C7D1Ev,
  (VTBL_ENTRY)_ZN8S20753C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S20753C5D0Ev,
  (VTBL_ENTRY)_ZN8S20753C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S20753C5D1Ev,
  (VTBL_ENTRY)_ZN8S20753C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20753C11D0Ev,_ZThn28_N9S20753C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20753C11D0Ev,_ZThn104_N9S20753C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S20753C11D0Ev,_ZThn136_N9S20753C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20753C11D0Ev,_ZThn68_N9S20753C11D0Ev),
  (VTBL_ENTRY)_ZN9S20753C11D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20753C11D1Ev,_ZThn28_N9S20753C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20753C11D1Ev,_ZThn104_N9S20753C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S20753C11D1Ev,_ZThn136_N9S20753C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20753C11D1Ev,_ZThn68_N9S20753C11D1Ev),
  (VTBL_ENTRY)_ZN9S20753C11D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev), // 
  (VTBL_ENTRY)_ZN8S20753C8D0Ev,
  (VTBL_ENTRY)_ZN8S20753C8D0Ev,
  (VTBL_ENTRY)_ZN8S20753C8D0Ev,
  (VTBL_ENTRY)_ZN8S20753C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev), // 
  (VTBL_ENTRY)_ZN8S20753C8D1Ev,
  (VTBL_ENTRY)_ZN8S20753C8D1Ev,
  (VTBL_ENTRY)_ZN8S20753C8D1Ev,
  (VTBL_ENTRY)_ZN8S20753C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20753C10D0Ev,_ZTv0_n24_N9S20753C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S20753C10D0Ev,_ZThn180_N9S20753C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20753C10D1Ev,_ZTv0_n24_N9S20753C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S20753C10D1Ev,_ZThn180_N9S20753C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20753C12D0Ev,_ZThn56_N9S20753C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S20753C12D0Ev,_ZThn220_N9S20753C12D0Ev),
  (VTBL_ENTRY)_ZN9S20753C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20753C12D1Ev,_ZThn56_N9S20753C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S20753C12D1Ev,_ZThn220_N9S20753C12D1Ev),
  (VTBL_ENTRY)_ZN9S20753C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20753C10D0Ev,_ZThn112_N9S20753C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S20753C10D0Ev,_ZThn188_N9S20753C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S20753C10D0Ev,_ZThn220_N9S20753C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S20753C10D0Ev,_ZThn152_N9S20753C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S20753C10D0Ev,_ZThn84_N9S20753C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20753C10D0Ev,_ZThn56_N9S20753C10D0Ev),
  (VTBL_ENTRY)_ZN9S20753C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20753C10D1Ev,_ZThn112_N9S20753C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S20753C10D1Ev,_ZThn188_N9S20753C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S20753C10D1Ev,_ZThn220_N9S20753C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S20753C10D1Ev,_ZThn152_N9S20753C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S20753C10D1Ev,_ZThn84_N9S20753C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20753C10D1Ev,_ZThn56_N9S20753C10D1Ev),
  (VTBL_ENTRY)_ZN9S20753C10D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20753C19D0Ev,_ZTv0_n24_N9S20753C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S20753C19D0Ev,_ZThn180_N9S20753C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20753C19D1Ev,_ZTv0_n24_N9S20753C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S20753C19D1Ev,_ZThn180_N9S20753C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C19D0Ev,_ZTv0_n12_N9S20753C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S20753C19D0Ev,_ZThn220_N9S20753C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S20753C19D0Ev,_ZThn188_N9S20753C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S20753C19D0Ev,_ZThn152_N9S20753C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20753C19D0Ev,_ZThn112_N9S20753C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S20753C19D0Ev,_ZThn84_N9S20753C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20753C19D0Ev,_ZThn56_N9S20753C19D0Ev),
  (VTBL_ENTRY)_ZN9S20753C19D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C19D1Ev,_ZTv0_n12_N9S20753C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S20753C19D1Ev,_ZThn220_N9S20753C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S20753C19D1Ev,_ZThn188_N9S20753C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S20753C19D1Ev,_ZThn152_N9S20753C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20753C19D1Ev,_ZThn112_N9S20753C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S20753C19D1Ev,_ZThn84_N9S20753C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20753C19D1Ev,_ZThn56_N9S20753C19D1Ev),
  (VTBL_ENTRY)_ZN9S20753C19D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20753C19 = {  "S20753C19", // class name
  bases_S20753C19, 24,
  &(vtc_S20753C19[0]), // expected_vtbl_contents
  &(vtt_S20753C19[0]), // expected_vtt_contents
  ABISELECT(432,260), // object size
  NSPAIRA(_ZTI9S20753C19),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20753C19),69, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20753C19),61, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names31,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20753C17  : virtual S19905C19 , virtual S20753C18 , virtual S17777C6_nt , virtual S20753C19 , S5266C26 {
  ~S20753C17(); // tgen
  S20753C17(); // tgen
};
//SIG(-1 S20753C17) C1{ VBC2{ vd m} VBC3{ VBC4{ VBC2 FD Fc Fs[4]} VBC5{ VBC2 VBC4 vd Fi} VBC6{ m} VBC7{ VBC8{ m} VBC9{ VBC10{ VBC2 BC5 BC11{ m Fp} vd Fs FL Fp FL} BC11 BC2 BC4 vd Fi} BC4 vd Fs} BC10 vd FC9 Fi Fs} VBC11 VBC12{ VBC6 BC13{ VBC4 VBC14{ VBC2 BC4 VBC7 BC10 Fp} VBC11 BC15{ BC6 VBC10 BC11 VBC8 vd FC5 Fs} vd Fi FC16{}} BC8 vd} BC6}


S20753C17 ::~S20753C17(){ note_dtor("S20753C17", this);} // tgen
S20753C17 ::S20753C17(){ note_ctor("S20753C17", this);} // tgen

static void Test_S20753C17()
{
  extern Class_Descriptor cd_S20753C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(46,106)];
    init_test(&cd_S20753C17, buf);
    S20753C17 *dp, &lv = *(dp=new (buf) S20753C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(720,420), "sizeof(S20753C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20753C17)");
    /*is_ambiguous_... S20753C17::S19905C19 */ AMB_check_base_class_offset(lv, (S19905C19*), 0, "S20753C17");
    /*is_ambiguous_... S20753C17::S20753C8 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C8*), 0, "S20753C17");
    /*is_ambiguous_... S20753C17::S20753C7 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C7*), 0, "S20753C17");
    /*is_ambiguous_... S20753C17::S20753C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C5*), 0, "S20753C17");
    /*is_ambiguous_... S20753C17::S20753C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C7*)(S20753C5*), 0, "S20753C17");
    /*is_ambiguous_... S20753C4::S20753C8 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C8*)(S20753C4*), 0, "S20753C17");
    /*is_ambiguous_... S20753C2::S20753C8 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C8*)(S20753C2*), 0, "S20753C17");
    /*is_ambiguous_... S20753C18::S20753C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C5*)(S20753C18*), 0, "S20753C17");
    /*is_ambiguous_... S20753C18::S20753C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C7*)(S20753C5*)(S20753C18*), 0, "S20753C17");
    /*is_ambiguous_... S20753C11::S19905C19 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C11*), 0, "S20753C17");
    /*is_ambiguous_... S20753C11::S20753C8 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C8*)(S20753C11*), 0, "S20753C17");
    /*is_ambiguous_... S20753C11::S20753C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C5*)(S20753C11*), 0, "S20753C17");
    /*is_ambiguous_... S20753C11::S20753C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C7*)(S20753C5*)(S20753C11*), 0, "S20753C17");
    /*is_ambiguous_... S20753C18::S20753C8 */ AMB_check_base_class_offset(lv, (S20753C8*)(S20753C18*), ABISELECT(272,152), "S20753C17");
    /*is_ambiguous_... S20753C17::S20753C7 */ AMB_check_base_class_offset(lv, (S20753C8*)(S20753C7*), ABISELECT(272,152), "S20753C17");
    /*is_ambiguous_... S20753C17::S20753C5 */ AMB_check_base_class_offset(lv, (S20753C8*)(S20753C7*)(S20753C5*), ABISELECT(272,152), "S20753C17");
    /*is_ambiguous_... S20753C18::S20753C5 */ AMB_check_base_class_offset(lv, (S20753C8*)(S20753C7*)(S20753C5*)(S20753C18*), ABISELECT(272,152), "S20753C17");
    /*is_ambiguous_... S20753C10::S20753C8 */ AMB_check_base_class_offset(lv, (S20753C8*)(S20753C10*)(S20753C19*), ABISELECT(272,152), "S20753C17");
    /*is_ambiguous_... S20753C11::S20753C5 */ AMB_check_base_class_offset(lv, (S20753C8*)(S20753C7*)(S20753C5*)(S20753C11*), ABISELECT(272,152), "S20753C17");
    /*is_ambiguous_... S20753C18::S20753C7 */ AMB_check_base_class_offset(lv, (S20753C7*)(S20753C18*), ABISELECT(320,180), "S20753C17");
    check_base_class_offset(lv, (S5266C26*)(S20753C18*), ABISELECT(332,188), "S20753C17");
    /*is_ambiguous_... S20753C19::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*)(S20753C19*), ABISELECT(332,188), "S20753C17");
    check_base_class_offset(lv, (S5266C29*)(S20753C2*), 0, "S20753C17");
    check_base_class_offset(lv, (S5266C29*)(S20753C12*)(S20753C10*)(S20753C19*), 0, "S20753C17");
    /*is_ambiguous_... S20753C17::S20753C5 */ AMB_check_base_class_offset(lv, (S20753C7*)(S20753C5*), ABISELECT(448,256), "S20753C17");
    /*is_ambiguous_... S20753C17::S20753C5 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S20753C5*), ABISELECT(464,264), "S20753C17");
    check_base_class_offset(lv, (S20753C5*)(S20753C4*), ABISELECT(448,256), "S20753C17");
    check_base_class_offset(lv, (S20753C5*)(S20753C12*)(S20753C10*)(S20753C19*), ABISELECT(448,256), "S20753C17");
    /*is_ambiguous_... S20753C4::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S20753C4*), ABISELECT(392,220), "S20753C17");
    /*is_ambiguous_... S20753C4::S19905C19 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C4*), ABISELECT(384,216), "S20753C17");
    /*is_ambiguous_... S20753C4::S20753C8 */ AMB_check_base_class_offset(lv, (S20753C8*)(S20753C4*), ABISELECT(400,224), "S20753C17");
    check_base_class_offset(lv, (S20753C4*)(S20753C2*), ABISELECT(384,216), "S20753C17");
    /*is_ambiguous_... S20753C2::S20753C8 */ AMB_check_base_class_offset(lv, (S20753C8*)(S20753C2*), ABISELECT(336,188), "S20753C17");
    check_base_class_offset(lv, (S20753C2*)(S20753C18*), ABISELECT(336,188), "S20753C17");
    check_base_class_offset(lv, (S20753C2*)(S20753C11*), ABISELECT(336,188), "S20753C17");
    /*is_ambiguous_... S20753C18::S20753C5 */ AMB_check_base_class_offset(lv, (S20753C7*)(S20753C5*)(S20753C18*), ABISELECT(16,4), "S20753C17");
    /*is_ambiguous_... S20753C18::S20753C5 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S20753C5*)(S20753C18*), ABISELECT(32,12), "S20753C17");
    /*is_ambiguous_... S20753C18::S20753C5 */ AMB_check_base_class_offset(lv, (S20753C5*)(S20753C18*), ABISELECT(16,4), "S20753C17");
    check_base_class_offset(lv, (S20753C18*), ABISELECT(16,4), "S20753C17");
    /*is_ambiguous_... S20753C17::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*), ABISELECT(504,292), "S20753C17");
    /*is_ambiguous_... S20753C10::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S20753C10*)(S20753C19*), ABISELECT(504,292), "S20753C17");
    /*is_ambiguous_... S20753C11::S20753C8 */ AMB_check_base_class_offset(lv, (S20753C8*)(S20753C11*), ABISELECT(608,352), "S20753C17");
    /*is_ambiguous_... S20753C11::S20753C5 */ AMB_check_base_class_offset(lv, (S20753C7*)(S20753C5*)(S20753C11*), ABISELECT(656,380), "S20753C17");
    /*is_ambiguous_... S20753C11::S20753C5 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S20753C5*)(S20753C11*), ABISELECT(672,388), "S20753C17");
    /*is_ambiguous_... S20753C11::S20753C5 */ AMB_check_base_class_offset(lv, (S20753C5*)(S20753C11*), ABISELECT(656,380), "S20753C17");
    check_base_class_offset(lv, (S20753C11*)(S20753C10*)(S20753C19*), ABISELECT(608,352), "S20753C17");
    check_base_class_offset(lv, (S5266C26*)(S20753C12*)(S20753C10*)(S20753C19*), ABISELECT(512,296), "S20753C17");
    /*is_ambiguous_... S20753C12::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S20753C12*)(S20753C10*)(S20753C19*), ABISELECT(520,300), "S20753C17");
    check_base_class_offset(lv, (S20753C12*)(S20753C10*)(S20753C19*), ABISELECT(512,296), "S20753C17");
    check_base_class_offset(lv, (S20753C10*)(S20753C19*), ABISELECT(512,296), "S20753C17");
    /*is_ambiguous_... S20753C19::S5266C29 */ AMB_check_base_class_offset(lv, (S5266C29*)(S20753C19*), ABISELECT(512,296), "S20753C17");
    check_base_class_offset(lv, (S20753C19*), ABISELECT(512,296), "S20753C17");
    /*is_ambiguous_... S20753C17::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*), 0, "S20753C17");
    test_class_info(&lv, &cd_S20753C17);
    dp->~S20753C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20753C17(Test_S20753C17, "S20753C17", ABISELECT(720,420));

#else // __cplusplus

extern void _ZN9S20753C17C1Ev();
extern void _ZN9S20753C17D1Ev();
Name_Map name_map_S20753C17[] = {
  NSPAIR(_ZN9S20753C17C1Ev),
  NSPAIR(_ZN9S20753C17D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S20753C8;
extern VTBL_ENTRY _ZTI8S20753C8[];
extern  VTBL_ENTRY _ZTV8S20753C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C8[];
extern Class_Descriptor cd_S20753C7;
extern VTBL_ENTRY _ZTI8S20753C7[];
extern  VTBL_ENTRY _ZTV8S20753C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C7[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S20753C7;
extern VTBL_ENTRY _ZTI8S20753C7[];
extern  VTBL_ENTRY _ZTV8S20753C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C7[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S20753C5;
extern VTBL_ENTRY _ZTI8S20753C5[];
extern  VTBL_ENTRY _ZTV8S20753C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C5[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S20753C8;
extern VTBL_ENTRY _ZTI8S20753C8[];
extern  VTBL_ENTRY _ZTV8S20753C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C8[];
extern Class_Descriptor cd_S20753C4;
extern VTBL_ENTRY _ZTI8S20753C4[];
extern  VTBL_ENTRY _ZTV8S20753C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C4[];
extern Class_Descriptor cd_S20753C8;
extern VTBL_ENTRY _ZTI8S20753C8[];
extern  VTBL_ENTRY _ZTV8S20753C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C8[];
extern Class_Descriptor cd_S20753C2;
extern VTBL_ENTRY _ZTI8S20753C2[];
extern  VTBL_ENTRY _ZTV8S20753C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C2[];
extern Class_Descriptor cd_S20753C7;
extern VTBL_ENTRY _ZTI8S20753C7[];
extern  VTBL_ENTRY _ZTV8S20753C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C7[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S20753C5;
extern VTBL_ENTRY _ZTI8S20753C5[];
extern  VTBL_ENTRY _ZTV8S20753C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C5[];
extern Class_Descriptor cd_S20753C18;
extern VTBL_ENTRY _ZTI9S20753C18[];
extern  VTBL_ENTRY _ZTV9S20753C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20753C18[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S20753C8;
extern VTBL_ENTRY _ZTI8S20753C8[];
extern  VTBL_ENTRY _ZTV8S20753C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C8[];
extern Class_Descriptor cd_S20753C7;
extern VTBL_ENTRY _ZTI8S20753C7[];
extern  VTBL_ENTRY _ZTV8S20753C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C7[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S20753C5;
extern VTBL_ENTRY _ZTI8S20753C5[];
extern  VTBL_ENTRY _ZTV8S20753C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C5[];
extern Class_Descriptor cd_S20753C11;
extern VTBL_ENTRY _ZTI9S20753C11[];
extern  VTBL_ENTRY _ZTV9S20753C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20753C11[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S20753C12;
extern VTBL_ENTRY _ZTI9S20753C12[];
extern  VTBL_ENTRY _ZTV9S20753C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20753C12[];
extern Class_Descriptor cd_S20753C10;
extern VTBL_ENTRY _ZTI9S20753C10[];
extern  VTBL_ENTRY _ZTV9S20753C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20753C10[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S20753C19;
extern VTBL_ENTRY _ZTI9S20753C19[];
extern  VTBL_ENTRY _ZTV9S20753C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20753C19[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
static Base_Class bases_S20753C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19905C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20753C8,    ABISELECT(272,152), //bcp->offset
    30, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20753C7,    ABISELECT(320,180), //bcp->offset
    36, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S5266C26,    ABISELECT(332,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20753C7,    ABISELECT(448,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(464,264), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20753C5,    ABISELECT(448,256), //bcp->offset
    67, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S17777C6_nt,    ABISELECT(392,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19905C19,    ABISELECT(384,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20753C8,    ABISELECT(400,224), //bcp->offset
    61, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20753C4,    ABISELECT(384,216), //bcp->offset
    53, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20753C8,    ABISELECT(336,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20753C2,    ABISELECT(336,188), //bcp->offset
    43, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S20753C7,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(32,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20753C5,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20753C18,    ABISELECT(16,4), //bcp->offset
    17, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S17777C6_nt,    ABISELECT(504,292), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20753C8,    ABISELECT(608,352), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20753C7,    ABISELECT(656,380), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(672,388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20753C5,    ABISELECT(656,380), //bcp->offset
    99, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20753C11,    ABISELECT(608,352), //bcp->offset
    88, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S5266C26,    ABISELECT(512,296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(520,300), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S20753C12,    ABISELECT(512,296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20753C10,    ABISELECT(512,296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S5266C29,    ABISELECT(512,296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20753C19,    ABISELECT(512,296), //bcp->offset
    74, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20753C17[];
extern void ABISELECT(_ZTv0_n24_N9S20753C17D1Ev,_ZTv0_n12_N9S20753C17D1Ev)();
extern void _ZN9S20753C17D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C17D0Ev,_ZTv0_n12_N9S20753C17D0Ev)();
extern void _ZN9S20753C17D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C17D1Ev,_ZTv0_n12_N9S20753C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20753C17D1Ev,_ZThn4_N9S20753C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C17D0Ev,_ZTv0_n12_N9S20753C17D0Ev)();
extern void ABISELECT(_ZThn16_N9S20753C17D0Ev,_ZThn4_N9S20753C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C17D1Ev,_ZTv0_n12_N9S20753C17D1Ev)();
extern void ABISELECT(_ZThn272_N9S20753C17D1Ev,_ZThn152_N9S20753C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C17D0Ev,_ZTv0_n12_N9S20753C17D0Ev)();
extern void ABISELECT(_ZThn272_N9S20753C17D0Ev,_ZThn152_N9S20753C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C17D1Ev,_ZTv0_n12_N9S20753C17D1Ev)();
extern void ABISELECT(_ZThn320_N9S20753C17D1Ev,_ZThn180_N9S20753C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C17D0Ev,_ZTv0_n12_N9S20753C17D0Ev)();
extern void ABISELECT(_ZThn320_N9S20753C17D0Ev,_ZThn180_N9S20753C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C17D1Ev,_ZTv0_n12_N9S20753C17D1Ev)();
extern void ABISELECT(_ZThn336_N9S20753C17D1Ev,_ZThn188_N9S20753C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C17D0Ev,_ZTv0_n12_N9S20753C17D0Ev)();
extern void ABISELECT(_ZThn336_N9S20753C17D0Ev,_ZThn188_N9S20753C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20753C17D1Ev,_ZTv0_n24_N9S20753C17D1Ev)();
extern void ABISELECT(_ZThn384_N9S20753C17D1Ev,_ZThn216_N9S20753C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20753C17D0Ev,_ZTv0_n24_N9S20753C17D0Ev)();
extern void ABISELECT(_ZThn384_N9S20753C17D0Ev,_ZThn216_N9S20753C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C17D1Ev,_ZTv0_n12_N9S20753C17D1Ev)();
extern void ABISELECT(_ZThn400_N9S20753C17D1Ev,_ZThn224_N9S20753C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C17D0Ev,_ZTv0_n12_N9S20753C17D0Ev)();
extern void ABISELECT(_ZThn400_N9S20753C17D0Ev,_ZThn224_N9S20753C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C17D1Ev,_ZTv0_n12_N9S20753C17D1Ev)();
extern void ABISELECT(_ZThn448_N9S20753C17D1Ev,_ZThn256_N9S20753C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C17D0Ev,_ZTv0_n12_N9S20753C17D0Ev)();
extern void ABISELECT(_ZThn448_N9S20753C17D0Ev,_ZThn256_N9S20753C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C17D1Ev,_ZTv0_n12_N9S20753C17D1Ev)();
extern void ABISELECT(_ZThn512_N9S20753C17D1Ev,_ZThn296_N9S20753C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C17D0Ev,_ZTv0_n12_N9S20753C17D0Ev)();
extern void ABISELECT(_ZThn512_N9S20753C17D0Ev,_ZThn296_N9S20753C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C17D1Ev,_ZTv0_n12_N9S20753C17D1Ev)();
extern void ABISELECT(_ZThn608_N9S20753C17D1Ev,_ZThn352_N9S20753C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C17D0Ev,_ZTv0_n12_N9S20753C17D0Ev)();
extern void ABISELECT(_ZThn608_N9S20753C17D0Ev,_ZThn352_N9S20753C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C17D1Ev,_ZTv0_n12_N9S20753C17D1Ev)();
extern void ABISELECT(_ZThn656_N9S20753C17D1Ev,_ZThn380_N9S20753C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C17D0Ev,_ZTv0_n12_N9S20753C17D0Ev)();
extern void ABISELECT(_ZThn656_N9S20753C17D0Ev,_ZThn380_N9S20753C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20753C17[] = {
  ABISELECT(608,352),
  ABISELECT(512,296),
  ABISELECT(504,292),
  ABISELECT(448,256),
  ABISELECT(384,216),
  0,
  ABISELECT(336,188),
  ABISELECT(332,188),
  ABISELECT(320,180),
  ABISELECT(272,152),
  ABISELECT(16,4),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20753C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C17D1Ev,_ZTv0_n12_N9S20753C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C17D0Ev,_ZTv0_n12_N9S20753C17D0Ev),
  ABISELECT(432,252),
  ABISELECT(368,212),
  ABISELECT(-16,-4),
  ABISELECT(320,184),
  ABISELECT(316,184),
  ABISELECT(304,176),
  ABISELECT(256,148),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI9S20753C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C17D1Ev,_ZTv0_n12_N9S20753C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C17D0Ev,_ZTv0_n12_N9S20753C17D0Ev),
  ABISELECT(-272,-152),
  ABISELECT(-272,-152),
  ABISELECT(-272,-152),
  (VTBL_ENTRY)&(_ZTI9S20753C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C17D1Ev,_ZTv0_n12_N9S20753C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C17D0Ev,_ZTv0_n12_N9S20753C17D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(-320,-180),
  ABISELECT(-320,-180),
  ABISELECT(-320,-180),
  (VTBL_ENTRY)&(_ZTI9S20753C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C17D1Ev,_ZTv0_n12_N9S20753C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C17D0Ev,_ZTv0_n12_N9S20753C17D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-336,-188),
  ABISELECT(-336,-188),
  ABISELECT(-336,-188),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI9S20753C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C17D1Ev,_ZTv0_n12_N9S20753C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C17D0Ev,_ZTv0_n12_N9S20753C17D0Ev),
  ABISELECT(-384,-216),
  ABISELECT(-112,-64),
  ABISELECT(-384,-216),
  ABISELECT(64,40),
  ABISELECT(-384,-216),
  (VTBL_ENTRY)&(_ZTI9S20753C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20753C17D1Ev,_ZTv0_n24_N9S20753C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20753C17D0Ev,_ZTv0_n24_N9S20753C17D0Ev),
  ABISELECT(-400,-224),
  ABISELECT(-400,-224),
  ABISELECT(-400,-224),
  (VTBL_ENTRY)&(_ZTI9S20753C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C17D1Ev,_ZTv0_n12_N9S20753C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C17D0Ev,_ZTv0_n12_N9S20753C17D0Ev),
  ABISELECT(-176,-104),
  ABISELECT(-448,-256),
  ABISELECT(-448,-256),
  ABISELECT(-448,-256),
  (VTBL_ENTRY)&(_ZTI9S20753C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C17D1Ev,_ZTv0_n12_N9S20753C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C17D0Ev,_ZTv0_n12_N9S20753C17D0Ev),
  ABISELECT(-180,-108),
  ABISELECT(-8,-4),
  ABISELECT(-128,-80),
  ABISELECT(-176,-108),
  ABISELECT(96,56),
  ABISELECT(-512,-296),
  ABISELECT(-240,-144),
  ABISELECT(-512,-296),
  ABISELECT(-64,-40),
  ABISELECT(-512,-296),
  ABISELECT(-512,-296),
  (VTBL_ENTRY)&(_ZTI9S20753C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C17D1Ev,_ZTv0_n12_N9S20753C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C17D0Ev,_ZTv0_n12_N9S20753C17D0Ev),
  ABISELECT(-336,-200),
  ABISELECT(-160,-96),
  ABISELECT(-224,-136),
  ABISELECT(-608,-352),
  ABISELECT(-272,-164),
  ABISELECT(-608,-352),
  ABISELECT(-608,-352),
  ABISELECT(-608,-352),
  (VTBL_ENTRY)&(_ZTI9S20753C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C17D1Ev,_ZTv0_n12_N9S20753C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C17D0Ev,_ZTv0_n12_N9S20753C17D0Ev),
  ABISELECT(-384,-228),
  ABISELECT(-656,-380),
  ABISELECT(-656,-380),
  ABISELECT(-656,-380),
  (VTBL_ENTRY)&(_ZTI9S20753C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C17D1Ev,_ZTv0_n12_N9S20753C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C17D0Ev,_ZTv0_n12_N9S20753C17D0Ev),
};
extern VTBL_ENTRY _ZTV9S20753C17[];
extern void ABISELECT(_ZTv0_n24_N9S20753C18D1Ev,_ZTv0_n12_N9S20753C18D1Ev)();
extern void _ZN9S20753C18D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C18D0Ev,_ZTv0_n12_N9S20753C18D0Ev)();
extern void _ZN9S20753C18D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20753C18__9S20753C17[] = {
  ABISELECT(432,252),
  ABISELECT(368,212),
  ABISELECT(-16,-4),
  ABISELECT(320,184),
  ABISELECT(316,184),
  ABISELECT(304,176),
  ABISELECT(256,148),
  ABISELECT(-16,-4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20753C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C18D1Ev,_ZTv0_n12_N9S20753C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C18D0Ev,_ZTv0_n12_N9S20753C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev)();
extern void _ZN8S20753C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev)();
extern void _ZN8S20753C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C59S20753C18__A1__9S20753C17[] = {
  ABISELECT(256,148),
  ABISELECT(-16,-4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void _ZN8S20753C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
extern void _ZN8S20753C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C78S20753C59S20753C18__A2__9S20753C17[] = {
  ABISELECT(256,148),
  ABISELECT(-16,-4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C78S20753C59S20753C18__A2__9S20753C17[] = {
  ABISELECT(16,4),
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void ABISELECT(_ZThn256_N8S20753C7D1Ev,_ZThn148_N8S20753C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
extern void ABISELECT(_ZThn256_N8S20753C7D0Ev,_ZThn148_N8S20753C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C78S20753C59S20753C18__A2__9S20753C17[] = {
  ABISELECT(-272,-152),
  ABISELECT(-256,-148),
  ABISELECT(-256,-148),
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C59S20753C18__A1__9S20753C17[] = {
  ABISELECT(16,4),
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev)();
extern void ABISELECT(_ZThn256_N8S20753C5D1Ev,_ZThn148_N8S20753C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev)();
extern void ABISELECT(_ZThn256_N8S20753C5D0Ev,_ZThn148_N8S20753C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C59S20753C18__A1__9S20753C17[] = {
  ABISELECT(-272,-152),
  ABISELECT(-256,-148),
  ABISELECT(-256,-148),
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C18D1Ev,_ZTv0_n12_N9S20753C18D1Ev)();
extern void ABISELECT(_ZThn256_N9S20753C18D1Ev,_ZThn148_N9S20753C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C18D0Ev,_ZTv0_n12_N9S20753C18D0Ev)();
extern void ABISELECT(_ZThn256_N9S20753C18D0Ev,_ZThn148_N9S20753C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__9S20753C18__9S20753C17[] = {
  ABISELECT(-272,-152),
  ABISELECT(-256,-148),
  ABISELECT(-256,-148),
  (VTBL_ENTRY)&(_ZTI9S20753C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C18D1Ev,_ZTv0_n12_N9S20753C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C18D0Ev,_ZTv0_n12_N9S20753C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C18D1Ev,_ZTv0_n12_N9S20753C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C18D0Ev,_ZTv0_n12_N9S20753C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__9S20753C18__9S20753C17[] = {
  ABISELECT(16,4),
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI9S20753C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C18D1Ev,_ZTv0_n12_N9S20753C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C18D0Ev,_ZTv0_n12_N9S20753C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C18D1Ev,_ZTv0_n12_N9S20753C18D1Ev)();
extern void ABISELECT(_ZThn304_N9S20753C18D1Ev,_ZThn176_N9S20753C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C18D0Ev,_ZTv0_n12_N9S20753C18D0Ev)();
extern void ABISELECT(_ZThn304_N9S20753C18D0Ev,_ZThn176_N9S20753C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C7__9S20753C18__9S20753C17[] = {
  ABISELECT(-48,-28),
  ABISELECT(-320,-180),
  ABISELECT(-304,-176),
  ABISELECT(-304,-176),
  (VTBL_ENTRY)&(_ZTI9S20753C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C18D1Ev,_ZTv0_n12_N9S20753C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C18D0Ev,_ZTv0_n12_N9S20753C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C18D1Ev,_ZTv0_n12_N9S20753C18D1Ev)();
extern void ABISELECT(_ZThn320_N9S20753C18D1Ev,_ZThn184_N9S20753C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C18D0Ev,_ZTv0_n12_N9S20753C18D0Ev)();
extern void ABISELECT(_ZThn320_N9S20753C18D0Ev,_ZThn184_N9S20753C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C2__9S20753C18__9S20753C17[] = {
  ABISELECT(-64,-36),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-336,-188),
  ABISELECT(-336,-188),
  ABISELECT(-320,-184),
  ABISELECT(-320,-184),
  (VTBL_ENTRY)&(_ZTI9S20753C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C18D1Ev,_ZTv0_n12_N9S20753C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C18D0Ev,_ZTv0_n12_N9S20753C18D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20753C18D1Ev,_ZTv0_n24_N9S20753C18D1Ev)();
extern void ABISELECT(_ZThn368_N9S20753C18D1Ev,_ZThn212_N9S20753C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20753C18D0Ev,_ZTv0_n24_N9S20753C18D0Ev)();
extern void ABISELECT(_ZThn368_N9S20753C18D0Ev,_ZThn212_N9S20753C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C4__9S20753C18__9S20753C17[] = {
  ABISELECT(-368,-212),
  ABISELECT(-112,-64),
  ABISELECT(-384,-216),
  ABISELECT(64,40),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI9S20753C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20753C18D1Ev,_ZTv0_n24_N9S20753C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20753C18D0Ev,_ZTv0_n24_N9S20753C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C18D1Ev,_ZTv0_n12_N9S20753C18D1Ev)();
extern void ABISELECT(_ZThn432_N9S20753C18D1Ev,_ZThn252_N9S20753C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C18D0Ev,_ZTv0_n12_N9S20753C18D0Ev)();
extern void ABISELECT(_ZThn432_N9S20753C18D0Ev,_ZThn252_N9S20753C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C5__9S20753C18__9S20753C17[] = {
  ABISELECT(-176,-104),
  ABISELECT(-448,-256),
  ABISELECT(-432,-252),
  ABISELECT(-432,-252),
  (VTBL_ENTRY)&(_ZTI9S20753C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C18D1Ev,_ZTv0_n12_N9S20753C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C18D0Ev,_ZTv0_n12_N9S20753C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C18D1Ev,_ZTv0_n12_N9S20753C18D1Ev)();
extern void ABISELECT(_ZThn384_N9S20753C18D1Ev,_ZThn220_N9S20753C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C18D0Ev,_ZTv0_n12_N9S20753C18D0Ev)();
extern void ABISELECT(_ZThn384_N9S20753C18D0Ev,_ZThn220_N9S20753C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C88S20753C4__A1__9S20753C18__9S20753C17[] = {
  ABISELECT(-400,-224),
  ABISELECT(-384,-220),
  ABISELECT(-384,-220),
  (VTBL_ENTRY)&(_ZTI9S20753C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C18D1Ev,_ZTv0_n12_N9S20753C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C18D0Ev,_ZTv0_n12_N9S20753C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void _ZN8S20753C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
extern void _ZN8S20753C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__9S20753C17[] = {
  ABISELECT(-272,-152),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C8__9S20753C17[] = {
  ABISELECT(272,152),
  ABISELECT(272,152),
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void _ZN8S20753C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
extern void _ZN8S20753C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C7__9S20753C17[] = {
  ABISELECT(-48,-28),
  ABISELECT(-320,-180),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C7__9S20753C17[] = {
  ABISELECT(320,180),
  ABISELECT(320,180),
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C7__9S20753C17[] = {
  ABISELECT(-272,-152),
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev)();
extern void _ZN8S20753C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev)();
extern void _ZN8S20753C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C2__9S20753C17[] = {
  ABISELECT(-64,-36),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-336,-188),
  ABISELECT(-336,-188),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void _ZN8S20753C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
extern void _ZN8S20753C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C88S20753C2__A2__9S20753C17[] = {
  ABISELECT(-336,-188),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C88S20753C2__A2__9S20753C17[] = {
  ABISELECT(336,188),
  ABISELECT(336,188),
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S20753C2D1Ev,_ZTv0_n24_N8S20753C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S20753C2D1Ev,_ZThn28_N8S20753C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20753C2D0Ev,_ZTv0_n24_N8S20753C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S20753C2D0Ev,_ZThn28_N8S20753C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C4__8S20753C2__9S20753C17[] = {
  ABISELECT(-48,-28),
  ABISELECT(-112,-64),
  ABISELECT(-384,-216),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20753C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20753C2D1Ev,_ZTv0_n24_N8S20753C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20753C2D0Ev,_ZTv0_n24_N8S20753C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev)();
extern void ABISELECT(_ZThn112_N8S20753C2D1Ev,_ZThn68_N8S20753C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev)();
extern void ABISELECT(_ZThn112_N8S20753C2D0Ev,_ZThn68_N8S20753C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C5__8S20753C2__9S20753C17[] = {
  ABISELECT(-176,-104),
  ABISELECT(-448,-256),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S20753C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C2__9S20753C17[] = {
  ABISELECT(336,188),
  ABISELECT(336,188),
  (VTBL_ENTRY)&(_ZTI8S20753C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C2__9S20753C17[] = {
  ABISELECT(-272,-152),
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S20753C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S20753C2D1Ev,_ZThn36_N8S20753C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev)();
extern void ABISELECT(_ZThn64_N8S20753C2D0Ev,_ZThn36_N8S20753C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C88S20753C4__A1__8S20753C2__9S20753C17[] = {
  ABISELECT(-400,-224),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S20753C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev),
};
extern void _ZN8S20753C4D1Ev();
extern void _ZN8S20753C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20753C4__9S20753C17[] = {
  ABISELECT(-112,-64),
  ABISELECT(-384,-216),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C4[0]),
  (VTBL_ENTRY)&_ZN8S20753C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20753C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void _ZN8S20753C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
extern void _ZN8S20753C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C88S20753C4__A1__9S20753C17[] = {
  ABISELECT(-400,-224),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C88S20753C4__A1__9S20753C17[] = {
  ABISELECT(400,224),
  ABISELECT(400,224),
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev)();
extern void ABISELECT(_ZThn64_N8S20753C4D1Ev,_ZThn40_N8S20753C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev)();
extern void ABISELECT(_ZThn64_N8S20753C4D0Ev,_ZThn40_N8S20753C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C5__8S20753C4__9S20753C17[] = {
  ABISELECT(-176,-104),
  ABISELECT(-448,-256),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S20753C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C4__9S20753C17[] = {
  ABISELECT(384,216),
  ABISELECT(384,216),
  (VTBL_ENTRY)&(_ZTI8S20753C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C4__9S20753C17[] = {
  ABISELECT(-272,-152),
  ABISELECT(112,64),
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI8S20753C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S20753C4D1Ev,_ZThn8_N8S20753C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev)();
extern void ABISELECT(_ZThn16_N8S20753C4D0Ev,_ZThn8_N8S20753C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__A__8S20753C4__9S20753C17[] = {
  ABISELECT(-400,-224),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20753C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev)();
extern void _ZN8S20753C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev)();
extern void _ZN8S20753C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C5__9S20753C17[] = {
  ABISELECT(-176,-104),
  ABISELECT(-448,-256),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void _ZN8S20753C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
extern void _ZN8S20753C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C78S20753C5__A1__9S20753C17[] = {
  ABISELECT(-176,-104),
  ABISELECT(-448,-256),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C78S20753C5__A1__9S20753C17[] = {
  ABISELECT(448,256),
  ABISELECT(448,256),
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C78S20753C5__A1__9S20753C17[] = {
  ABISELECT(-272,-152),
  ABISELECT(176,104),
  ABISELECT(176,104),
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C5__9S20753C17[] = {
  ABISELECT(448,256),
  ABISELECT(448,256),
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C5__9S20753C17[] = {
  ABISELECT(-272,-152),
  ABISELECT(176,104),
  ABISELECT(176,104),
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C19D1Ev,_ZTv0_n12_N9S20753C19D1Ev)();
extern void _ZN9S20753C19D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C19D0Ev,_ZTv0_n12_N9S20753C19D0Ev)();
extern void _ZN9S20753C19D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20753C19__9S20753C17[] = {
  ABISELECT(-180,-108),
  ABISELECT(-8,-4),
  ABISELECT(-128,-80),
  ABISELECT(-176,-108),
  ABISELECT(96,56),
  ABISELECT(-512,-296),
  ABISELECT(-240,-144),
  ABISELECT(-512,-296),
  ABISELECT(-64,-40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20753C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C19D1Ev,_ZTv0_n12_N9S20753C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C19D0Ev,_ZTv0_n12_N9S20753C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void _ZN9S20753C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
extern void _ZN9S20753C10D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20753C109S20753C19__9S20753C17[] = {
  ABISELECT(-8,-4),
  ABISELECT(-128,-80),
  ABISELECT(-176,-108),
  ABISELECT(96,56),
  ABISELECT(-512,-296),
  ABISELECT(-240,-144),
  ABISELECT(-512,-296),
  ABISELECT(-64,-40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev)();
extern void _ZN9S20753C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev)();
extern void _ZN9S20753C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20753C129S20753C109S20753C19__9S20753C17[] = {
  ABISELECT(-512,-296),
  ABISELECT(-240,-144),
  ABISELECT(-512,-296),
  ABISELECT(-64,-40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20753C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C5__9S20753C129S20753C109S20753C19__9S20753C17[] = {
  ABISELECT(-176,-104),
  ABISELECT(-448,-256),
  ABISELECT(64,40),
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI9S20753C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__9S20753C129S20753C109S20753C19__9S20753C17[] = {
  ABISELECT(512,296),
  ABISELECT(512,296),
  (VTBL_ENTRY)&(_ZTI9S20753C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C8__9S20753C129S20753C109S20753C19__9S20753C17[] = {
  ABISELECT(-272,-152),
  ABISELECT(240,144),
  ABISELECT(240,144),
  (VTBL_ENTRY)&(_ZTI9S20753C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C8__9S20753C109S20753C19__9S20753C17[] = {
  ABISELECT(-272,-152),
  ABISELECT(240,144),
  ABISELECT(240,144),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__9S20753C109S20753C19__9S20753C17[] = {
  ABISELECT(512,296),
  ABISELECT(512,296),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void ABISELECT(_ZThn96_N9S20753C10D1Ev,_ZThn56_N9S20753C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
extern void ABISELECT(_ZThn96_N9S20753C10D0Ev,_ZThn56_N9S20753C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20753C11__9S20753C109S20753C19__9S20753C17[] = {
  ABISELECT(-336,-200),
  ABISELECT(-160,-96),
  ABISELECT(-224,-136),
  ABISELECT(-608,-352),
  ABISELECT(-272,-164),
  ABISELECT(-608,-352),
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C2__9S20753C109S20753C19__9S20753C17[] = {
  ABISELECT(-64,-36),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-336,-188),
  ABISELECT(-336,-188),
  ABISELECT(176,108),
  ABISELECT(176,108),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20753C10D1Ev,_ZTv0_n24_N9S20753C10D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20753C10D0Ev,_ZTv0_n24_N9S20753C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C4__9S20753C109S20753C19__9S20753C17[] = {
  ABISELECT(128,80),
  ABISELECT(-112,-64),
  ABISELECT(-384,-216),
  ABISELECT(64,40),
  ABISELECT(128,80),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20753C10D1Ev,_ZTv0_n24_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20753C10D0Ev,_ZTv0_n24_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C5__9S20753C109S20753C19__9S20753C17[] = {
  ABISELECT(-176,-104),
  ABISELECT(-448,-256),
  ABISELECT(64,40),
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C88S20753C4__A2__9S20753C109S20753C19__9S20753C17[] = {
  ABISELECT(-400,-224),
  ABISELECT(112,72),
  ABISELECT(112,72),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void ABISELECT(_ZThn144_N9S20753C10D1Ev,_ZThn84_N9S20753C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
extern void ABISELECT(_ZThn144_N9S20753C10D0Ev,_ZThn84_N9S20753C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C59S20753C11__A1__9S20753C109S20753C19__9S20753C17[] = {
  ABISELECT(-384,-228),
  ABISELECT(-656,-380),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C19D1Ev,_ZTv0_n12_N9S20753C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C19D0Ev,_ZTv0_n12_N9S20753C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C8__9S20753C19__9S20753C17[] = {
  ABISELECT(-272,-152),
  ABISELECT(240,144),
  ABISELECT(240,144),
  (VTBL_ENTRY)&(_ZTI9S20753C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C19D1Ev,_ZTv0_n12_N9S20753C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C19D0Ev,_ZTv0_n12_N9S20753C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C19D1Ev,_ZTv0_n12_N9S20753C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C19D0Ev,_ZTv0_n12_N9S20753C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__9S20753C19__9S20753C17[] = {
  ABISELECT(512,296),
  ABISELECT(512,296),
  (VTBL_ENTRY)&(_ZTI9S20753C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C19D1Ev,_ZTv0_n12_N9S20753C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C19D0Ev,_ZTv0_n12_N9S20753C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C19D1Ev,_ZTv0_n12_N9S20753C19D1Ev)();
extern void ABISELECT(_ZThn96_N9S20753C19D1Ev,_ZThn56_N9S20753C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C19D0Ev,_ZTv0_n12_N9S20753C19D0Ev)();
extern void ABISELECT(_ZThn96_N9S20753C19D0Ev,_ZThn56_N9S20753C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20753C11__9S20753C19__9S20753C17[] = {
  ABISELECT(-336,-200),
  ABISELECT(-160,-96),
  ABISELECT(-224,-136),
  ABISELECT(-608,-352),
  ABISELECT(-272,-164),
  ABISELECT(-608,-352),
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20753C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C19D1Ev,_ZTv0_n12_N9S20753C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C19D0Ev,_ZTv0_n12_N9S20753C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C19D1Ev,_ZTv0_n12_N9S20753C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C19D0Ev,_ZTv0_n12_N9S20753C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C2__9S20753C19__9S20753C17[] = {
  ABISELECT(-64,-36),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-336,-188),
  ABISELECT(-336,-188),
  ABISELECT(176,108),
  ABISELECT(176,108),
  (VTBL_ENTRY)&(_ZTI9S20753C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C19D1Ev,_ZTv0_n12_N9S20753C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C19D0Ev,_ZTv0_n12_N9S20753C19D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20753C19D1Ev,_ZTv0_n24_N9S20753C19D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20753C19D0Ev,_ZTv0_n24_N9S20753C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C4__9S20753C19__9S20753C17[] = {
  ABISELECT(128,80),
  ABISELECT(-112,-64),
  ABISELECT(-384,-216),
  ABISELECT(64,40),
  ABISELECT(128,80),
  (VTBL_ENTRY)&(_ZTI9S20753C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20753C19D1Ev,_ZTv0_n24_N9S20753C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20753C19D0Ev,_ZTv0_n24_N9S20753C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C19D1Ev,_ZTv0_n12_N9S20753C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C19D0Ev,_ZTv0_n12_N9S20753C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C5__9S20753C19__9S20753C17[] = {
  ABISELECT(-176,-104),
  ABISELECT(-448,-256),
  ABISELECT(64,40),
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI9S20753C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C19D1Ev,_ZTv0_n12_N9S20753C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C19D0Ev,_ZTv0_n12_N9S20753C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C19D1Ev,_ZTv0_n12_N9S20753C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C19D0Ev,_ZTv0_n12_N9S20753C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C88S20753C4__A2__9S20753C19__9S20753C17[] = {
  ABISELECT(-400,-224),
  ABISELECT(112,72),
  ABISELECT(112,72),
  (VTBL_ENTRY)&(_ZTI9S20753C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C19D1Ev,_ZTv0_n12_N9S20753C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C19D0Ev,_ZTv0_n12_N9S20753C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C19D1Ev,_ZTv0_n12_N9S20753C19D1Ev)();
extern void ABISELECT(_ZThn144_N9S20753C19D1Ev,_ZThn84_N9S20753C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C19D0Ev,_ZTv0_n12_N9S20753C19D0Ev)();
extern void ABISELECT(_ZThn144_N9S20753C19D0Ev,_ZThn84_N9S20753C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C59S20753C11__A1__9S20753C19__9S20753C17[] = {
  ABISELECT(-384,-228),
  ABISELECT(-656,-380),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S20753C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C19D1Ev,_ZTv0_n12_N9S20753C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C19D0Ev,_ZTv0_n12_N9S20753C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev)();
extern void _ZN9S20753C11D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev)();
extern void _ZN9S20753C11D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20753C11__9S20753C17[] = {
  ABISELECT(-336,-200),
  ABISELECT(-160,-96),
  ABISELECT(-224,-136),
  ABISELECT(-608,-352),
  ABISELECT(-272,-164),
  ABISELECT(-608,-352),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20753C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void _ZN8S20753C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
extern void _ZN8S20753C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C89S20753C11__A3__9S20753C17[] = {
  ABISELECT(-608,-352),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C89S20753C11__A3__9S20753C17[] = {
  ABISELECT(608,352),
  ABISELECT(608,352),
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev)();
extern void _ZN8S20753C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev)();
extern void _ZN8S20753C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C59S20753C11__A2__9S20753C17[] = {
  ABISELECT(-384,-228),
  ABISELECT(-656,-380),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void _ZN8S20753C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
extern void _ZN8S20753C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C78S20753C59S20753C11__A3__9S20753C17[] = {
  ABISELECT(-384,-228),
  ABISELECT(-656,-380),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C78S20753C59S20753C11__A3__9S20753C17[] = {
  ABISELECT(656,380),
  ABISELECT(656,380),
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C78S20753C59S20753C11__A3__9S20753C17[] = {
  ABISELECT(-272,-152),
  ABISELECT(384,228),
  ABISELECT(384,228),
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C59S20753C11__A2__9S20753C17[] = {
  ABISELECT(656,380),
  ABISELECT(656,380),
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C59S20753C11__A2__9S20753C17[] = {
  ABISELECT(-272,-152),
  ABISELECT(384,228),
  ABISELECT(384,228),
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__9S20753C11__9S20753C17[] = {
  ABISELECT(608,352),
  ABISELECT(608,352),
  (VTBL_ENTRY)&(_ZTI9S20753C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C2__9S20753C11__9S20753C17[] = {
  ABISELECT(-64,-36),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-336,-188),
  ABISELECT(-336,-188),
  ABISELECT(272,164),
  ABISELECT(272,164),
  (VTBL_ENTRY)&(_ZTI9S20753C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20753C11D1Ev,_ZTv0_n24_N9S20753C11D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20753C11D0Ev,_ZTv0_n24_N9S20753C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C4__9S20753C11__9S20753C17[] = {
  ABISELECT(224,136),
  ABISELECT(-112,-64),
  ABISELECT(-384,-216),
  ABISELECT(64,40),
  ABISELECT(224,136),
  (VTBL_ENTRY)&(_ZTI9S20753C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20753C11D1Ev,_ZTv0_n24_N9S20753C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20753C11D0Ev,_ZTv0_n24_N9S20753C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C5__9S20753C11__9S20753C17[] = {
  ABISELECT(-176,-104),
  ABISELECT(-448,-256),
  ABISELECT(160,96),
  ABISELECT(160,96),
  (VTBL_ENTRY)&(_ZTI9S20753C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C8__A1__9S20753C11__9S20753C17[] = {
  ABISELECT(-272,-152),
  ABISELECT(336,200),
  ABISELECT(336,200),
  (VTBL_ENTRY)&(_ZTI9S20753C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C88S20753C4__A2__9S20753C11__9S20753C17[] = {
  ABISELECT(-400,-224),
  ABISELECT(208,128),
  ABISELECT(208,128),
  (VTBL_ENTRY)&(_ZTI9S20753C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev)();
extern void ABISELECT(_ZThn48_N9S20753C11D1Ev,_ZThn28_N9S20753C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev)();
extern void ABISELECT(_ZThn48_N9S20753C11D0Ev,_ZThn28_N9S20753C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C5__A__9S20753C11__9S20753C17[] = {
  ABISELECT(-384,-228),
  ABISELECT(-656,-380),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S20753C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev),
};
static  VTT_ENTRY vtt_S20753C17[] = {
  {&(_ZTV9S20753C17[15]),  15,106},
  {&(_ZTV9S20753C17[15]),  15,106},
  {&(_ZTV9S20753C17[28]),  28,106},
  {&(_ZTV9S20753C17[34]),  34,106},
  {&(_ZTV9S20753C17[41]),  41,106},
  {&(_ZTV9S20753C17[51]),  51,106},
  {&(_ZTV9S20753C17[59]),  59,106},
  {&(_ZTV9S20753C17[72]),  72,106},
  {&(_ZTV9S20753C17[65]),  65,106},
  {&(_ZTV9S20753C17[86]),  86,106},
  {&(_ZTV9S20753C17[97]),  97,106},
  {&(_ZTV9S20753C17[104]),  104,106},
  {&(_tg__ZTV9S20753C18__9S20753C17[11]),  11,13},
  {&(_tg__ZTV8S20753C59S20753C18__A1__9S20753C17[5]),  5,7},
  {&(_tg__ZTV8S20753C78S20753C59S20753C18__A2__9S20753C17[5]),  5,7},
  {&(_tg__ZTV9S19905C19__8S20753C78S20753C59S20753C18__A2__9S20753C17[3]),  3,5},
  {&(_tg__ZTV8S20753C8__8S20753C78S20753C59S20753C18__A2__9S20753C17[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S20753C59S20753C18__A1__9S20753C17[3]),  3,5},
  {&(_tg__ZTV8S20753C8__8S20753C59S20753C18__A1__9S20753C17[4]),  4,6},
  {&(_tg__ZTV8S20753C8__9S20753C18__9S20753C17[4]),  4,6},
  {&(_tg__ZTV9S19905C19__9S20753C18__9S20753C17[3]),  3,5},
  {&(_tg__ZTV8S20753C7__9S20753C18__9S20753C17[5]),  5,7},
  {&(_tg__ZTV8S20753C2__9S20753C18__9S20753C17[8]),  8,10},
  {&(_tg__ZTV8S20753C4__9S20753C18__9S20753C17[6]),  6,8},
  {&(_tg__ZTV8S20753C5__9S20753C18__9S20753C17[5]),  5,7},
  {&(_tg__ZTV8S20753C88S20753C4__A1__9S20753C18__9S20753C17[4]),  4,6},
  {&(_tg__ZTV8S20753C8__9S20753C17[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S20753C8__9S20753C17[3]),  3,5},
  {&(_tg__ZTV8S20753C7__9S20753C17[5]),  5,7},
  {&(_tg__ZTV9S19905C19__8S20753C7__9S20753C17[3]),  3,5},
  {&(_tg__ZTV8S20753C8__8S20753C7__9S20753C17[4]),  4,6},
  {&(_tg__ZTV8S20753C2__9S20753C17[8]),  8,10},
  {&(_tg__ZTV8S20753C88S20753C2__A2__9S20753C17[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S20753C88S20753C2__A2__9S20753C17[3]),  3,5},
  {&(_tg__ZTV8S20753C4__8S20753C2__9S20753C17[6]),  6,8},
  {&(_tg__ZTV8S20753C5__8S20753C2__9S20753C17[5]),  5,7},
  {&(_tg__ZTV9S19905C19__8S20753C2__9S20753C17[3]),  3,5},
  {&(_tg__ZTV8S20753C8__8S20753C2__9S20753C17[4]),  4,6},
  {&(_tg__ZTV8S20753C88S20753C4__A1__8S20753C2__9S20753C17[4]),  4,6},
  {&(_tg__ZTV8S20753C4__9S20753C17[5]),  5,7},
  {&(_tg__ZTV8S20753C88S20753C4__A1__9S20753C17[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S20753C88S20753C4__A1__9S20753C17[3]),  3,5},
  {&(_tg__ZTV8S20753C5__8S20753C4__9S20753C17[5]),  5,7},
  {&(_tg__ZTV9S19905C19__8S20753C4__9S20753C17[3]),  3,5},
  {&(_tg__ZTV8S20753C8__8S20753C4__9S20753C17[4]),  4,6},
  {&(_tg__ZTV8S20753C8__A__8S20753C4__9S20753C17[4]),  4,6},
  {&(_tg__ZTV8S20753C5__9S20753C17[5]),  5,7},
  {&(_tg__ZTV8S20753C78S20753C5__A1__9S20753C17[5]),  5,7},
  {&(_tg__ZTV9S19905C19__8S20753C78S20753C5__A1__9S20753C17[3]),  3,5},
  {&(_tg__ZTV8S20753C8__8S20753C78S20753C5__A1__9S20753C17[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S20753C5__9S20753C17[3]),  3,5},
  {&(_tg__ZTV8S20753C8__8S20753C5__9S20753C17[4]),  4,6},
  {&(_tg__ZTV9S20753C19__9S20753C17[12]),  12,14},
  {&(_tg__ZTV9S20753C109S20753C19__9S20753C17[11]),  11,13},
  {&(_tg__ZTV9S20753C129S20753C109S20753C19__9S20753C17[7]),  7,9},
  {&(_tg__ZTV8S20753C5__9S20753C129S20753C109S20753C19__9S20753C17[5]),  5,7},
  {&(_tg__ZTV9S19905C19__9S20753C129S20753C109S20753C19__9S20753C17[3]),  3,5},
  {&(_tg__ZTV8S20753C8__9S20753C129S20753C109S20753C19__9S20753C17[4]),  4,6},
  {&(_tg__ZTV8S20753C8__9S20753C109S20753C19__9S20753C17[4]),  4,6},
  {&(_tg__ZTV9S19905C19__9S20753C109S20753C19__9S20753C17[3]),  3,5},
  {&(_tg__ZTV9S20753C11__9S20753C109S20753C19__9S20753C17[9]),  9,11},
  {&(_tg__ZTV8S20753C2__9S20753C109S20753C19__9S20753C17[8]),  8,10},
  {&(_tg__ZTV8S20753C4__9S20753C109S20753C19__9S20753C17[6]),  6,8},
  {&(_tg__ZTV8S20753C5__9S20753C109S20753C19__9S20753C17[5]),  5,7},
  {&(_tg__ZTV8S20753C88S20753C4__A2__9S20753C109S20753C19__9S20753C17[4]),  4,6},
  {&(_tg__ZTV8S20753C59S20753C11__A1__9S20753C109S20753C19__9S20753C17[5]),  5,7},
  {&(_tg__ZTV8S20753C8__9S20753C19__9S20753C17[4]),  4,6},
  {&(_tg__ZTV9S19905C19__9S20753C19__9S20753C17[3]),  3,5},
  {&(_tg__ZTV9S20753C11__9S20753C19__9S20753C17[9]),  9,11},
  {&(_tg__ZTV8S20753C2__9S20753C19__9S20753C17[8]),  8,10},
  {&(_tg__ZTV8S20753C4__9S20753C19__9S20753C17[6]),  6,8},
  {&(_tg__ZTV8S20753C5__9S20753C19__9S20753C17[5]),  5,7},
  {&(_tg__ZTV8S20753C88S20753C4__A2__9S20753C19__9S20753C17[4]),  4,6},
  {&(_tg__ZTV8S20753C59S20753C11__A1__9S20753C19__9S20753C17[5]),  5,7},
  {&(_tg__ZTV9S20753C11__9S20753C17[9]),  9,11},
  {&(_tg__ZTV8S20753C89S20753C11__A3__9S20753C17[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S20753C89S20753C11__A3__9S20753C17[3]),  3,5},
  {&(_tg__ZTV8S20753C59S20753C11__A2__9S20753C17[5]),  5,7},
  {&(_tg__ZTV8S20753C78S20753C59S20753C11__A3__9S20753C17[5]),  5,7},
  {&(_tg__ZTV9S19905C19__8S20753C78S20753C59S20753C11__A3__9S20753C17[3]),  3,5},
  {&(_tg__ZTV8S20753C8__8S20753C78S20753C59S20753C11__A3__9S20753C17[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S20753C59S20753C11__A2__9S20753C17[3]),  3,5},
  {&(_tg__ZTV8S20753C8__8S20753C59S20753C11__A2__9S20753C17[4]),  4,6},
  {&(_tg__ZTV9S19905C19__9S20753C11__9S20753C17[3]),  3,5},
  {&(_tg__ZTV8S20753C2__9S20753C11__9S20753C17[8]),  8,10},
  {&(_tg__ZTV8S20753C4__9S20753C11__9S20753C17[6]),  6,8},
  {&(_tg__ZTV8S20753C5__9S20753C11__9S20753C17[5]),  5,7},
  {&(_tg__ZTV8S20753C8__A1__9S20753C11__9S20753C17[4]),  4,6},
  {&(_tg__ZTV8S20753C88S20753C4__A2__9S20753C11__9S20753C17[4]),  4,6},
  {&(_tg__ZTV8S20753C5__A__9S20753C11__9S20753C17[5]),  5,7},
};
extern VTBL_ENTRY _ZTI9S20753C17[];
extern  VTBL_ENTRY _ZTV9S20753C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20753C17[];
static VTBL_ENTRY alt_thunk_names32[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20753C11D0Ev,_ZThn28_N9S20753C11D0Ev),
  (VTBL_ENTRY)_ZN9S20753C11D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20753C11D1Ev,_ZThn28_N9S20753C11D1Ev),
  (VTBL_ENTRY)_ZN9S20753C11D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev), // 
  (VTBL_ENTRY)_ZN9S20753C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev), // 
  (VTBL_ENTRY)_ZN9S20753C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S20753C10D0Ev,_ZThn84_N9S20753C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20753C10D0Ev,_ZThn56_N9S20753C10D0Ev),
  (VTBL_ENTRY)_ZN9S20753C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S20753C10D1Ev,_ZThn84_N9S20753C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20753C10D1Ev,_ZThn56_N9S20753C10D1Ev),
  (VTBL_ENTRY)_ZN9S20753C10D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C19D0Ev,_ZTv0_n12_N9S20753C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S20753C19D0Ev,_ZThn84_N9S20753C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20753C19D0Ev,_ZThn56_N9S20753C19D0Ev),
  (VTBL_ENTRY)_ZN9S20753C19D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C19D1Ev,_ZTv0_n12_N9S20753C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S20753C19D1Ev,_ZThn84_N9S20753C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20753C19D1Ev,_ZThn56_N9S20753C19D1Ev),
  (VTBL_ENTRY)_ZN9S20753C19D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20753C4D0Ev,_ZThn8_N8S20753C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C4D0Ev,_ZThn40_N8S20753C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20753C4D1Ev,_ZThn8_N8S20753C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C4D1Ev,_ZThn40_N8S20753C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20753C2D0Ev,_ZTv0_n24_N8S20753C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20753C2D0Ev,_ZThn28_N8S20753C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20753C2D1Ev,_ZTv0_n24_N8S20753C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20753C2D1Ev,_ZThn28_N8S20753C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C2D0Ev,_ZThn36_N8S20753C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20753C2D0Ev,_ZThn68_N8S20753C2D0Ev),
  (VTBL_ENTRY)_ZN8S20753C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C2D1Ev,_ZThn36_N8S20753C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20753C2D1Ev,_ZThn68_N8S20753C2D1Ev),
  (VTBL_ENTRY)_ZN8S20753C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev), // 
  (VTBL_ENTRY)_ZN8S20753C8D0Ev,
  (VTBL_ENTRY)_ZN8S20753C8D0Ev,
  (VTBL_ENTRY)_ZN8S20753C8D0Ev,
  (VTBL_ENTRY)_ZN8S20753C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev), // 
  (VTBL_ENTRY)_ZN8S20753C8D1Ev,
  (VTBL_ENTRY)_ZN8S20753C8D1Ev,
  (VTBL_ENTRY)_ZN8S20753C8D1Ev,
  (VTBL_ENTRY)_ZN8S20753C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20753C18D0Ev,_ZTv0_n24_N9S20753C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S20753C18D0Ev,_ZThn212_N9S20753C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20753C18D1Ev,_ZTv0_n24_N9S20753C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S20753C18D1Ev,_ZThn212_N9S20753C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S20753C7D0Ev,
  (VTBL_ENTRY)_ZN8S20753C7D0Ev,
  (VTBL_ENTRY)_ZN8S20753C7D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S20753C7D0Ev,_ZThn148_N8S20753C7D0Ev),
  (VTBL_ENTRY)_ZN8S20753C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S20753C7D1Ev,
  (VTBL_ENTRY)_ZN8S20753C7D1Ev,
  (VTBL_ENTRY)_ZN8S20753C7D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S20753C7D1Ev,_ZThn148_N8S20753C7D1Ev),
  (VTBL_ENTRY)_ZN8S20753C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S20753C5D0Ev,
  (VTBL_ENTRY)_ZN8S20753C5D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S20753C5D0Ev,_ZThn148_N8S20753C5D0Ev),
  (VTBL_ENTRY)_ZN8S20753C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S20753C5D1Ev,
  (VTBL_ENTRY)_ZN8S20753C5D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S20753C5D1Ev,_ZThn148_N8S20753C5D1Ev),
  (VTBL_ENTRY)_ZN8S20753C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C18D0Ev,_ZTv0_n12_N9S20753C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S20753C18D0Ev,_ZThn220_N9S20753C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn432_N9S20753C18D0Ev,_ZThn252_N9S20753C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S20753C18D0Ev,_ZThn184_N9S20753C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S20753C18D0Ev,_ZThn176_N9S20753C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S20753C18D0Ev,_ZThn148_N9S20753C18D0Ev),
  (VTBL_ENTRY)_ZN9S20753C18D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C18D1Ev,_ZTv0_n12_N9S20753C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S20753C18D1Ev,_ZThn220_N9S20753C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn432_N9S20753C18D1Ev,_ZThn252_N9S20753C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S20753C18D1Ev,_ZThn184_N9S20753C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S20753C18D1Ev,_ZThn176_N9S20753C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S20753C18D1Ev,_ZThn148_N9S20753C18D1Ev),
  (VTBL_ENTRY)_ZN9S20753C18D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20753C17D0Ev,_ZTv0_n24_N9S20753C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S20753C17D0Ev,_ZThn216_N9S20753C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20753C17D1Ev,_ZTv0_n24_N9S20753C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S20753C17D1Ev,_ZThn216_N9S20753C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C17D0Ev,_ZTv0_n12_N9S20753C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N9S20753C17D0Ev,_ZThn380_N9S20753C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn608_N9S20753C17D0Ev,_ZThn352_N9S20753C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn512_N9S20753C17D0Ev,_ZThn296_N9S20753C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn448_N9S20753C17D0Ev,_ZThn256_N9S20753C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N9S20753C17D0Ev,_ZThn224_N9S20753C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S20753C17D0Ev,_ZThn188_N9S20753C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S20753C17D0Ev,_ZThn180_N9S20753C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S20753C17D0Ev,_ZThn152_N9S20753C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20753C17D0Ev,_ZThn4_N9S20753C17D0Ev),
  (VTBL_ENTRY)_ZN9S20753C17D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C17D1Ev,_ZTv0_n12_N9S20753C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N9S20753C17D1Ev,_ZThn380_N9S20753C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn608_N9S20753C17D1Ev,_ZThn352_N9S20753C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn512_N9S20753C17D1Ev,_ZThn296_N9S20753C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn448_N9S20753C17D1Ev,_ZThn256_N9S20753C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N9S20753C17D1Ev,_ZThn224_N9S20753C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S20753C17D1Ev,_ZThn188_N9S20753C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S20753C17D1Ev,_ZThn180_N9S20753C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S20753C17D1Ev,_ZThn152_N9S20753C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20753C17D1Ev,_ZThn4_N9S20753C17D1Ev),
  (VTBL_ENTRY)_ZN9S20753C17D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20753C17 = {  "S20753C17", // class name
  bases_S20753C17, 31,
  &(vtc_S20753C17[0]), // expected_vtbl_contents
  &(vtt_S20753C17[0]), // expected_vtt_contents
  ABISELECT(720,420), // object size
  NSPAIRA(_ZTI9S20753C17),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20753C17),106, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20753C17),90, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names32,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20753C1  : virtual S20753C2 , virtual S20753C10 , S20753C15 , S20753C17 , S5266C26 {
  int s20753c1f0;
  ~S20753C1(); // tgen
  S20753C1(); // tgen
};
//SIG(1 S20753C1) C1{ VBC2{ VBC3{ m} VBC4{ VBC5{ VBC6{ vd m} BC7{ VBC6 VBC8{ VBC6 FD Fc Fs[4]} vd Fi} BC9{ m Fp} vd Fs FL Fp FL} BC9 BC6 BC8 vd Fi} BC8 vd Fs} VBC10{ VBC8 VBC11{ VBC6 BC8 VBC2 BC5 Fp} VBC9 BC12{ BC13{ m} VBC5 BC9 VBC3 vd FC7 Fs} vd Fi FC14{}} BC15{ VBC2 BC10 BC16{ vd m} vd Fi} BC17{ VBC6 VBC18{ VBC8 VBC7 VBC13 VBC2 BC5 vd FC4 Fi Fs} VBC9 VBC19{ VBC13 BC10 BC3 vd} BC13} BC13 Fi}


S20753C1 ::~S20753C1(){ note_dtor("S20753C1", this);} // tgen
S20753C1 ::S20753C1(){ note_ctor("S20753C1", this);} // tgen

static void Test_S20753C1()
{
  extern Class_Descriptor cd_S20753C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(60,138)];
    init_test(&cd_S20753C1, buf);
    S20753C1 *dp, &lv = *(dp=new (buf) S20753C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(944,548), "sizeof(S20753C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20753C1)");
    check_base_class_offset(lv, (S5266C29*)(S20753C2*), 0, "S20753C1");
    /*is_ambiguous_... S20753C1::S20753C10 */ AMB_check_base_class_offset(lv, (S5266C29*)(S20753C12*)(S20753C10*), 0, "S20753C1");
    check_base_class_offset(lv, (S5266C29*)(S20753C12*)(S20753C10*)(S20753C15*), 0, "S20753C1");
    check_base_class_offset(lv, (S5266C29*)(S20753C12*)(S20753C10*)(S20753C19*), 0, "S20753C1");
    /*is_ambiguous_... S20753C1::S20753C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C5*), ABISELECT(240,140), "S20753C1");
    /*is_ambiguous_... S20753C1::S20753C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C7*)(S20753C5*), ABISELECT(240,140), "S20753C1");
    /*is_ambiguous_... S20753C1::S20753C8 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C8*), ABISELECT(240,140), "S20753C1");
    /*is_ambiguous_... S20753C4::S20753C8 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C8*)(S20753C4*), ABISELECT(240,140), "S20753C1");
    /*is_ambiguous_... S20753C2::S20753C8 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C8*)(S20753C2*), ABISELECT(240,140), "S20753C1");
    /*is_ambiguous_... S20753C11::S19905C19 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C11*), ABISELECT(240,140), "S20753C1");
    /*is_ambiguous_... S20753C11::S20753C8 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C8*)(S20753C11*), ABISELECT(240,140), "S20753C1");
    /*is_ambiguous_... S20753C11::S20753C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C5*)(S20753C11*), ABISELECT(240,140), "S20753C1");
    /*is_ambiguous_... S20753C11::S20753C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C7*)(S20753C5*)(S20753C11*), ABISELECT(240,140), "S20753C1");
    /*is_ambiguous_... S20753C17::S19905C19 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C17*), ABISELECT(240,140), "S20753C1");
    /*is_ambiguous_... S20753C1::S20753C7 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C7*), ABISELECT(240,140), "S20753C1");
    /*is_ambiguous_... S20753C18::S20753C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C5*)(S20753C18*), ABISELECT(240,140), "S20753C1");
    /*is_ambiguous_... S20753C18::S20753C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C7*)(S20753C5*)(S20753C18*), ABISELECT(240,140), "S20753C1");
    /*is_ambiguous_... S20753C1::S20753C5 */ AMB_check_base_class_offset(lv, (S20753C8*)(S20753C7*)(S20753C5*), ABISELECT(304,176), "S20753C1");
    /*is_ambiguous_... S20753C1::S20753C10 */ AMB_check_base_class_offset(lv, (S20753C8*)(S20753C10*), ABISELECT(304,176), "S20753C1");
    /*is_ambiguous_... S20753C11::S20753C5 */ AMB_check_base_class_offset(lv, (S20753C8*)(S20753C7*)(S20753C5*)(S20753C11*), ABISELECT(304,176), "S20753C1");
    /*is_ambiguous_... S20753C10::S20753C8 */ AMB_check_base_class_offset(lv, (S20753C8*)(S20753C10*)(S20753C15*), ABISELECT(304,176), "S20753C1");
    /*is_ambiguous_... S20753C18::S20753C8 */ AMB_check_base_class_offset(lv, (S20753C8*)(S20753C18*), ABISELECT(304,176), "S20753C1");
    /*is_ambiguous_... S20753C1::S20753C7 */ AMB_check_base_class_offset(lv, (S20753C8*)(S20753C7*), ABISELECT(304,176), "S20753C1");
    /*is_ambiguous_... S20753C18::S20753C5 */ AMB_check_base_class_offset(lv, (S20753C8*)(S20753C7*)(S20753C5*)(S20753C18*), ABISELECT(304,176), "S20753C1");
    /*is_ambiguous_... S20753C10::S20753C8 */ AMB_check_base_class_offset(lv, (S20753C8*)(S20753C10*)(S20753C19*), ABISELECT(304,176), "S20753C1");
    /*is_ambiguous_... S20753C1::S20753C5 */ AMB_check_base_class_offset(lv, (S20753C7*)(S20753C5*), ABISELECT(240,140), "S20753C1");
    /*is_ambiguous_... S20753C1::S20753C5 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S20753C5*), ABISELECT(256,148), "S20753C1");
    check_base_class_offset(lv, (S20753C5*)(S20753C4*), ABISELECT(240,140), "S20753C1");
    /*is_ambiguous_... S20753C1::S20753C10 */ AMB_check_base_class_offset(lv, (S20753C5*)(S20753C12*)(S20753C10*), ABISELECT(240,140), "S20753C1");
    check_base_class_offset(lv, (S20753C5*)(S20753C12*)(S20753C10*)(S20753C15*), ABISELECT(240,140), "S20753C1");
    check_base_class_offset(lv, (S20753C5*)(S20753C12*)(S20753C10*)(S20753C19*), ABISELECT(240,140), "S20753C1");
    /*is_ambiguous_... S20753C4::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S20753C4*), ABISELECT(184,104), "S20753C1");
    /*is_ambiguous_... S20753C4::S19905C19 */ AMB_check_base_class_offset(lv, (S19905C19*)(S20753C4*), ABISELECT(176,100), "S20753C1");
    /*is_ambiguous_... S20753C4::S20753C8 */ AMB_check_base_class_offset(lv, (S20753C8*)(S20753C4*), ABISELECT(192,108), "S20753C1");
    check_base_class_offset(lv, (S20753C4*)(S20753C2*), ABISELECT(176,100), "S20753C1");
    /*is_ambiguous_... S20753C2::S20753C8 */ AMB_check_base_class_offset(lv, (S20753C8*)(S20753C2*), ABISELECT(128,72), "S20753C1");
    check_base_class_offset(lv, (S20753C2*), ABISELECT(128,72), "S20753C1");
    check_base_class_offset(lv, (S20753C2*)(S20753C11*), ABISELECT(128,72), "S20753C1");
    check_base_class_offset(lv, (S20753C2*)(S20753C15*), ABISELECT(128,72), "S20753C1");
    check_base_class_offset(lv, (S20753C2*)(S20753C18*), ABISELECT(128,72), "S20753C1");
    /*is_ambiguous_... S20753C11::S20753C8 */ AMB_check_base_class_offset(lv, (S20753C8*)(S20753C11*), ABISELECT(448,260), "S20753C1");
    /*is_ambiguous_... S20753C11::S20753C5 */ AMB_check_base_class_offset(lv, (S20753C7*)(S20753C5*)(S20753C11*), ABISELECT(496,288), "S20753C1");
    /*is_ambiguous_... S20753C11::S20753C5 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S20753C5*)(S20753C11*), ABISELECT(512,296), "S20753C1");
    /*is_ambiguous_... S20753C11::S20753C5 */ AMB_check_base_class_offset(lv, (S20753C5*)(S20753C11*), ABISELECT(496,288), "S20753C1");
    /*is_ambiguous_... S20753C1::S20753C10 */ AMB_check_base_class_offset(lv, (S20753C11*)(S20753C10*), ABISELECT(448,260), "S20753C1");
    check_base_class_offset(lv, (S20753C11*)(S20753C10*)(S20753C15*), ABISELECT(448,260), "S20753C1");
    check_base_class_offset(lv, (S20753C11*)(S20753C10*)(S20753C19*), ABISELECT(448,260), "S20753C1");
    /*is_ambiguous_... S20753C1::S20753C10 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S20753C10*), ABISELECT(560,328), "S20753C1");
    /*is_ambiguous_... S20753C10::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S20753C10*)(S20753C15*), ABISELECT(560,328), "S20753C1");
    /*is_ambiguous_... S20753C17::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S20753C17*), ABISELECT(560,328), "S20753C1");
    /*is_ambiguous_... S20753C10::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S20753C10*)(S20753C19*), ABISELECT(560,328), "S20753C1");
    /*is_ambiguous_... S20753C1::S20753C10 */ AMB_check_base_class_offset(lv, (S5266C26*)(S20753C12*)(S20753C10*), ABISELECT(352,204), "S20753C1");
    /*is_ambiguous_... S20753C1::S20753C10 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S20753C12*)(S20753C10*), ABISELECT(360,208), "S20753C1");
    /*is_ambiguous_... S20753C1::S20753C10 */ AMB_check_base_class_offset(lv, (S20753C12*)(S20753C10*), ABISELECT(352,204), "S20753C1");
    /*is_ambiguous_... S20753C1::S20753C10 */ AMB_check_base_class_offset(lv, (S20753C10*), ABISELECT(352,204), "S20753C1");
    check_base_class_offset(lv, (S5266C26*)(S20753C12*)(S20753C10*)(S20753C15*), 0, "S20753C1");
    /*is_ambiguous_... S20753C12::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S20753C12*)(S20753C10*)(S20753C15*), ABISELECT(8,4), "S20753C1");
    check_base_class_offset(lv, (S20753C12*)(S20753C10*)(S20753C15*), 0, "S20753C1");
    check_base_class_offset(lv, (S20753C10*)(S20753C15*), 0, "S20753C1");
    check_base_class_offset(lv, (S19905C5_nt*)(S20753C15*), ABISELECT(96,56), "S20753C1");
    check_base_class_offset(lv, (S20753C15*), 0, "S20753C1");
    /*is_ambiguous_... S20753C18::S20753C7 */ AMB_check_base_class_offset(lv, (S20753C7*)(S20753C18*), ABISELECT(824,480), "S20753C1");
    check_base_class_offset(lv, (S5266C26*)(S20753C18*), ABISELECT(836,488), "S20753C1");
    /*is_ambiguous_... S20753C19::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*)(S20753C19*), ABISELECT(836,488), "S20753C1");
    /*is_ambiguous_... S20753C18::S20753C5 */ AMB_check_base_class_offset(lv, (S20753C7*)(S20753C5*)(S20753C18*), ABISELECT(576,332), "S20753C1");
    /*is_ambiguous_... S20753C18::S20753C5 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S20753C5*)(S20753C18*), ABISELECT(592,340), "S20753C1");
    /*is_ambiguous_... S20753C18::S20753C5 */ AMB_check_base_class_offset(lv, (S20753C5*)(S20753C18*), ABISELECT(576,332), "S20753C1");
    check_base_class_offset(lv, (S20753C18*)(S20753C17*), ABISELECT(576,332), "S20753C1");
    check_base_class_offset(lv, (S5266C26*)(S20753C12*)(S20753C10*)(S20753C19*), ABISELECT(848,492), "S20753C1");
    /*is_ambiguous_... S20753C12::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S20753C12*)(S20753C10*)(S20753C19*), ABISELECT(856,496), "S20753C1");
    check_base_class_offset(lv, (S20753C12*)(S20753C10*)(S20753C19*), ABISELECT(848,492), "S20753C1");
    check_base_class_offset(lv, (S20753C10*)(S20753C19*), ABISELECT(848,492), "S20753C1");
    /*is_ambiguous_... S20753C19::S5266C29 */ AMB_check_base_class_offset(lv, (S5266C29*)(S20753C19*), ABISELECT(848,492), "S20753C1");
    check_base_class_offset(lv, (S20753C19*)(S20753C17*), ABISELECT(848,492), "S20753C1");
    /*is_ambiguous_... S20753C17::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*)(S20753C17*), ABISELECT(112,64), "S20753C1");
    check_base_class_offset(lv, (S20753C17*), ABISELECT(112,64), "S20753C1");
    /*is_ambiguous_... S20753C1::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*), ABISELECT(120,68), "S20753C1");
    check_field_offset(lv, s20753c1f0, ABISELECT(120,68), "S20753C1.s20753c1f0");
    test_class_info(&lv, &cd_S20753C1);
    dp->~S20753C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20753C1(Test_S20753C1, "S20753C1", ABISELECT(944,548));

#else // __cplusplus

extern void _ZN8S20753C1C1Ev();
extern void _ZN8S20753C1D1Ev();
Name_Map name_map_S20753C1[] = {
  NSPAIR(_ZN8S20753C1C1Ev),
  NSPAIR(_ZN8S20753C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S20753C8;
extern VTBL_ENTRY _ZTI8S20753C8[];
extern  VTBL_ENTRY _ZTV8S20753C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C8[];
extern Class_Descriptor cd_S20753C7;
extern VTBL_ENTRY _ZTI8S20753C7[];
extern  VTBL_ENTRY _ZTV8S20753C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C7[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S20753C5;
extern VTBL_ENTRY _ZTI8S20753C5[];
extern  VTBL_ENTRY _ZTV8S20753C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C5[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S20753C8;
extern VTBL_ENTRY _ZTI8S20753C8[];
extern  VTBL_ENTRY _ZTV8S20753C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C8[];
extern Class_Descriptor cd_S20753C4;
extern VTBL_ENTRY _ZTI8S20753C4[];
extern  VTBL_ENTRY _ZTV8S20753C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C4[];
extern Class_Descriptor cd_S20753C8;
extern VTBL_ENTRY _ZTI8S20753C8[];
extern  VTBL_ENTRY _ZTV8S20753C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C8[];
extern Class_Descriptor cd_S20753C2;
extern VTBL_ENTRY _ZTI8S20753C2[];
extern  VTBL_ENTRY _ZTV8S20753C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C2[];
extern Class_Descriptor cd_S20753C8;
extern VTBL_ENTRY _ZTI8S20753C8[];
extern  VTBL_ENTRY _ZTV8S20753C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C8[];
extern Class_Descriptor cd_S20753C7;
extern VTBL_ENTRY _ZTI8S20753C7[];
extern  VTBL_ENTRY _ZTV8S20753C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C7[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S20753C5;
extern VTBL_ENTRY _ZTI8S20753C5[];
extern  VTBL_ENTRY _ZTV8S20753C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C5[];
extern Class_Descriptor cd_S20753C11;
extern VTBL_ENTRY _ZTI9S20753C11[];
extern  VTBL_ENTRY _ZTV9S20753C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20753C11[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S20753C12;
extern VTBL_ENTRY _ZTI9S20753C12[];
extern  VTBL_ENTRY _ZTV9S20753C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20753C12[];
extern Class_Descriptor cd_S20753C10;
extern VTBL_ENTRY _ZTI9S20753C10[];
extern  VTBL_ENTRY _ZTV9S20753C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20753C10[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S20753C12;
extern VTBL_ENTRY _ZTI9S20753C12[];
extern  VTBL_ENTRY _ZTV9S20753C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20753C12[];
extern Class_Descriptor cd_S20753C10;
extern VTBL_ENTRY _ZTI9S20753C10[];
extern  VTBL_ENTRY _ZTV9S20753C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20753C10[];
extern Class_Descriptor cd_S19905C5_nt;
extern VTBL_ENTRY _ZTI11S19905C5_nt[];
extern  VTBL_ENTRY _ZTV11S19905C5_nt[];
extern Class_Descriptor cd_S20753C15;
extern VTBL_ENTRY _ZTI9S20753C15[];
extern  VTBL_ENTRY _ZTV9S20753C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20753C15[];
extern Class_Descriptor cd_S20753C7;
extern VTBL_ENTRY _ZTI8S20753C7[];
extern  VTBL_ENTRY _ZTV8S20753C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C7[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S20753C7;
extern VTBL_ENTRY _ZTI8S20753C7[];
extern  VTBL_ENTRY _ZTV8S20753C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C7[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S20753C5;
extern VTBL_ENTRY _ZTI8S20753C5[];
extern  VTBL_ENTRY _ZTV8S20753C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C5[];
extern Class_Descriptor cd_S20753C18;
extern VTBL_ENTRY _ZTI9S20753C18[];
extern  VTBL_ENTRY _ZTV9S20753C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20753C18[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S20753C12;
extern VTBL_ENTRY _ZTI9S20753C12[];
extern  VTBL_ENTRY _ZTV9S20753C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20753C12[];
extern Class_Descriptor cd_S20753C10;
extern VTBL_ENTRY _ZTI9S20753C10[];
extern  VTBL_ENTRY _ZTV9S20753C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20753C10[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S20753C19;
extern VTBL_ENTRY _ZTI9S20753C19[];
extern  VTBL_ENTRY _ZTV9S20753C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20753C19[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S20753C17;
extern VTBL_ENTRY _ZTI9S20753C17[];
extern  VTBL_ENTRY _ZTV9S20753C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20753C17[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
static Base_Class bases_S20753C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19905C19,    ABISELECT(240,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20753C8,    ABISELECT(304,176), //bcp->offset
    70, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20753C7,    ABISELECT(240,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(256,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20753C5,    ABISELECT(240,140), //bcp->offset
    63, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S17777C6_nt,    ABISELECT(184,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19905C19,    ABISELECT(176,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20753C8,    ABISELECT(192,108), //bcp->offset
    57, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20753C4,    ABISELECT(176,100), //bcp->offset
    49, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20753C8,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20753C2,    ABISELECT(128,72), //bcp->offset
    39, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20753C8,    ABISELECT(448,260), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20753C7,    ABISELECT(496,288), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(512,296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20753C5,    ABISELECT(496,288), //bcp->offset
    100, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20753C11,    ABISELECT(448,260), //bcp->offset
    89, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S17777C6_nt,    ABISELECT(560,328), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S5266C26,    ABISELECT(352,204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(360,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20753C12,    ABISELECT(352,204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20753C10,    ABISELECT(352,204), //bcp->offset
    76, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20753C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20753C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19905C5_nt,    ABISELECT(96,56), //bcp->offset
    18, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20753C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20753C7,    ABISELECT(824,480), //bcp->offset
    120, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    115, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S5266C26,    ABISELECT(836,488), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S20753C7,    ABISELECT(576,332), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    103, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(592,340), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S20753C5,    ABISELECT(576,332), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    102, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S20753C18,    ABISELECT(576,332), //bcp->offset
    107, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    101, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S5266C26,    ABISELECT(848,492), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(856,496), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S20753C12,    ABISELECT(848,492), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    120, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20753C10,    ABISELECT(848,492), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    119, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S5266C29,    ABISELECT(848,492), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20753C19,    ABISELECT(848,492), //bcp->offset
    127, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    118, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S5266C26,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S20753C17,    ABISELECT(112,64), //bcp->offset
    22, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C26,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20753C1[];
extern void ABISELECT(_ZTv0_n24_N8S20753C1D1Ev,_ZTv0_n12_N8S20753C1D1Ev)();
extern void _ZN8S20753C1D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C1D0Ev,_ZTv0_n12_N8S20753C1D0Ev)();
extern void _ZN8S20753C1D0Ev() __attribute__((weak));
extern void ABISELECT(_ZThn96_N8S20753C1D1Ev,_ZThn56_N8S20753C1D1Ev)();
extern void ABISELECT(_ZThn96_N8S20753C1D0Ev,_ZThn56_N8S20753C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C1D1Ev,_ZTv0_n12_N8S20753C1D1Ev)();
extern void ABISELECT(_ZThn112_N8S20753C1D1Ev,_ZThn64_N8S20753C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C1D0Ev,_ZTv0_n12_N8S20753C1D0Ev)();
extern void ABISELECT(_ZThn112_N8S20753C1D0Ev,_ZThn64_N8S20753C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C1D1Ev,_ZTv0_n12_N8S20753C1D1Ev)();
extern void ABISELECT(_ZThn128_N8S20753C1D1Ev,_ZThn72_N8S20753C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C1D0Ev,_ZTv0_n12_N8S20753C1D0Ev)();
extern void ABISELECT(_ZThn128_N8S20753C1D0Ev,_ZThn72_N8S20753C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20753C1D1Ev,_ZTv0_n24_N8S20753C1D1Ev)();
extern void ABISELECT(_ZThn176_N8S20753C1D1Ev,_ZThn100_N8S20753C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20753C1D0Ev,_ZTv0_n24_N8S20753C1D0Ev)();
extern void ABISELECT(_ZThn176_N8S20753C1D0Ev,_ZThn100_N8S20753C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C1D1Ev,_ZTv0_n12_N8S20753C1D1Ev)();
extern void ABISELECT(_ZThn192_N8S20753C1D1Ev,_ZThn108_N8S20753C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C1D0Ev,_ZTv0_n12_N8S20753C1D0Ev)();
extern void ABISELECT(_ZThn192_N8S20753C1D0Ev,_ZThn108_N8S20753C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C1D1Ev,_ZTv0_n12_N8S20753C1D1Ev)();
extern void ABISELECT(_ZThn240_N8S20753C1D1Ev,_ZThn140_N8S20753C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C1D0Ev,_ZTv0_n12_N8S20753C1D0Ev)();
extern void ABISELECT(_ZThn240_N8S20753C1D0Ev,_ZThn140_N8S20753C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C1D1Ev,_ZTv0_n12_N8S20753C1D1Ev)();
extern void ABISELECT(_ZThn304_N8S20753C1D1Ev,_ZThn176_N8S20753C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C1D0Ev,_ZTv0_n12_N8S20753C1D0Ev)();
extern void ABISELECT(_ZThn304_N8S20753C1D0Ev,_ZThn176_N8S20753C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C1D1Ev,_ZTv0_n12_N8S20753C1D1Ev)();
extern void ABISELECT(_ZThn352_N8S20753C1D1Ev,_ZThn204_N8S20753C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C1D0Ev,_ZTv0_n12_N8S20753C1D0Ev)();
extern void ABISELECT(_ZThn352_N8S20753C1D0Ev,_ZThn204_N8S20753C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C1D1Ev,_ZTv0_n12_N8S20753C1D1Ev)();
extern void ABISELECT(_ZThn448_N8S20753C1D1Ev,_ZThn260_N8S20753C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C1D0Ev,_ZTv0_n12_N8S20753C1D0Ev)();
extern void ABISELECT(_ZThn448_N8S20753C1D0Ev,_ZThn260_N8S20753C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C1D1Ev,_ZTv0_n12_N8S20753C1D1Ev)();
extern void ABISELECT(_ZThn496_N8S20753C1D1Ev,_ZThn288_N8S20753C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C1D0Ev,_ZTv0_n12_N8S20753C1D0Ev)();
extern void ABISELECT(_ZThn496_N8S20753C1D0Ev,_ZThn288_N8S20753C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C1D1Ev,_ZTv0_n12_N8S20753C1D1Ev)();
extern void ABISELECT(_ZThn576_N8S20753C1D1Ev,_ZThn332_N8S20753C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C1D0Ev,_ZTv0_n12_N8S20753C1D0Ev)();
extern void ABISELECT(_ZThn576_N8S20753C1D0Ev,_ZThn332_N8S20753C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C1D1Ev,_ZTv0_n12_N8S20753C1D1Ev)();
extern void ABISELECT(_ZThn824_N8S20753C1D1Ev,_ZThn480_N8S20753C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C1D0Ev,_ZTv0_n12_N8S20753C1D0Ev)();
extern void ABISELECT(_ZThn824_N8S20753C1D0Ev,_ZThn480_N8S20753C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C1D1Ev,_ZTv0_n12_N8S20753C1D1Ev)();
extern void ABISELECT(_ZThn848_N8S20753C1D1Ev,_ZThn492_N8S20753C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C1D0Ev,_ZTv0_n12_N8S20753C1D0Ev)();
extern void ABISELECT(_ZThn848_N8S20753C1D0Ev,_ZThn492_N8S20753C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20753C1[] = {
  ABISELECT(848,492),
  ABISELECT(836,488),
  ABISELECT(824,480),
  ABISELECT(576,332),
  ABISELECT(352,204),
  ABISELECT(560,328),
  ABISELECT(176,100),
  ABISELECT(128,72),
  ABISELECT(448,260),
  0,
  ABISELECT(304,176),
  ABISELECT(240,140),
  ABISELECT(240,140),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C1D1Ev,_ZTv0_n12_N8S20753C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C1D0Ev,_ZTv0_n12_N8S20753C1D0Ev),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S20753C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N8S20753C1D1Ev,_ZThn56_N8S20753C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N8S20753C1D0Ev,_ZThn56_N8S20753C1D0Ev),
  ABISELECT(336,196),
  ABISELECT(736,428),
  ABISELECT(448,264),
  ABISELECT(128,76),
  ABISELECT(64,36),
  ABISELECT(-112,-64),
  ABISELECT(16,8),
  ABISELECT(724,424),
  ABISELECT(712,416),
  ABISELECT(192,112),
  ABISELECT(464,268),
  ABISELECT(128,76),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI8S20753C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C1D1Ev,_ZTv0_n12_N8S20753C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C1D0Ev,_ZTv0_n12_N8S20753C1D0Ev),
  ABISELECT(176,104),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-128,-72),
  ABISELECT(112,68),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S20753C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C1D1Ev,_ZTv0_n12_N8S20753C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C1D0Ev,_ZTv0_n12_N8S20753C1D0Ev),
  ABISELECT(-176,-100),
  ABISELECT(128,76),
  ABISELECT(64,40),
  ABISELECT(64,40),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI8S20753C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20753C1D1Ev,_ZTv0_n24_N8S20753C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20753C1D0Ev,_ZTv0_n24_N8S20753C1D0Ev),
  ABISELECT(48,32),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI8S20753C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C1D1Ev,_ZTv0_n12_N8S20753C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C1D0Ev,_ZTv0_n12_N8S20753C1D0Ev),
  ABISELECT(64,36),
  0,
  ABISELECT(-240,-140),
  ABISELECT(-240,-140),
  (VTBL_ENTRY)&(_ZTI8S20753C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C1D1Ev,_ZTv0_n12_N8S20753C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C1D0Ev,_ZTv0_n12_N8S20753C1D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-304,-176),
  ABISELECT(-304,-176),
  (VTBL_ENTRY)&(_ZTI8S20753C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C1D1Ev,_ZTv0_n12_N8S20753C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C1D0Ev,_ZTv0_n12_N8S20753C1D0Ev),
  ABISELECT(208,124),
  ABISELECT(-176,-104),
  ABISELECT(-224,-132),
  ABISELECT(96,56),
  ABISELECT(-352,-204),
  ABISELECT(-48,-28),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-352,-204),
  ABISELECT(-352,-204),
  (VTBL_ENTRY)&(_ZTI8S20753C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C1D1Ev,_ZTv0_n12_N8S20753C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C1D0Ev,_ZTv0_n12_N8S20753C1D0Ev),
  ABISELECT(-144,-84),
  ABISELECT(-208,-120),
  ABISELECT(-272,-160),
  ABISELECT(-448,-260),
  ABISELECT(-320,-188),
  ABISELECT(-208,-120),
  ABISELECT(-448,-260),
  ABISELECT(-448,-260),
  (VTBL_ENTRY)&(_ZTI8S20753C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C1D1Ev,_ZTv0_n12_N8S20753C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C1D0Ev,_ZTv0_n12_N8S20753C1D0Ev),
  ABISELECT(-192,-112),
  ABISELECT(-256,-148),
  ABISELECT(-496,-288),
  ABISELECT(-496,-288),
  (VTBL_ENTRY)&(_ZTI8S20753C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C1D1Ev,_ZTv0_n12_N8S20753C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C1D0Ev,_ZTv0_n12_N8S20753C1D0Ev),
  ABISELECT(-336,-192),
  ABISELECT(-400,-232),
  ABISELECT(-576,-332),
  ABISELECT(-448,-260),
  ABISELECT(260,156),
  ABISELECT(248,148),
  ABISELECT(-272,-156),
  ABISELECT(-336,-192),
  ABISELECT(-576,-332),
  ABISELECT(-576,-332),
  (VTBL_ENTRY)&(_ZTI8S20753C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C1D1Ev,_ZTv0_n12_N8S20753C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C1D0Ev,_ZTv0_n12_N8S20753C1D0Ev),
  ABISELECT(-520,-304),
  ABISELECT(-584,-340),
  ABISELECT(-824,-480),
  ABISELECT(-824,-480),
  (VTBL_ENTRY)&(_ZTI8S20753C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C1D1Ev,_ZTv0_n12_N8S20753C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C1D0Ev,_ZTv0_n12_N8S20753C1D0Ev),
  ABISELECT(-12,-4),
  ABISELECT(-288,-164),
  ABISELECT(-672,-392),
  ABISELECT(-720,-420),
  ABISELECT(-400,-232),
  ABISELECT(-848,-492),
  ABISELECT(-544,-316),
  ABISELECT(-608,-352),
  ABISELECT(-608,-352),
  ABISELECT(-848,-492),
  ABISELECT(-848,-492),
  (VTBL_ENTRY)&(_ZTI8S20753C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C1D1Ev,_ZTv0_n12_N8S20753C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C1D0Ev,_ZTv0_n12_N8S20753C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S20753C1[];
extern void ABISELECT(_ZTv0_n24_N9S20753C15D1Ev,_ZTv0_n12_N9S20753C15D1Ev)();
extern void _ZN9S20753C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C15D0Ev,_ZTv0_n12_N9S20753C15D0Ev)();
extern void _ZN9S20753C15D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20753C15__8S20753C1[] = {
  ABISELECT(560,328),
  ABISELECT(176,100),
  ABISELECT(128,72),
  ABISELECT(448,260),
  0,
  ABISELECT(304,176),
  ABISELECT(240,140),
  ABISELECT(240,140),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20753C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C15D1Ev,_ZTv0_n12_N9S20753C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C15D0Ev,_ZTv0_n12_N9S20753C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void _ZN9S20753C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
extern void _ZN9S20753C10D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20753C109S20753C15__A1__8S20753C1[] = {
  ABISELECT(560,328),
  ABISELECT(176,100),
  ABISELECT(128,72),
  ABISELECT(448,260),
  0,
  ABISELECT(304,176),
  ABISELECT(240,140),
  ABISELECT(240,140),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev)();
extern void _ZN9S20753C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev)();
extern void _ZN9S20753C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20753C129S20753C109S20753C15__A1__8S20753C1[] = {
  0,
  ABISELECT(304,176),
  ABISELECT(240,140),
  ABISELECT(240,140),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20753C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev)();
extern void ABISELECT(_ZThn240_N9S20753C12D1Ev,_ZThn140_N9S20753C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev)();
extern void ABISELECT(_ZThn240_N9S20753C12D0Ev,_ZThn140_N9S20753C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C5__9S20753C129S20753C109S20753C15__A1__8S20753C1[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(-240,-140),
  ABISELECT(-240,-140),
  (VTBL_ENTRY)&(_ZTI9S20753C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev)();
extern void ABISELECT(_ZThn304_N9S20753C12D1Ev,_ZThn176_N9S20753C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev)();
extern void ABISELECT(_ZThn304_N9S20753C12D0Ev,_ZThn176_N9S20753C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__9S20753C129S20753C109S20753C15__A1__8S20753C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-304,-176),
  ABISELECT(-304,-176),
  (VTBL_ENTRY)&(_ZTI9S20753C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void ABISELECT(_ZThn304_N9S20753C10D1Ev,_ZThn176_N9S20753C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
extern void ABISELECT(_ZThn304_N9S20753C10D0Ev,_ZThn176_N9S20753C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__9S20753C109S20753C15__A1__8S20753C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-304,-176),
  ABISELECT(-304,-176),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void ABISELECT(_ZThn240_N9S20753C10D1Ev,_ZThn140_N9S20753C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
extern void ABISELECT(_ZThn240_N9S20753C10D0Ev,_ZThn140_N9S20753C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C5__9S20753C109S20753C15__A1__8S20753C1[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(-240,-140),
  ABISELECT(-240,-140),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void ABISELECT(_ZThn448_N9S20753C10D1Ev,_ZThn260_N9S20753C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
extern void ABISELECT(_ZThn448_N9S20753C10D0Ev,_ZThn260_N9S20753C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20753C11__9S20753C109S20753C15__A1__8S20753C1[] = {
  ABISELECT(-144,-84),
  ABISELECT(-208,-120),
  ABISELECT(-272,-160),
  ABISELECT(-448,-260),
  ABISELECT(-320,-188),
  ABISELECT(-208,-120),
  ABISELECT(-448,-260),
  ABISELECT(-448,-260),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void ABISELECT(_ZThn128_N9S20753C10D1Ev,_ZThn72_N9S20753C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
extern void ABISELECT(_ZThn128_N9S20753C10D0Ev,_ZThn72_N9S20753C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C2__9S20753C109S20753C15__A1__8S20753C1[] = {
  ABISELECT(176,104),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-128,-72),
  ABISELECT(112,68),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20753C10D1Ev,_ZTv0_n24_N9S20753C10D1Ev)();
extern void ABISELECT(_ZThn176_N9S20753C10D1Ev,_ZThn100_N9S20753C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20753C10D0Ev,_ZTv0_n24_N9S20753C10D0Ev)();
extern void ABISELECT(_ZThn176_N9S20753C10D0Ev,_ZThn100_N9S20753C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C4__9S20753C109S20753C15__A1__8S20753C1[] = {
  ABISELECT(-176,-100),
  ABISELECT(128,76),
  ABISELECT(64,40),
  ABISELECT(64,40),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20753C10D1Ev,_ZTv0_n24_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20753C10D0Ev,_ZTv0_n24_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void ABISELECT(_ZThn192_N9S20753C10D1Ev,_ZThn108_N9S20753C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
extern void ABISELECT(_ZThn192_N9S20753C10D0Ev,_ZThn108_N9S20753C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C88S20753C4__A2__9S20753C109S20753C15__A1__8S20753C1[] = {
  ABISELECT(48,32),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void ABISELECT(_ZThn496_N9S20753C10D1Ev,_ZThn288_N9S20753C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
extern void ABISELECT(_ZThn496_N9S20753C10D0Ev,_ZThn288_N9S20753C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C59S20753C11__A1__9S20753C109S20753C15__A1__8S20753C1[] = {
  ABISELECT(-192,-112),
  ABISELECT(-256,-148),
  ABISELECT(-496,-288),
  ABISELECT(-496,-288),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C15D1Ev,_ZTv0_n12_N9S20753C15D1Ev)();
extern void ABISELECT(_ZThn128_N9S20753C15D1Ev,_ZThn72_N9S20753C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C15D0Ev,_ZTv0_n12_N9S20753C15D0Ev)();
extern void ABISELECT(_ZThn128_N9S20753C15D0Ev,_ZThn72_N9S20753C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C2__9S20753C15__8S20753C1[] = {
  ABISELECT(176,104),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-128,-72),
  ABISELECT(112,68),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI9S20753C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C15D1Ev,_ZTv0_n12_N9S20753C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C15D0Ev,_ZTv0_n12_N9S20753C15D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20753C15D1Ev,_ZTv0_n24_N9S20753C15D1Ev)();
extern void ABISELECT(_ZThn176_N9S20753C15D1Ev,_ZThn100_N9S20753C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20753C15D0Ev,_ZTv0_n24_N9S20753C15D0Ev)();
extern void ABISELECT(_ZThn176_N9S20753C15D0Ev,_ZThn100_N9S20753C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C4__9S20753C15__8S20753C1[] = {
  ABISELECT(-176,-100),
  ABISELECT(128,76),
  ABISELECT(64,40),
  ABISELECT(64,40),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI9S20753C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20753C15D1Ev,_ZTv0_n24_N9S20753C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20753C15D0Ev,_ZTv0_n24_N9S20753C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C15D1Ev,_ZTv0_n12_N9S20753C15D1Ev)();
extern void ABISELECT(_ZThn240_N9S20753C15D1Ev,_ZThn140_N9S20753C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C15D0Ev,_ZTv0_n12_N9S20753C15D0Ev)();
extern void ABISELECT(_ZThn240_N9S20753C15D0Ev,_ZThn140_N9S20753C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C5__9S20753C15__8S20753C1[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(-240,-140),
  ABISELECT(-240,-140),
  (VTBL_ENTRY)&(_ZTI9S20753C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C15D1Ev,_ZTv0_n12_N9S20753C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C15D0Ev,_ZTv0_n12_N9S20753C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C15D1Ev,_ZTv0_n12_N9S20753C15D1Ev)();
extern void ABISELECT(_ZThn304_N9S20753C15D1Ev,_ZThn176_N9S20753C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C15D0Ev,_ZTv0_n12_N9S20753C15D0Ev)();
extern void ABISELECT(_ZThn304_N9S20753C15D0Ev,_ZThn176_N9S20753C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__9S20753C15__8S20753C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-304,-176),
  ABISELECT(-304,-176),
  (VTBL_ENTRY)&(_ZTI9S20753C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C15D1Ev,_ZTv0_n12_N9S20753C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C15D0Ev,_ZTv0_n12_N9S20753C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C15D1Ev,_ZTv0_n12_N9S20753C15D1Ev)();
extern void ABISELECT(_ZThn192_N9S20753C15D1Ev,_ZThn108_N9S20753C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C15D0Ev,_ZTv0_n12_N9S20753C15D0Ev)();
extern void ABISELECT(_ZThn192_N9S20753C15D0Ev,_ZThn108_N9S20753C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C88S20753C4__A1__9S20753C15__8S20753C1[] = {
  ABISELECT(48,32),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI9S20753C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C15D1Ev,_ZTv0_n12_N9S20753C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C15D0Ev,_ZTv0_n12_N9S20753C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C15D1Ev,_ZTv0_n12_N9S20753C15D1Ev)();
extern void ABISELECT(_ZThn448_N9S20753C15D1Ev,_ZThn260_N9S20753C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C15D0Ev,_ZTv0_n12_N9S20753C15D0Ev)();
extern void ABISELECT(_ZThn448_N9S20753C15D0Ev,_ZThn260_N9S20753C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20753C11__9S20753C15__8S20753C1[] = {
  ABISELECT(-144,-84),
  ABISELECT(-208,-120),
  ABISELECT(-272,-160),
  ABISELECT(-448,-260),
  ABISELECT(-320,-188),
  ABISELECT(-208,-120),
  ABISELECT(-448,-260),
  ABISELECT(-448,-260),
  (VTBL_ENTRY)&(_ZTI9S20753C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C15D1Ev,_ZTv0_n12_N9S20753C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C15D0Ev,_ZTv0_n12_N9S20753C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C15D1Ev,_ZTv0_n12_N9S20753C15D1Ev)();
extern void ABISELECT(_ZThn496_N9S20753C15D1Ev,_ZThn288_N9S20753C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C15D0Ev,_ZTv0_n12_N9S20753C15D0Ev)();
extern void ABISELECT(_ZThn496_N9S20753C15D0Ev,_ZThn288_N9S20753C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C59S20753C11__A1__9S20753C15__8S20753C1[] = {
  ABISELECT(-192,-112),
  ABISELECT(-256,-148),
  ABISELECT(-496,-288),
  ABISELECT(-496,-288),
  (VTBL_ENTRY)&(_ZTI9S20753C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C15D1Ev,_ZTv0_n12_N9S20753C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C15D0Ev,_ZTv0_n12_N9S20753C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C17D1Ev,_ZTv0_n12_N9S20753C17D1Ev)();
extern void _ZN9S20753C17D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C17D0Ev,_ZTv0_n12_N9S20753C17D0Ev)();
extern void _ZN9S20753C17D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20753C17__8S20753C1[] = {
  ABISELECT(336,196),
  ABISELECT(736,428),
  ABISELECT(448,264),
  ABISELECT(128,76),
  ABISELECT(64,36),
  ABISELECT(-112,-64),
  ABISELECT(16,8),
  ABISELECT(724,424),
  ABISELECT(712,416),
  ABISELECT(192,112),
  ABISELECT(464,268),
  ABISELECT(128,76),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20753C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C17D1Ev,_ZTv0_n12_N9S20753C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C17D0Ev,_ZTv0_n12_N9S20753C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C17D1Ev,_ZTv0_n12_N9S20753C17D1Ev)();
extern void ABISELECT(_ZThn128_N9S20753C17D1Ev,_ZThn76_N9S20753C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C17D0Ev,_ZTv0_n12_N9S20753C17D0Ev)();
extern void ABISELECT(_ZThn128_N9S20753C17D0Ev,_ZThn76_N9S20753C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C5__9S20753C17__8S20753C1[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI9S20753C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C17D1Ev,_ZTv0_n12_N9S20753C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C17D0Ev,_ZTv0_n12_N9S20753C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C17D1Ev,_ZTv0_n12_N9S20753C17D1Ev)();
extern void ABISELECT(_ZThn464_N9S20753C17D1Ev,_ZThn268_N9S20753C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C17D0Ev,_ZTv0_n12_N9S20753C17D0Ev)();
extern void ABISELECT(_ZThn464_N9S20753C17D0Ev,_ZThn268_N9S20753C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20753C18__9S20753C17__8S20753C1[] = {
  ABISELECT(-336,-192),
  ABISELECT(-400,-232),
  ABISELECT(-576,-332),
  ABISELECT(-448,-260),
  ABISELECT(260,156),
  ABISELECT(248,148),
  ABISELECT(-272,-156),
  ABISELECT(-336,-192),
  ABISELECT(-464,-268),
  ABISELECT(-464,-268),
  (VTBL_ENTRY)&(_ZTI9S20753C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C17D1Ev,_ZTv0_n12_N9S20753C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C17D0Ev,_ZTv0_n12_N9S20753C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C17D1Ev,_ZTv0_n12_N9S20753C17D1Ev)();
extern void ABISELECT(_ZThn192_N9S20753C17D1Ev,_ZThn112_N9S20753C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C17D0Ev,_ZTv0_n12_N9S20753C17D0Ev)();
extern void ABISELECT(_ZThn192_N9S20753C17D0Ev,_ZThn112_N9S20753C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__9S20753C17__8S20753C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI9S20753C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C17D1Ev,_ZTv0_n12_N9S20753C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C17D0Ev,_ZTv0_n12_N9S20753C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C17D1Ev,_ZTv0_n12_N9S20753C17D1Ev)();
extern void ABISELECT(_ZThn712_N9S20753C17D1Ev,_ZThn416_N9S20753C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C17D0Ev,_ZTv0_n12_N9S20753C17D0Ev)();
extern void ABISELECT(_ZThn712_N9S20753C17D0Ev,_ZThn416_N9S20753C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C7__9S20753C17__8S20753C1[] = {
  ABISELECT(-520,-304),
  ABISELECT(-584,-340),
  ABISELECT(-712,-416),
  ABISELECT(-712,-416),
  (VTBL_ENTRY)&(_ZTI9S20753C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C17D1Ev,_ZTv0_n12_N9S20753C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C17D0Ev,_ZTv0_n12_N9S20753C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C17D1Ev,_ZTv0_n12_N9S20753C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20753C17D1Ev,_ZThn8_N9S20753C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C17D0Ev,_ZTv0_n12_N9S20753C17D0Ev)();
extern void ABISELECT(_ZThn16_N9S20753C17D0Ev,_ZThn8_N9S20753C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C2__9S20753C17__8S20753C1[] = {
  ABISELECT(176,104),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-128,-72),
  ABISELECT(112,68),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20753C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C17D1Ev,_ZTv0_n12_N9S20753C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C17D0Ev,_ZTv0_n12_N9S20753C17D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20753C17D1Ev,_ZTv0_n24_N9S20753C17D1Ev)();
extern void ABISELECT(_ZThn64_N9S20753C17D1Ev,_ZThn36_N9S20753C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20753C17D0Ev,_ZTv0_n24_N9S20753C17D0Ev)();
extern void ABISELECT(_ZThn64_N9S20753C17D0Ev,_ZThn36_N9S20753C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C4__9S20753C17__8S20753C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(128,76),
  ABISELECT(64,40),
  ABISELECT(64,40),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S20753C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20753C17D1Ev,_ZTv0_n24_N9S20753C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20753C17D0Ev,_ZTv0_n24_N9S20753C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C17D1Ev,_ZTv0_n12_N9S20753C17D1Ev)();
extern void ABISELECT(_ZThn80_N9S20753C17D1Ev,_ZThn44_N9S20753C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C17D0Ev,_ZTv0_n12_N9S20753C17D0Ev)();
extern void ABISELECT(_ZThn80_N9S20753C17D0Ev,_ZThn44_N9S20753C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C88S20753C4__A1__9S20753C17__8S20753C1[] = {
  ABISELECT(48,32),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20753C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C17D1Ev,_ZTv0_n12_N9S20753C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C17D0Ev,_ZTv0_n12_N9S20753C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C17D1Ev,_ZTv0_n12_N9S20753C17D1Ev)();
extern void ABISELECT(_ZThn736_N9S20753C17D1Ev,_ZThn428_N9S20753C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C17D0Ev,_ZTv0_n12_N9S20753C17D0Ev)();
extern void ABISELECT(_ZThn736_N9S20753C17D0Ev,_ZThn428_N9S20753C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20753C19__9S20753C17__8S20753C1[] = {
  ABISELECT(-12,-4),
  ABISELECT(-288,-164),
  ABISELECT(-672,-392),
  ABISELECT(-720,-420),
  ABISELECT(-400,-232),
  ABISELECT(-848,-492),
  ABISELECT(-544,-316),
  ABISELECT(-608,-352),
  ABISELECT(-608,-352),
  ABISELECT(-736,-428),
  ABISELECT(-736,-428),
  (VTBL_ENTRY)&(_ZTI9S20753C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C17D1Ev,_ZTv0_n12_N9S20753C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C17D0Ev,_ZTv0_n12_N9S20753C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C17D1Ev,_ZTv0_n12_N9S20753C17D1Ev)();
extern void ABISELECT(_ZThn336_N9S20753C17D1Ev,_ZThn196_N9S20753C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C17D0Ev,_ZTv0_n12_N9S20753C17D0Ev)();
extern void ABISELECT(_ZThn336_N9S20753C17D0Ev,_ZThn196_N9S20753C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20753C11__9S20753C17__8S20753C1[] = {
  ABISELECT(-144,-84),
  ABISELECT(-208,-120),
  ABISELECT(-272,-160),
  ABISELECT(-448,-260),
  ABISELECT(-320,-188),
  ABISELECT(-208,-120),
  ABISELECT(-336,-196),
  ABISELECT(-336,-196),
  (VTBL_ENTRY)&(_ZTI9S20753C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C17D1Ev,_ZTv0_n12_N9S20753C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C17D0Ev,_ZTv0_n12_N9S20753C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C17D1Ev,_ZTv0_n12_N9S20753C17D1Ev)();
extern void ABISELECT(_ZThn384_N9S20753C17D1Ev,_ZThn224_N9S20753C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C17D0Ev,_ZTv0_n12_N9S20753C17D0Ev)();
extern void ABISELECT(_ZThn384_N9S20753C17D0Ev,_ZThn224_N9S20753C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C59S20753C11__A2__9S20753C17__8S20753C1[] = {
  ABISELECT(-192,-112),
  ABISELECT(-256,-148),
  ABISELECT(-384,-224),
  ABISELECT(-384,-224),
  (VTBL_ENTRY)&(_ZTI9S20753C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C17D1Ev,_ZTv0_n12_N9S20753C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C17D0Ev,_ZTv0_n12_N9S20753C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev)();
extern void _ZN8S20753C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev)();
extern void _ZN8S20753C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C2__8S20753C1[] = {
  ABISELECT(176,104),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-128,-72),
  ABISELECT(112,68),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void _ZN8S20753C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
extern void _ZN8S20753C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C88S20753C2__A2__8S20753C1[] = {
  ABISELECT(112,68),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void ABISELECT(_ZThn112_N8S20753C8D1Ev,_ZThn68_N8S20753C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
extern void ABISELECT(_ZThn112_N8S20753C8D0Ev,_ZThn68_N8S20753C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C88S20753C2__A2__8S20753C1[] = {
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S20753C2D1Ev,_ZTv0_n24_N8S20753C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S20753C2D1Ev,_ZThn28_N8S20753C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20753C2D0Ev,_ZTv0_n24_N8S20753C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S20753C2D0Ev,_ZThn28_N8S20753C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C4__8S20753C2__8S20753C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(128,76),
  ABISELECT(64,40),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20753C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20753C2D1Ev,_ZTv0_n24_N8S20753C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20753C2D0Ev,_ZTv0_n24_N8S20753C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev)();
extern void ABISELECT(_ZThn112_N8S20753C2D1Ev,_ZThn68_N8S20753C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev)();
extern void ABISELECT(_ZThn112_N8S20753C2D0Ev,_ZThn68_N8S20753C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C5__8S20753C2__8S20753C1[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S20753C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev)();
extern void ABISELECT(_ZThn176_N8S20753C2D1Ev,_ZThn104_N8S20753C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev)();
extern void ABISELECT(_ZThn176_N8S20753C2D0Ev,_ZThn104_N8S20753C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C2__8S20753C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI8S20753C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S20753C2D1Ev,_ZThn36_N8S20753C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev)();
extern void ABISELECT(_ZThn64_N8S20753C2D0Ev,_ZThn36_N8S20753C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C88S20753C4__A1__8S20753C2__8S20753C1[] = {
  ABISELECT(48,32),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S20753C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev),
};
extern void _ZN8S20753C4D1Ev();
extern void _ZN8S20753C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20753C4__8S20753C1[] = {
  ABISELECT(128,76),
  ABISELECT(64,40),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C4[0]),
  (VTBL_ENTRY)&_ZN8S20753C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20753C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void _ZN8S20753C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
extern void _ZN8S20753C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C88S20753C4__A1__8S20753C1[] = {
  ABISELECT(48,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void ABISELECT(_ZThn48_N8S20753C8D1Ev,_ZThn32_N8S20753C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
extern void ABISELECT(_ZThn48_N8S20753C8D0Ev,_ZThn32_N8S20753C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C88S20753C4__A1__8S20753C1[] = {
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev)();
extern void ABISELECT(_ZThn64_N8S20753C4D1Ev,_ZThn40_N8S20753C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev)();
extern void ABISELECT(_ZThn64_N8S20753C4D0Ev,_ZThn40_N8S20753C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C5__8S20753C4__8S20753C1[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S20753C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev)();
extern void ABISELECT(_ZThn128_N8S20753C4D1Ev,_ZThn76_N8S20753C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev)();
extern void ABISELECT(_ZThn128_N8S20753C4D0Ev,_ZThn76_N8S20753C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C4__8S20753C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S20753C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S20753C4D1Ev,_ZThn8_N8S20753C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev)();
extern void ABISELECT(_ZThn16_N8S20753C4D0Ev,_ZThn8_N8S20753C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__A__8S20753C4__8S20753C1[] = {
  ABISELECT(48,32),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20753C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev)();
extern void _ZN8S20753C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev)();
extern void _ZN8S20753C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C5__8S20753C1[] = {
  ABISELECT(64,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void _ZN8S20753C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
extern void _ZN8S20753C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C78S20753C5__8S20753C1[] = {
  ABISELECT(64,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void ABISELECT(_ZThn64_N8S20753C7D1Ev,_ZThn36_N8S20753C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
extern void ABISELECT(_ZThn64_N8S20753C7D0Ev,_ZThn36_N8S20753C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C78S20753C5__8S20753C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev)();
extern void ABISELECT(_ZThn64_N8S20753C5D1Ev,_ZThn36_N8S20753C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev)();
extern void ABISELECT(_ZThn64_N8S20753C5D0Ev,_ZThn36_N8S20753C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C5__8S20753C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void _ZN8S20753C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
extern void _ZN8S20753C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C1[] = {
  ABISELECT(-64,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C8__8S20753C1[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void _ZN9S20753C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
extern void _ZN9S20753C10D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20753C10__8S20753C1[] = {
  ABISELECT(208,124),
  ABISELECT(-176,-104),
  ABISELECT(-224,-132),
  ABISELECT(96,56),
  ABISELECT(-352,-204),
  ABISELECT(-48,-28),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev)();
extern void _ZN9S20753C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev)();
extern void _ZN9S20753C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20753C129S20753C10__8S20753C1[] = {
  ABISELECT(-352,-204),
  ABISELECT(-48,-28),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20753C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C5__9S20753C129S20753C10__8S20753C1[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(112,64),
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI9S20753C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C8__9S20753C129S20753C10__8S20753C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S20753C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C8__9S20753C10__8S20753C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C5__9S20753C10__8S20753C1[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(112,64),
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void ABISELECT(_ZThn96_N9S20753C10D1Ev,_ZThn56_N9S20753C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
extern void ABISELECT(_ZThn96_N9S20753C10D0Ev,_ZThn56_N9S20753C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20753C11__9S20753C10__8S20753C1[] = {
  ABISELECT(-144,-84),
  ABISELECT(-208,-120),
  ABISELECT(-272,-160),
  ABISELECT(-448,-260),
  ABISELECT(-320,-188),
  ABISELECT(-208,-120),
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C2__9S20753C10__8S20753C1[] = {
  ABISELECT(176,104),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-128,-72),
  ABISELECT(112,68),
  ABISELECT(224,132),
  ABISELECT(224,132),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20753C10D1Ev,_ZTv0_n24_N9S20753C10D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20753C10D0Ev,_ZTv0_n24_N9S20753C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C4__9S20753C10__8S20753C1[] = {
  ABISELECT(176,104),
  ABISELECT(128,76),
  ABISELECT(64,40),
  ABISELECT(64,40),
  ABISELECT(176,104),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20753C10D1Ev,_ZTv0_n24_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20753C10D0Ev,_ZTv0_n24_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C88S20753C4__A2__9S20753C10__8S20753C1[] = {
  ABISELECT(48,32),
  ABISELECT(160,96),
  ABISELECT(160,96),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void ABISELECT(_ZThn144_N9S20753C10D1Ev,_ZThn84_N9S20753C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
extern void ABISELECT(_ZThn144_N9S20753C10D0Ev,_ZThn84_N9S20753C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C59S20753C11__A1__9S20753C10__8S20753C1[] = {
  ABISELECT(-192,-112),
  ABISELECT(-256,-148),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev)();
extern void _ZN9S20753C11D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev)();
extern void _ZN9S20753C11D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20753C11__8S20753C1[] = {
  ABISELECT(-144,-84),
  ABISELECT(-208,-120),
  ABISELECT(-272,-160),
  ABISELECT(-448,-260),
  ABISELECT(-320,-188),
  ABISELECT(-208,-120),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20753C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void _ZN8S20753C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
extern void _ZN8S20753C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C89S20753C11__A3__8S20753C1[] = {
  ABISELECT(-208,-120),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C89S20753C11__A3__8S20753C1[] = {
  ABISELECT(208,120),
  ABISELECT(208,120),
  (VTBL_ENTRY)&(_ZTI8S20753C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev)();
extern void _ZN8S20753C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev)();
extern void _ZN8S20753C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C59S20753C11__A1__8S20753C1[] = {
  ABISELECT(-192,-112),
  ABISELECT(-256,-148),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void _ZN8S20753C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
extern void _ZN8S20753C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C78S20753C59S20753C11__A1__8S20753C1[] = {
  ABISELECT(-192,-112),
  ABISELECT(-256,-148),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C78S20753C59S20753C11__A1__8S20753C1[] = {
  ABISELECT(256,148),
  ABISELECT(256,148),
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C78S20753C59S20753C11__A1__8S20753C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(192,112),
  ABISELECT(192,112),
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C59S20753C11__A1__8S20753C1[] = {
  ABISELECT(256,148),
  ABISELECT(256,148),
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C59S20753C11__A1__8S20753C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(192,112),
  ABISELECT(192,112),
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C5__9S20753C11__8S20753C1[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(208,120),
  ABISELECT(208,120),
  (VTBL_ENTRY)&(_ZTI9S20753C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C2__9S20753C11__8S20753C1[] = {
  ABISELECT(176,104),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-128,-72),
  ABISELECT(112,68),
  ABISELECT(320,188),
  ABISELECT(320,188),
  (VTBL_ENTRY)&(_ZTI9S20753C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20753C11D1Ev,_ZTv0_n24_N9S20753C11D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20753C11D0Ev,_ZTv0_n24_N9S20753C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C4__9S20753C11__8S20753C1[] = {
  ABISELECT(272,160),
  ABISELECT(128,76),
  ABISELECT(64,40),
  ABISELECT(64,40),
  ABISELECT(272,160),
  (VTBL_ENTRY)&(_ZTI9S20753C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20753C11D1Ev,_ZTv0_n24_N9S20753C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20753C11D0Ev,_ZTv0_n24_N9S20753C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C8__A1__9S20753C11__8S20753C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(144,84),
  ABISELECT(144,84),
  (VTBL_ENTRY)&(_ZTI9S20753C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C88S20753C4__A2__9S20753C11__8S20753C1[] = {
  ABISELECT(48,32),
  ABISELECT(256,152),
  ABISELECT(256,152),
  (VTBL_ENTRY)&(_ZTI9S20753C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev)();
extern void ABISELECT(_ZThn48_N9S20753C11D1Ev,_ZThn28_N9S20753C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev)();
extern void ABISELECT(_ZThn48_N9S20753C11D0Ev,_ZThn28_N9S20753C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C5__A__9S20753C11__8S20753C1[] = {
  ABISELECT(-192,-112),
  ABISELECT(-256,-148),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S20753C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C18D1Ev,_ZTv0_n12_N9S20753C18D1Ev)();
extern void _ZN9S20753C18D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C18D0Ev,_ZTv0_n12_N9S20753C18D0Ev)();
extern void _ZN9S20753C18D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20753C18__8S20753C1[] = {
  ABISELECT(-336,-192),
  ABISELECT(-400,-232),
  ABISELECT(-576,-332),
  ABISELECT(-448,-260),
  ABISELECT(260,156),
  ABISELECT(248,148),
  ABISELECT(-272,-156),
  ABISELECT(-336,-192),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20753C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C18D1Ev,_ZTv0_n12_N9S20753C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C18D0Ev,_ZTv0_n12_N9S20753C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev)();
extern void _ZN8S20753C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev)();
extern void _ZN8S20753C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C59S20753C18__A2__8S20753C1[] = {
  ABISELECT(-272,-156),
  ABISELECT(-336,-192),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void _ZN8S20753C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
extern void _ZN8S20753C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C78S20753C59S20753C18__A3__8S20753C1[] = {
  ABISELECT(-272,-156),
  ABISELECT(-336,-192),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C78S20753C59S20753C18__A3__8S20753C1[] = {
  ABISELECT(336,192),
  ABISELECT(336,192),
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C78S20753C59S20753C18__A3__8S20753C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(272,156),
  ABISELECT(272,156),
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C59S20753C18__A2__8S20753C1[] = {
  ABISELECT(336,192),
  ABISELECT(336,192),
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C59S20753C18__A2__8S20753C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(272,156),
  ABISELECT(272,156),
  (VTBL_ENTRY)&(_ZTI8S20753C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C18D1Ev,_ZTv0_n12_N9S20753C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C18D0Ev,_ZTv0_n12_N9S20753C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C8__9S20753C18__8S20753C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(272,156),
  ABISELECT(272,156),
  (VTBL_ENTRY)&(_ZTI9S20753C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C18D1Ev,_ZTv0_n12_N9S20753C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C18D0Ev,_ZTv0_n12_N9S20753C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C18D1Ev,_ZTv0_n12_N9S20753C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C18D0Ev,_ZTv0_n12_N9S20753C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C5__9S20753C18__8S20753C1[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(336,192),
  ABISELECT(336,192),
  (VTBL_ENTRY)&(_ZTI9S20753C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C18D1Ev,_ZTv0_n12_N9S20753C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C18D0Ev,_ZTv0_n12_N9S20753C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C18D1Ev,_ZTv0_n12_N9S20753C18D1Ev)();
extern void ABISELECT(_ZThn248_N9S20753C18D1Ev,_ZThn148_N9S20753C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C18D0Ev,_ZTv0_n12_N9S20753C18D0Ev)();
extern void ABISELECT(_ZThn248_N9S20753C18D0Ev,_ZThn148_N9S20753C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C7__9S20753C18__8S20753C1[] = {
  ABISELECT(-520,-304),
  ABISELECT(-584,-340),
  ABISELECT(-248,-148),
  ABISELECT(-248,-148),
  (VTBL_ENTRY)&(_ZTI9S20753C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C18D1Ev,_ZTv0_n12_N9S20753C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C18D0Ev,_ZTv0_n12_N9S20753C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C18D1Ev,_ZTv0_n12_N9S20753C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C18D0Ev,_ZTv0_n12_N9S20753C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C2__9S20753C18__8S20753C1[] = {
  ABISELECT(176,104),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-128,-72),
  ABISELECT(112,68),
  ABISELECT(448,260),
  ABISELECT(448,260),
  (VTBL_ENTRY)&(_ZTI9S20753C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C18D1Ev,_ZTv0_n12_N9S20753C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C18D0Ev,_ZTv0_n12_N9S20753C18D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20753C18D1Ev,_ZTv0_n24_N9S20753C18D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20753C18D0Ev,_ZTv0_n24_N9S20753C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C4__9S20753C18__8S20753C1[] = {
  ABISELECT(400,232),
  ABISELECT(128,76),
  ABISELECT(64,40),
  ABISELECT(64,40),
  ABISELECT(400,232),
  (VTBL_ENTRY)&(_ZTI9S20753C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20753C18D1Ev,_ZTv0_n24_N9S20753C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20753C18D0Ev,_ZTv0_n24_N9S20753C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C18D1Ev,_ZTv0_n12_N9S20753C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C18D0Ev,_ZTv0_n12_N9S20753C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C88S20753C4__A1__9S20753C18__8S20753C1[] = {
  ABISELECT(48,32),
  ABISELECT(384,224),
  ABISELECT(384,224),
  (VTBL_ENTRY)&(_ZTI9S20753C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C18D1Ev,_ZTv0_n12_N9S20753C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C18D0Ev,_ZTv0_n12_N9S20753C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void _ZN8S20753C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
extern void _ZN8S20753C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20753C7__A2__8S20753C1[] = {
  ABISELECT(-520,-304),
  ABISELECT(-584,-340),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S20753C7__A2__8S20753C1[] = {
  ABISELECT(584,340),
  ABISELECT(584,340),
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C8__8S20753C7__A2__8S20753C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(520,304),
  ABISELECT(520,304),
  (VTBL_ENTRY)&(_ZTI8S20753C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C19D1Ev,_ZTv0_n12_N9S20753C19D1Ev)();
extern void _ZN9S20753C19D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C19D0Ev,_ZTv0_n12_N9S20753C19D0Ev)();
extern void _ZN9S20753C19D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20753C19__8S20753C1[] = {
  ABISELECT(-12,-4),
  ABISELECT(-288,-164),
  ABISELECT(-672,-392),
  ABISELECT(-720,-420),
  ABISELECT(-400,-232),
  ABISELECT(-848,-492),
  ABISELECT(-544,-316),
  ABISELECT(-608,-352),
  ABISELECT(-608,-352),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20753C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C19D1Ev,_ZTv0_n12_N9S20753C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C19D0Ev,_ZTv0_n12_N9S20753C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void _ZN9S20753C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
extern void _ZN9S20753C10D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20753C109S20753C19__A2__8S20753C1[] = {
  ABISELECT(-288,-164),
  ABISELECT(-672,-392),
  ABISELECT(-720,-420),
  ABISELECT(-400,-232),
  ABISELECT(-848,-492),
  ABISELECT(-544,-316),
  ABISELECT(-608,-352),
  ABISELECT(-608,-352),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev)();
extern void _ZN9S20753C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev)();
extern void _ZN9S20753C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20753C129S20753C109S20753C19__A2__8S20753C1[] = {
  ABISELECT(-848,-492),
  ABISELECT(-544,-316),
  ABISELECT(-608,-352),
  ABISELECT(-608,-352),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20753C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C5__9S20753C129S20753C109S20753C19__A2__8S20753C1[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(608,352),
  ABISELECT(608,352),
  (VTBL_ENTRY)&(_ZTI9S20753C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C8__9S20753C129S20753C109S20753C19__A2__8S20753C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(544,316),
  ABISELECT(544,316),
  (VTBL_ENTRY)&(_ZTI9S20753C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C8__9S20753C109S20753C19__A2__8S20753C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(544,316),
  ABISELECT(544,316),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C5__9S20753C109S20753C19__A2__8S20753C1[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(608,352),
  ABISELECT(608,352),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20753C11__9S20753C109S20753C19__A2__8S20753C1[] = {
  ABISELECT(-144,-84),
  ABISELECT(-208,-120),
  ABISELECT(-272,-160),
  ABISELECT(-448,-260),
  ABISELECT(-320,-188),
  ABISELECT(-208,-120),
  ABISELECT(400,232),
  ABISELECT(400,232),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C2__9S20753C109S20753C19__A2__8S20753C1[] = {
  ABISELECT(176,104),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-128,-72),
  ABISELECT(112,68),
  ABISELECT(720,420),
  ABISELECT(720,420),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20753C10D1Ev,_ZTv0_n24_N9S20753C10D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20753C10D0Ev,_ZTv0_n24_N9S20753C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C4__9S20753C109S20753C19__A2__8S20753C1[] = {
  ABISELECT(672,392),
  ABISELECT(128,76),
  ABISELECT(64,40),
  ABISELECT(64,40),
  ABISELECT(672,392),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20753C10D1Ev,_ZTv0_n24_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20753C10D0Ev,_ZTv0_n24_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C88S20753C4__A2__9S20753C109S20753C19__A2__8S20753C1[] = {
  ABISELECT(48,32),
  ABISELECT(656,384),
  ABISELECT(656,384),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C59S20753C11__A1__9S20753C109S20753C19__A2__8S20753C1[] = {
  ABISELECT(-192,-112),
  ABISELECT(-256,-148),
  ABISELECT(352,204),
  ABISELECT(352,204),
  (VTBL_ENTRY)&(_ZTI9S20753C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C19D1Ev,_ZTv0_n12_N9S20753C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C19D0Ev,_ZTv0_n12_N9S20753C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C8__9S20753C19__8S20753C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(544,316),
  ABISELECT(544,316),
  (VTBL_ENTRY)&(_ZTI9S20753C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C19D1Ev,_ZTv0_n12_N9S20753C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C19D0Ev,_ZTv0_n12_N9S20753C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C19D1Ev,_ZTv0_n12_N9S20753C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C19D0Ev,_ZTv0_n12_N9S20753C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C5__9S20753C19__8S20753C1[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(608,352),
  ABISELECT(608,352),
  (VTBL_ENTRY)&(_ZTI9S20753C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C19D1Ev,_ZTv0_n12_N9S20753C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C19D0Ev,_ZTv0_n12_N9S20753C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C19D1Ev,_ZTv0_n12_N9S20753C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C19D0Ev,_ZTv0_n12_N9S20753C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20753C11__9S20753C19__8S20753C1[] = {
  ABISELECT(-144,-84),
  ABISELECT(-208,-120),
  ABISELECT(-272,-160),
  ABISELECT(-448,-260),
  ABISELECT(-320,-188),
  ABISELECT(-208,-120),
  ABISELECT(400,232),
  ABISELECT(400,232),
  (VTBL_ENTRY)&(_ZTI9S20753C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C19D1Ev,_ZTv0_n12_N9S20753C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C19D0Ev,_ZTv0_n12_N9S20753C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C19D1Ev,_ZTv0_n12_N9S20753C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C19D0Ev,_ZTv0_n12_N9S20753C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C2__9S20753C19__8S20753C1[] = {
  ABISELECT(176,104),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-128,-72),
  ABISELECT(112,68),
  ABISELECT(720,420),
  ABISELECT(720,420),
  (VTBL_ENTRY)&(_ZTI9S20753C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C19D1Ev,_ZTv0_n12_N9S20753C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C19D0Ev,_ZTv0_n12_N9S20753C19D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20753C19D1Ev,_ZTv0_n24_N9S20753C19D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20753C19D0Ev,_ZTv0_n24_N9S20753C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C4__9S20753C19__8S20753C1[] = {
  ABISELECT(672,392),
  ABISELECT(128,76),
  ABISELECT(64,40),
  ABISELECT(64,40),
  ABISELECT(672,392),
  (VTBL_ENTRY)&(_ZTI9S20753C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20753C19D1Ev,_ZTv0_n24_N9S20753C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20753C19D0Ev,_ZTv0_n24_N9S20753C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C19D1Ev,_ZTv0_n12_N9S20753C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C19D0Ev,_ZTv0_n12_N9S20753C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C88S20753C4__A2__9S20753C19__8S20753C1[] = {
  ABISELECT(48,32),
  ABISELECT(656,384),
  ABISELECT(656,384),
  (VTBL_ENTRY)&(_ZTI9S20753C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C19D1Ev,_ZTv0_n12_N9S20753C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C19D0Ev,_ZTv0_n12_N9S20753C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20753C19D1Ev,_ZTv0_n12_N9S20753C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20753C19D0Ev,_ZTv0_n12_N9S20753C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20753C59S20753C11__A1__9S20753C19__8S20753C1[] = {
  ABISELECT(-192,-112),
  ABISELECT(-256,-148),
  ABISELECT(352,204),
  ABISELECT(352,204),
  (VTBL_ENTRY)&(_ZTI9S20753C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C19D1Ev,_ZTv0_n12_N9S20753C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20753C19D0Ev,_ZTv0_n12_N9S20753C19D0Ev),
};
static  VTT_ENTRY vtt_S20753C1[] = {
  {&(_ZTV8S20753C1[16]),  16,141},
  {&(_tg__ZTV9S20753C15__8S20753C1[11]),  11,13},
  {&(_tg__ZTV9S20753C109S20753C15__A1__8S20753C1[11]),  11,13},
  {&(_tg__ZTV9S20753C129S20753C109S20753C15__A1__8S20753C1[7]),  7,9},
  {&(_tg__ZTV8S20753C5__9S20753C129S20753C109S20753C15__A1__8S20753C1[5]),  5,7},
  {&(_tg__ZTV8S20753C5__9S20753C129S20753C109S20753C15__A1__8S20753C1[5]),  5,7},
  {&(_tg__ZTV8S20753C8__9S20753C129S20753C109S20753C15__A1__8S20753C1[4]),  4,6},
  {&(_tg__ZTV8S20753C8__9S20753C109S20753C15__A1__8S20753C1[4]),  4,6},
  {&(_tg__ZTV8S20753C5__9S20753C109S20753C15__A1__8S20753C1[5]),  5,7},
  {&(_tg__ZTV9S20753C11__9S20753C109S20753C15__A1__8S20753C1[9]),  9,11},
  {&(_tg__ZTV8S20753C2__9S20753C109S20753C15__A1__8S20753C1[8]),  8,10},
  {&(_tg__ZTV8S20753C4__9S20753C109S20753C15__A1__8S20753C1[6]),  6,8},
  {&(_tg__ZTV8S20753C5__9S20753C109S20753C15__A1__8S20753C1[5]),  5,7},
  {&(_tg__ZTV8S20753C88S20753C4__A2__9S20753C109S20753C15__A1__8S20753C1[4]),  4,6},
  {&(_tg__ZTV8S20753C59S20753C11__A1__9S20753C109S20753C15__A1__8S20753C1[5]),  5,7},
  {&(_tg__ZTV8S20753C2__9S20753C15__8S20753C1[8]),  8,10},
  {&(_tg__ZTV8S20753C4__9S20753C15__8S20753C1[6]),  6,8},
  {&(_tg__ZTV8S20753C5__9S20753C15__8S20753C1[5]),  5,7},
  {&(_tg__ZTV8S20753C5__9S20753C15__8S20753C1[5]),  5,7},
  {&(_tg__ZTV8S20753C8__9S20753C15__8S20753C1[4]),  4,6},
  {&(_tg__ZTV8S20753C88S20753C4__A1__9S20753C15__8S20753C1[4]),  4,6},
  {&(_tg__ZTV9S20753C11__9S20753C15__8S20753C1[9]),  9,11},
  {&(_tg__ZTV8S20753C59S20753C11__A1__9S20753C15__8S20753C1[5]),  5,7},
  {&(_tg__ZTV9S20753C17__8S20753C1[15]),  15,17},
  {&(_tg__ZTV8S20753C5__9S20753C17__8S20753C1[5]),  5,7},
  {&(_tg__ZTV9S20753C18__9S20753C17__8S20753C1[11]),  11,13},
  {&(_tg__ZTV8S20753C8__9S20753C17__8S20753C1[4]),  4,6},
  {&(_tg__ZTV8S20753C7__9S20753C17__8S20753C1[5]),  5,7},
  {&(_tg__ZTV8S20753C2__9S20753C17__8S20753C1[8]),  8,10},
  {&(_tg__ZTV8S20753C4__9S20753C17__8S20753C1[6]),  6,8},
  {&(_tg__ZTV8S20753C5__9S20753C17__8S20753C1[5]),  5,7},
  {&(_tg__ZTV8S20753C88S20753C4__A1__9S20753C17__8S20753C1[4]),  4,6},
  {&(_tg__ZTV9S20753C19__9S20753C17__8S20753C1[12]),  12,14},
  {&(_tg__ZTV9S20753C11__9S20753C17__8S20753C1[9]),  9,11},
  {&(_tg__ZTV8S20753C59S20753C11__A2__9S20753C17__8S20753C1[5]),  5,7},
  {&(_ZTV8S20753C1[47]),  47,141},
  {&(_ZTV8S20753C1[55]),  55,141},
  {&(_ZTV8S20753C1[68]),  68,141},
  {&(_ZTV8S20753C1[68]),  68,141},
  {&(_ZTV8S20753C1[74]),  74,141},
  {&(_ZTV8S20753C1[61]),  61,141},
  {&(_ZTV8S20753C1[87]),  87,141},
  {&(_ZTV8S20753C1[98]),  98,141},
  {&(_ZTV8S20753C1[105]),  105,141},
  {&(_ZTV8S20753C1[37]),  37,141},
  {&(_ZTV8S20753C1[118]),  118,141},
  {&(_ZTV8S20753C1[125]),  125,141},
  {&(_ZTV8S20753C1[139]),  139,141},
  {&(_tg__ZTV8S20753C2__8S20753C1[8]),  8,10},
  {&(_tg__ZTV8S20753C88S20753C2__A2__8S20753C1[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S20753C88S20753C2__A2__8S20753C1[3]),  3,5},
  {&(_tg__ZTV8S20753C4__8S20753C2__8S20753C1[6]),  6,8},
  {&(_tg__ZTV8S20753C5__8S20753C2__8S20753C1[5]),  5,7},
  {&(_tg__ZTV8S20753C5__8S20753C2__8S20753C1[5]),  5,7},
  {&(_tg__ZTV8S20753C8__8S20753C2__8S20753C1[4]),  4,6},
  {&(_tg__ZTV8S20753C88S20753C4__A1__8S20753C2__8S20753C1[4]),  4,6},
  {&(_tg__ZTV8S20753C4__8S20753C1[5]),  5,7},
  {&(_tg__ZTV8S20753C88S20753C4__A1__8S20753C1[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S20753C88S20753C4__A1__8S20753C1[3]),  3,5},
  {&(_tg__ZTV8S20753C5__8S20753C4__8S20753C1[5]),  5,7},
  {&(_tg__ZTV8S20753C5__8S20753C4__8S20753C1[5]),  5,7},
  {&(_tg__ZTV8S20753C8__8S20753C4__8S20753C1[4]),  4,6},
  {&(_tg__ZTV8S20753C8__A__8S20753C4__8S20753C1[4]),  4,6},
  {&(_tg__ZTV8S20753C5__8S20753C1[5]),  5,7},
  {&(_tg__ZTV8S20753C78S20753C5__8S20753C1[5]),  5,7},
  {&(_tg__ZTV8S20753C78S20753C5__8S20753C1[5]),  5,7},
  {&(_tg__ZTV8S20753C8__8S20753C78S20753C5__8S20753C1[4]),  4,6},
  {&(_tg__ZTV8S20753C5__8S20753C1[5]),  5,7},
  {&(_tg__ZTV8S20753C8__8S20753C5__8S20753C1[4]),  4,6},
  {&(_tg__ZTV8S20753C8__8S20753C1[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S20753C8__8S20753C1[3]),  3,5},
  {&(_tg__ZTV9S20753C10__8S20753C1[11]),  11,13},
  {&(_tg__ZTV9S20753C129S20753C10__8S20753C1[7]),  7,9},
  {&(_tg__ZTV8S20753C5__9S20753C129S20753C10__8S20753C1[5]),  5,7},
  {&(_tg__ZTV8S20753C5__9S20753C129S20753C10__8S20753C1[5]),  5,7},
  {&(_tg__ZTV8S20753C8__9S20753C129S20753C10__8S20753C1[4]),  4,6},
  {&(_tg__ZTV8S20753C8__9S20753C10__8S20753C1[4]),  4,6},
  {&(_tg__ZTV8S20753C5__9S20753C10__8S20753C1[5]),  5,7},
  {&(_tg__ZTV9S20753C11__9S20753C10__8S20753C1[9]),  9,11},
  {&(_tg__ZTV8S20753C2__9S20753C10__8S20753C1[8]),  8,10},
  {&(_tg__ZTV8S20753C4__9S20753C10__8S20753C1[6]),  6,8},
  {&(_tg__ZTV8S20753C5__9S20753C10__8S20753C1[5]),  5,7},
  {&(_tg__ZTV8S20753C88S20753C4__A2__9S20753C10__8S20753C1[4]),  4,6},
  {&(_tg__ZTV8S20753C59S20753C11__A1__9S20753C10__8S20753C1[5]),  5,7},
  {&(_tg__ZTV9S20753C11__8S20753C1[9]),  9,11},
  {&(_tg__ZTV8S20753C89S20753C11__A3__8S20753C1[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S20753C89S20753C11__A3__8S20753C1[3]),  3,5},
  {&(_tg__ZTV8S20753C59S20753C11__A1__8S20753C1[5]),  5,7},
  {&(_tg__ZTV8S20753C78S20753C59S20753C11__A1__8S20753C1[5]),  5,7},
  {&(_tg__ZTV9S19905C19__8S20753C78S20753C59S20753C11__A1__8S20753C1[3]),  3,5},
  {&(_tg__ZTV8S20753C8__8S20753C78S20753C59S20753C11__A1__8S20753C1[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S20753C59S20753C11__A1__8S20753C1[3]),  3,5},
  {&(_tg__ZTV8S20753C8__8S20753C59S20753C11__A1__8S20753C1[4]),  4,6},
  {&(_tg__ZTV8S20753C5__9S20753C11__8S20753C1[5]),  5,7},
  {&(_tg__ZTV8S20753C2__9S20753C11__8S20753C1[8]),  8,10},
  {&(_tg__ZTV8S20753C4__9S20753C11__8S20753C1[6]),  6,8},
  {&(_tg__ZTV8S20753C5__9S20753C11__8S20753C1[5]),  5,7},
  {&(_tg__ZTV8S20753C8__A1__9S20753C11__8S20753C1[4]),  4,6},
  {&(_tg__ZTV8S20753C88S20753C4__A2__9S20753C11__8S20753C1[4]),  4,6},
  {&(_tg__ZTV8S20753C5__A__9S20753C11__8S20753C1[5]),  5,7},
  {&(_tg__ZTV9S20753C18__8S20753C1[11]),  11,13},
  {&(_tg__ZTV8S20753C59S20753C18__A2__8S20753C1[5]),  5,7},
  {&(_tg__ZTV8S20753C78S20753C59S20753C18__A3__8S20753C1[5]),  5,7},
  {&(_tg__ZTV9S19905C19__8S20753C78S20753C59S20753C18__A3__8S20753C1[3]),  3,5},
  {&(_tg__ZTV8S20753C8__8S20753C78S20753C59S20753C18__A3__8S20753C1[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S20753C59S20753C18__A2__8S20753C1[3]),  3,5},
  {&(_tg__ZTV8S20753C8__8S20753C59S20753C18__A2__8S20753C1[4]),  4,6},
  {&(_tg__ZTV8S20753C8__9S20753C18__8S20753C1[4]),  4,6},
  {&(_tg__ZTV8S20753C5__9S20753C18__8S20753C1[5]),  5,7},
  {&(_tg__ZTV8S20753C7__9S20753C18__8S20753C1[5]),  5,7},
  {&(_tg__ZTV8S20753C2__9S20753C18__8S20753C1[8]),  8,10},
  {&(_tg__ZTV8S20753C4__9S20753C18__8S20753C1[6]),  6,8},
  {&(_tg__ZTV8S20753C5__9S20753C18__8S20753C1[5]),  5,7},
  {&(_tg__ZTV8S20753C88S20753C4__A1__9S20753C18__8S20753C1[4]),  4,6},
  {&(_tg__ZTV8S20753C7__A2__8S20753C1[5]),  5,7},
  {&(_tg__ZTV9S19905C19__8S20753C7__A2__8S20753C1[3]),  3,5},
  {&(_tg__ZTV8S20753C8__8S20753C7__A2__8S20753C1[4]),  4,6},
  {&(_tg__ZTV9S20753C19__8S20753C1[12]),  12,14},
  {&(_tg__ZTV9S20753C109S20753C19__A2__8S20753C1[11]),  11,13},
  {&(_tg__ZTV9S20753C129S20753C109S20753C19__A2__8S20753C1[7]),  7,9},
  {&(_tg__ZTV8S20753C5__9S20753C129S20753C109S20753C19__A2__8S20753C1[5]),  5,7},
  {&(_tg__ZTV8S20753C5__9S20753C129S20753C109S20753C19__A2__8S20753C1[5]),  5,7},
  {&(_tg__ZTV8S20753C8__9S20753C129S20753C109S20753C19__A2__8S20753C1[4]),  4,6},
  {&(_tg__ZTV8S20753C8__9S20753C109S20753C19__A2__8S20753C1[4]),  4,6},
  {&(_tg__ZTV8S20753C5__9S20753C109S20753C19__A2__8S20753C1[5]),  5,7},
  {&(_tg__ZTV9S20753C11__9S20753C109S20753C19__A2__8S20753C1[9]),  9,11},
  {&(_tg__ZTV8S20753C2__9S20753C109S20753C19__A2__8S20753C1[8]),  8,10},
  {&(_tg__ZTV8S20753C4__9S20753C109S20753C19__A2__8S20753C1[6]),  6,8},
  {&(_tg__ZTV8S20753C5__9S20753C109S20753C19__A2__8S20753C1[5]),  5,7},
  {&(_tg__ZTV8S20753C88S20753C4__A2__9S20753C109S20753C19__A2__8S20753C1[4]),  4,6},
  {&(_tg__ZTV8S20753C59S20753C11__A1__9S20753C109S20753C19__A2__8S20753C1[5]),  5,7},
  {&(_tg__ZTV8S20753C8__9S20753C19__8S20753C1[4]),  4,6},
  {&(_tg__ZTV8S20753C5__9S20753C19__8S20753C1[5]),  5,7},
  {&(_tg__ZTV9S20753C11__9S20753C19__8S20753C1[9]),  9,11},
  {&(_tg__ZTV8S20753C2__9S20753C19__8S20753C1[8]),  8,10},
  {&(_tg__ZTV8S20753C4__9S20753C19__8S20753C1[6]),  6,8},
  {&(_tg__ZTV8S20753C5__9S20753C19__8S20753C1[5]),  5,7},
  {&(_tg__ZTV8S20753C88S20753C4__A2__9S20753C19__8S20753C1[4]),  4,6},
  {&(_tg__ZTV8S20753C59S20753C11__A1__9S20753C19__8S20753C1[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S20753C1[];
extern  VTBL_ENTRY _ZTV8S20753C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20753C1[];
static VTBL_ENTRY alt_thunk_names33[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C19D0Ev,_ZTv0_n12_N9S20753C19D0Ev), // 
  (VTBL_ENTRY)_ZN9S20753C19D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C19D1Ev,_ZTv0_n12_N9S20753C19D1Ev), // 
  (VTBL_ENTRY)_ZN9S20753C19D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C18D0Ev,_ZTv0_n12_N9S20753C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N9S20753C18D0Ev,_ZThn148_N9S20753C18D0Ev),
  (VTBL_ENTRY)_ZN9S20753C18D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C18D1Ev,_ZTv0_n12_N9S20753C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N9S20753C18D1Ev,_ZThn148_N9S20753C18D1Ev),
  (VTBL_ENTRY)_ZN9S20753C18D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C11D0Ev,_ZTv0_n12_N9S20753C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20753C11D0Ev,_ZThn28_N9S20753C11D0Ev),
  (VTBL_ENTRY)_ZN9S20753C11D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C11D1Ev,_ZTv0_n12_N9S20753C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20753C11D1Ev,_ZThn28_N9S20753C11D1Ev),
  (VTBL_ENTRY)_ZN9S20753C11D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C7D0Ev,_ZTv0_n12_N8S20753C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S20753C7D0Ev,
  (VTBL_ENTRY)_ZN8S20753C7D0Ev,
  (VTBL_ENTRY)_ZN8S20753C7D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C7D0Ev,_ZThn36_N8S20753C7D0Ev),
  (VTBL_ENTRY)_ZN8S20753C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C7D1Ev,_ZTv0_n12_N8S20753C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S20753C7D1Ev,
  (VTBL_ENTRY)_ZN8S20753C7D1Ev,
  (VTBL_ENTRY)_ZN8S20753C7D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C7D1Ev,_ZThn36_N8S20753C7D1Ev),
  (VTBL_ENTRY)_ZN8S20753C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C5D0Ev,_ZTv0_n12_N8S20753C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S20753C5D0Ev,
  (VTBL_ENTRY)_ZN8S20753C5D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C5D0Ev,_ZThn36_N8S20753C5D0Ev),
  (VTBL_ENTRY)_ZN8S20753C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C5D1Ev,_ZTv0_n12_N8S20753C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S20753C5D1Ev,
  (VTBL_ENTRY)_ZN8S20753C5D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C5D1Ev,_ZThn36_N8S20753C5D1Ev),
  (VTBL_ENTRY)_ZN8S20753C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C4D0Ev,_ZTv0_n12_N8S20753C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20753C4D0Ev,_ZThn8_N8S20753C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20753C4D0Ev,_ZThn76_N8S20753C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C4D0Ev,_ZThn40_N8S20753C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C4D1Ev,_ZTv0_n12_N8S20753C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20753C4D1Ev,_ZThn8_N8S20753C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20753C4D1Ev,_ZThn76_N8S20753C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C4D1Ev,_ZThn40_N8S20753C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20753C2D0Ev,_ZTv0_n24_N8S20753C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20753C2D0Ev,_ZThn28_N8S20753C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20753C2D1Ev,_ZTv0_n24_N8S20753C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20753C2D1Ev,_ZThn28_N8S20753C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C8D0Ev,_ZTv0_n12_N8S20753C8D0Ev), // 
  (VTBL_ENTRY)_ZN8S20753C8D0Ev,
  (VTBL_ENTRY)_ZN8S20753C8D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20753C8D0Ev,_ZThn32_N8S20753C8D0Ev),
  (VTBL_ENTRY)_ZN8S20753C8D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20753C8D0Ev,_ZThn68_N8S20753C8D0Ev),
  (VTBL_ENTRY)_ZN8S20753C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C8D1Ev,_ZTv0_n12_N8S20753C8D1Ev), // 
  (VTBL_ENTRY)_ZN8S20753C8D1Ev,
  (VTBL_ENTRY)_ZN8S20753C8D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20753C8D1Ev,_ZThn32_N8S20753C8D1Ev),
  (VTBL_ENTRY)_ZN8S20753C8D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20753C8D1Ev,_ZThn68_N8S20753C8D1Ev),
  (VTBL_ENTRY)_ZN8S20753C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C2D0Ev,_ZTv0_n12_N8S20753C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C2D0Ev,_ZThn36_N8S20753C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20753C2D0Ev,_ZThn104_N8S20753C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20753C2D0Ev,_ZThn68_N8S20753C2D0Ev),
  (VTBL_ENTRY)_ZN8S20753C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C2D1Ev,_ZTv0_n12_N8S20753C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20753C2D1Ev,_ZThn36_N8S20753C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20753C2D1Ev,_ZThn104_N8S20753C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20753C2D1Ev,_ZThn68_N8S20753C2D1Ev),
  (VTBL_ENTRY)_ZN8S20753C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20753C17D0Ev,_ZTv0_n24_N9S20753C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20753C17D0Ev,_ZThn36_N9S20753C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20753C17D1Ev,_ZTv0_n24_N9S20753C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20753C17D1Ev,_ZThn36_N9S20753C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C17D0Ev,_ZTv0_n12_N9S20753C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S20753C17D0Ev,_ZThn224_N9S20753C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S20753C17D0Ev,_ZThn196_N9S20753C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn736_N9S20753C17D0Ev,_ZThn428_N9S20753C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20753C17D0Ev,_ZThn44_N9S20753C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20753C17D0Ev,_ZThn8_N9S20753C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn712_N9S20753C17D0Ev,_ZThn416_N9S20753C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20753C17D0Ev,_ZThn112_N9S20753C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn464_N9S20753C17D0Ev,_ZThn268_N9S20753C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20753C17D0Ev,_ZThn76_N9S20753C17D0Ev),
  (VTBL_ENTRY)_ZN9S20753C17D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C17D1Ev,_ZTv0_n12_N9S20753C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S20753C17D1Ev,_ZThn224_N9S20753C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S20753C17D1Ev,_ZThn196_N9S20753C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn736_N9S20753C17D1Ev,_ZThn428_N9S20753C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20753C17D1Ev,_ZThn44_N9S20753C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20753C17D1Ev,_ZThn8_N9S20753C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn712_N9S20753C17D1Ev,_ZThn416_N9S20753C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20753C17D1Ev,_ZThn112_N9S20753C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn464_N9S20753C17D1Ev,_ZThn268_N9S20753C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20753C17D1Ev,_ZThn76_N9S20753C17D1Ev),
  (VTBL_ENTRY)_ZN9S20753C17D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20753C15D0Ev,_ZTv0_n24_N9S20753C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20753C15D0Ev,_ZThn100_N9S20753C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20753C15D1Ev,_ZTv0_n24_N9S20753C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20753C15D1Ev,_ZThn100_N9S20753C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20753C10D0Ev,_ZTv0_n24_N9S20753C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20753C10D0Ev,_ZThn100_N9S20753C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20753C10D1Ev,_ZTv0_n24_N9S20753C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20753C10D1Ev,_ZThn100_N9S20753C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C12D0Ev,_ZTv0_n12_N9S20753C12D0Ev), // 
  (VTBL_ENTRY)_ZN9S20753C12D0Ev,
  (VTBL_ENTRY)_ZN9S20753C12D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S20753C12D0Ev,_ZThn176_N9S20753C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20753C12D0Ev,_ZThn140_N9S20753C12D0Ev),
  (VTBL_ENTRY)_ZN9S20753C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C12D1Ev,_ZTv0_n12_N9S20753C12D1Ev), // 
  (VTBL_ENTRY)_ZN9S20753C12D1Ev,
  (VTBL_ENTRY)_ZN9S20753C12D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S20753C12D1Ev,_ZThn176_N9S20753C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20753C12D1Ev,_ZThn140_N9S20753C12D1Ev),
  (VTBL_ENTRY)_ZN9S20753C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C10D0Ev,_ZTv0_n12_N9S20753C10D0Ev), // 
  (VTBL_ENTRY)_ZN9S20753C10D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S20753C10D0Ev,_ZThn84_N9S20753C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20753C10D0Ev,_ZThn56_N9S20753C10D0Ev),
  (VTBL_ENTRY)_ZN9S20753C10D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn496_N9S20753C10D0Ev,_ZThn288_N9S20753C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20753C10D0Ev,_ZThn108_N9S20753C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20753C10D0Ev,_ZThn72_N9S20753C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn448_N9S20753C10D0Ev,_ZThn260_N9S20753C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20753C10D0Ev,_ZThn140_N9S20753C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S20753C10D0Ev,_ZThn176_N9S20753C10D0Ev),
  (VTBL_ENTRY)_ZN9S20753C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C10D1Ev,_ZTv0_n12_N9S20753C10D1Ev), // 
  (VTBL_ENTRY)_ZN9S20753C10D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S20753C10D1Ev,_ZThn84_N9S20753C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20753C10D1Ev,_ZThn56_N9S20753C10D1Ev),
  (VTBL_ENTRY)_ZN9S20753C10D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn496_N9S20753C10D1Ev,_ZThn288_N9S20753C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20753C10D1Ev,_ZThn108_N9S20753C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20753C10D1Ev,_ZThn72_N9S20753C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn448_N9S20753C10D1Ev,_ZThn260_N9S20753C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20753C10D1Ev,_ZThn140_N9S20753C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S20753C10D1Ev,_ZThn176_N9S20753C10D1Ev),
  (VTBL_ENTRY)_ZN9S20753C10D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C15D0Ev,_ZTv0_n12_N9S20753C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N9S20753C15D0Ev,_ZThn288_N9S20753C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn448_N9S20753C15D0Ev,_ZThn260_N9S20753C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20753C15D0Ev,_ZThn108_N9S20753C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S20753C15D0Ev,_ZThn176_N9S20753C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20753C15D0Ev,_ZThn140_N9S20753C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20753C15D0Ev,_ZThn72_N9S20753C15D0Ev),
  (VTBL_ENTRY)_ZN9S20753C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20753C15D1Ev,_ZTv0_n12_N9S20753C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N9S20753C15D1Ev,_ZThn288_N9S20753C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn448_N9S20753C15D1Ev,_ZThn260_N9S20753C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20753C15D1Ev,_ZThn108_N9S20753C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S20753C15D1Ev,_ZThn176_N9S20753C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20753C15D1Ev,_ZThn140_N9S20753C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20753C15D1Ev,_ZThn72_N9S20753C15D1Ev),
  (VTBL_ENTRY)_ZN9S20753C15D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20753C1D0Ev,_ZTv0_n24_N8S20753C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20753C1D0Ev,_ZThn100_N8S20753C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20753C1D1Ev,_ZTv0_n24_N8S20753C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20753C1D1Ev,_ZThn100_N8S20753C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C1D0Ev,_ZTv0_n12_N8S20753C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn848_N8S20753C1D0Ev,_ZThn492_N8S20753C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn824_N8S20753C1D0Ev,_ZThn480_N8S20753C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn576_N8S20753C1D0Ev,_ZThn332_N8S20753C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S20753C1D0Ev,_ZThn288_N8S20753C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn448_N8S20753C1D0Ev,_ZThn260_N8S20753C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S20753C1D0Ev,_ZThn204_N8S20753C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S20753C1D0Ev,_ZThn176_N8S20753C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S20753C1D0Ev,_ZThn140_N8S20753C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20753C1D0Ev,_ZThn108_N8S20753C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20753C1D0Ev,_ZThn72_N8S20753C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20753C1D0Ev,_ZThn64_N8S20753C1D0Ev),
  (VTBL_ENTRY)_ZN8S20753C1D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20753C1D1Ev,_ZTv0_n12_N8S20753C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn848_N8S20753C1D1Ev,_ZThn492_N8S20753C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn824_N8S20753C1D1Ev,_ZThn480_N8S20753C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn576_N8S20753C1D1Ev,_ZThn332_N8S20753C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S20753C1D1Ev,_ZThn288_N8S20753C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn448_N8S20753C1D1Ev,_ZThn260_N8S20753C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S20753C1D1Ev,_ZThn204_N8S20753C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S20753C1D1Ev,_ZThn176_N8S20753C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S20753C1D1Ev,_ZThn140_N8S20753C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20753C1D1Ev,_ZThn108_N8S20753C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20753C1D1Ev,_ZThn72_N8S20753C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20753C1D1Ev,_ZThn64_N8S20753C1D1Ev),
  (VTBL_ENTRY)_ZN8S20753C1D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20753C1 = {  "S20753C1", // class name
  bases_S20753C1, 43,
  &(vtc_S20753C1[0]), // expected_vtbl_contents
  &(vtt_S20753C1[0]), // expected_vtt_contents
  ABISELECT(944,548), // object size
  NSPAIRA(_ZTI8S20753C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20753C1),141, //virtual function table var
  16, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20753C1),139, //virtual table table var
  27, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names33,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7297C4_nt  {
  virtual  ~S7297C4_nt(); // _ZN10S7297C4_ntD1Ev
  virtual void  v1(); // _ZN10S7297C4_nt2v1Ev
  virtual void  v2(); // _ZN10S7297C4_nt2v2Ev
  S7297C4_nt(); // tgen
};
//SIG(-1 S7297C4_nt) C1{ vd v1 v2}


 S7297C4_nt ::~S7297C4_nt(){ note_dtor("S7297C4_nt", this);}
void  S7297C4_nt ::v1(){vfunc_called(this, "_ZN10S7297C4_nt2v1Ev");}
void  S7297C4_nt ::v2(){vfunc_called(this, "_ZN10S7297C4_nt2v2Ev");}
S7297C4_nt ::S7297C4_nt(){ note_ctor("S7297C4_nt", this);} // tgen

//skip512 S7297C4_nt

#else // __cplusplus

extern void _ZN10S7297C4_ntC1Ev();
extern void _ZN10S7297C4_ntD1Ev();
Name_Map name_map_S7297C4_nt[] = {
  NSPAIR(_ZN10S7297C4_ntC1Ev),
  NSPAIR(_ZN10S7297C4_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S7297C4_nt[];
extern void _ZN10S7297C4_ntD1Ev();
extern void _ZN10S7297C4_ntD0Ev();
extern void _ZN10S7297C4_nt2v1Ev();
extern void _ZN10S7297C4_nt2v2Ev();
static  VTBL_ENTRY vtc_S7297C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S7297C4_nt[0]),
  (VTBL_ENTRY)&_ZN10S7297C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S7297C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S7297C4_nt2v1Ev,
  (VTBL_ENTRY)&_ZN10S7297C4_nt2v2Ev,
};
extern VTBL_ENTRY _ZTI10S7297C4_nt[];
VTBL_ENTRY *P__ZTI10S7297C4_nt = _ZTI10S7297C4_nt; 
extern  VTBL_ENTRY _ZTV10S7297C4_nt[];
Class_Descriptor cd_S7297C4_nt = {  "S7297C4_nt", // class name
  0,0,//no base classes
  &(vtc_S7297C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S7297C4_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S7297C4_nt),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7297C6  {
  virtual void  v3(); // _ZN7S7297C62v3Ev
  virtual void  v4(); // _ZN7S7297C62v4Ev
  virtual void  v5(); // _ZN7S7297C62v5Ev
  virtual void  v6(); // _ZN7S7297C62v6Ev
  virtual void  v7(); // _ZN7S7297C62v7Ev
  virtual void  v8(); // _ZN7S7297C62v8Ev
  virtual void  v9(); // _ZN7S7297C62v9Ev
  virtual void  v10(); // _ZN7S7297C63v10Ev
  virtual void  v11(); // _ZN7S7297C63v11Ev
  ~S7297C6(); // tgen
  S7297C6(); // tgen
};
//SIG(-1 S7297C6) C1{ v1 v2 v3 v4 v5 v6 v7 v8 v9}


void  S7297C6 ::v3(){vfunc_called(this, "_ZN7S7297C62v3Ev");}
void  S7297C6 ::v4(){vfunc_called(this, "_ZN7S7297C62v4Ev");}
void  S7297C6 ::v5(){vfunc_called(this, "_ZN7S7297C62v5Ev");}
void  S7297C6 ::v6(){vfunc_called(this, "_ZN7S7297C62v6Ev");}
void  S7297C6 ::v7(){vfunc_called(this, "_ZN7S7297C62v7Ev");}
void  S7297C6 ::v8(){vfunc_called(this, "_ZN7S7297C62v8Ev");}
void  S7297C6 ::v9(){vfunc_called(this, "_ZN7S7297C62v9Ev");}
void  S7297C6 ::v10(){vfunc_called(this, "_ZN7S7297C63v10Ev");}
void  S7297C6 ::v11(){vfunc_called(this, "_ZN7S7297C63v11Ev");}
S7297C6 ::~S7297C6(){ note_dtor("S7297C6", this);} // tgen
S7297C6 ::S7297C6(){ note_ctor("S7297C6", this);} // tgen

static void Test_S7297C6()
{
  extern Class_Descriptor cd_S7297C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7297C6, buf);
    S7297C6 *dp, &lv = *(dp=new (buf) S7297C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7297C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7297C6)");
    test_class_info(&lv, &cd_S7297C6);
    dp->~S7297C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7297C6(Test_S7297C6, "S7297C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7297C6C1Ev();
extern void _ZN7S7297C6D1Ev();
Name_Map name_map_S7297C6[] = {
  NSPAIR(_ZN7S7297C6C1Ev),
  NSPAIR(_ZN7S7297C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7297C6[];
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
static  VTBL_ENTRY vtc_S7297C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7297C6[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
};
extern VTBL_ENTRY _ZTI7S7297C6[];
extern  VTBL_ENTRY _ZTV7S7297C6[];
Class_Descriptor cd_S7297C6 = {  "S7297C6", // class name
  0,0,//no base classes
  &(vtc_S7297C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7297C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7297C6),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7297C5  : virtual S7297C6 {
  void *s7297c5f0;
  long double s7297c5f1;
  int s7297c5f2;
  virtual void  v12(); // _ZN7S7297C53v12Ev
  virtual void  v13(); // _ZN7S7297C53v13Ev
  virtual void  v14(); // _ZN7S7297C53v14Ev
  ~S7297C5(); // tgen
  S7297C5(); // tgen
};
//SIG(-1 S7297C5) C1{ VBC2{ v4 v5 v6 v7 v8 v9 v10 v11 v12} v1 v2 v3 Fp FD Fi}


void  S7297C5 ::v12(){vfunc_called(this, "_ZN7S7297C53v12Ev");}
void  S7297C5 ::v13(){vfunc_called(this, "_ZN7S7297C53v13Ev");}
void  S7297C5 ::v14(){vfunc_called(this, "_ZN7S7297C53v14Ev");}
S7297C5 ::~S7297C5(){ note_dtor("S7297C5", this);} // tgen
S7297C5 ::S7297C5(){ note_ctor("S7297C5", this);} // tgen

static void Test_S7297C5()
{
  extern Class_Descriptor cd_S7297C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,7)];
    init_test(&cd_S7297C5, buf);
    S7297C5 *dp, &lv = *(dp=new (buf) S7297C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S7297C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7297C5)");
    check_base_class_offset(lv, (S7297C6*), 0, "S7297C5");
    check_field_offset(lv, s7297c5f0, ABISELECT(8,4), "S7297C5.s7297c5f0");
    check_field_offset(lv, s7297c5f1, ABISELECT(16,8), "S7297C5.s7297c5f1");
    check_field_offset(lv, s7297c5f2, ABISELECT(32,20), "S7297C5.s7297c5f2");
    test_class_info(&lv, &cd_S7297C5);
    dp->~S7297C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7297C5(Test_S7297C5, "S7297C5", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN7S7297C5C1Ev();
extern void _ZN7S7297C5D1Ev();
Name_Map name_map_S7297C5[] = {
  NSPAIR(_ZN7S7297C5C1Ev),
  NSPAIR(_ZN7S7297C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7297C6;
extern VTBL_ENTRY _ZTI7S7297C6[];
extern  VTBL_ENTRY _ZTV7S7297C6[];
static Base_Class bases_S7297C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7297C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7297C5[];
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN7S7297C53v12Ev();
extern void _ZN7S7297C53v13Ev();
extern void _ZN7S7297C53v14Ev();
static  VTBL_ENTRY vtc_S7297C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7297C5[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7297C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7297C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7297C53v14Ev,
};
extern VTBL_ENTRY _ZTV7S7297C5[];
static  VTT_ENTRY vtt_S7297C5[] = {
  {&(_ZTV7S7297C5[12]),  12,24},
  {&(_ZTV7S7297C5[12]),  12,24},
};
extern VTBL_ENTRY _ZTI7S7297C5[];
extern  VTBL_ENTRY _ZTV7S7297C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7297C5[];
Class_Descriptor cd_S7297C5 = {  "S7297C5", // class name
  bases_S7297C5, 1,
  &(vtc_S7297C5[0]), // expected_vtbl_contents
  &(vtt_S7297C5[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI7S7297C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7297C5),24, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7297C5),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7297C3  : S7297C4_nt , S7297C5 {
  void *s7297c3f0;
  virtual  ~S7297C3(); // _ZN7S7297C3D2Ev
  virtual void  v15(); // _ZN7S7297C33v15Ev
  virtual void  v16(); // _ZN7S7297C33v16Ev
  virtual void  v17(); // _ZN7S7297C33v17Ev
  virtual void  v18(); // _ZN7S7297C33v18Ev
  virtual void  v19(); // _ZN7S7297C33v19Ev
  virtual void  v20(); // _ZN7S7297C33v20Ev
  virtual void  v21(); // _ZN7S7297C33v21Ev
  S7297C3(); // tgen
};
//SIG(-1 S7297C3) C1{ BC2{ vd v8 v9} BC3{ VBC4{ v10 v11 v12 v13 v14 v15 v16 v17 v18} v19 v20 v21 Fp FD Fi} vd v1 v2 v3 v4 v5 v6 v7 Fp}


 S7297C3 ::~S7297C3(){ note_dtor("S7297C3", this);}
void  S7297C3 ::v15(){vfunc_called(this, "_ZN7S7297C33v15Ev");}
void  S7297C3 ::v16(){vfunc_called(this, "_ZN7S7297C33v16Ev");}
void  S7297C3 ::v17(){vfunc_called(this, "_ZN7S7297C33v17Ev");}
void  S7297C3 ::v18(){vfunc_called(this, "_ZN7S7297C33v18Ev");}
void  S7297C3 ::v19(){vfunc_called(this, "_ZN7S7297C33v19Ev");}
void  S7297C3 ::v20(){vfunc_called(this, "_ZN7S7297C33v20Ev");}
void  S7297C3 ::v21(){vfunc_called(this, "_ZN7S7297C33v21Ev");}
S7297C3 ::S7297C3(){ note_ctor("S7297C3", this);} // tgen

static void Test_S7297C3()
{
  extern Class_Descriptor cd_S7297C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,9)];
    init_test(&cd_S7297C3, buf);
    S7297C3 *dp, &lv = *(dp=new (buf) S7297C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S7297C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7297C3)");
    check_base_class_offset(lv, (S7297C4_nt*), 0, "S7297C3");
    check_base_class_offset(lv, (S7297C6*)(S7297C5*), ABISELECT(16,4), "S7297C3");
    check_base_class_offset(lv, (S7297C5*), ABISELECT(16,4), "S7297C3");
    check_field_offset(lv, s7297c3f0, ABISELECT(56,28), "S7297C3.s7297c3f0");
    test_class_info(&lv, &cd_S7297C3);
    dp->~S7297C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7297C3(Test_S7297C3, "S7297C3", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN7S7297C3C1Ev();
extern void _ZN7S7297C3D2Ev();
Name_Map name_map_S7297C3[] = {
  NSPAIR(_ZN7S7297C3C1Ev),
  NSPAIR(_ZN7S7297C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7297C4_nt;
extern VTBL_ENTRY _ZTI10S7297C4_nt[];
extern  VTBL_ENTRY _ZTV10S7297C4_nt[];
extern Class_Descriptor cd_S7297C6;
extern VTBL_ENTRY _ZTI7S7297C6[];
extern  VTBL_ENTRY _ZTV7S7297C6[];
extern Class_Descriptor cd_S7297C5;
extern VTBL_ENTRY _ZTI7S7297C5[];
extern  VTBL_ENTRY _ZTV7S7297C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7297C5[];
static Base_Class bases_S7297C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7297C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7297C6,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7297C5,    ABISELECT(16,4), //bcp->offset
    14, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7297C3[];
extern void _ZN7S7297C3D1Ev();
extern void _ZN7S7297C3D0Ev();
extern void _ZN10S7297C4_nt2v1Ev();
extern void _ZN10S7297C4_nt2v2Ev();
extern void _ZN7S7297C33v15Ev();
extern void _ZN7S7297C33v16Ev();
extern void _ZN7S7297C33v17Ev();
extern void _ZN7S7297C33v18Ev();
extern void _ZN7S7297C33v19Ev();
extern void _ZN7S7297C33v20Ev();
extern void _ZN7S7297C33v21Ev();
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN7S7297C53v12Ev();
extern void _ZN7S7297C53v13Ev();
extern void _ZN7S7297C53v14Ev();
static  VTBL_ENTRY vtc_S7297C3[] = {
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7297C3[0]),
  (VTBL_ENTRY)&_ZN7S7297C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7297C3D0Ev,
  (VTBL_ENTRY)&_ZN10S7297C4_nt2v1Ev,
  (VTBL_ENTRY)&_ZN10S7297C4_nt2v2Ev,
  (VTBL_ENTRY)&_ZN7S7297C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7297C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7297C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7297C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7297C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7297C33v20Ev,
  (VTBL_ENTRY)&_ZN7S7297C33v21Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI7S7297C3[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7297C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7297C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7297C53v14Ev,
};
extern VTBL_ENTRY _ZTV7S7297C3[];
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN7S7297C53v12Ev();
extern void _ZN7S7297C53v13Ev();
extern void _ZN7S7297C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7297C5__7S7297C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7297C5[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7297C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7297C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7297C53v14Ev,
};
static  VTT_ENTRY vtt_S7297C3[] = {
  {&(_ZTV7S7297C3[3]),  3,38},
  {&(_tg__ZTV7S7297C5__7S7297C3[12]),  12,24},
  {&(_tg__ZTV7S7297C5__7S7297C3[12]),  12,24},
  {&(_ZTV7S7297C3[26]),  26,38},
  {&(_ZTV7S7297C3[26]),  26,38},
};
extern VTBL_ENTRY _ZTI7S7297C3[];
extern  VTBL_ENTRY _ZTV7S7297C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7297C3[];
Class_Descriptor cd_S7297C3 = {  "S7297C3", // class name
  bases_S7297C3, 3,
  &(vtc_S7297C3[0]), // expected_vtbl_contents
  &(vtt_S7297C3[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI7S7297C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7297C3),38, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7297C3),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7297C10  {
  virtual void  v22(); // _ZN8S7297C103v22Ev
  ~S7297C10(); // tgen
  S7297C10(); // tgen
};
//SIG(-1 S7297C10) C1{ v1}


void  S7297C10 ::v22(){vfunc_called(this, "_ZN8S7297C103v22Ev");}
S7297C10 ::~S7297C10(){ note_dtor("S7297C10", this);} // tgen
S7297C10 ::S7297C10(){ note_ctor("S7297C10", this);} // tgen

static void Test_S7297C10()
{
  extern Class_Descriptor cd_S7297C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7297C10, buf);
    S7297C10 *dp, &lv = *(dp=new (buf) S7297C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7297C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7297C10)");
    test_class_info(&lv, &cd_S7297C10);
    dp->~S7297C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7297C10(Test_S7297C10, "S7297C10", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S7297C10C1Ev();
extern void _ZN8S7297C10D1Ev();
Name_Map name_map_S7297C10[] = {
  NSPAIR(_ZN8S7297C10C1Ev),
  NSPAIR(_ZN8S7297C10D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S7297C10[];
extern void _ZN8S7297C103v22Ev();
static  VTBL_ENTRY vtc_S7297C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S7297C10[0]),
  (VTBL_ENTRY)&_ZN8S7297C103v22Ev,
};
extern VTBL_ENTRY _ZTI8S7297C10[];
extern  VTBL_ENTRY _ZTV8S7297C10[];
Class_Descriptor cd_S7297C10 = {  "S7297C10", // class name
  0,0,//no base classes
  &(vtc_S7297C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S7297C10),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S7297C10),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7297C12  : virtual S7297C6 {
  __tsi64 s7297c12f0;
  virtual void  v23(); // _ZN8S7297C123v23Ev
  virtual void  v24(); // _ZN8S7297C123v24Ev
  virtual void  v25(); // _ZN8S7297C123v25Ev
  virtual void  v26(); // _ZN8S7297C123v26Ev
  ~S7297C12(); // tgen
  S7297C12(); // tgen
};
//SIG(-1 S7297C12) C1{ VBC2{ v5 v6 v7 v8 v9 v10 v11 v12 v13} v1 v2 v3 v4 FL}


void  S7297C12 ::v23(){vfunc_called(this, "_ZN8S7297C123v23Ev");}
void  S7297C12 ::v24(){vfunc_called(this, "_ZN8S7297C123v24Ev");}
void  S7297C12 ::v25(){vfunc_called(this, "_ZN8S7297C123v25Ev");}
void  S7297C12 ::v26(){vfunc_called(this, "_ZN8S7297C123v26Ev");}
S7297C12 ::~S7297C12(){ note_dtor("S7297C12", this);} // tgen
S7297C12 ::S7297C12(){ note_ctor("S7297C12", this);} // tgen

static void Test_S7297C12()
{
  extern Class_Descriptor cd_S7297C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S7297C12, buf);
    S7297C12 *dp, &lv = *(dp=new (buf) S7297C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S7297C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7297C12)");
    check_base_class_offset(lv, (S7297C6*), 0, "S7297C12");
    check_field_offset(lv, s7297c12f0, ABISELECT(8,4), "S7297C12.s7297c12f0");
    test_class_info(&lv, &cd_S7297C12);
    dp->~S7297C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7297C12(Test_S7297C12, "S7297C12", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S7297C12C1Ev();
extern void _ZN8S7297C12D1Ev();
Name_Map name_map_S7297C12[] = {
  NSPAIR(_ZN8S7297C12C1Ev),
  NSPAIR(_ZN8S7297C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7297C6;
extern VTBL_ENTRY _ZTI7S7297C6[];
extern  VTBL_ENTRY _ZTV7S7297C6[];
static Base_Class bases_S7297C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7297C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7297C12[];
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C123v23Ev();
extern void _ZN8S7297C123v24Ev();
extern void _ZN8S7297C123v25Ev();
extern void _ZN8S7297C123v26Ev();
static  VTBL_ENTRY vtc_S7297C12[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7297C12[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v23Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v26Ev,
};
extern VTBL_ENTRY _ZTV8S7297C12[];
static  VTT_ENTRY vtt_S7297C12[] = {
  {&(_ZTV8S7297C12[12]),  12,25},
  {&(_ZTV8S7297C12[12]),  12,25},
};
extern VTBL_ENTRY _ZTI8S7297C12[];
extern  VTBL_ENTRY _ZTV8S7297C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7297C12[];
Class_Descriptor cd_S7297C12 = {  "S7297C12", // class name
  bases_S7297C12, 1,
  &(vtc_S7297C12[0]), // expected_vtbl_contents
  &(vtt_S7297C12[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S7297C12),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S7297C12),25, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7297C12),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7297C11  : S7297C6 , S7297C12 {
  virtual void  v27(); // _ZN8S7297C113v27Ev
  virtual void  v28(); // _ZN8S7297C113v28Ev
  ~S7297C11(); // tgen
  S7297C11(); // tgen
};
//SIG(-1 S7297C11) C1{ BC2{ v3 v4 v5 v6 v7 v8 v9 v10 v11} BC3{ VBC2 v12 v13 v14 v15 FL} v1 v2}


void  S7297C11 ::v27(){vfunc_called(this, "_ZN8S7297C113v27Ev");}
void  S7297C11 ::v28(){vfunc_called(this, "_ZN8S7297C113v28Ev");}
S7297C11 ::~S7297C11(){ note_dtor("S7297C11", this);} // tgen
S7297C11 ::S7297C11(){ note_ctor("S7297C11", this);} // tgen

static void Test_S7297C11()
{
  extern Class_Descriptor cd_S7297C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S7297C11, buf);
    S7297C11 *dp, &lv = *(dp=new (buf) S7297C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S7297C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7297C11)");
    /*is_ambiguous_... S7297C11::S7297C6 */ AMB_check_base_class_offset(lv, (S7297C6*), 0, "S7297C11");
    check_base_class_offset(lv, (S7297C6*)(S7297C12*), ABISELECT(8,4), "S7297C11");
    check_base_class_offset(lv, (S7297C12*), ABISELECT(8,4), "S7297C11");
    test_class_info(&lv, &cd_S7297C11);
    dp->~S7297C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7297C11(Test_S7297C11, "S7297C11", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S7297C11C1Ev();
extern void _ZN8S7297C11D1Ev();
Name_Map name_map_S7297C11[] = {
  NSPAIR(_ZN8S7297C11C1Ev),
  NSPAIR(_ZN8S7297C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7297C6;
extern VTBL_ENTRY _ZTI7S7297C6[];
extern  VTBL_ENTRY _ZTV7S7297C6[];
extern Class_Descriptor cd_S7297C6;
extern VTBL_ENTRY _ZTI7S7297C6[];
extern  VTBL_ENTRY _ZTV7S7297C6[];
extern Class_Descriptor cd_S7297C12;
extern VTBL_ENTRY _ZTI8S7297C12[];
extern  VTBL_ENTRY _ZTV8S7297C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7297C12[];
static Base_Class bases_S7297C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7297C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7297C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7297C12,    ABISELECT(8,4), //bcp->offset
    14, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7297C11[];
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C113v27Ev();
extern void _ZN8S7297C113v28Ev();
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C123v23Ev();
extern void _ZN8S7297C123v24Ev();
extern void _ZN8S7297C123v25Ev();
extern void _ZN8S7297C123v26Ev();
static  VTBL_ENTRY vtc_S7297C11[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7297C11[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C113v27Ev,
  (VTBL_ENTRY)&_ZN8S7297C113v28Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7297C11[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v23Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v26Ev,
};
extern VTBL_ENTRY _ZTV8S7297C11[];
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C123v23Ev();
extern void _ZN8S7297C123v24Ev();
extern void _ZN8S7297C123v25Ev();
extern void _ZN8S7297C123v26Ev();
static  VTBL_ENTRY _tg__ZTV8S7297C12__8S7297C11[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7297C12[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v23Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v26Ev,
};
static  VTT_ENTRY vtt_S7297C11[] = {
  {&(_ZTV8S7297C11[3]),  3,39},
  {&(_tg__ZTV8S7297C12__8S7297C11[12]),  12,25},
  {&(_tg__ZTV8S7297C12__8S7297C11[12]),  12,25},
  {&(_ZTV8S7297C11[26]),  26,39},
  {&(_ZTV8S7297C11[26]),  26,39},
};
extern VTBL_ENTRY _ZTI8S7297C11[];
extern  VTBL_ENTRY _ZTV8S7297C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7297C11[];
Class_Descriptor cd_S7297C11 = {  "S7297C11", // class name
  bases_S7297C11, 3,
  &(vtc_S7297C11[0]), // expected_vtbl_contents
  &(vtt_S7297C11[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S7297C11),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7297C11),39, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7297C11),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7297C9  : S7297C10 , S7297C11 {
  virtual  ~S7297C9(); // _ZN7S7297C9D2Ev
  virtual void  v29(); // _ZN7S7297C93v29Ev
  virtual void  v30(); // _ZN7S7297C93v30Ev
  S7297C9(); // tgen
};
//SIG(-1 S7297C9) C1{ BC2{ v3} BC3{ BC4{ v4 v5 v6 v7 v8 v9 v10 v11 v12} BC5{ VBC4 v13 v14 v15 v16 FL} v17 v18} vd v1 v2}


 S7297C9 ::~S7297C9(){ note_dtor("S7297C9", this);}
void  S7297C9 ::v29(){vfunc_called(this, "_ZN7S7297C93v29Ev");}
void  S7297C9 ::v30(){vfunc_called(this, "_ZN7S7297C93v30Ev");}
S7297C9 ::S7297C9(){ note_ctor("S7297C9", this);} // tgen

static void Test_S7297C9()
{
  extern Class_Descriptor cd_S7297C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S7297C9, buf);
    S7297C9 *dp, &lv = *(dp=new (buf) S7297C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S7297C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7297C9)");
    check_base_class_offset(lv, (S7297C10*), 0, "S7297C9");
    /*is_ambiguous_... S7297C11::S7297C6 */ AMB_check_base_class_offset(lv, (S7297C6*)(S7297C11*), ABISELECT(8,4), "S7297C9");
    check_base_class_offset(lv, (S7297C6*)(S7297C12*)(S7297C11*), ABISELECT(16,8), "S7297C9");
    check_base_class_offset(lv, (S7297C12*)(S7297C11*), ABISELECT(16,8), "S7297C9");
    check_base_class_offset(lv, (S7297C11*), ABISELECT(8,4), "S7297C9");
    test_class_info(&lv, &cd_S7297C9);
    dp->~S7297C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7297C9(Test_S7297C9, "S7297C9", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S7297C9C1Ev();
extern void _ZN7S7297C9D2Ev();
Name_Map name_map_S7297C9[] = {
  NSPAIR(_ZN7S7297C9C1Ev),
  NSPAIR(_ZN7S7297C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7297C10;
extern VTBL_ENTRY _ZTI8S7297C10[];
extern  VTBL_ENTRY _ZTV8S7297C10[];
extern Class_Descriptor cd_S7297C6;
extern VTBL_ENTRY _ZTI7S7297C6[];
extern  VTBL_ENTRY _ZTV7S7297C6[];
extern Class_Descriptor cd_S7297C6;
extern VTBL_ENTRY _ZTI7S7297C6[];
extern  VTBL_ENTRY _ZTV7S7297C6[];
extern Class_Descriptor cd_S7297C12;
extern VTBL_ENTRY _ZTI8S7297C12[];
extern  VTBL_ENTRY _ZTV8S7297C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7297C12[];
extern Class_Descriptor cd_S7297C11;
extern VTBL_ENTRY _ZTI8S7297C11[];
extern  VTBL_ENTRY _ZTV8S7297C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7297C11[];
static Base_Class bases_S7297C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7297C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7297C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7297C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7297C12,    ABISELECT(16,8), //bcp->offset
    22, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7297C11,    ABISELECT(8,4), //bcp->offset
    8, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7297C9[];
extern void _ZN8S7297C103v22Ev();
extern void _ZN7S7297C9D1Ev();
extern void _ZN7S7297C9D0Ev();
extern void _ZN7S7297C93v29Ev();
extern void _ZN7S7297C93v30Ev();
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C113v27Ev();
extern void _ZN8S7297C113v28Ev();
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C123v23Ev();
extern void _ZN8S7297C123v24Ev();
extern void _ZN8S7297C123v25Ev();
extern void _ZN8S7297C123v26Ev();
static  VTBL_ENTRY vtc_S7297C9[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7297C9[0]),
  (VTBL_ENTRY)&_ZN8S7297C103v22Ev,
  (VTBL_ENTRY)&_ZN7S7297C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7297C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7297C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7297C93v30Ev,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7297C9[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C113v27Ev,
  (VTBL_ENTRY)&_ZN8S7297C113v28Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7297C9[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v23Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v26Ev,
};
extern VTBL_ENTRY _ZTV7S7297C9[];
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C113v27Ev();
extern void _ZN8S7297C113v28Ev();
static  VTBL_ENTRY _tg__ZTV8S7297C11__7S7297C9[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7297C11[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C113v27Ev,
  (VTBL_ENTRY)&_ZN8S7297C113v28Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C123v23Ev();
extern void _ZN8S7297C123v24Ev();
extern void _ZN8S7297C123v25Ev();
extern void _ZN8S7297C123v26Ev();
static  VTBL_ENTRY _tg__ZTV8S7297C128S7297C11__7S7297C9[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7297C12[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v23Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v26Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C123v23Ev();
extern void _ZN8S7297C123v24Ev();
extern void _ZN8S7297C123v25Ev();
extern void _ZN8S7297C123v26Ev();
static  VTBL_ENTRY _tg__ZTV8S7297C12__8S7297C11__7S7297C9[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7297C11[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v23Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v26Ev,
};
static  VTT_ENTRY vtt_S7297C9[] = {
  {&(_ZTV7S7297C9[3]),  3,47},
  {&(_tg__ZTV8S7297C11__7S7297C9[3]),  3,14},
  {&(_tg__ZTV8S7297C128S7297C11__7S7297C9[12]),  12,25},
  {&(_tg__ZTV8S7297C128S7297C11__7S7297C9[12]),  12,25},
  {&(_tg__ZTV8S7297C12__8S7297C11__7S7297C9[12]),  12,25},
  {&(_tg__ZTV8S7297C12__8S7297C11__7S7297C9[12]),  12,25},
  {&(_ZTV7S7297C9[11]),  11,47},
  {&(_ZTV7S7297C9[34]),  34,47},
  {&(_ZTV7S7297C9[34]),  34,47},
};
extern VTBL_ENTRY _ZTI7S7297C9[];
extern  VTBL_ENTRY _ZTV7S7297C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7297C9[];
Class_Descriptor cd_S7297C9 = {  "S7297C9", // class name
  bases_S7297C9, 5,
  &(vtc_S7297C9[0]), // expected_vtbl_contents
  &(vtt_S7297C9[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S7297C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7297C9),47, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7297C9),9, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7297C13  {
  __tsi64 s7297c13f0;
  int s7297c13f1;
  virtual  ~S7297C13(); // _ZN8S7297C13D1Ev
  virtual void  v31(); // _ZN8S7297C133v31Ev
  virtual void  v32(); // _ZN8S7297C133v32Ev
  S7297C13(); // tgen
};
//SIG(-1 S7297C13) C1{ vd v1 v2 FL Fi}


 S7297C13 ::~S7297C13(){ note_dtor("S7297C13", this);}
void  S7297C13 ::v31(){vfunc_called(this, "_ZN8S7297C133v31Ev");}
void  S7297C13 ::v32(){vfunc_called(this, "_ZN8S7297C133v32Ev");}
S7297C13 ::S7297C13(){ note_ctor("S7297C13", this);} // tgen

static void Test_S7297C13()
{
  extern Class_Descriptor cd_S7297C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S7297C13, buf);
    S7297C13 *dp, &lv = *(dp=new (buf) S7297C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S7297C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7297C13)");
    check_field_offset(lv, s7297c13f0, ABISELECT(8,4), "S7297C13.s7297c13f0");
    check_field_offset(lv, s7297c13f1, ABISELECT(16,12), "S7297C13.s7297c13f1");
    test_class_info(&lv, &cd_S7297C13);
    dp->~S7297C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7297C13(Test_S7297C13, "S7297C13", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S7297C13C1Ev();
extern void _ZN8S7297C13D1Ev();
Name_Map name_map_S7297C13[] = {
  NSPAIR(_ZN8S7297C13C1Ev),
  NSPAIR(_ZN8S7297C13D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S7297C13[];
extern void _ZN8S7297C13D1Ev();
extern void _ZN8S7297C13D0Ev();
extern void _ZN8S7297C133v31Ev();
extern void _ZN8S7297C133v32Ev();
static  VTBL_ENTRY vtc_S7297C13[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S7297C13[0]),
  (VTBL_ENTRY)&_ZN8S7297C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7297C13D0Ev,
  (VTBL_ENTRY)&_ZN8S7297C133v31Ev,
  (VTBL_ENTRY)&_ZN8S7297C133v32Ev,
};
extern VTBL_ENTRY _ZTI8S7297C13[];
extern  VTBL_ENTRY _ZTV8S7297C13[];
Class_Descriptor cd_S7297C13 = {  "S7297C13", // class name
  0,0,//no base classes
  &(vtc_S7297C13[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S7297C13),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S7297C13),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7297C8  : S7297C9 , virtual S7297C13 {
  int s7297c8f0;
  ::S7297C10 s7297c8f1;
  virtual  ~S7297C8(); // _ZN7S7297C8D2Ev
  virtual void  v33(); // _ZN7S7297C83v33Ev
  virtual void  v34(); // _ZN7S7297C83v34Ev
  virtual void  v35(); // _ZN7S7297C83v35Ev
  virtual void  v36(); // _ZN7S7297C83v36Ev
  virtual void  v37(); // _ZN7S7297C83v37Ev
  S7297C8(); // tgen
};
//SIG(-1 S7297C8) C1{ BC2{ BC3{ v6} BC4{ BC5{ v7 v8 v9 v10 v11 v12 v13 v14 v15} BC6{ VBC5 v16 v17 v18 v19 FL} v20 v21} vd v22 v23} VBC7{ vd v24 v25 FL Fi} vd v1 v2 v3 v4 v5 Fi FC3}


 S7297C8 ::~S7297C8(){ note_dtor("S7297C8", this);}
void  S7297C8 ::v33(){vfunc_called(this, "_ZN7S7297C83v33Ev");}
void  S7297C8 ::v34(){vfunc_called(this, "_ZN7S7297C83v34Ev");}
void  S7297C8 ::v35(){vfunc_called(this, "_ZN7S7297C83v35Ev");}
void  S7297C8 ::v36(){vfunc_called(this, "_ZN7S7297C83v36Ev");}
void  S7297C8 ::v37(){vfunc_called(this, "_ZN7S7297C83v37Ev");}
S7297C8 ::S7297C8(){ note_ctor("S7297C8", this);} // tgen

static void Test_S7297C8()
{
  extern Class_Descriptor cd_S7297C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,12)];
    init_test(&cd_S7297C8, buf);
    S7297C8 *dp, &lv = *(dp=new (buf) S7297C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S7297C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7297C8)");
    check_base_class_offset(lv, (S7297C10*)(S7297C9*), 0, "S7297C8");
    /*is_ambiguous_... S7297C11::S7297C6 */ AMB_check_base_class_offset(lv, (S7297C6*)(S7297C11*)(S7297C9*), ABISELECT(8,4), "S7297C8");
    check_base_class_offset(lv, (S7297C6*)(S7297C12*)(S7297C11*)(S7297C9*), ABISELECT(16,8), "S7297C8");
    check_base_class_offset(lv, (S7297C12*)(S7297C11*)(S7297C9*), ABISELECT(16,8), "S7297C8");
    check_base_class_offset(lv, (S7297C11*)(S7297C9*), ABISELECT(8,4), "S7297C8");
    check_base_class_offset(lv, (S7297C9*), 0, "S7297C8");
    check_base_class_offset(lv, (S7297C13*), ABISELECT(48,28), "S7297C8");
    check_field_offset(lv, s7297c8f0, ABISELECT(32,20), "S7297C8.s7297c8f0");
    check_field_offset(lv, s7297c8f1, ABISELECT(40,24), "S7297C8.s7297c8f1");
    test_class_info(&lv, &cd_S7297C8);
    dp->~S7297C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7297C8(Test_S7297C8, "S7297C8", ABISELECT(72,44));

#else // __cplusplus

extern void _ZN7S7297C8C1Ev();
extern void _ZN7S7297C8D2Ev();
Name_Map name_map_S7297C8[] = {
  NSPAIR(_ZN7S7297C8C1Ev),
  NSPAIR(_ZN7S7297C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7297C10;
extern VTBL_ENTRY _ZTI8S7297C10[];
extern  VTBL_ENTRY _ZTV8S7297C10[];
extern Class_Descriptor cd_S7297C6;
extern VTBL_ENTRY _ZTI7S7297C6[];
extern  VTBL_ENTRY _ZTV7S7297C6[];
extern Class_Descriptor cd_S7297C6;
extern VTBL_ENTRY _ZTI7S7297C6[];
extern  VTBL_ENTRY _ZTV7S7297C6[];
extern Class_Descriptor cd_S7297C12;
extern VTBL_ENTRY _ZTI8S7297C12[];
extern  VTBL_ENTRY _ZTV8S7297C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7297C12[];
extern Class_Descriptor cd_S7297C11;
extern VTBL_ENTRY _ZTI8S7297C11[];
extern  VTBL_ENTRY _ZTV8S7297C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7297C11[];
extern Class_Descriptor cd_S7297C9;
extern VTBL_ENTRY _ZTI7S7297C9[];
extern  VTBL_ENTRY _ZTV7S7297C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7297C9[];
extern Class_Descriptor cd_S7297C13;
extern VTBL_ENTRY _ZTI8S7297C13[];
extern  VTBL_ENTRY _ZTV8S7297C13[];
static Base_Class bases_S7297C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7297C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7297C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7297C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7297C12,    ABISELECT(16,8), //bcp->offset
    28, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7297C11,    ABISELECT(8,4), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7297C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7297C13,    ABISELECT(48,28), //bcp->offset
    53, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7297C8[];
extern void _ZN8S7297C103v22Ev();
extern void _ZN7S7297C8D1Ev();
extern void _ZN7S7297C8D0Ev();
extern void _ZN7S7297C93v29Ev();
extern void _ZN7S7297C93v30Ev();
extern void _ZN7S7297C83v33Ev();
extern void _ZN7S7297C83v34Ev();
extern void _ZN7S7297C83v35Ev();
extern void _ZN7S7297C83v36Ev();
extern void _ZN7S7297C83v37Ev();
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C113v27Ev();
extern void _ZN8S7297C113v28Ev();
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C123v23Ev();
extern void _ZN8S7297C123v24Ev();
extern void _ZN8S7297C123v25Ev();
extern void _ZN8S7297C123v26Ev();
extern void ABISELECT(_ZTv0_n24_N7S7297C8D1Ev,_ZTv0_n12_N7S7297C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S7297C8D1Ev,_ZThn28_N7S7297C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7297C8D0Ev,_ZTv0_n12_N7S7297C8D0Ev)();
extern void ABISELECT(_ZThn48_N7S7297C8D0Ev,_ZThn28_N7S7297C8D0Ev)() __attribute__((weak));
extern void _ZN8S7297C133v31Ev();
extern void _ZN8S7297C133v32Ev();
static  VTBL_ENTRY vtc_S7297C8[] = {
  ABISELECT(48,28),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7297C8[0]),
  (VTBL_ENTRY)&_ZN8S7297C103v22Ev,
  (VTBL_ENTRY)&_ZN7S7297C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7297C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7297C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7297C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v33Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v34Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v35Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v36Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v37Ev,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7297C8[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C113v27Ev,
  (VTBL_ENTRY)&_ZN8S7297C113v28Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7297C8[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v23Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v26Ev,
  0,
  0,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7297C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7297C8D1Ev,_ZTv0_n12_N7S7297C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7297C8D0Ev,_ZTv0_n12_N7S7297C8D0Ev),
  (VTBL_ENTRY)&_ZN8S7297C133v31Ev,
  (VTBL_ENTRY)&_ZN8S7297C133v32Ev,
};
extern VTBL_ENTRY _ZTV7S7297C8[];
extern void _ZN8S7297C103v22Ev();
extern void _ZN7S7297C9D1Ev();
extern void _ZN7S7297C9D0Ev();
extern void _ZN7S7297C93v29Ev();
extern void _ZN7S7297C93v30Ev();
static  VTBL_ENTRY _tg__ZTV7S7297C9__7S7297C8[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7297C9[0]),
  (VTBL_ENTRY)&_ZN8S7297C103v22Ev,
  (VTBL_ENTRY)&_ZN7S7297C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7297C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7297C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7297C93v30Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C113v27Ev();
extern void _ZN8S7297C113v28Ev();
static  VTBL_ENTRY _tg__ZTV8S7297C117S7297C9__7S7297C8[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7297C11[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C113v27Ev,
  (VTBL_ENTRY)&_ZN8S7297C113v28Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C123v23Ev();
extern void _ZN8S7297C123v24Ev();
extern void _ZN8S7297C123v25Ev();
extern void _ZN8S7297C123v26Ev();
static  VTBL_ENTRY _tg__ZTV8S7297C128S7297C117S7297C9__7S7297C8[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7297C12[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v23Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v26Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C123v23Ev();
extern void _ZN8S7297C123v24Ev();
extern void _ZN8S7297C123v25Ev();
extern void _ZN8S7297C123v26Ev();
static  VTBL_ENTRY _tg__ZTV8S7297C12__8S7297C117S7297C9__7S7297C8[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7297C11[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v23Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v26Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C113v27Ev();
extern void _ZN8S7297C113v28Ev();
static  VTBL_ENTRY _tg__ZTV8S7297C11__7S7297C9__7S7297C8[] = {
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7297C9[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C113v27Ev,
  (VTBL_ENTRY)&_ZN8S7297C113v28Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C123v23Ev();
extern void _ZN8S7297C123v24Ev();
extern void _ZN8S7297C123v25Ev();
extern void _ZN8S7297C123v26Ev();
static  VTBL_ENTRY _tg__ZTV8S7297C128S7297C11__7S7297C9__7S7297C8[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7297C9[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v23Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v26Ev,
};
static  VTT_ENTRY vtt_S7297C8[] = {
  {&(_ZTV7S7297C8[4]),  4,62},
  {&(_tg__ZTV7S7297C9__7S7297C8[3]),  3,8},
  {&(_tg__ZTV8S7297C117S7297C9__7S7297C8[3]),  3,14},
  {&(_tg__ZTV8S7297C128S7297C117S7297C9__7S7297C8[12]),  12,25},
  {&(_tg__ZTV8S7297C128S7297C117S7297C9__7S7297C8[12]),  12,25},
  {&(_tg__ZTV8S7297C12__8S7297C117S7297C9__7S7297C8[12]),  12,25},
  {&(_tg__ZTV8S7297C12__8S7297C117S7297C9__7S7297C8[12]),  12,25},
  {&(_tg__ZTV8S7297C11__7S7297C9__7S7297C8[3]),  3,14},
  {&(_tg__ZTV8S7297C128S7297C11__7S7297C9__7S7297C8[12]),  12,25},
  {&(_tg__ZTV8S7297C128S7297C11__7S7297C9__7S7297C8[12]),  12,25},
  {&(_ZTV7S7297C8[17]),  17,62},
  {&(_ZTV7S7297C8[40]),  40,62},
  {&(_ZTV7S7297C8[40]),  40,62},
  {&(_ZTV7S7297C8[58]),  58,62},
};
extern VTBL_ENTRY _ZTI7S7297C8[];
extern  VTBL_ENTRY _ZTV7S7297C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7297C8[];
static VTBL_ENTRY alt_thunk_names34[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7297C8D0Ev,_ZTv0_n12_N7S7297C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7297C8D0Ev,_ZThn28_N7S7297C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7297C8D1Ev,_ZTv0_n12_N7S7297C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7297C8D1Ev,_ZThn28_N7S7297C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7297C8 = {  "S7297C8", // class name
  bases_S7297C8, 7,
  &(vtc_S7297C8[0]), // expected_vtbl_contents
  &(vtt_S7297C8[0]), // expected_vtt_contents
  ABISELECT(72,44), // object size
  NSPAIRA(_ZTI7S7297C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7297C8),62, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7297C8),14, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names34,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7297C7  : virtual S7297C6 , S7297C8 {
  ::S5266C29 s7297c7f0;
  virtual  ~S7297C7(); // _ZN7S7297C7D2Ev
  virtual void  v38(); // _ZN7S7297C73v38Ev
  virtual void  v39(); // _ZN7S7297C73v39Ev
  S7297C7(); // tgen
};
//SIG(-1 S7297C7) C1{ VBC2{ v3 v4 v5 v6 v7 v8 v9 v10 v11} BC3{ BC4{ BC5{ v12} BC6{ BC2 BC7{ VBC2 v13 v14 v15 v16 FL} v17 v18} vd v19 v20} VBC8{ vd v21 v22 FL Fi} vd v23 v24 v25 v26 v27 Fi FC5} vd v1 v2 FC9{ m}}


 S7297C7 ::~S7297C7(){ note_dtor("S7297C7", this);}
void  S7297C7 ::v38(){vfunc_called(this, "_ZN7S7297C73v38Ev");}
void  S7297C7 ::v39(){vfunc_called(this, "_ZN7S7297C73v39Ev");}
S7297C7 ::S7297C7(){ note_ctor("S7297C7", this);} // tgen

static void Test_S7297C7()
{
  extern Class_Descriptor cd_S7297C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,13)];
    init_test(&cd_S7297C7, buf);
    S7297C7 *dp, &lv = *(dp=new (buf) S7297C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,48), "sizeof(S7297C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7297C7)");
    /*is_ambiguous_... S7297C7::S7297C6 */ AMB_check_base_class_offset(lv, (S7297C6*), ABISELECT(16,8), "S7297C7");
    check_base_class_offset(lv, (S7297C6*)(S7297C12*)(S7297C11*)(S7297C9*)(S7297C8*), ABISELECT(16,8), "S7297C7");
    check_base_class_offset(lv, (S7297C10*)(S7297C9*)(S7297C8*), 0, "S7297C7");
    /*is_ambiguous_... S7297C11::S7297C6 */ AMB_check_base_class_offset(lv, (S7297C6*)(S7297C11*)(S7297C9*)(S7297C8*), ABISELECT(8,4), "S7297C7");
    check_base_class_offset(lv, (S7297C12*)(S7297C11*)(S7297C9*)(S7297C8*), ABISELECT(16,8), "S7297C7");
    check_base_class_offset(lv, (S7297C11*)(S7297C9*)(S7297C8*), ABISELECT(8,4), "S7297C7");
    check_base_class_offset(lv, (S7297C9*)(S7297C8*), 0, "S7297C7");
    check_base_class_offset(lv, (S7297C13*)(S7297C8*), ABISELECT(56,32), "S7297C7");
    check_base_class_offset(lv, (S7297C8*), 0, "S7297C7");
    check_field_offset(lv, s7297c7f0, ABISELECT(48,28), "S7297C7.s7297c7f0");
    test_class_info(&lv, &cd_S7297C7);
    dp->~S7297C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7297C7(Test_S7297C7, "S7297C7", ABISELECT(80,48));

#else // __cplusplus

extern void _ZN7S7297C7C1Ev();
extern void _ZN7S7297C7D2Ev();
Name_Map name_map_S7297C7[] = {
  NSPAIR(_ZN7S7297C7C1Ev),
  NSPAIR(_ZN7S7297C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7297C6;
extern VTBL_ENTRY _ZTI7S7297C6[];
extern  VTBL_ENTRY _ZTV7S7297C6[];
extern Class_Descriptor cd_S7297C10;
extern VTBL_ENTRY _ZTI8S7297C10[];
extern  VTBL_ENTRY _ZTV8S7297C10[];
extern Class_Descriptor cd_S7297C6;
extern VTBL_ENTRY _ZTI7S7297C6[];
extern  VTBL_ENTRY _ZTV7S7297C6[];
extern Class_Descriptor cd_S7297C12;
extern VTBL_ENTRY _ZTI8S7297C12[];
extern  VTBL_ENTRY _ZTV8S7297C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7297C12[];
extern Class_Descriptor cd_S7297C11;
extern VTBL_ENTRY _ZTI8S7297C11[];
extern  VTBL_ENTRY _ZTV8S7297C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7297C11[];
extern Class_Descriptor cd_S7297C9;
extern VTBL_ENTRY _ZTI7S7297C9[];
extern  VTBL_ENTRY _ZTV7S7297C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7297C9[];
extern Class_Descriptor cd_S7297C13;
extern VTBL_ENTRY _ZTI8S7297C13[];
extern  VTBL_ENTRY _ZTV8S7297C13[];
extern Class_Descriptor cd_S7297C8;
extern VTBL_ENTRY _ZTI7S7297C8[];
extern  VTBL_ENTRY _ZTV7S7297C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7297C8[];
static Base_Class bases_S7297C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7297C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7297C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7297C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7297C12,    ABISELECT(16,8), //bcp->offset
    30, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7297C11,    ABISELECT(8,4), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7297C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7297C13,    ABISELECT(56,32), //bcp->offset
    55, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7297C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7297C7[];
extern void _ZN8S7297C103v22Ev();
extern void _ZN7S7297C7D1Ev();
extern void _ZN7S7297C7D0Ev();
extern void _ZN7S7297C93v29Ev();
extern void _ZN7S7297C93v30Ev();
extern void _ZN7S7297C83v33Ev();
extern void _ZN7S7297C83v34Ev();
extern void _ZN7S7297C83v35Ev();
extern void _ZN7S7297C83v36Ev();
extern void _ZN7S7297C83v37Ev();
extern void _ZN7S7297C73v38Ev();
extern void _ZN7S7297C73v39Ev();
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C113v27Ev();
extern void _ZN8S7297C113v28Ev();
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C123v23Ev();
extern void _ZN8S7297C123v24Ev();
extern void _ZN8S7297C123v25Ev();
extern void _ZN8S7297C123v26Ev();
extern void ABISELECT(_ZTv0_n24_N7S7297C7D1Ev,_ZTv0_n12_N7S7297C7D1Ev)();
extern void ABISELECT(_ZThn56_N7S7297C7D1Ev,_ZThn32_N7S7297C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7297C7D0Ev,_ZTv0_n12_N7S7297C7D0Ev)();
extern void ABISELECT(_ZThn56_N7S7297C7D0Ev,_ZThn32_N7S7297C7D0Ev)() __attribute__((weak));
extern void _ZN8S7297C133v31Ev();
extern void _ZN8S7297C133v32Ev();
static  VTBL_ENTRY vtc_S7297C7[] = {
  ABISELECT(56,32),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7297C7[0]),
  (VTBL_ENTRY)&_ZN8S7297C103v22Ev,
  (VTBL_ENTRY)&_ZN7S7297C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7297C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7297C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7297C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v33Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v34Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v35Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v36Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v37Ev,
  (VTBL_ENTRY)&_ZN7S7297C73v38Ev,
  (VTBL_ENTRY)&_ZN7S7297C73v39Ev,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7297C7[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C113v27Ev,
  (VTBL_ENTRY)&_ZN8S7297C113v28Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7297C7[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v23Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v26Ev,
  0,
  0,
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7297C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7297C7D1Ev,_ZTv0_n12_N7S7297C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7297C7D0Ev,_ZTv0_n12_N7S7297C7D0Ev),
  (VTBL_ENTRY)&_ZN8S7297C133v31Ev,
  (VTBL_ENTRY)&_ZN8S7297C133v32Ev,
};
extern VTBL_ENTRY _ZTV7S7297C7[];
extern void _ZN8S7297C103v22Ev();
extern void _ZN7S7297C8D1Ev();
extern void _ZN7S7297C8D0Ev();
extern void _ZN7S7297C93v29Ev();
extern void _ZN7S7297C93v30Ev();
extern void _ZN7S7297C83v33Ev();
extern void _ZN7S7297C83v34Ev();
extern void _ZN7S7297C83v35Ev();
extern void _ZN7S7297C83v36Ev();
extern void _ZN7S7297C83v37Ev();
static  VTBL_ENTRY _tg__ZTV7S7297C8__7S7297C7[] = {
  ABISELECT(56,32),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7297C8[0]),
  (VTBL_ENTRY)&_ZN8S7297C103v22Ev,
  (VTBL_ENTRY)&_ZN7S7297C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7297C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7297C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7297C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v33Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v34Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v35Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v36Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v37Ev,
};
extern void _ZN8S7297C103v22Ev();
extern void _ZN7S7297C9D1Ev();
extern void _ZN7S7297C9D0Ev();
extern void _ZN7S7297C93v29Ev();
extern void _ZN7S7297C93v30Ev();
static  VTBL_ENTRY _tg__ZTV7S7297C97S7297C8__7S7297C7[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7297C9[0]),
  (VTBL_ENTRY)&_ZN8S7297C103v22Ev,
  (VTBL_ENTRY)&_ZN7S7297C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7297C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7297C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7297C93v30Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C113v27Ev();
extern void _ZN8S7297C113v28Ev();
static  VTBL_ENTRY _tg__ZTV8S7297C117S7297C97S7297C8__7S7297C7[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7297C11[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C113v27Ev,
  (VTBL_ENTRY)&_ZN8S7297C113v28Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C123v23Ev();
extern void _ZN8S7297C123v24Ev();
extern void _ZN8S7297C123v25Ev();
extern void _ZN8S7297C123v26Ev();
static  VTBL_ENTRY _tg__ZTV8S7297C128S7297C117S7297C97S7297C8__7S7297C7[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7297C12[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v23Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v26Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C123v23Ev();
extern void _ZN8S7297C123v24Ev();
extern void _ZN8S7297C123v25Ev();
extern void _ZN8S7297C123v26Ev();
static  VTBL_ENTRY _tg__ZTV8S7297C12__8S7297C117S7297C97S7297C8__7S7297C7[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7297C11[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v23Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v26Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C113v27Ev();
extern void _ZN8S7297C113v28Ev();
static  VTBL_ENTRY _tg__ZTV8S7297C11__7S7297C97S7297C8__7S7297C7[] = {
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7297C9[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C113v27Ev,
  (VTBL_ENTRY)&_ZN8S7297C113v28Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C123v23Ev();
extern void _ZN8S7297C123v24Ev();
extern void _ZN8S7297C123v25Ev();
extern void _ZN8S7297C123v26Ev();
static  VTBL_ENTRY _tg__ZTV8S7297C128S7297C11__7S7297C97S7297C8__7S7297C7[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7297C9[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v23Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v26Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C113v27Ev();
extern void _ZN8S7297C113v28Ev();
static  VTBL_ENTRY _tg__ZTV8S7297C117S7297C9__7S7297C8__7S7297C7[] = {
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7297C8[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C113v27Ev,
  (VTBL_ENTRY)&_ZN8S7297C113v28Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C123v23Ev();
extern void _ZN8S7297C123v24Ev();
extern void _ZN8S7297C123v25Ev();
extern void _ZN8S7297C123v26Ev();
static  VTBL_ENTRY _tg__ZTV8S7297C128S7297C117S7297C9__7S7297C8__7S7297C7[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7297C8[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v23Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v26Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7297C8D1Ev,_ZTv0_n12_N7S7297C8D1Ev)();
extern void ABISELECT(_ZThn56_N7S7297C8D1Ev,_ZThn32_N7S7297C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7297C8D0Ev,_ZTv0_n12_N7S7297C8D0Ev)();
extern void ABISELECT(_ZThn56_N7S7297C8D0Ev,_ZThn32_N7S7297C8D0Ev)() __attribute__((weak));
extern void _ZN8S7297C133v31Ev();
extern void _ZN8S7297C133v32Ev();
static  VTBL_ENTRY _tg__ZTV8S7297C13__7S7297C8__7S7297C7[] = {
  0,
  0,
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7297C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7297C8D1Ev,_ZTv0_n12_N7S7297C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7297C8D0Ev,_ZTv0_n12_N7S7297C8D0Ev),
  (VTBL_ENTRY)&_ZN8S7297C133v31Ev,
  (VTBL_ENTRY)&_ZN8S7297C133v32Ev,
};
static  VTT_ENTRY vtt_S7297C7[] = {
  {&(_ZTV7S7297C7[4]),  4,64},
  {&(_tg__ZTV7S7297C8__7S7297C7[4]),  4,14},
  {&(_tg__ZTV7S7297C97S7297C8__7S7297C7[3]),  3,8},
  {&(_tg__ZTV8S7297C117S7297C97S7297C8__7S7297C7[3]),  3,14},
  {&(_tg__ZTV8S7297C128S7297C117S7297C97S7297C8__7S7297C7[12]),  12,25},
  {&(_tg__ZTV8S7297C128S7297C117S7297C97S7297C8__7S7297C7[12]),  12,25},
  {&(_tg__ZTV8S7297C12__8S7297C117S7297C97S7297C8__7S7297C7[12]),  12,25},
  {&(_tg__ZTV8S7297C12__8S7297C117S7297C97S7297C8__7S7297C7[12]),  12,25},
  {&(_tg__ZTV8S7297C11__7S7297C97S7297C8__7S7297C7[3]),  3,14},
  {&(_tg__ZTV8S7297C128S7297C11__7S7297C97S7297C8__7S7297C7[12]),  12,25},
  {&(_tg__ZTV8S7297C128S7297C11__7S7297C97S7297C8__7S7297C7[12]),  12,25},
  {&(_tg__ZTV8S7297C117S7297C9__7S7297C8__7S7297C7[3]),  3,14},
  {&(_tg__ZTV8S7297C128S7297C117S7297C9__7S7297C8__7S7297C7[12]),  12,25},
  {&(_tg__ZTV8S7297C128S7297C117S7297C9__7S7297C8__7S7297C7[12]),  12,25},
  {&(_tg__ZTV8S7297C13__7S7297C8__7S7297C7[5]),  5,9},
  {&(_ZTV7S7297C7[42]),  42,64},
  {&(_ZTV7S7297C7[19]),  19,64},
  {&(_ZTV7S7297C7[42]),  42,64},
  {&(_ZTV7S7297C7[60]),  60,64},
};
extern VTBL_ENTRY _ZTI7S7297C7[];
extern  VTBL_ENTRY _ZTV7S7297C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7297C7[];
static VTBL_ENTRY alt_thunk_names35[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7297C8D0Ev,_ZTv0_n12_N7S7297C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7297C8D0Ev,_ZThn32_N7S7297C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7297C8D1Ev,_ZTv0_n12_N7S7297C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7297C8D1Ev,_ZThn32_N7S7297C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7297C7D0Ev,_ZTv0_n12_N7S7297C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7297C7D0Ev,_ZThn32_N7S7297C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7297C7D1Ev,_ZTv0_n12_N7S7297C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7297C7D1Ev,_ZThn32_N7S7297C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7297C7 = {  "S7297C7", // class name
  bases_S7297C7, 8,
  &(vtc_S7297C7[0]), // expected_vtbl_contents
  &(vtt_S7297C7[0]), // expected_vtt_contents
  ABISELECT(80,48), // object size
  NSPAIRA(_ZTI7S7297C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7297C7),64, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7297C7),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names35,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7297C2  : virtual S7297C3 , virtual S7297C7 {
  char s7297c2f0;
  virtual void  v40(); // _ZN7S7297C23v40Ev
  virtual void  v41(); // _ZN7S7297C23v41Ev
  virtual void  v42(); // _ZN7S7297C23v42Ev
  virtual void  v43(); // _ZN7S7297C23v43Ev
  virtual void  v44(); // _ZN7S7297C23v44Ev
  virtual void  v45(); // _ZN7S7297C23v45Ev
  ~S7297C2(); // tgen
  S7297C2(); // tgen
};
//SIG(-1 S7297C2) C1{ VBC2{ BC3{ vd v7 v8} BC4{ VBC5{ v9 v10 v11 v12 v13 v14 v15 v16 v17} v18 v19 v20 Fp FD Fi} vd v21 v22 v23 v24 v25 v26 v27 Fp} VBC6{ VBC5 BC7{ BC8{ BC9{ v28} BC10{ BC5 BC11{ VBC5 v29 v30 v31 v32 FL} v33 v34} vd v35 v36} VBC12{ vd v37 v38 FL Fi} vd v39 v40 v41 v42 v43 Fi FC9} vd v44 v45 FC13{ m}} v1 v2 v3 v4 v5 v6 Fc}


void  S7297C2 ::v40(){vfunc_called(this, "_ZN7S7297C23v40Ev");}
void  S7297C2 ::v41(){vfunc_called(this, "_ZN7S7297C23v41Ev");}
void  S7297C2 ::v42(){vfunc_called(this, "_ZN7S7297C23v42Ev");}
void  S7297C2 ::v43(){vfunc_called(this, "_ZN7S7297C23v43Ev");}
void  S7297C2 ::v44(){vfunc_called(this, "_ZN7S7297C23v44Ev");}
void  S7297C2 ::v45(){vfunc_called(this, "_ZN7S7297C23v45Ev");}
S7297C2 ::~S7297C2(){ note_dtor("S7297C2", this);} // tgen
S7297C2 ::S7297C2(){ note_ctor("S7297C2", this);} // tgen

static void Test_S7297C2()
{
  extern Class_Descriptor cd_S7297C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,23)];
    init_test(&cd_S7297C2, buf);
    S7297C2 *dp, &lv = *(dp=new (buf) S7297C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,88), "sizeof(S7297C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7297C2)");
    check_base_class_offset(lv, (S7297C4_nt*)(S7297C3*), ABISELECT(16,8), "S7297C2");
    check_base_class_offset(lv, (S7297C6*)(S7297C5*)(S7297C3*), 0, "S7297C2");
    /*is_ambiguous_... S7297C7::S7297C6 */ AMB_check_base_class_offset(lv, (S7297C6*)(S7297C7*), 0, "S7297C2");
    check_base_class_offset(lv, (S7297C6*)(S7297C12*)(S7297C11*)(S7297C9*)(S7297C8*)(S7297C7*), 0, "S7297C2");
    check_base_class_offset(lv, (S7297C5*)(S7297C3*), ABISELECT(32,12), "S7297C2");
    check_base_class_offset(lv, (S7297C3*), ABISELECT(16,8), "S7297C2");
    check_base_class_offset(lv, (S7297C10*)(S7297C9*)(S7297C8*)(S7297C7*), ABISELECT(80,40), "S7297C2");
    /*is_ambiguous_... S7297C11::S7297C6 */ AMB_check_base_class_offset(lv, (S7297C6*)(S7297C11*)(S7297C9*)(S7297C8*)(S7297C7*), ABISELECT(88,44), "S7297C2");
    check_base_class_offset(lv, (S7297C12*)(S7297C11*)(S7297C9*)(S7297C8*)(S7297C7*), ABISELECT(96,48), "S7297C2");
    check_base_class_offset(lv, (S7297C11*)(S7297C9*)(S7297C8*)(S7297C7*), ABISELECT(88,44), "S7297C2");
    check_base_class_offset(lv, (S7297C9*)(S7297C8*)(S7297C7*), ABISELECT(80,40), "S7297C2");
    check_base_class_offset(lv, (S7297C13*)(S7297C8*)(S7297C7*), ABISELECT(136,72), "S7297C2");
    check_base_class_offset(lv, (S7297C8*)(S7297C7*), ABISELECT(80,40), "S7297C2");
    check_base_class_offset(lv, (S7297C7*), ABISELECT(80,40), "S7297C2");
    check_field_offset(lv, s7297c2f0, ABISELECT(8,4), "S7297C2.s7297c2f0");
    test_class_info(&lv, &cd_S7297C2);
    dp->~S7297C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7297C2(Test_S7297C2, "S7297C2", ABISELECT(160,88));

#else // __cplusplus

extern void _ZN7S7297C2C1Ev();
extern void _ZN7S7297C2D1Ev();
Name_Map name_map_S7297C2[] = {
  NSPAIR(_ZN7S7297C2C1Ev),
  NSPAIR(_ZN7S7297C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7297C4_nt;
extern VTBL_ENTRY _ZTI10S7297C4_nt[];
extern  VTBL_ENTRY _ZTV10S7297C4_nt[];
extern Class_Descriptor cd_S7297C6;
extern VTBL_ENTRY _ZTI7S7297C6[];
extern  VTBL_ENTRY _ZTV7S7297C6[];
extern Class_Descriptor cd_S7297C5;
extern VTBL_ENTRY _ZTI7S7297C5[];
extern  VTBL_ENTRY _ZTV7S7297C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7297C5[];
extern Class_Descriptor cd_S7297C3;
extern VTBL_ENTRY _ZTI7S7297C3[];
extern  VTBL_ENTRY _ZTV7S7297C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7297C3[];
extern Class_Descriptor cd_S7297C10;
extern VTBL_ENTRY _ZTI8S7297C10[];
extern  VTBL_ENTRY _ZTV8S7297C10[];
extern Class_Descriptor cd_S7297C6;
extern VTBL_ENTRY _ZTI7S7297C6[];
extern  VTBL_ENTRY _ZTV7S7297C6[];
extern Class_Descriptor cd_S7297C12;
extern VTBL_ENTRY _ZTI8S7297C12[];
extern  VTBL_ENTRY _ZTV8S7297C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7297C12[];
extern Class_Descriptor cd_S7297C11;
extern VTBL_ENTRY _ZTI8S7297C11[];
extern  VTBL_ENTRY _ZTV8S7297C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7297C11[];
extern Class_Descriptor cd_S7297C9;
extern VTBL_ENTRY _ZTI7S7297C9[];
extern  VTBL_ENTRY _ZTV7S7297C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7297C9[];
extern Class_Descriptor cd_S7297C13;
extern VTBL_ENTRY _ZTI8S7297C13[];
extern  VTBL_ENTRY _ZTV8S7297C13[];
extern Class_Descriptor cd_S7297C8;
extern VTBL_ENTRY _ZTI7S7297C8[];
extern  VTBL_ENTRY _ZTV7S7297C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7297C8[];
extern Class_Descriptor cd_S7297C7;
extern VTBL_ENTRY _ZTI7S7297C7[];
extern  VTBL_ENTRY _ZTV7S7297C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7297C7[];
static Base_Class bases_S7297C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7297C4_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7297C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7297C5,    ABISELECT(32,12), //bcp->offset
    59, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7297C3,    ABISELECT(16,8), //bcp->offset
    32, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7297C10,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7297C6,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7297C12,    ABISELECT(96,48), //bcp->offset
    139, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7297C11,    ABISELECT(88,44), //bcp->offset
    125, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7297C9,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7297C13,    ABISELECT(136,72), //bcp->offset
    164, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7297C8,    ABISELECT(80,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7297C7,    ABISELECT(80,40), //bcp->offset
    83, //bcp->virtual_function_table_offset
    30, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7297C2[];
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN7S7297C23v40Ev();
extern void _ZN7S7297C23v41Ev();
extern void _ZN7S7297C23v42Ev();
extern void _ZN7S7297C23v43Ev();
extern void _ZN7S7297C23v44Ev();
extern void _ZN7S7297C23v45Ev();
extern void _ZN7S7297C2D1Ev();
extern void _ZN7S7297C2D0Ev();
extern void ABISELECT(_ZTv0_n32_N7S7297C2D1Ev,_ZTv0_n16_N7S7297C2D1Ev)();
extern void ABISELECT(_ZThn16_N7S7297C2D1Ev,_ZThn8_N7S7297C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7297C2D0Ev,_ZTv0_n16_N7S7297C2D0Ev)();
extern void ABISELECT(_ZThn16_N7S7297C2D0Ev,_ZThn8_N7S7297C2D0Ev)() __attribute__((weak));
extern void _ZN10S7297C4_nt2v1Ev();
extern void _ZN10S7297C4_nt2v2Ev();
extern void _ZN7S7297C33v15Ev();
extern void _ZN7S7297C33v16Ev();
extern void _ZN7S7297C33v17Ev();
extern void _ZN7S7297C33v18Ev();
extern void _ZN7S7297C33v19Ev();
extern void _ZN7S7297C33v20Ev();
extern void _ZN7S7297C33v21Ev();
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN7S7297C53v12Ev();
extern void _ZN7S7297C53v13Ev();
extern void _ZN7S7297C53v14Ev();
extern void _ZN8S7297C103v22Ev();
extern void ABISELECT(_ZTv0_n48_N7S7297C2D1Ev,_ZTv0_n24_N7S7297C2D1Ev)();
extern void ABISELECT(_ZThn80_N7S7297C2D1Ev,_ZThn40_N7S7297C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7297C2D0Ev,_ZTv0_n24_N7S7297C2D0Ev)();
extern void ABISELECT(_ZThn80_N7S7297C2D0Ev,_ZThn40_N7S7297C2D0Ev)() __attribute__((weak));
extern void _ZN7S7297C93v29Ev();
extern void _ZN7S7297C93v30Ev();
extern void _ZN7S7297C83v33Ev();
extern void _ZN7S7297C83v34Ev();
extern void _ZN7S7297C83v35Ev();
extern void _ZN7S7297C83v36Ev();
extern void _ZN7S7297C83v37Ev();
extern void _ZN7S7297C73v38Ev();
extern void _ZN7S7297C73v39Ev();
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C113v27Ev();
extern void _ZN8S7297C113v28Ev();
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C123v23Ev();
extern void _ZN8S7297C123v24Ev();
extern void _ZN8S7297C123v25Ev();
extern void _ZN8S7297C123v26Ev();
extern void ABISELECT(_ZTv0_n24_N7S7297C2D1Ev,_ZTv0_n12_N7S7297C2D1Ev)();
extern void ABISELECT(_ZThn136_N7S7297C2D1Ev,_ZThn72_N7S7297C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7297C2D0Ev,_ZTv0_n12_N7S7297C2D0Ev)();
extern void ABISELECT(_ZThn136_N7S7297C2D0Ev,_ZThn72_N7S7297C2D0Ev)() __attribute__((weak));
extern void _ZN8S7297C133v31Ev();
extern void _ZN8S7297C133v32Ev();
static  VTBL_ENTRY vtc_S7297C2[] = {
  ABISELECT(136,72),
  ABISELECT(80,40),
  0,
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7297C2[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7297C23v40Ev,
  (VTBL_ENTRY)&_ZN7S7297C23v41Ev,
  (VTBL_ENTRY)&_ZN7S7297C23v42Ev,
  (VTBL_ENTRY)&_ZN7S7297C23v43Ev,
  (VTBL_ENTRY)&_ZN7S7297C23v44Ev,
  (VTBL_ENTRY)&_ZN7S7297C23v45Ev,
  (VTBL_ENTRY)&_ZN7S7297C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7297C2D0Ev,
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7297C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7297C2D1Ev,_ZTv0_n16_N7S7297C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7297C2D0Ev,_ZTv0_n16_N7S7297C2D0Ev),
  (VTBL_ENTRY)&_ZN10S7297C4_nt2v1Ev,
  (VTBL_ENTRY)&_ZN10S7297C4_nt2v2Ev,
  (VTBL_ENTRY)&_ZN7S7297C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7297C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7297C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7297C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7297C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7297C33v20Ev,
  (VTBL_ENTRY)&_ZN7S7297C33v21Ev,
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI7S7297C2[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7297C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7297C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7297C53v14Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(-80,-40),
  0,
  ABISELECT(56,32),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI7S7297C2[0]),
  (VTBL_ENTRY)&_ZN8S7297C103v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7297C2D1Ev,_ZTv0_n24_N7S7297C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7297C2D0Ev,_ZTv0_n24_N7S7297C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7297C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7297C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v33Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v34Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v35Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v36Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v37Ev,
  (VTBL_ENTRY)&_ZN7S7297C73v38Ev,
  (VTBL_ENTRY)&_ZN7S7297C73v39Ev,
  ABISELECT(-88,-44),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI7S7297C2[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C113v27Ev,
  (VTBL_ENTRY)&_ZN8S7297C113v28Ev,
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI7S7297C2[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v23Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v26Ev,
  0,
  0,
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI7S7297C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7297C2D1Ev,_ZTv0_n12_N7S7297C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7297C2D0Ev,_ZTv0_n12_N7S7297C2D0Ev),
  (VTBL_ENTRY)&_ZN8S7297C133v31Ev,
  (VTBL_ENTRY)&_ZN8S7297C133v32Ev,
};
extern VTBL_ENTRY _ZTV7S7297C2[];
extern void _ZN7S7297C3D1Ev();
extern void _ZN7S7297C3D0Ev();
extern void _ZN10S7297C4_nt2v1Ev();
extern void _ZN10S7297C4_nt2v2Ev();
extern void _ZN7S7297C33v15Ev();
extern void _ZN7S7297C33v16Ev();
extern void _ZN7S7297C33v17Ev();
extern void _ZN7S7297C33v18Ev();
extern void _ZN7S7297C33v19Ev();
extern void _ZN7S7297C33v20Ev();
extern void _ZN7S7297C33v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7297C3__7S7297C2[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7297C3[0]),
  (VTBL_ENTRY)&_ZN7S7297C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7297C3D0Ev,
  (VTBL_ENTRY)&_ZN10S7297C4_nt2v1Ev,
  (VTBL_ENTRY)&_ZN10S7297C4_nt2v2Ev,
  (VTBL_ENTRY)&_ZN7S7297C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7297C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7297C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7297C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7297C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7297C33v20Ev,
  (VTBL_ENTRY)&_ZN7S7297C33v21Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN7S7297C53v12Ev();
extern void _ZN7S7297C53v13Ev();
extern void _ZN7S7297C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7297C57S7297C3__7S7297C2[] = {
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7297C5[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7297C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7297C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7297C53v14Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7297C6__7S7297C57S7297C3__7S7297C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,12),
  (VTBL_ENTRY)&(_ZTI7S7297C5[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN7S7297C53v12Ev();
extern void _ZN7S7297C53v13Ev();
extern void _ZN7S7297C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7297C5__7S7297C3__7S7297C2[] = {
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI7S7297C3[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7297C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7297C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7297C53v14Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7297C6__7S7297C3__7S7297C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7297C3[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
};
extern void _ZN8S7297C103v22Ev();
extern void _ZN7S7297C7D1Ev();
extern void _ZN7S7297C7D0Ev();
extern void _ZN7S7297C93v29Ev();
extern void _ZN7S7297C93v30Ev();
extern void _ZN7S7297C83v33Ev();
extern void _ZN7S7297C83v34Ev();
extern void _ZN7S7297C83v35Ev();
extern void _ZN7S7297C83v36Ev();
extern void _ZN7S7297C83v37Ev();
extern void _ZN7S7297C73v38Ev();
extern void _ZN7S7297C73v39Ev();
static  VTBL_ENTRY _tg__ZTV7S7297C7__7S7297C2[] = {
  ABISELECT(56,32),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7297C7[0]),
  (VTBL_ENTRY)&_ZN8S7297C103v22Ev,
  (VTBL_ENTRY)&_ZN7S7297C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7297C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7297C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7297C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v33Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v34Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v35Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v36Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v37Ev,
  (VTBL_ENTRY)&_ZN7S7297C73v38Ev,
  (VTBL_ENTRY)&_ZN7S7297C73v39Ev,
};
extern void _ZN8S7297C103v22Ev();
extern void _ZN7S7297C8D1Ev();
extern void _ZN7S7297C8D0Ev();
extern void _ZN7S7297C93v29Ev();
extern void _ZN7S7297C93v30Ev();
extern void _ZN7S7297C83v33Ev();
extern void _ZN7S7297C83v34Ev();
extern void _ZN7S7297C83v35Ev();
extern void _ZN7S7297C83v36Ev();
extern void _ZN7S7297C83v37Ev();
static  VTBL_ENTRY _tg__ZTV7S7297C87S7297C7__7S7297C2[] = {
  ABISELECT(56,32),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7297C8[0]),
  (VTBL_ENTRY)&_ZN8S7297C103v22Ev,
  (VTBL_ENTRY)&_ZN7S7297C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7297C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7297C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7297C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v33Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v34Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v35Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v36Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v37Ev,
};
extern void _ZN8S7297C103v22Ev();
extern void _ZN7S7297C9D1Ev();
extern void _ZN7S7297C9D0Ev();
extern void _ZN7S7297C93v29Ev();
extern void _ZN7S7297C93v30Ev();
static  VTBL_ENTRY _tg__ZTV7S7297C97S7297C87S7297C7__7S7297C2[] = {
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7297C9[0]),
  (VTBL_ENTRY)&_ZN8S7297C103v22Ev,
  (VTBL_ENTRY)&_ZN7S7297C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7297C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7297C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7297C93v30Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C113v27Ev();
extern void _ZN8S7297C113v28Ev();
static  VTBL_ENTRY _tg__ZTV8S7297C117S7297C97S7297C87S7297C7__7S7297C2[] = {
  ABISELECT(-88,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7297C11[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C113v27Ev,
  (VTBL_ENTRY)&_ZN8S7297C113v28Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C123v23Ev();
extern void _ZN8S7297C123v24Ev();
extern void _ZN8S7297C123v25Ev();
extern void _ZN8S7297C123v26Ev();
static  VTBL_ENTRY _tg__ZTV8S7297C128S7297C117S7297C97S7297C87S7297C7__7S7297C2[] = {
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7297C12[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v23Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v26Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7297C6__8S7297C128S7297C117S7297C97S7297C87S7297C7__7S7297C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S7297C12[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C123v23Ev();
extern void _ZN8S7297C123v24Ev();
extern void _ZN8S7297C123v25Ev();
extern void _ZN8S7297C123v26Ev();
static  VTBL_ENTRY _tg__ZTV8S7297C12__8S7297C117S7297C97S7297C87S7297C7__7S7297C2[] = {
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7297C11[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v23Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v26Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7297C6__A1__8S7297C117S7297C97S7297C87S7297C7__7S7297C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI8S7297C11[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C113v27Ev();
extern void _ZN8S7297C113v28Ev();
static  VTBL_ENTRY _tg__ZTV8S7297C11__7S7297C97S7297C87S7297C7__7S7297C2[] = {
  ABISELECT(-88,-44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7297C9[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C113v27Ev,
  (VTBL_ENTRY)&_ZN8S7297C113v28Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C123v23Ev();
extern void _ZN8S7297C123v24Ev();
extern void _ZN8S7297C123v25Ev();
extern void _ZN8S7297C123v26Ev();
static  VTBL_ENTRY _tg__ZTV8S7297C128S7297C11__7S7297C97S7297C87S7297C7__7S7297C2[] = {
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7297C9[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v23Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v26Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7297C6__A1__7S7297C97S7297C87S7297C7__7S7297C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI7S7297C9[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C113v27Ev();
extern void _ZN8S7297C113v28Ev();
static  VTBL_ENTRY _tg__ZTV8S7297C117S7297C9__7S7297C87S7297C7__7S7297C2[] = {
  ABISELECT(-88,-44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7297C8[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C113v27Ev,
  (VTBL_ENTRY)&_ZN8S7297C113v28Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C123v23Ev();
extern void _ZN8S7297C123v24Ev();
extern void _ZN8S7297C123v25Ev();
extern void _ZN8S7297C123v26Ev();
static  VTBL_ENTRY _tg__ZTV8S7297C128S7297C117S7297C9__7S7297C87S7297C7__7S7297C2[] = {
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7297C8[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v23Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v26Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7297C6__A1__7S7297C87S7297C7__7S7297C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI7S7297C8[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7297C8D1Ev,_ZTv0_n12_N7S7297C8D1Ev)();
extern void ABISELECT(_ZThn56_N7S7297C8D1Ev,_ZThn32_N7S7297C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7297C8D0Ev,_ZTv0_n12_N7S7297C8D0Ev)();
extern void ABISELECT(_ZThn56_N7S7297C8D0Ev,_ZThn32_N7S7297C8D0Ev)() __attribute__((weak));
extern void _ZN8S7297C133v31Ev();
extern void _ZN8S7297C133v32Ev();
static  VTBL_ENTRY _tg__ZTV8S7297C13__7S7297C87S7297C7__7S7297C2[] = {
  0,
  0,
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7297C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7297C8D1Ev,_ZTv0_n12_N7S7297C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7297C8D0Ev,_ZTv0_n12_N7S7297C8D0Ev),
  (VTBL_ENTRY)&_ZN8S7297C133v31Ev,
  (VTBL_ENTRY)&_ZN8S7297C133v32Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7297C6__7S7297C7__7S7297C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI7S7297C7[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C113v27Ev();
extern void _ZN8S7297C113v28Ev();
static  VTBL_ENTRY _tg__ZTV8S7297C117S7297C97S7297C8__7S7297C7__7S7297C2[] = {
  ABISELECT(-88,-44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7297C7[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C113v27Ev,
  (VTBL_ENTRY)&_ZN8S7297C113v28Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C123v23Ev();
extern void _ZN8S7297C123v24Ev();
extern void _ZN8S7297C123v25Ev();
extern void _ZN8S7297C123v26Ev();
static  VTBL_ENTRY _tg__ZTV8S7297C128S7297C117S7297C97S7297C8__7S7297C7__7S7297C2[] = {
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7297C7[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v23Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v26Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7297C7D1Ev,_ZTv0_n12_N7S7297C7D1Ev)();
extern void ABISELECT(_ZThn56_N7S7297C7D1Ev,_ZThn32_N7S7297C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7297C7D0Ev,_ZTv0_n12_N7S7297C7D0Ev)();
extern void ABISELECT(_ZThn56_N7S7297C7D0Ev,_ZThn32_N7S7297C7D0Ev)() __attribute__((weak));
extern void _ZN8S7297C133v31Ev();
extern void _ZN8S7297C133v32Ev();
static  VTBL_ENTRY _tg__ZTV8S7297C13__7S7297C7__7S7297C2[] = {
  0,
  0,
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7297C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7297C7D1Ev,_ZTv0_n12_N7S7297C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7297C7D0Ev,_ZTv0_n12_N7S7297C7D0Ev),
  (VTBL_ENTRY)&_ZN8S7297C133v31Ev,
  (VTBL_ENTRY)&_ZN8S7297C133v32Ev,
};
static  VTT_ENTRY vtt_S7297C2[] = {
  {&(_ZTV7S7297C2[15]),  15,173},
  {&(_ZTV7S7297C2[48]),  48,173},
  {&(_ZTV7S7297C2[71]),  71,173},
  {&(_ZTV7S7297C2[15]),  15,173},
  {&(_ZTV7S7297C2[113]),  113,173},
  {&(_ZTV7S7297C2[128]),  128,173},
  {&(_ZTV7S7297C2[151]),  151,173},
  {&(_ZTV7S7297C2[169]),  169,173},
  {&(_tg__ZTV7S7297C3__7S7297C2[3]),  3,14},
  {&(_tg__ZTV7S7297C57S7297C3__7S7297C2[12]),  12,24},
  {&(_tg__ZTV7S7297C6__7S7297C57S7297C3__7S7297C2[11]),  11,20},
  {&(_tg__ZTV7S7297C5__7S7297C3__7S7297C2[12]),  12,24},
  {&(_tg__ZTV7S7297C6__7S7297C3__7S7297C2[11]),  11,20},
  {&(_tg__ZTV7S7297C7__7S7297C2[4]),  4,16},
  {&(_tg__ZTV7S7297C87S7297C7__7S7297C2[4]),  4,14},
  {&(_tg__ZTV7S7297C97S7297C87S7297C7__7S7297C2[3]),  3,8},
  {&(_tg__ZTV8S7297C117S7297C97S7297C87S7297C7__7S7297C2[3]),  3,14},
  {&(_tg__ZTV8S7297C128S7297C117S7297C97S7297C87S7297C7__7S7297C2[12]),  12,25},
  {&(_tg__ZTV7S7297C6__8S7297C128S7297C117S7297C97S7297C87S7297C7__7S7297C2[11]),  11,20},
  {&(_tg__ZTV8S7297C12__8S7297C117S7297C97S7297C87S7297C7__7S7297C2[12]),  12,25},
  {&(_tg__ZTV7S7297C6__A1__8S7297C117S7297C97S7297C87S7297C7__7S7297C2[11]),  11,20},
  {&(_tg__ZTV8S7297C11__7S7297C97S7297C87S7297C7__7S7297C2[3]),  3,14},
  {&(_tg__ZTV8S7297C128S7297C11__7S7297C97S7297C87S7297C7__7S7297C2[12]),  12,25},
  {&(_tg__ZTV7S7297C6__A1__7S7297C97S7297C87S7297C7__7S7297C2[11]),  11,20},
  {&(_tg__ZTV8S7297C117S7297C9__7S7297C87S7297C7__7S7297C2[3]),  3,14},
  {&(_tg__ZTV8S7297C128S7297C117S7297C9__7S7297C87S7297C7__7S7297C2[12]),  12,25},
  {&(_tg__ZTV7S7297C6__A1__7S7297C87S7297C7__7S7297C2[11]),  11,20},
  {&(_tg__ZTV8S7297C13__7S7297C87S7297C7__7S7297C2[5]),  5,9},
  {&(_tg__ZTV7S7297C6__7S7297C7__7S7297C2[11]),  11,20},
  {&(_tg__ZTV8S7297C117S7297C97S7297C8__7S7297C7__7S7297C2[3]),  3,14},
  {&(_tg__ZTV8S7297C128S7297C117S7297C97S7297C8__7S7297C7__7S7297C2[12]),  12,25},
  {&(_tg__ZTV8S7297C13__7S7297C7__7S7297C2[5]),  5,9},
};
extern VTBL_ENTRY _ZTI7S7297C2[];
extern  VTBL_ENTRY _ZTV7S7297C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7297C2[];
static VTBL_ENTRY alt_thunk_names36[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7297C7D0Ev,_ZTv0_n12_N7S7297C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7297C7D0Ev,_ZThn32_N7S7297C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7297C7D1Ev,_ZTv0_n12_N7S7297C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7297C7D1Ev,_ZThn32_N7S7297C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7297C8D0Ev,_ZTv0_n12_N7S7297C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7297C8D0Ev,_ZThn32_N7S7297C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7297C8D1Ev,_ZTv0_n12_N7S7297C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7297C8D1Ev,_ZThn32_N7S7297C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7297C2D0Ev,_ZTv0_n12_N7S7297C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7297C2D0Ev,_ZThn72_N7S7297C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7297C2D1Ev,_ZTv0_n12_N7S7297C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7297C2D1Ev,_ZThn72_N7S7297C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7297C2D0Ev,_ZTv0_n24_N7S7297C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7297C2D0Ev,_ZThn40_N7S7297C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7297C2D1Ev,_ZTv0_n24_N7S7297C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7297C2D1Ev,_ZThn40_N7S7297C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7297C2D0Ev,_ZTv0_n16_N7S7297C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7297C2D0Ev,_ZThn8_N7S7297C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7297C2D1Ev,_ZTv0_n16_N7S7297C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7297C2D1Ev,_ZThn8_N7S7297C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7297C2 = {  "S7297C2", // class name
  bases_S7297C2, 12,
  &(vtc_S7297C2[0]), // expected_vtbl_contents
  &(vtt_S7297C2[0]), // expected_vtt_contents
  ABISELECT(160,88), // object size
  NSPAIRA(_ZTI7S7297C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7297C2),173, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7297C2),32, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names36,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7297C16  {
  char s7297c16f0[7];
  int s7297c16f1[2];
  virtual void  v47(); // _ZN8S7297C163v47Ev
  virtual void  v48(); // _ZN8S7297C163v48Ev
  ~S7297C16(); // tgen
  S7297C16(); // tgen
};
//SIG(-1 S7297C16) C1{ v1 v2 Fc[7] Fi[2]}


void  S7297C16 ::v47(){vfunc_called(this, "_ZN8S7297C163v47Ev");}
void  S7297C16 ::v48(){vfunc_called(this, "_ZN8S7297C163v48Ev");}
S7297C16 ::~S7297C16(){ note_dtor("S7297C16", this);} // tgen
S7297C16 ::S7297C16(){ note_ctor("S7297C16", this);} // tgen

static void Test_S7297C16()
{
  extern Class_Descriptor cd_S7297C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,6)];
    init_test(&cd_S7297C16, buf);
    S7297C16 *dp, &lv = *(dp=new (buf) S7297C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S7297C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7297C16)");
    check_field_offset(lv, s7297c16f0, ABISELECT(8,4), "S7297C16.s7297c16f0");
    check_field_offset(lv, s7297c16f1, ABISELECT(16,12), "S7297C16.s7297c16f1");
    test_class_info(&lv, &cd_S7297C16);
    dp->~S7297C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7297C16(Test_S7297C16, "S7297C16", ABISELECT(24,20));

#else // __cplusplus

extern void _ZN8S7297C16C1Ev();
extern void _ZN8S7297C16D1Ev();
Name_Map name_map_S7297C16[] = {
  NSPAIR(_ZN8S7297C16C1Ev),
  NSPAIR(_ZN8S7297C16D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S7297C16[];
extern void _ZN8S7297C163v47Ev();
extern void _ZN8S7297C163v48Ev();
static  VTBL_ENTRY vtc_S7297C16[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S7297C16[0]),
  (VTBL_ENTRY)&_ZN8S7297C163v47Ev,
  (VTBL_ENTRY)&_ZN8S7297C163v48Ev,
};
extern VTBL_ENTRY _ZTI8S7297C16[];
extern  VTBL_ENTRY _ZTV8S7297C16[];
Class_Descriptor cd_S7297C16 = {  "S7297C16", // class name
  0,0,//no base classes
  &(vtc_S7297C16[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,20), // object size
  NSPAIRA(_ZTI8S7297C16),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S7297C16),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7297C15  : S7297C16 {
  virtual void  v46(); // _ZN8S7297C153v46Ev
  ~S7297C15(); // tgen
  S7297C15(); // tgen
};
//SIG(-1 S7297C15) C1{ BC2{ v2 v3 Fc[7] Fi[2]} v1}


void  S7297C15 ::v46(){vfunc_called(this, "_ZN8S7297C153v46Ev");}
S7297C15 ::~S7297C15(){ note_dtor("S7297C15", this);} // tgen
S7297C15 ::S7297C15(){ note_ctor("S7297C15", this);} // tgen

static void Test_S7297C15()
{
  extern Class_Descriptor cd_S7297C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,6)];
    init_test(&cd_S7297C15, buf);
    S7297C15 *dp, &lv = *(dp=new (buf) S7297C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S7297C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7297C15)");
    check_base_class_offset(lv, (S7297C16*), 0, "S7297C15");
    test_class_info(&lv, &cd_S7297C15);
    dp->~S7297C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7297C15(Test_S7297C15, "S7297C15", ABISELECT(24,20));

#else // __cplusplus

extern void _ZN8S7297C15C1Ev();
extern void _ZN8S7297C15D1Ev();
Name_Map name_map_S7297C15[] = {
  NSPAIR(_ZN8S7297C15C1Ev),
  NSPAIR(_ZN8S7297C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7297C16;
extern VTBL_ENTRY _ZTI8S7297C16[];
extern  VTBL_ENTRY _ZTV8S7297C16[];
static Base_Class bases_S7297C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7297C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7297C15[];
extern void _ZN8S7297C163v47Ev();
extern void _ZN8S7297C163v48Ev();
extern void _ZN8S7297C153v46Ev();
static  VTBL_ENTRY vtc_S7297C15[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S7297C15[0]),
  (VTBL_ENTRY)&_ZN8S7297C163v47Ev,
  (VTBL_ENTRY)&_ZN8S7297C163v48Ev,
  (VTBL_ENTRY)&_ZN8S7297C153v46Ev,
};
extern VTBL_ENTRY _ZTI8S7297C15[];
extern  VTBL_ENTRY _ZTV8S7297C15[];
Class_Descriptor cd_S7297C15 = {  "S7297C15", // class name
  bases_S7297C15, 1,
  &(vtc_S7297C15[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,20), // object size
  NSPAIRA(_ZTI8S7297C15),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S7297C15),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7297C1  : S7297C2 {
  ::S7297C15 s7297c1f0;
  virtual  ~S7297C1(); // _ZN7S7297C1D2Ev
  S7297C1(); // tgen
};
//SIG(1 S7297C1) C1{ BC2{ VBC3{ BC4{ vd v1 v2} BC5{ VBC6{ v3 v4 v5 v6 v7 v8 v9 v10 v11} v12 v13 v14 Fp FD Fi} vd v15 v16 v17 v18 v19 v20 v21 Fp} VBC7{ VBC6 BC8{ BC9{ BC10{ v22} BC11{ BC6 BC12{ VBC6 v23 v24 v25 v26 FL} v27 v28} vd v29 v30} VBC13{ vd v31 v32 FL Fi} vd v33 v34 v35 v36 v37 Fi FC10} vd v38 v39 FC14{ m}} v40 v41 v42 v43 v44 v45 Fc} vd FC15{ BC16{ v47 v48 Fc[7] Fi[2]} v46}}


 S7297C1 ::~S7297C1(){ note_dtor("S7297C1", this);}
S7297C1 ::S7297C1(){ note_ctor("S7297C1", this);} // tgen

static void Test_S7297C1()
{
  extern Class_Descriptor cd_S7297C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,28)];
    init_test(&cd_S7297C1, buf);
    S7297C1 *dp, &lv = *(dp=new (buf) S7297C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,108), "sizeof(S7297C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7297C1)");
    check_base_class_offset(lv, (S7297C4_nt*)(S7297C3*), ABISELECT(48,28), "S7297C1");
    check_base_class_offset(lv, (S7297C6*)(S7297C5*)(S7297C3*), 0, "S7297C1");
    /*is_ambiguous_... S7297C7::S7297C6 */ AMB_check_base_class_offset(lv, (S7297C6*)(S7297C7*), 0, "S7297C1");
    check_base_class_offset(lv, (S7297C6*)(S7297C12*)(S7297C11*)(S7297C9*)(S7297C8*)(S7297C7*), 0, "S7297C1");
    check_base_class_offset(lv, (S7297C5*)(S7297C3*), ABISELECT(64,32), "S7297C1");
    check_base_class_offset(lv, (S7297C3*)(S7297C2*), ABISELECT(48,28), "S7297C1");
    check_base_class_offset(lv, (S7297C10*)(S7297C9*)(S7297C8*)(S7297C7*), ABISELECT(112,60), "S7297C1");
    /*is_ambiguous_... S7297C11::S7297C6 */ AMB_check_base_class_offset(lv, (S7297C6*)(S7297C11*)(S7297C9*)(S7297C8*)(S7297C7*), ABISELECT(120,64), "S7297C1");
    check_base_class_offset(lv, (S7297C12*)(S7297C11*)(S7297C9*)(S7297C8*)(S7297C7*), ABISELECT(128,68), "S7297C1");
    check_base_class_offset(lv, (S7297C11*)(S7297C9*)(S7297C8*)(S7297C7*), ABISELECT(120,64), "S7297C1");
    check_base_class_offset(lv, (S7297C9*)(S7297C8*)(S7297C7*), ABISELECT(112,60), "S7297C1");
    check_base_class_offset(lv, (S7297C13*)(S7297C8*)(S7297C7*), ABISELECT(168,92), "S7297C1");
    check_base_class_offset(lv, (S7297C8*)(S7297C7*), ABISELECT(112,60), "S7297C1");
    check_base_class_offset(lv, (S7297C7*)(S7297C2*), ABISELECT(112,60), "S7297C1");
    check_base_class_offset(lv, (S7297C2*), 0, "S7297C1");
    check_field_offset(lv, s7297c1f0, ABISELECT(16,8), "S7297C1.s7297c1f0");
    test_class_info(&lv, &cd_S7297C1);
    dp->~S7297C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7297C1(Test_S7297C1, "S7297C1", ABISELECT(192,108));

#else // __cplusplus

extern void _ZN7S7297C1C1Ev();
extern void _ZN7S7297C1D2Ev();
Name_Map name_map_S7297C1[] = {
  NSPAIR(_ZN7S7297C1C1Ev),
  NSPAIR(_ZN7S7297C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7297C4_nt;
extern VTBL_ENTRY _ZTI10S7297C4_nt[];
extern  VTBL_ENTRY _ZTV10S7297C4_nt[];
extern Class_Descriptor cd_S7297C6;
extern VTBL_ENTRY _ZTI7S7297C6[];
extern  VTBL_ENTRY _ZTV7S7297C6[];
extern Class_Descriptor cd_S7297C5;
extern VTBL_ENTRY _ZTI7S7297C5[];
extern  VTBL_ENTRY _ZTV7S7297C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7297C5[];
extern Class_Descriptor cd_S7297C3;
extern VTBL_ENTRY _ZTI7S7297C3[];
extern  VTBL_ENTRY _ZTV7S7297C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7297C3[];
extern Class_Descriptor cd_S7297C10;
extern VTBL_ENTRY _ZTI8S7297C10[];
extern  VTBL_ENTRY _ZTV8S7297C10[];
extern Class_Descriptor cd_S7297C6;
extern VTBL_ENTRY _ZTI7S7297C6[];
extern  VTBL_ENTRY _ZTV7S7297C6[];
extern Class_Descriptor cd_S7297C12;
extern VTBL_ENTRY _ZTI8S7297C12[];
extern  VTBL_ENTRY _ZTV8S7297C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7297C12[];
extern Class_Descriptor cd_S7297C11;
extern VTBL_ENTRY _ZTI8S7297C11[];
extern  VTBL_ENTRY _ZTV8S7297C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7297C11[];
extern Class_Descriptor cd_S7297C9;
extern VTBL_ENTRY _ZTI7S7297C9[];
extern  VTBL_ENTRY _ZTV7S7297C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7297C9[];
extern Class_Descriptor cd_S7297C13;
extern VTBL_ENTRY _ZTI8S7297C13[];
extern  VTBL_ENTRY _ZTV8S7297C13[];
extern Class_Descriptor cd_S7297C8;
extern VTBL_ENTRY _ZTI7S7297C8[];
extern  VTBL_ENTRY _ZTV7S7297C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7297C8[];
extern Class_Descriptor cd_S7297C7;
extern VTBL_ENTRY _ZTI7S7297C7[];
extern  VTBL_ENTRY _ZTV7S7297C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7297C7[];
extern Class_Descriptor cd_S7297C2;
extern VTBL_ENTRY _ZTI7S7297C2[];
extern  VTBL_ENTRY _ZTV7S7297C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7297C2[];
static Base_Class bases_S7297C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7297C4_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7297C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7297C5,    ABISELECT(64,32), //bcp->offset
    59, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7297C3,    ABISELECT(48,28), //bcp->offset
    32, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7297C10,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7297C6,    ABISELECT(120,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7297C12,    ABISELECT(128,68), //bcp->offset
    139, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7297C11,    ABISELECT(120,64), //bcp->offset
    125, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7297C9,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7297C13,    ABISELECT(168,92), //bcp->offset
    164, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7297C8,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7297C7,    ABISELECT(112,60), //bcp->offset
    83, //bcp->virtual_function_table_offset
    30, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7297C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7297C1[];
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN7S7297C23v40Ev();
extern void _ZN7S7297C23v41Ev();
extern void _ZN7S7297C23v42Ev();
extern void _ZN7S7297C23v43Ev();
extern void _ZN7S7297C23v44Ev();
extern void _ZN7S7297C23v45Ev();
extern void _ZN7S7297C1D1Ev();
extern void _ZN7S7297C1D0Ev();
extern void ABISELECT(_ZTv0_n32_N7S7297C1D1Ev,_ZTv0_n16_N7S7297C1D1Ev)();
extern void ABISELECT(_ZThn48_N7S7297C1D1Ev,_ZThn28_N7S7297C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7297C1D0Ev,_ZTv0_n16_N7S7297C1D0Ev)();
extern void ABISELECT(_ZThn48_N7S7297C1D0Ev,_ZThn28_N7S7297C1D0Ev)() __attribute__((weak));
extern void _ZN10S7297C4_nt2v1Ev();
extern void _ZN10S7297C4_nt2v2Ev();
extern void _ZN7S7297C33v15Ev();
extern void _ZN7S7297C33v16Ev();
extern void _ZN7S7297C33v17Ev();
extern void _ZN7S7297C33v18Ev();
extern void _ZN7S7297C33v19Ev();
extern void _ZN7S7297C33v20Ev();
extern void _ZN7S7297C33v21Ev();
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN7S7297C53v12Ev();
extern void _ZN7S7297C53v13Ev();
extern void _ZN7S7297C53v14Ev();
extern void _ZN8S7297C103v22Ev();
extern void ABISELECT(_ZTv0_n48_N7S7297C1D1Ev,_ZTv0_n24_N7S7297C1D1Ev)();
extern void ABISELECT(_ZThn112_N7S7297C1D1Ev,_ZThn60_N7S7297C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7297C1D0Ev,_ZTv0_n24_N7S7297C1D0Ev)();
extern void ABISELECT(_ZThn112_N7S7297C1D0Ev,_ZThn60_N7S7297C1D0Ev)() __attribute__((weak));
extern void _ZN7S7297C93v29Ev();
extern void _ZN7S7297C93v30Ev();
extern void _ZN7S7297C83v33Ev();
extern void _ZN7S7297C83v34Ev();
extern void _ZN7S7297C83v35Ev();
extern void _ZN7S7297C83v36Ev();
extern void _ZN7S7297C83v37Ev();
extern void _ZN7S7297C73v38Ev();
extern void _ZN7S7297C73v39Ev();
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C113v27Ev();
extern void _ZN8S7297C113v28Ev();
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C123v23Ev();
extern void _ZN8S7297C123v24Ev();
extern void _ZN8S7297C123v25Ev();
extern void _ZN8S7297C123v26Ev();
extern void ABISELECT(_ZTv0_n24_N7S7297C1D1Ev,_ZTv0_n12_N7S7297C1D1Ev)();
extern void ABISELECT(_ZThn168_N7S7297C1D1Ev,_ZThn92_N7S7297C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7297C1D0Ev,_ZTv0_n12_N7S7297C1D0Ev)();
extern void ABISELECT(_ZThn168_N7S7297C1D0Ev,_ZThn92_N7S7297C1D0Ev)() __attribute__((weak));
extern void _ZN8S7297C133v31Ev();
extern void _ZN8S7297C133v32Ev();
static  VTBL_ENTRY vtc_S7297C1[] = {
  ABISELECT(168,92),
  ABISELECT(112,60),
  0,
  ABISELECT(48,28),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7297C1[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7297C23v40Ev,
  (VTBL_ENTRY)&_ZN7S7297C23v41Ev,
  (VTBL_ENTRY)&_ZN7S7297C23v42Ev,
  (VTBL_ENTRY)&_ZN7S7297C23v43Ev,
  (VTBL_ENTRY)&_ZN7S7297C23v44Ev,
  (VTBL_ENTRY)&_ZN7S7297C23v45Ev,
  (VTBL_ENTRY)&_ZN7S7297C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7297C1D0Ev,
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7297C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7297C1D1Ev,_ZTv0_n16_N7S7297C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7297C1D0Ev,_ZTv0_n16_N7S7297C1D0Ev),
  (VTBL_ENTRY)&_ZN10S7297C4_nt2v1Ev,
  (VTBL_ENTRY)&_ZN10S7297C4_nt2v2Ev,
  (VTBL_ENTRY)&_ZN7S7297C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7297C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7297C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7297C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7297C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7297C33v20Ev,
  (VTBL_ENTRY)&_ZN7S7297C33v21Ev,
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S7297C1[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7297C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7297C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7297C53v14Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(-112,-60),
  0,
  ABISELECT(56,32),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7297C1[0]),
  (VTBL_ENTRY)&_ZN8S7297C103v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7297C1D1Ev,_ZTv0_n24_N7S7297C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7297C1D0Ev,_ZTv0_n24_N7S7297C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7297C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7297C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v33Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v34Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v35Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v36Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v37Ev,
  (VTBL_ENTRY)&_ZN7S7297C73v38Ev,
  (VTBL_ENTRY)&_ZN7S7297C73v39Ev,
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI7S7297C1[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C113v27Ev,
  (VTBL_ENTRY)&_ZN8S7297C113v28Ev,
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI7S7297C1[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v23Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v26Ev,
  0,
  0,
  ABISELECT(-168,-92),
  ABISELECT(-168,-92),
  (VTBL_ENTRY)&(_ZTI7S7297C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7297C1D1Ev,_ZTv0_n12_N7S7297C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7297C1D0Ev,_ZTv0_n12_N7S7297C1D0Ev),
  (VTBL_ENTRY)&_ZN8S7297C133v31Ev,
  (VTBL_ENTRY)&_ZN8S7297C133v32Ev,
};
extern VTBL_ENTRY _ZTV7S7297C1[];
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN7S7297C23v40Ev();
extern void _ZN7S7297C23v41Ev();
extern void _ZN7S7297C23v42Ev();
extern void _ZN7S7297C23v43Ev();
extern void _ZN7S7297C23v44Ev();
extern void _ZN7S7297C23v45Ev();
extern void _ZN7S7297C2D1Ev();
extern void _ZN7S7297C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7297C2__7S7297C1[] = {
  ABISELECT(168,92),
  ABISELECT(112,60),
  0,
  ABISELECT(48,28),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7297C2[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7297C23v40Ev,
  (VTBL_ENTRY)&_ZN7S7297C23v41Ev,
  (VTBL_ENTRY)&_ZN7S7297C23v42Ev,
  (VTBL_ENTRY)&_ZN7S7297C23v43Ev,
  (VTBL_ENTRY)&_ZN7S7297C23v44Ev,
  (VTBL_ENTRY)&_ZN7S7297C23v45Ev,
  (VTBL_ENTRY)&_ZN7S7297C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7297C2D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7297C2D1Ev,_ZTv0_n16_N7S7297C2D1Ev)();
extern void ABISELECT(_ZThn48_N7S7297C2D1Ev,_ZThn28_N7S7297C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7297C2D0Ev,_ZTv0_n16_N7S7297C2D0Ev)();
extern void ABISELECT(_ZThn48_N7S7297C2D0Ev,_ZThn28_N7S7297C2D0Ev)() __attribute__((weak));
extern void _ZN10S7297C4_nt2v1Ev();
extern void _ZN10S7297C4_nt2v2Ev();
extern void _ZN7S7297C33v15Ev();
extern void _ZN7S7297C33v16Ev();
extern void _ZN7S7297C33v17Ev();
extern void _ZN7S7297C33v18Ev();
extern void _ZN7S7297C33v19Ev();
extern void _ZN7S7297C33v20Ev();
extern void _ZN7S7297C33v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7297C3__7S7297C2__7S7297C1[] = {
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7297C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7297C2D1Ev,_ZTv0_n16_N7S7297C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7297C2D0Ev,_ZTv0_n16_N7S7297C2D0Ev),
  (VTBL_ENTRY)&_ZN10S7297C4_nt2v1Ev,
  (VTBL_ENTRY)&_ZN10S7297C4_nt2v2Ev,
  (VTBL_ENTRY)&_ZN7S7297C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7297C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7297C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7297C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7297C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7297C33v20Ev,
  (VTBL_ENTRY)&_ZN7S7297C33v21Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN7S7297C53v12Ev();
extern void _ZN7S7297C53v13Ev();
extern void _ZN7S7297C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7297C57S7297C3__7S7297C2__7S7297C1[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S7297C2[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7297C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7297C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7297C53v14Ev,
};
extern void _ZN8S7297C103v22Ev();
extern void ABISELECT(_ZTv0_n48_N7S7297C2D1Ev,_ZTv0_n24_N7S7297C2D1Ev)();
extern void ABISELECT(_ZThn112_N7S7297C2D1Ev,_ZThn60_N7S7297C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7297C2D0Ev,_ZTv0_n24_N7S7297C2D0Ev)();
extern void ABISELECT(_ZThn112_N7S7297C2D0Ev,_ZThn60_N7S7297C2D0Ev)() __attribute__((weak));
extern void _ZN7S7297C93v29Ev();
extern void _ZN7S7297C93v30Ev();
extern void _ZN7S7297C83v33Ev();
extern void _ZN7S7297C83v34Ev();
extern void _ZN7S7297C83v35Ev();
extern void _ZN7S7297C83v36Ev();
extern void _ZN7S7297C83v37Ev();
extern void _ZN7S7297C73v38Ev();
extern void _ZN7S7297C73v39Ev();
static  VTBL_ENTRY _tg__ZTV7S7297C7__7S7297C2__7S7297C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(-112,-60),
  0,
  ABISELECT(56,32),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7297C2[0]),
  (VTBL_ENTRY)&_ZN8S7297C103v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7297C2D1Ev,_ZTv0_n24_N7S7297C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7297C2D0Ev,_ZTv0_n24_N7S7297C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7297C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7297C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v33Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v34Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v35Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v36Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v37Ev,
  (VTBL_ENTRY)&_ZN7S7297C73v38Ev,
  (VTBL_ENTRY)&_ZN7S7297C73v39Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C113v27Ev();
extern void _ZN8S7297C113v28Ev();
static  VTBL_ENTRY _tg__ZTV8S7297C117S7297C97S7297C87S7297C7__7S7297C2__7S7297C1[] = {
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI7S7297C2[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C113v27Ev,
  (VTBL_ENTRY)&_ZN8S7297C113v28Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C123v23Ev();
extern void _ZN8S7297C123v24Ev();
extern void _ZN8S7297C123v25Ev();
extern void _ZN8S7297C123v26Ev();
static  VTBL_ENTRY _tg__ZTV8S7297C128S7297C117S7297C97S7297C87S7297C7__7S7297C2__7S7297C1[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI7S7297C2[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v23Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v26Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7297C2D1Ev,_ZTv0_n12_N7S7297C2D1Ev)();
extern void ABISELECT(_ZThn168_N7S7297C2D1Ev,_ZThn92_N7S7297C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7297C2D0Ev,_ZTv0_n12_N7S7297C2D0Ev)();
extern void ABISELECT(_ZThn168_N7S7297C2D0Ev,_ZThn92_N7S7297C2D0Ev)() __attribute__((weak));
extern void _ZN8S7297C133v31Ev();
extern void _ZN8S7297C133v32Ev();
static  VTBL_ENTRY _tg__ZTV8S7297C13__7S7297C2__7S7297C1[] = {
  0,
  0,
  ABISELECT(-168,-92),
  ABISELECT(-168,-92),
  (VTBL_ENTRY)&(_ZTI7S7297C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7297C2D1Ev,_ZTv0_n12_N7S7297C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7297C2D0Ev,_ZTv0_n12_N7S7297C2D0Ev),
  (VTBL_ENTRY)&_ZN8S7297C133v31Ev,
  (VTBL_ENTRY)&_ZN8S7297C133v32Ev,
};
extern void _ZN7S7297C3D1Ev();
extern void _ZN7S7297C3D0Ev();
extern void _ZN10S7297C4_nt2v1Ev();
extern void _ZN10S7297C4_nt2v2Ev();
extern void _ZN7S7297C33v15Ev();
extern void _ZN7S7297C33v16Ev();
extern void _ZN7S7297C33v17Ev();
extern void _ZN7S7297C33v18Ev();
extern void _ZN7S7297C33v19Ev();
extern void _ZN7S7297C33v20Ev();
extern void _ZN7S7297C33v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7297C3__7S7297C1[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7297C3[0]),
  (VTBL_ENTRY)&_ZN7S7297C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7297C3D0Ev,
  (VTBL_ENTRY)&_ZN10S7297C4_nt2v1Ev,
  (VTBL_ENTRY)&_ZN10S7297C4_nt2v2Ev,
  (VTBL_ENTRY)&_ZN7S7297C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7297C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7297C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7297C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7297C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7297C33v20Ev,
  (VTBL_ENTRY)&_ZN7S7297C33v21Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN7S7297C53v12Ev();
extern void _ZN7S7297C53v13Ev();
extern void _ZN7S7297C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7297C57S7297C3__7S7297C1[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7297C5[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7297C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7297C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7297C53v14Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7297C6__7S7297C57S7297C3__7S7297C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI7S7297C5[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN7S7297C53v12Ev();
extern void _ZN7S7297C53v13Ev();
extern void _ZN7S7297C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7297C5__7S7297C3__7S7297C1[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI7S7297C3[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7297C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7297C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7297C53v14Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7297C6__7S7297C3__7S7297C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7297C3[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
};
extern void _ZN8S7297C103v22Ev();
extern void _ZN7S7297C7D1Ev();
extern void _ZN7S7297C7D0Ev();
extern void _ZN7S7297C93v29Ev();
extern void _ZN7S7297C93v30Ev();
extern void _ZN7S7297C83v33Ev();
extern void _ZN7S7297C83v34Ev();
extern void _ZN7S7297C83v35Ev();
extern void _ZN7S7297C83v36Ev();
extern void _ZN7S7297C83v37Ev();
extern void _ZN7S7297C73v38Ev();
extern void _ZN7S7297C73v39Ev();
static  VTBL_ENTRY _tg__ZTV7S7297C7__7S7297C1[] = {
  ABISELECT(56,32),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7297C7[0]),
  (VTBL_ENTRY)&_ZN8S7297C103v22Ev,
  (VTBL_ENTRY)&_ZN7S7297C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7297C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7297C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7297C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v33Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v34Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v35Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v36Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v37Ev,
  (VTBL_ENTRY)&_ZN7S7297C73v38Ev,
  (VTBL_ENTRY)&_ZN7S7297C73v39Ev,
};
extern void _ZN8S7297C103v22Ev();
extern void _ZN7S7297C8D1Ev();
extern void _ZN7S7297C8D0Ev();
extern void _ZN7S7297C93v29Ev();
extern void _ZN7S7297C93v30Ev();
extern void _ZN7S7297C83v33Ev();
extern void _ZN7S7297C83v34Ev();
extern void _ZN7S7297C83v35Ev();
extern void _ZN7S7297C83v36Ev();
extern void _ZN7S7297C83v37Ev();
static  VTBL_ENTRY _tg__ZTV7S7297C87S7297C7__7S7297C1[] = {
  ABISELECT(56,32),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7297C8[0]),
  (VTBL_ENTRY)&_ZN8S7297C103v22Ev,
  (VTBL_ENTRY)&_ZN7S7297C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7297C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7297C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7297C93v30Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v33Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v34Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v35Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v36Ev,
  (VTBL_ENTRY)&_ZN7S7297C83v37Ev,
};
extern void _ZN8S7297C103v22Ev();
extern void _ZN7S7297C9D1Ev();
extern void _ZN7S7297C9D0Ev();
extern void _ZN7S7297C93v29Ev();
extern void _ZN7S7297C93v30Ev();
static  VTBL_ENTRY _tg__ZTV7S7297C97S7297C87S7297C7__7S7297C1[] = {
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7297C9[0]),
  (VTBL_ENTRY)&_ZN8S7297C103v22Ev,
  (VTBL_ENTRY)&_ZN7S7297C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7297C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7297C93v29Ev,
  (VTBL_ENTRY)&_ZN7S7297C93v30Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C113v27Ev();
extern void _ZN8S7297C113v28Ev();
static  VTBL_ENTRY _tg__ZTV8S7297C117S7297C97S7297C87S7297C7__7S7297C1[] = {
  ABISELECT(-120,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S7297C11[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C113v27Ev,
  (VTBL_ENTRY)&_ZN8S7297C113v28Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C123v23Ev();
extern void _ZN8S7297C123v24Ev();
extern void _ZN8S7297C123v25Ev();
extern void _ZN8S7297C123v26Ev();
static  VTBL_ENTRY _tg__ZTV8S7297C128S7297C117S7297C97S7297C87S7297C7__7S7297C1[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S7297C12[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v23Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v26Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7297C6__8S7297C128S7297C117S7297C97S7297C87S7297C7__7S7297C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S7297C12[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C123v23Ev();
extern void _ZN8S7297C123v24Ev();
extern void _ZN8S7297C123v25Ev();
extern void _ZN8S7297C123v26Ev();
static  VTBL_ENTRY _tg__ZTV8S7297C12__8S7297C117S7297C97S7297C87S7297C7__7S7297C1[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7297C11[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v23Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v26Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7297C6__A1__8S7297C117S7297C97S7297C87S7297C7__7S7297C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI8S7297C11[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C113v27Ev();
extern void _ZN8S7297C113v28Ev();
static  VTBL_ENTRY _tg__ZTV8S7297C11__7S7297C97S7297C87S7297C7__7S7297C1[] = {
  ABISELECT(-120,-64),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7297C9[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C113v27Ev,
  (VTBL_ENTRY)&_ZN8S7297C113v28Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C123v23Ev();
extern void _ZN8S7297C123v24Ev();
extern void _ZN8S7297C123v25Ev();
extern void _ZN8S7297C123v26Ev();
static  VTBL_ENTRY _tg__ZTV8S7297C128S7297C11__7S7297C97S7297C87S7297C7__7S7297C1[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7297C9[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v23Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v26Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7297C6__A1__7S7297C97S7297C87S7297C7__7S7297C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI7S7297C9[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C113v27Ev();
extern void _ZN8S7297C113v28Ev();
static  VTBL_ENTRY _tg__ZTV8S7297C117S7297C9__7S7297C87S7297C7__7S7297C1[] = {
  ABISELECT(-120,-64),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7297C8[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C113v27Ev,
  (VTBL_ENTRY)&_ZN8S7297C113v28Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C123v23Ev();
extern void _ZN8S7297C123v24Ev();
extern void _ZN8S7297C123v25Ev();
extern void _ZN8S7297C123v26Ev();
static  VTBL_ENTRY _tg__ZTV8S7297C128S7297C117S7297C9__7S7297C87S7297C7__7S7297C1[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7297C8[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v23Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v26Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7297C6__A1__7S7297C87S7297C7__7S7297C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI7S7297C8[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7297C8D1Ev,_ZTv0_n12_N7S7297C8D1Ev)();
extern void ABISELECT(_ZThn56_N7S7297C8D1Ev,_ZThn32_N7S7297C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7297C8D0Ev,_ZTv0_n12_N7S7297C8D0Ev)();
extern void ABISELECT(_ZThn56_N7S7297C8D0Ev,_ZThn32_N7S7297C8D0Ev)() __attribute__((weak));
extern void _ZN8S7297C133v31Ev();
extern void _ZN8S7297C133v32Ev();
static  VTBL_ENTRY _tg__ZTV8S7297C13__7S7297C87S7297C7__7S7297C1[] = {
  0,
  0,
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7297C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7297C8D1Ev,_ZTv0_n12_N7S7297C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7297C8D0Ev,_ZTv0_n12_N7S7297C8D0Ev),
  (VTBL_ENTRY)&_ZN8S7297C133v31Ev,
  (VTBL_ENTRY)&_ZN8S7297C133v32Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7297C6__7S7297C7__7S7297C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI7S7297C7[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C113v27Ev();
extern void _ZN8S7297C113v28Ev();
static  VTBL_ENTRY _tg__ZTV8S7297C117S7297C97S7297C8__7S7297C7__7S7297C1[] = {
  ABISELECT(-120,-64),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7297C7[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C113v27Ev,
  (VTBL_ENTRY)&_ZN8S7297C113v28Ev,
};
extern void _ZN7S7297C62v3Ev();
extern void _ZN7S7297C62v4Ev();
extern void _ZN7S7297C62v5Ev();
extern void _ZN7S7297C62v6Ev();
extern void _ZN7S7297C62v7Ev();
extern void _ZN7S7297C62v8Ev();
extern void _ZN7S7297C62v9Ev();
extern void _ZN7S7297C63v10Ev();
extern void _ZN7S7297C63v11Ev();
extern void _ZN8S7297C123v23Ev();
extern void _ZN8S7297C123v24Ev();
extern void _ZN8S7297C123v25Ev();
extern void _ZN8S7297C123v26Ev();
static  VTBL_ENTRY _tg__ZTV8S7297C128S7297C117S7297C97S7297C8__7S7297C7__7S7297C1[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7297C7[0]),
  (VTBL_ENTRY)&_ZN7S7297C62v3Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7297C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7297C63v11Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v23Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v24Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v25Ev,
  (VTBL_ENTRY)&_ZN8S7297C123v26Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7297C7D1Ev,_ZTv0_n12_N7S7297C7D1Ev)();
extern void ABISELECT(_ZThn56_N7S7297C7D1Ev,_ZThn32_N7S7297C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7297C7D0Ev,_ZTv0_n12_N7S7297C7D0Ev)();
extern void ABISELECT(_ZThn56_N7S7297C7D0Ev,_ZThn32_N7S7297C7D0Ev)() __attribute__((weak));
extern void _ZN8S7297C133v31Ev();
extern void _ZN8S7297C133v32Ev();
static  VTBL_ENTRY _tg__ZTV8S7297C13__7S7297C7__7S7297C1[] = {
  0,
  0,
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7297C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7297C7D1Ev,_ZTv0_n12_N7S7297C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7297C7D0Ev,_ZTv0_n12_N7S7297C7D0Ev),
  (VTBL_ENTRY)&_ZN8S7297C133v31Ev,
  (VTBL_ENTRY)&_ZN8S7297C133v32Ev,
};
static  VTT_ENTRY vtt_S7297C1[] = {
  {&(_ZTV7S7297C1[15]),  15,173},
  {&(_tg__ZTV7S7297C2__7S7297C1[15]),  15,32},
  {&(_tg__ZTV7S7297C3__7S7297C2__7S7297C1[16]),  16,27},
  {&(_tg__ZTV7S7297C57S7297C3__7S7297C2__7S7297C1[12]),  12,24},
  {&(_tg__ZTV7S7297C2__7S7297C1[15]),  15,32},
  {&(_tg__ZTV7S7297C7__7S7297C2__7S7297C1[30]),  30,42},
  {&(_tg__ZTV8S7297C117S7297C97S7297C87S7297C7__7S7297C2__7S7297C1[3]),  3,14},
  {&(_tg__ZTV8S7297C128S7297C117S7297C97S7297C87S7297C7__7S7297C2__7S7297C1[12]),  12,25},
  {&(_tg__ZTV8S7297C13__7S7297C2__7S7297C1[5]),  5,9},
  {&(_ZTV7S7297C1[48]),  48,173},
  {&(_ZTV7S7297C1[71]),  71,173},
  {&(_ZTV7S7297C1[15]),  15,173},
  {&(_ZTV7S7297C1[113]),  113,173},
  {&(_ZTV7S7297C1[128]),  128,173},
  {&(_ZTV7S7297C1[151]),  151,173},
  {&(_ZTV7S7297C1[169]),  169,173},
  {&(_tg__ZTV7S7297C3__7S7297C1[3]),  3,14},
  {&(_tg__ZTV7S7297C57S7297C3__7S7297C1[12]),  12,24},
  {&(_tg__ZTV7S7297C6__7S7297C57S7297C3__7S7297C1[11]),  11,20},
  {&(_tg__ZTV7S7297C5__7S7297C3__7S7297C1[12]),  12,24},
  {&(_tg__ZTV7S7297C6__7S7297C3__7S7297C1[11]),  11,20},
  {&(_tg__ZTV7S7297C7__7S7297C1[4]),  4,16},
  {&(_tg__ZTV7S7297C87S7297C7__7S7297C1[4]),  4,14},
  {&(_tg__ZTV7S7297C97S7297C87S7297C7__7S7297C1[3]),  3,8},
  {&(_tg__ZTV8S7297C117S7297C97S7297C87S7297C7__7S7297C1[3]),  3,14},
  {&(_tg__ZTV8S7297C128S7297C117S7297C97S7297C87S7297C7__7S7297C1[12]),  12,25},
  {&(_tg__ZTV7S7297C6__8S7297C128S7297C117S7297C97S7297C87S7297C7__7S7297C1[11]),  11,20},
  {&(_tg__ZTV8S7297C12__8S7297C117S7297C97S7297C87S7297C7__7S7297C1[12]),  12,25},
  {&(_tg__ZTV7S7297C6__A1__8S7297C117S7297C97S7297C87S7297C7__7S7297C1[11]),  11,20},
  {&(_tg__ZTV8S7297C11__7S7297C97S7297C87S7297C7__7S7297C1[3]),  3,14},
  {&(_tg__ZTV8S7297C128S7297C11__7S7297C97S7297C87S7297C7__7S7297C1[12]),  12,25},
  {&(_tg__ZTV7S7297C6__A1__7S7297C97S7297C87S7297C7__7S7297C1[11]),  11,20},
  {&(_tg__ZTV8S7297C117S7297C9__7S7297C87S7297C7__7S7297C1[3]),  3,14},
  {&(_tg__ZTV8S7297C128S7297C117S7297C9__7S7297C87S7297C7__7S7297C1[12]),  12,25},
  {&(_tg__ZTV7S7297C6__A1__7S7297C87S7297C7__7S7297C1[11]),  11,20},
  {&(_tg__ZTV8S7297C13__7S7297C87S7297C7__7S7297C1[5]),  5,9},
  {&(_tg__ZTV7S7297C6__7S7297C7__7S7297C1[11]),  11,20},
  {&(_tg__ZTV8S7297C117S7297C97S7297C8__7S7297C7__7S7297C1[3]),  3,14},
  {&(_tg__ZTV8S7297C128S7297C117S7297C97S7297C8__7S7297C7__7S7297C1[12]),  12,25},
  {&(_tg__ZTV8S7297C13__7S7297C7__7S7297C1[5]),  5,9},
};
extern VTBL_ENTRY _ZTI7S7297C1[];
extern  VTBL_ENTRY _ZTV7S7297C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7297C1[];
static VTBL_ENTRY alt_thunk_names37[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7297C7D0Ev,_ZTv0_n12_N7S7297C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7297C7D0Ev,_ZThn32_N7S7297C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7297C7D1Ev,_ZTv0_n12_N7S7297C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7297C7D1Ev,_ZThn32_N7S7297C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7297C8D0Ev,_ZTv0_n12_N7S7297C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7297C8D0Ev,_ZThn32_N7S7297C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7297C8D1Ev,_ZTv0_n12_N7S7297C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7297C8D1Ev,_ZThn32_N7S7297C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7297C2D0Ev,_ZTv0_n12_N7S7297C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7297C2D0Ev,_ZThn92_N7S7297C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7297C2D1Ev,_ZTv0_n12_N7S7297C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7297C2D1Ev,_ZThn92_N7S7297C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7297C2D0Ev,_ZTv0_n24_N7S7297C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7297C2D0Ev,_ZThn60_N7S7297C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7297C2D1Ev,_ZTv0_n24_N7S7297C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7297C2D1Ev,_ZThn60_N7S7297C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7297C2D0Ev,_ZTv0_n16_N7S7297C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7297C2D0Ev,_ZThn28_N7S7297C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7297C2D1Ev,_ZTv0_n16_N7S7297C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7297C2D1Ev,_ZThn28_N7S7297C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7297C1D0Ev,_ZTv0_n12_N7S7297C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7297C1D0Ev,_ZThn92_N7S7297C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7297C1D1Ev,_ZTv0_n12_N7S7297C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7297C1D1Ev,_ZThn92_N7S7297C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7297C1D0Ev,_ZTv0_n24_N7S7297C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7297C1D0Ev,_ZThn60_N7S7297C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7297C1D1Ev,_ZTv0_n24_N7S7297C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7297C1D1Ev,_ZThn60_N7S7297C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7297C1D0Ev,_ZTv0_n16_N7S7297C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7297C1D0Ev,_ZThn28_N7S7297C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7297C1D1Ev,_ZTv0_n16_N7S7297C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7297C1D1Ev,_ZThn28_N7S7297C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7297C1 = {  "S7297C1", // class name
  bases_S7297C1, 13,
  &(vtc_S7297C1[0]), // expected_vtbl_contents
  &(vtt_S7297C1[0]), // expected_vtt_contents
  ABISELECT(192,108), // object size
  NSPAIRA(_ZTI7S7297C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7297C1),173, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7297C1),40, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names37,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7300C4  {
  virtual void  v1(); // _ZN7S7300C42v1Ev
  ~S7300C4(); // tgen
  S7300C4(); // tgen
};
//SIG(-1 S7300C4) C1{ v1}


void  S7300C4 ::v1(){vfunc_called(this, "_ZN7S7300C42v1Ev");}
S7300C4 ::~S7300C4(){ note_dtor("S7300C4", this);} // tgen
S7300C4 ::S7300C4(){ note_ctor("S7300C4", this);} // tgen

static void Test_S7300C4()
{
  extern Class_Descriptor cd_S7300C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7300C4, buf);
    S7300C4 *dp, &lv = *(dp=new (buf) S7300C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7300C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7300C4)");
    test_class_info(&lv, &cd_S7300C4);
    dp->~S7300C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7300C4(Test_S7300C4, "S7300C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7300C4C1Ev();
extern void _ZN7S7300C4D1Ev();
Name_Map name_map_S7300C4[] = {
  NSPAIR(_ZN7S7300C4C1Ev),
  NSPAIR(_ZN7S7300C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7300C4[];
extern void _ZN7S7300C42v1Ev();
static  VTBL_ENTRY vtc_S7300C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7300C4[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
};
extern VTBL_ENTRY _ZTI7S7300C4[];
extern  VTBL_ENTRY _ZTV7S7300C4[];
Class_Descriptor cd_S7300C4 = {  "S7300C4", // class name
  0,0,//no base classes
  &(vtc_S7300C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7300C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7300C4),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7300C5  : S7300C4 {
  virtual void  v2(); // _ZN7S7300C52v2Ev
  virtual void  v3(); // _ZN7S7300C52v3Ev
  virtual void  v4(); // _ZN7S7300C52v4Ev
  ~S7300C5(); // tgen
  S7300C5(); // tgen
};
//SIG(-1 S7300C5) C1{ BC2{ v4} v1 v2 v3}


void  S7300C5 ::v2(){vfunc_called(this, "_ZN7S7300C52v2Ev");}
void  S7300C5 ::v3(){vfunc_called(this, "_ZN7S7300C52v3Ev");}
void  S7300C5 ::v4(){vfunc_called(this, "_ZN7S7300C52v4Ev");}
S7300C5 ::~S7300C5(){ note_dtor("S7300C5", this);} // tgen
S7300C5 ::S7300C5(){ note_ctor("S7300C5", this);} // tgen

static void Test_S7300C5()
{
  extern Class_Descriptor cd_S7300C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7300C5, buf);
    S7300C5 *dp, &lv = *(dp=new (buf) S7300C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7300C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7300C5)");
    check_base_class_offset(lv, (S7300C4*), 0, "S7300C5");
    test_class_info(&lv, &cd_S7300C5);
    dp->~S7300C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7300C5(Test_S7300C5, "S7300C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7300C5C1Ev();
extern void _ZN7S7300C5D1Ev();
Name_Map name_map_S7300C5[] = {
  NSPAIR(_ZN7S7300C5C1Ev),
  NSPAIR(_ZN7S7300C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7300C4;
extern VTBL_ENTRY _ZTI7S7300C4[];
extern  VTBL_ENTRY _ZTV7S7300C4[];
static Base_Class bases_S7300C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7300C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7300C5[];
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C52v2Ev();
extern void _ZN7S7300C52v3Ev();
extern void _ZN7S7300C52v4Ev();
static  VTBL_ENTRY vtc_S7300C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7300C5[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v4Ev,
};
extern VTBL_ENTRY _ZTI7S7300C5[];
extern  VTBL_ENTRY _ZTV7S7300C5[];
Class_Descriptor cd_S7300C5 = {  "S7300C5", // class name
  bases_S7300C5, 1,
  &(vtc_S7300C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7300C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7300C5),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7300C6  : virtual S7300C5 , S7300C4 {
  int s7300c6f0;
  virtual void  v5(); // _ZN7S7300C62v5Ev
  virtual void  v6(); // _ZN7S7300C62v6Ev
  virtual void  v7(); // _ZN7S7300C62v7Ev
  virtual void  v8(); // _ZN7S7300C62v8Ev
  virtual void  v9(); // _ZN7S7300C62v9Ev
  virtual void  v10(); // _ZN7S7300C63v10Ev
  ~S7300C6(); // tgen
  S7300C6(); // tgen
};
//SIG(-1 S7300C6) C1{ VBC2{ BC3{ v7} v8 v9 v10} BC3 v1 v2 v3 v4 v5 v6 Fi}


void  S7300C6 ::v5(){vfunc_called(this, "_ZN7S7300C62v5Ev");}
void  S7300C6 ::v6(){vfunc_called(this, "_ZN7S7300C62v6Ev");}
void  S7300C6 ::v7(){vfunc_called(this, "_ZN7S7300C62v7Ev");}
void  S7300C6 ::v8(){vfunc_called(this, "_ZN7S7300C62v8Ev");}
void  S7300C6 ::v9(){vfunc_called(this, "_ZN7S7300C62v9Ev");}
void  S7300C6 ::v10(){vfunc_called(this, "_ZN7S7300C63v10Ev");}
S7300C6 ::~S7300C6(){ note_dtor("S7300C6", this);} // tgen
S7300C6 ::S7300C6(){ note_ctor("S7300C6", this);} // tgen

static void Test_S7300C6()
{
  extern Class_Descriptor cd_S7300C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S7300C6, buf);
    S7300C6 *dp, &lv = *(dp=new (buf) S7300C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S7300C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7300C6)");
    check_base_class_offset(lv, (S7300C4*)(S7300C5*), ABISELECT(16,8), "S7300C6");
    check_base_class_offset(lv, (S7300C5*), ABISELECT(16,8), "S7300C6");
    /*is_ambiguous_... S7300C6::S7300C4 */ AMB_check_base_class_offset(lv, (S7300C4*), 0, "S7300C6");
    check_field_offset(lv, s7300c6f0, ABISELECT(8,4), "S7300C6.s7300c6f0");
    test_class_info(&lv, &cd_S7300C6);
    dp->~S7300C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7300C6(Test_S7300C6, "S7300C6", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S7300C6C1Ev();
extern void _ZN7S7300C6D1Ev();
Name_Map name_map_S7300C6[] = {
  NSPAIR(_ZN7S7300C6C1Ev),
  NSPAIR(_ZN7S7300C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7300C4;
extern VTBL_ENTRY _ZTI7S7300C4[];
extern  VTBL_ENTRY _ZTV7S7300C4[];
extern Class_Descriptor cd_S7300C5;
extern VTBL_ENTRY _ZTI7S7300C5[];
extern  VTBL_ENTRY _ZTV7S7300C5[];
extern Class_Descriptor cd_S7300C4;
extern VTBL_ENTRY _ZTI7S7300C4[];
extern  VTBL_ENTRY _ZTV7S7300C4[];
static Base_Class bases_S7300C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7300C4,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7300C5,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7300C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7300C6[];
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C62v5Ev();
extern void _ZN7S7300C62v6Ev();
extern void _ZN7S7300C62v7Ev();
extern void _ZN7S7300C62v8Ev();
extern void _ZN7S7300C62v9Ev();
extern void _ZN7S7300C63v10Ev();
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C52v2Ev();
extern void _ZN7S7300C52v3Ev();
extern void _ZN7S7300C52v4Ev();
static  VTBL_ENTRY vtc_S7300C6[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7300C6[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7300C63v10Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7300C6[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v4Ev,
};
extern VTBL_ENTRY _ZTV7S7300C6[];
static  VTT_ENTRY vtt_S7300C6[] = {
  {&(_ZTV7S7300C6[3]),  3,20},
  {&(_ZTV7S7300C6[16]),  16,20},
};
extern VTBL_ENTRY _ZTI7S7300C6[];
extern  VTBL_ENTRY _ZTV7S7300C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7300C6[];
Class_Descriptor cd_S7300C6 = {  "S7300C6", // class name
  bases_S7300C6, 3,
  &(vtc_S7300C6[0]), // expected_vtbl_contents
  &(vtt_S7300C6[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S7300C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7300C6),20, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7300C6),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7300C3  : S7300C4 , virtual S7300C5 , S7300C6 {
  char s7300c3f0;
  virtual void  v11(); // _ZN7S7300C33v11Ev
  virtual void  v12(); // _ZN7S7300C33v12Ev
  virtual void  v13(); // _ZN7S7300C33v13Ev
  virtual void  v14(); // _ZN7S7300C33v14Ev
  virtual void  v15(); // _ZN7S7300C33v15Ev
  virtual void  v16(); // _ZN7S7300C33v16Ev
  virtual void  v17(); // _ZN7S7300C33v17Ev
  ~S7300C3(); // tgen
  S7300C3(); // tgen
};
//SIG(-1 S7300C3) C1{ BC2{ v8} VBC3{ BC2 v9 v10 v11} BC4{ VBC3 BC2 v12 v13 v14 v15 v16 v17 Fi} v1 v2 v3 v4 v5 v6 v7 Fc}


void  S7300C3 ::v11(){vfunc_called(this, "_ZN7S7300C33v11Ev");}
void  S7300C3 ::v12(){vfunc_called(this, "_ZN7S7300C33v12Ev");}
void  S7300C3 ::v13(){vfunc_called(this, "_ZN7S7300C33v13Ev");}
void  S7300C3 ::v14(){vfunc_called(this, "_ZN7S7300C33v14Ev");}
void  S7300C3 ::v15(){vfunc_called(this, "_ZN7S7300C33v15Ev");}
void  S7300C3 ::v16(){vfunc_called(this, "_ZN7S7300C33v16Ev");}
void  S7300C3 ::v17(){vfunc_called(this, "_ZN7S7300C33v17Ev");}
S7300C3 ::~S7300C3(){ note_dtor("S7300C3", this);} // tgen
S7300C3 ::S7300C3(){ note_ctor("S7300C3", this);} // tgen

static void Test_S7300C3()
{
  extern Class_Descriptor cd_S7300C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S7300C3, buf);
    S7300C3 *dp, &lv = *(dp=new (buf) S7300C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S7300C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7300C3)");
    /*is_ambiguous_... S7300C3::S7300C4 */ AMB_check_base_class_offset(lv, (S7300C4*), 0, "S7300C3");
    check_base_class_offset(lv, (S7300C4*)(S7300C5*), ABISELECT(24,16), "S7300C3");
    check_base_class_offset(lv, (S7300C5*), ABISELECT(24,16), "S7300C3");
    check_base_class_offset(lv, (S7300C5*)(S7300C6*), ABISELECT(24,16), "S7300C3");
    /*is_ambiguous_... S7300C6::S7300C4 */ AMB_check_base_class_offset(lv, (S7300C4*)(S7300C6*), ABISELECT(8,4), "S7300C3");
    check_base_class_offset(lv, (S7300C6*), ABISELECT(8,4), "S7300C3");
    check_field_offset(lv, s7300c3f0, ABISELECT(20,12), "S7300C3.s7300c3f0");
    test_class_info(&lv, &cd_S7300C3);
    dp->~S7300C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7300C3(Test_S7300C3, "S7300C3", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S7300C3C1Ev();
extern void _ZN7S7300C3D1Ev();
Name_Map name_map_S7300C3[] = {
  NSPAIR(_ZN7S7300C3C1Ev),
  NSPAIR(_ZN7S7300C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7300C4;
extern VTBL_ENTRY _ZTI7S7300C4[];
extern  VTBL_ENTRY _ZTV7S7300C4[];
extern Class_Descriptor cd_S7300C4;
extern VTBL_ENTRY _ZTI7S7300C4[];
extern  VTBL_ENTRY _ZTV7S7300C4[];
extern Class_Descriptor cd_S7300C5;
extern VTBL_ENTRY _ZTI7S7300C5[];
extern  VTBL_ENTRY _ZTV7S7300C5[];
extern Class_Descriptor cd_S7300C4;
extern VTBL_ENTRY _ZTI7S7300C4[];
extern  VTBL_ENTRY _ZTV7S7300C4[];
extern Class_Descriptor cd_S7300C6;
extern VTBL_ENTRY _ZTI7S7300C6[];
extern  VTBL_ENTRY _ZTV7S7300C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7300C6[];
static Base_Class bases_S7300C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7300C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7300C4,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7300C5,    ABISELECT(24,16), //bcp->offset
    21, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7300C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7300C6,    ABISELECT(8,4), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7300C3[];
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C33v11Ev();
extern void _ZN7S7300C33v12Ev();
extern void _ZN7S7300C33v13Ev();
extern void _ZN7S7300C33v14Ev();
extern void _ZN7S7300C33v15Ev();
extern void _ZN7S7300C33v16Ev();
extern void _ZN7S7300C33v17Ev();
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C62v5Ev();
extern void _ZN7S7300C62v6Ev();
extern void _ZN7S7300C62v7Ev();
extern void _ZN7S7300C62v8Ev();
extern void _ZN7S7300C62v9Ev();
extern void _ZN7S7300C63v10Ev();
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C52v2Ev();
extern void _ZN7S7300C52v3Ev();
extern void _ZN7S7300C52v4Ev();
static  VTBL_ENTRY vtc_S7300C3[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7300C3[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v17Ev,
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7300C3[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7300C63v10Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7300C3[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v4Ev,
};
extern VTBL_ENTRY _ZTV7S7300C3[];
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C62v5Ev();
extern void _ZN7S7300C62v6Ev();
extern void _ZN7S7300C62v7Ev();
extern void _ZN7S7300C62v8Ev();
extern void _ZN7S7300C62v9Ev();
extern void _ZN7S7300C63v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C6__7S7300C3[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7300C6[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7300C63v10Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C52v2Ev();
extern void _ZN7S7300C52v3Ev();
extern void _ZN7S7300C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C5__7S7300C6__7S7300C3[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7300C6[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v4Ev,
};
static  VTT_ENTRY vtt_S7300C3[] = {
  {&(_ZTV7S7300C3[3]),  3,31},
  {&(_tg__ZTV7S7300C6__7S7300C3[3]),  3,10},
  {&(_tg__ZTV7S7300C5__7S7300C6__7S7300C3[6]),  6,10},
  {&(_ZTV7S7300C3[27]),  27,31},
  {&(_ZTV7S7300C3[14]),  14,31},
};
extern VTBL_ENTRY _ZTI7S7300C3[];
extern  VTBL_ENTRY _ZTV7S7300C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7300C3[];
Class_Descriptor cd_S7300C3 = {  "S7300C3", // class name
  bases_S7300C3, 5,
  &(vtc_S7300C3[0]), // expected_vtbl_contents
  &(vtt_S7300C3[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S7300C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7300C3),31, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7300C3),5, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7300C7  {
  virtual void  v18(); // _ZN7S7300C73v18Ev
  virtual void  v19(); // _ZN7S7300C73v19Ev
  virtual void  v20(); // _ZN7S7300C73v20Ev
  virtual void  v21(); // _ZN7S7300C73v21Ev
  virtual void  v22(); // _ZN7S7300C73v22Ev
  ~S7300C7(); // tgen
  S7300C7(); // tgen
};
//SIG(-1 S7300C7) C1{ v1 v2 v3 v4 v5}


void  S7300C7 ::v18(){vfunc_called(this, "_ZN7S7300C73v18Ev");}
void  S7300C7 ::v19(){vfunc_called(this, "_ZN7S7300C73v19Ev");}
void  S7300C7 ::v20(){vfunc_called(this, "_ZN7S7300C73v20Ev");}
void  S7300C7 ::v21(){vfunc_called(this, "_ZN7S7300C73v21Ev");}
void  S7300C7 ::v22(){vfunc_called(this, "_ZN7S7300C73v22Ev");}
S7300C7 ::~S7300C7(){ note_dtor("S7300C7", this);} // tgen
S7300C7 ::S7300C7(){ note_ctor("S7300C7", this);} // tgen

static void Test_S7300C7()
{
  extern Class_Descriptor cd_S7300C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7300C7, buf);
    S7300C7 *dp, &lv = *(dp=new (buf) S7300C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7300C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7300C7)");
    test_class_info(&lv, &cd_S7300C7);
    dp->~S7300C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7300C7(Test_S7300C7, "S7300C7", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7300C7C1Ev();
extern void _ZN7S7300C7D1Ev();
Name_Map name_map_S7300C7[] = {
  NSPAIR(_ZN7S7300C7C1Ev),
  NSPAIR(_ZN7S7300C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7300C7[];
extern void _ZN7S7300C73v18Ev();
extern void _ZN7S7300C73v19Ev();
extern void _ZN7S7300C73v20Ev();
extern void _ZN7S7300C73v21Ev();
extern void _ZN7S7300C73v22Ev();
static  VTBL_ENTRY vtc_S7300C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7300C7[0]),
  (VTBL_ENTRY)&_ZN7S7300C73v18Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v19Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v20Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v21Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v22Ev,
};
extern VTBL_ENTRY _ZTI7S7300C7[];
extern  VTBL_ENTRY _ZTV7S7300C7[];
Class_Descriptor cd_S7300C7 = {  "S7300C7", // class name
  0,0,//no base classes
  &(vtc_S7300C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7300C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7300C7),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7300C8  : virtual S7300C4 {
  virtual  ~S7300C8(); // _ZN7S7300C8D2Ev
  virtual void  v23(); // _ZN7S7300C83v23Ev
  S7300C8(); // tgen
};
//SIG(-1 S7300C8) C1{ VBC2{ v2} vd v1}


 S7300C8 ::~S7300C8(){ note_dtor("S7300C8", this);}
void  S7300C8 ::v23(){vfunc_called(this, "_ZN7S7300C83v23Ev");}
S7300C8 ::S7300C8(){ note_ctor("S7300C8", this);} // tgen

static void Test_S7300C8()
{
  extern Class_Descriptor cd_S7300C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7300C8, buf);
    S7300C8 *dp, &lv = *(dp=new (buf) S7300C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7300C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7300C8)");
    check_base_class_offset(lv, (S7300C4*), 0, "S7300C8");
    test_class_info(&lv, &cd_S7300C8);
    dp->~S7300C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7300C8(Test_S7300C8, "S7300C8", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7300C8C1Ev();
extern void _ZN7S7300C8D2Ev();
Name_Map name_map_S7300C8[] = {
  NSPAIR(_ZN7S7300C8C1Ev),
  NSPAIR(_ZN7S7300C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7300C4;
extern VTBL_ENTRY _ZTI7S7300C4[];
extern  VTBL_ENTRY _ZTV7S7300C4[];
static Base_Class bases_S7300C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7300C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7300C8[];
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C8D1Ev();
extern void _ZN7S7300C8D0Ev();
extern void _ZN7S7300C83v23Ev();
static  VTBL_ENTRY vtc_S7300C8[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7300C8[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7300C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7300C83v23Ev,
};
extern VTBL_ENTRY _ZTV7S7300C8[];
static  VTT_ENTRY vtt_S7300C8[] = {
  {&(_ZTV7S7300C8[4]),  4,8},
  {&(_ZTV7S7300C8[4]),  4,8},
};
extern VTBL_ENTRY _ZTI7S7300C8[];
extern  VTBL_ENTRY _ZTV7S7300C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7300C8[];
Class_Descriptor cd_S7300C8 = {  "S7300C8", // class name
  bases_S7300C8, 1,
  &(vtc_S7300C8[0]), // expected_vtbl_contents
  &(vtt_S7300C8[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7300C8),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7300C8),8, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7300C8),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7300C2  : virtual S7300C3 , virtual S7300C7 , S7300C8 {
  ::S7300C6 s7300c2f0;
  virtual  ~S7300C2(); // _ZN7S7300C2D2Ev
  virtual void  v24(); // _ZN7S7300C23v24Ev
  virtual void  v25(); // _ZN7S7300C23v25Ev
  virtual void  v26(); // _ZN7S7300C23v26Ev
  S7300C2(); // tgen
};
//SIG(-1 S7300C2) C1{ VBC2{ BC3{ v4} VBC4{ BC3 v5 v6 v7} BC5{ VBC4 BC3 v8 v9 v10 v11 v12 v13 Fi} v14 v15 v16 v17 v18 v19 v20 Fc} VBC6{ v21 v22 v23 v24 v25} BC7{ VBC3 vd v26} vd v1 v2 v3 FC5}


 S7300C2 ::~S7300C2(){ note_dtor("S7300C2", this);}
void  S7300C2 ::v24(){vfunc_called(this, "_ZN7S7300C23v24Ev");}
void  S7300C2 ::v25(){vfunc_called(this, "_ZN7S7300C23v25Ev");}
void  S7300C2 ::v26(){vfunc_called(this, "_ZN7S7300C23v26Ev");}
S7300C2 ::S7300C2(){ note_ctor("S7300C2", this);} // tgen

static void Test_S7300C2()
{
  extern Class_Descriptor cd_S7300C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,11)];
    init_test(&cd_S7300C2, buf);
    S7300C2 *dp, &lv = *(dp=new (buf) S7300C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,40), "sizeof(S7300C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7300C2)");
    /*is_ambiguous_... S7300C3::S7300C4 */ AMB_check_base_class_offset(lv, (S7300C4*)(S7300C3*), ABISELECT(32,16), "S7300C2");
    check_base_class_offset(lv, (S7300C4*)(S7300C5*), ABISELECT(56,32), "S7300C2");
    check_base_class_offset(lv, (S7300C5*)(S7300C3*), ABISELECT(56,32), "S7300C2");
    check_base_class_offset(lv, (S7300C5*)(S7300C6*)(S7300C3*), ABISELECT(56,32), "S7300C2");
    /*is_ambiguous_... S7300C6::S7300C4 */ AMB_check_base_class_offset(lv, (S7300C4*)(S7300C6*)(S7300C3*), ABISELECT(40,20), "S7300C2");
    check_base_class_offset(lv, (S7300C6*)(S7300C3*), ABISELECT(40,20), "S7300C2");
    check_base_class_offset(lv, (S7300C3*), ABISELECT(32,16), "S7300C2");
    check_base_class_offset(lv, (S7300C7*), ABISELECT(64,36), "S7300C2");
    check_base_class_offset(lv, (S7300C4*)(S7300C8*), 0, "S7300C2");
    check_base_class_offset(lv, (S7300C8*), 0, "S7300C2");
    check_field_offset(lv, s7300c2f0, ABISELECT(8,4), "S7300C2.s7300c2f0");
    test_class_info(&lv, &cd_S7300C2);
    dp->~S7300C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7300C2(Test_S7300C2, "S7300C2", ABISELECT(72,40));

#else // __cplusplus

extern void _ZN7S7300C2C1Ev();
extern void _ZN7S7300C2D2Ev();
Name_Map name_map_S7300C2[] = {
  NSPAIR(_ZN7S7300C2C1Ev),
  NSPAIR(_ZN7S7300C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7300C4;
extern VTBL_ENTRY _ZTI7S7300C4[];
extern  VTBL_ENTRY _ZTV7S7300C4[];
extern Class_Descriptor cd_S7300C4;
extern VTBL_ENTRY _ZTI7S7300C4[];
extern  VTBL_ENTRY _ZTV7S7300C4[];
extern Class_Descriptor cd_S7300C5;
extern VTBL_ENTRY _ZTI7S7300C5[];
extern  VTBL_ENTRY _ZTV7S7300C5[];
extern Class_Descriptor cd_S7300C4;
extern VTBL_ENTRY _ZTI7S7300C4[];
extern  VTBL_ENTRY _ZTV7S7300C4[];
extern Class_Descriptor cd_S7300C6;
extern VTBL_ENTRY _ZTI7S7300C6[];
extern  VTBL_ENTRY _ZTV7S7300C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7300C6[];
extern Class_Descriptor cd_S7300C3;
extern VTBL_ENTRY _ZTI7S7300C3[];
extern  VTBL_ENTRY _ZTV7S7300C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7300C3[];
extern Class_Descriptor cd_S7300C7;
extern VTBL_ENTRY _ZTI7S7300C7[];
extern  VTBL_ENTRY _ZTV7S7300C7[];
extern Class_Descriptor cd_S7300C4;
extern VTBL_ENTRY _ZTI7S7300C4[];
extern  VTBL_ENTRY _ZTV7S7300C4[];
extern Class_Descriptor cd_S7300C8;
extern VTBL_ENTRY _ZTI7S7300C8[];
extern  VTBL_ENTRY _ZTV7S7300C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7300C8[];
static Base_Class bases_S7300C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7300C4,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7300C4,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7300C5,    ABISELECT(56,32), //bcp->offset
    49, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7300C4,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7300C6,    ABISELECT(40,20), //bcp->offset
    39, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7300C3,    ABISELECT(32,16), //bcp->offset
    14, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7300C7,    ABISELECT(64,36), //bcp->offset
    59, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7300C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7300C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7300C2[];
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C2D1Ev();
extern void _ZN7S7300C2D0Ev();
extern void _ZN7S7300C83v23Ev();
extern void _ZN7S7300C23v24Ev();
extern void _ZN7S7300C23v25Ev();
extern void _ZN7S7300C23v26Ev();
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C33v11Ev();
extern void _ZN7S7300C33v12Ev();
extern void _ZN7S7300C33v13Ev();
extern void _ZN7S7300C33v14Ev();
extern void _ZN7S7300C33v15Ev();
extern void _ZN7S7300C33v16Ev();
extern void _ZN7S7300C33v17Ev();
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C62v5Ev();
extern void _ZN7S7300C62v6Ev();
extern void _ZN7S7300C62v7Ev();
extern void _ZN7S7300C62v8Ev();
extern void _ZN7S7300C62v9Ev();
extern void _ZN7S7300C63v10Ev();
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C52v2Ev();
extern void _ZN7S7300C52v3Ev();
extern void _ZN7S7300C52v4Ev();
extern void _ZN7S7300C73v18Ev();
extern void _ZN7S7300C73v19Ev();
extern void _ZN7S7300C73v20Ev();
extern void _ZN7S7300C73v21Ev();
extern void _ZN7S7300C73v22Ev();
static  VTBL_ENTRY vtc_S7300C2[] = {
  ABISELECT(64,36),
  ABISELECT(56,32),
  ABISELECT(32,16),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7300C2[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7300C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7300C83v23Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v24Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v25Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v26Ev,
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7300C2[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v17Ev,
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7300C2[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7300C63v10Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7300C2[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v4Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7300C2[0]),
  (VTBL_ENTRY)&_ZN7S7300C73v18Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v19Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v20Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v21Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v22Ev,
};
extern VTBL_ENTRY _ZTV7S7300C2[];
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C8D1Ev();
extern void _ZN7S7300C8D0Ev();
extern void _ZN7S7300C83v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C8__7S7300C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7300C8[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7300C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7300C83v23Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C33v11Ev();
extern void _ZN7S7300C33v12Ev();
extern void _ZN7S7300C33v13Ev();
extern void _ZN7S7300C33v14Ev();
extern void _ZN7S7300C33v15Ev();
extern void _ZN7S7300C33v16Ev();
extern void _ZN7S7300C33v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C3__7S7300C2[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7300C3[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v17Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C62v5Ev();
extern void _ZN7S7300C62v6Ev();
extern void _ZN7S7300C62v7Ev();
extern void _ZN7S7300C62v8Ev();
extern void _ZN7S7300C62v9Ev();
extern void _ZN7S7300C63v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C67S7300C3__7S7300C2[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7300C6[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7300C63v10Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C52v2Ev();
extern void _ZN7S7300C52v3Ev();
extern void _ZN7S7300C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C5__7S7300C67S7300C3__7S7300C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7300C6[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v4Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C52v2Ev();
extern void _ZN7S7300C52v3Ev();
extern void _ZN7S7300C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C5__7S7300C3__7S7300C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7300C3[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v4Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C62v5Ev();
extern void _ZN7S7300C62v6Ev();
extern void _ZN7S7300C62v7Ev();
extern void _ZN7S7300C62v8Ev();
extern void _ZN7S7300C62v9Ev();
extern void _ZN7S7300C63v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C6__7S7300C3__7S7300C2[] = {
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7300C3[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7300C63v10Ev,
};
static  VTT_ENTRY vtt_S7300C2[] = {
  {&(_ZTV7S7300C2[7]),  7,71},
  {&(_tg__ZTV7S7300C8__7S7300C2[4]),  4,8},
  {&(_tg__ZTV7S7300C8__7S7300C2[4]),  4,8},
  {&(_ZTV7S7300C2[31]),  31,71},
  {&(_ZTV7S7300C2[55]),  55,71},
  {&(_ZTV7S7300C2[42]),  42,71},
  {&(_ZTV7S7300C2[66]),  66,71},
  {&(_ZTV7S7300C2[7]),  7,71},
  {&(_tg__ZTV7S7300C3__7S7300C2[3]),  3,11},
  {&(_tg__ZTV7S7300C67S7300C3__7S7300C2[3]),  3,10},
  {&(_tg__ZTV7S7300C5__7S7300C67S7300C3__7S7300C2[6]),  6,10},
  {&(_tg__ZTV7S7300C5__7S7300C3__7S7300C2[6]),  6,10},
  {&(_tg__ZTV7S7300C6__7S7300C3__7S7300C2[3]),  3,10},
};
extern VTBL_ENTRY _ZTI7S7300C2[];
extern  VTBL_ENTRY _ZTV7S7300C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7300C2[];
Class_Descriptor cd_S7300C2 = {  "S7300C2", // class name
  bases_S7300C2, 9,
  &(vtc_S7300C2[0]), // expected_vtbl_contents
  &(vtt_S7300C2[0]), // expected_vtt_contents
  ABISELECT(72,40), // object size
  NSPAIRA(_ZTI7S7300C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7300C2),71, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7300C2),13, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7300C9  {
  int s7300c9f0;
  virtual void  v31(); // _ZN7S7300C93v31Ev
  virtual void  v32(); // _ZN7S7300C93v32Ev
  virtual void  v33(); // _ZN7S7300C93v33Ev
  ~S7300C9(); // tgen
  S7300C9(); // tgen
};
//SIG(-1 S7300C9) C1{ v1 v2 v3 Fi}


void  S7300C9 ::v31(){vfunc_called(this, "_ZN7S7300C93v31Ev");}
void  S7300C9 ::v32(){vfunc_called(this, "_ZN7S7300C93v32Ev");}
void  S7300C9 ::v33(){vfunc_called(this, "_ZN7S7300C93v33Ev");}
S7300C9 ::~S7300C9(){ note_dtor("S7300C9", this);} // tgen
S7300C9 ::S7300C9(){ note_ctor("S7300C9", this);} // tgen

static void Test_S7300C9()
{
  extern Class_Descriptor cd_S7300C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7300C9, buf);
    S7300C9 *dp, &lv = *(dp=new (buf) S7300C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7300C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7300C9)");
    check_field_offset(lv, s7300c9f0, ABISELECT(8,4), "S7300C9.s7300c9f0");
    test_class_info(&lv, &cd_S7300C9);
    dp->~S7300C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7300C9(Test_S7300C9, "S7300C9", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7300C9C1Ev();
extern void _ZN7S7300C9D1Ev();
Name_Map name_map_S7300C9[] = {
  NSPAIR(_ZN7S7300C9C1Ev),
  NSPAIR(_ZN7S7300C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7300C9[];
extern void _ZN7S7300C93v31Ev();
extern void _ZN7S7300C93v32Ev();
extern void _ZN7S7300C93v33Ev();
static  VTBL_ENTRY vtc_S7300C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7300C9[0]),
  (VTBL_ENTRY)&_ZN7S7300C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7300C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7300C93v33Ev,
};
extern VTBL_ENTRY _ZTI7S7300C9[];
extern  VTBL_ENTRY _ZTV7S7300C9[];
Class_Descriptor cd_S7300C9 = {  "S7300C9", // class name
  0,0,//no base classes
  &(vtc_S7300C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7300C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7300C9),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7300C12  {
  virtual  ~S7300C12(); // _ZN8S7300C12D1Ev
  virtual void  v27(); // _ZN8S7300C123v27Ev
  virtual void  v28(); // _ZN8S7300C123v28Ev
  virtual void  v29(); // _ZN8S7300C123v29Ev
  virtual void  v30(); // _ZN8S7300C123v30Ev
  S7300C12(); // tgen
};
//SIG(-1 S7300C12) C1{ vd v1 v2 v3 v4}


 S7300C12 ::~S7300C12(){ note_dtor("S7300C12", this);}
void  S7300C12 ::v27(){vfunc_called(this, "_ZN8S7300C123v27Ev");}
void  S7300C12 ::v28(){vfunc_called(this, "_ZN8S7300C123v28Ev");}
void  S7300C12 ::v29(){vfunc_called(this, "_ZN8S7300C123v29Ev");}
void  S7300C12 ::v30(){vfunc_called(this, "_ZN8S7300C123v30Ev");}
S7300C12 ::S7300C12(){ note_ctor("S7300C12", this);} // tgen

static void Test_S7300C12()
{
  extern Class_Descriptor cd_S7300C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7300C12, buf);
    S7300C12 *dp, &lv = *(dp=new (buf) S7300C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7300C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7300C12)");
    test_class_info(&lv, &cd_S7300C12);
    dp->~S7300C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7300C12(Test_S7300C12, "S7300C12", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S7300C12C1Ev();
extern void _ZN8S7300C12D1Ev();
Name_Map name_map_S7300C12[] = {
  NSPAIR(_ZN8S7300C12C1Ev),
  NSPAIR(_ZN8S7300C12D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S7300C12[];
extern void _ZN8S7300C12D1Ev();
extern void _ZN8S7300C12D0Ev();
extern void _ZN8S7300C123v27Ev();
extern void _ZN8S7300C123v28Ev();
extern void _ZN8S7300C123v29Ev();
extern void _ZN8S7300C123v30Ev();
static  VTBL_ENTRY vtc_S7300C12[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S7300C12[0]),
  (VTBL_ENTRY)&_ZN8S7300C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7300C12D0Ev,
  (VTBL_ENTRY)&_ZN8S7300C123v27Ev,
  (VTBL_ENTRY)&_ZN8S7300C123v28Ev,
  (VTBL_ENTRY)&_ZN8S7300C123v29Ev,
  (VTBL_ENTRY)&_ZN8S7300C123v30Ev,
};
extern VTBL_ENTRY _ZTI8S7300C12[];
extern  VTBL_ENTRY _ZTV8S7300C12[];
Class_Descriptor cd_S7300C12 = {  "S7300C12", // class name
  0,0,//no base classes
  &(vtc_S7300C12[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S7300C12),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S7300C12),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7300C13  : virtual S7300C3 , virtual S7300C9 {
  void *s7300c13f0;
  char s7300c13f1[7];
  virtual void  v34(); // _ZN8S7300C133v34Ev
  virtual void  v35(); // _ZN8S7300C133v35Ev
  virtual void  v36(); // _ZN8S7300C133v36Ev
  virtual void  v37(); // _ZN8S7300C133v37Ev
  virtual void  v38(); // _ZN8S7300C133v38Ev
  ~S7300C13(); // tgen
  S7300C13(); // tgen
};
//SIG(-1 S7300C13) C1{ VBC2{ BC3{ v6} VBC4{ BC3 v7 v8 v9} BC5{ VBC4 BC3 v10 v11 v12 v13 v14 v15 Fi} v16 v17 v18 v19 v20 v21 v22 Fc} VBC6{ v23 v24 v25 Fi} v1 v2 v3 v4 v5 Fp Fc[7]}


void  S7300C13 ::v34(){vfunc_called(this, "_ZN8S7300C133v34Ev");}
void  S7300C13 ::v35(){vfunc_called(this, "_ZN8S7300C133v35Ev");}
void  S7300C13 ::v36(){vfunc_called(this, "_ZN8S7300C133v36Ev");}
void  S7300C13 ::v37(){vfunc_called(this, "_ZN8S7300C133v37Ev");}
void  S7300C13 ::v38(){vfunc_called(this, "_ZN8S7300C133v38Ev");}
S7300C13 ::~S7300C13(){ note_dtor("S7300C13", this);} // tgen
S7300C13 ::S7300C13(){ note_ctor("S7300C13", this);} // tgen

static void Test_S7300C13()
{
  extern Class_Descriptor cd_S7300C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,11)];
    init_test(&cd_S7300C13, buf);
    S7300C13 *dp, &lv = *(dp=new (buf) S7300C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,40), "sizeof(S7300C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7300C13)");
    /*is_ambiguous_... S7300C3::S7300C4 */ AMB_check_base_class_offset(lv, (S7300C4*)(S7300C3*), ABISELECT(24,16), "S7300C13");
    check_base_class_offset(lv, (S7300C4*)(S7300C5*), 0, "S7300C13");
    check_base_class_offset(lv, (S7300C5*)(S7300C3*), 0, "S7300C13");
    check_base_class_offset(lv, (S7300C5*)(S7300C6*)(S7300C3*), 0, "S7300C13");
    /*is_ambiguous_... S7300C6::S7300C4 */ AMB_check_base_class_offset(lv, (S7300C4*)(S7300C6*)(S7300C3*), ABISELECT(32,20), "S7300C13");
    check_base_class_offset(lv, (S7300C6*)(S7300C3*), ABISELECT(32,20), "S7300C13");
    check_base_class_offset(lv, (S7300C3*), ABISELECT(24,16), "S7300C13");
    check_base_class_offset(lv, (S7300C9*), ABISELECT(48,32), "S7300C13");
    check_field_offset(lv, s7300c13f0, ABISELECT(8,4), "S7300C13.s7300c13f0");
    check_field_offset(lv, s7300c13f1, ABISELECT(16,8), "S7300C13.s7300c13f1");
    test_class_info(&lv, &cd_S7300C13);
    dp->~S7300C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7300C13(Test_S7300C13, "S7300C13", ABISELECT(64,40));

#else // __cplusplus

extern void _ZN8S7300C13C1Ev();
extern void _ZN8S7300C13D1Ev();
Name_Map name_map_S7300C13[] = {
  NSPAIR(_ZN8S7300C13C1Ev),
  NSPAIR(_ZN8S7300C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7300C4;
extern VTBL_ENTRY _ZTI7S7300C4[];
extern  VTBL_ENTRY _ZTV7S7300C4[];
extern Class_Descriptor cd_S7300C4;
extern VTBL_ENTRY _ZTI7S7300C4[];
extern  VTBL_ENTRY _ZTV7S7300C4[];
extern Class_Descriptor cd_S7300C5;
extern VTBL_ENTRY _ZTI7S7300C5[];
extern  VTBL_ENTRY _ZTV7S7300C5[];
extern Class_Descriptor cd_S7300C4;
extern VTBL_ENTRY _ZTI7S7300C4[];
extern  VTBL_ENTRY _ZTV7S7300C4[];
extern Class_Descriptor cd_S7300C6;
extern VTBL_ENTRY _ZTI7S7300C6[];
extern  VTBL_ENTRY _ZTV7S7300C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7300C6[];
extern Class_Descriptor cd_S7300C3;
extern VTBL_ENTRY _ZTI7S7300C3[];
extern  VTBL_ENTRY _ZTV7S7300C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7300C3[];
extern Class_Descriptor cd_S7300C9;
extern VTBL_ENTRY _ZTI7S7300C9[];
extern  VTBL_ENTRY _ZTV7S7300C9[];
static Base_Class bases_S7300C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7300C4,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7300C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7300C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7300C4,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7300C6,    ABISELECT(32,20), //bcp->offset
    43, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7300C3,    ABISELECT(24,16), //bcp->offset
    18, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7300C9,    ABISELECT(48,32), //bcp->offset
    53, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7300C13[];
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C52v2Ev();
extern void _ZN7S7300C52v3Ev();
extern void _ZN7S7300C52v4Ev();
extern void _ZN8S7300C133v34Ev();
extern void _ZN8S7300C133v35Ev();
extern void _ZN8S7300C133v36Ev();
extern void _ZN8S7300C133v37Ev();
extern void _ZN8S7300C133v38Ev();
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C33v11Ev();
extern void _ZN7S7300C33v12Ev();
extern void _ZN7S7300C33v13Ev();
extern void _ZN7S7300C33v14Ev();
extern void _ZN7S7300C33v15Ev();
extern void _ZN7S7300C33v16Ev();
extern void _ZN7S7300C33v17Ev();
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C62v5Ev();
extern void _ZN7S7300C62v6Ev();
extern void _ZN7S7300C62v7Ev();
extern void _ZN7S7300C62v8Ev();
extern void _ZN7S7300C62v9Ev();
extern void _ZN7S7300C63v10Ev();
extern void _ZN7S7300C93v31Ev();
extern void _ZN7S7300C93v32Ev();
extern void _ZN7S7300C93v33Ev();
static  VTBL_ENTRY vtc_S7300C13[] = {
  ABISELECT(48,32),
  0,
  ABISELECT(24,16),
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7300C13[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v4Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v34Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v35Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v36Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v37Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v38Ev,
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7300C13[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v17Ev,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S7300C13[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7300C63v10Ev,
  0,
  0,
  0,
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S7300C13[0]),
  (VTBL_ENTRY)&_ZN7S7300C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7300C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7300C93v33Ev,
};
extern VTBL_ENTRY _ZTV8S7300C13[];
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C33v11Ev();
extern void _ZN7S7300C33v12Ev();
extern void _ZN7S7300C33v13Ev();
extern void _ZN7S7300C33v14Ev();
extern void _ZN7S7300C33v15Ev();
extern void _ZN7S7300C33v16Ev();
extern void _ZN7S7300C33v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C3__8S7300C13[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7300C3[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v17Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C62v5Ev();
extern void _ZN7S7300C62v6Ev();
extern void _ZN7S7300C62v7Ev();
extern void _ZN7S7300C62v8Ev();
extern void _ZN7S7300C62v9Ev();
extern void _ZN7S7300C63v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C67S7300C3__8S7300C13[] = {
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7300C6[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7300C63v10Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C52v2Ev();
extern void _ZN7S7300C52v3Ev();
extern void _ZN7S7300C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C5__7S7300C67S7300C3__8S7300C13[] = {
  0,
  0,
  0,
  0,
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI7S7300C6[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v4Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C52v2Ev();
extern void _ZN7S7300C52v3Ev();
extern void _ZN7S7300C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C5__7S7300C3__8S7300C13[] = {
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S7300C3[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v4Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C62v5Ev();
extern void _ZN7S7300C62v6Ev();
extern void _ZN7S7300C62v7Ev();
extern void _ZN7S7300C62v8Ev();
extern void _ZN7S7300C62v9Ev();
extern void _ZN7S7300C63v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C6__7S7300C3__8S7300C13[] = {
  ABISELECT(-32,-20),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7300C3[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7300C63v10Ev,
};
static  VTT_ENTRY vtt_S7300C13[] = {
  {&(_ZTV8S7300C13[9]),  9,61},
  {&(_ZTV8S7300C13[35]),  35,61},
  {&(_ZTV8S7300C13[9]),  9,61},
  {&(_ZTV8S7300C13[46]),  46,61},
  {&(_ZTV8S7300C13[58]),  58,61},
  {&(_tg__ZTV7S7300C3__8S7300C13[3]),  3,11},
  {&(_tg__ZTV7S7300C67S7300C3__8S7300C13[3]),  3,10},
  {&(_tg__ZTV7S7300C5__7S7300C67S7300C3__8S7300C13[6]),  6,10},
  {&(_tg__ZTV7S7300C5__7S7300C3__8S7300C13[6]),  6,10},
  {&(_tg__ZTV7S7300C6__7S7300C3__8S7300C13[3]),  3,10},
};
extern VTBL_ENTRY _ZTI8S7300C13[];
extern  VTBL_ENTRY _ZTV8S7300C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7300C13[];
Class_Descriptor cd_S7300C13 = {  "S7300C13", // class name
  bases_S7300C13, 7,
  &(vtc_S7300C13[0]), // expected_vtbl_contents
  &(vtt_S7300C13[0]), // expected_vtt_contents
  ABISELECT(64,40), // object size
  NSPAIRA(_ZTI8S7300C13),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7300C13),61, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7300C13),10, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7300C11  : virtual S7300C2 , virtual S7300C12 , S7300C13 {
  virtual  ~S7300C11(); // _ZN8S7300C11D2Ev
  virtual void  v39(); // _ZN8S7300C113v39Ev
  virtual void  v40(); // _ZN8S7300C113v40Ev
  virtual void  v41(); // _ZN8S7300C113v41Ev
  virtual void  v42(); // _ZN8S7300C113v42Ev
  virtual void  v43(); // _ZN8S7300C113v43Ev
  S7300C11(); // tgen
};
//SIG(-1 S7300C11) C1{ VBC2{ VBC3{ BC4{ v6} VBC5{ BC4 v7 v8 v9} BC6{ VBC5 BC4 v10 v11 v12 v13 v14 v15 Fi} v16 v17 v18 v19 v20 v21 v22 Fc} VBC7{ v23 v24 v25 v26 v27} BC8{ VBC4 vd v28} vd v29 v30 v31 FC6} VBC9{ vd v32 v33 v34 v35} BC10{ VBC3 VBC11{ v36 v37 v38 Fi} v39 v40 v41 v42 v43 Fp Fc[7]} vd v1 v2 v3 v4 v5}


 S7300C11 ::~S7300C11(){ note_dtor("S7300C11", this);}
void  S7300C11 ::v39(){vfunc_called(this, "_ZN8S7300C113v39Ev");}
void  S7300C11 ::v40(){vfunc_called(this, "_ZN8S7300C113v40Ev");}
void  S7300C11 ::v41(){vfunc_called(this, "_ZN8S7300C113v41Ev");}
void  S7300C11 ::v42(){vfunc_called(this, "_ZN8S7300C113v42Ev");}
void  S7300C11 ::v43(){vfunc_called(this, "_ZN8S7300C113v43Ev");}
S7300C11 ::S7300C11(){ note_ctor("S7300C11", this);} // tgen

static void Test_S7300C11()
{
  extern Class_Descriptor cd_S7300C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,17)];
    init_test(&cd_S7300C11, buf);
    S7300C11 *dp, &lv = *(dp=new (buf) S7300C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,64), "sizeof(S7300C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7300C11)");
    /*is_ambiguous_... S7300C3::S7300C4 */ AMB_check_base_class_offset(lv, (S7300C4*)(S7300C3*), ABISELECT(56,32), "S7300C11");
    check_base_class_offset(lv, (S7300C4*)(S7300C5*), 0, "S7300C11");
    check_base_class_offset(lv, (S7300C5*)(S7300C3*), 0, "S7300C11");
    check_base_class_offset(lv, (S7300C5*)(S7300C6*)(S7300C3*), 0, "S7300C11");
    /*is_ambiguous_... S7300C6::S7300C4 */ AMB_check_base_class_offset(lv, (S7300C4*)(S7300C6*)(S7300C3*), ABISELECT(64,36), "S7300C11");
    check_base_class_offset(lv, (S7300C6*)(S7300C3*), ABISELECT(64,36), "S7300C11");
    check_base_class_offset(lv, (S7300C3*)(S7300C2*), ABISELECT(56,32), "S7300C11");
    check_base_class_offset(lv, (S7300C3*)(S7300C13*), ABISELECT(56,32), "S7300C11");
    check_base_class_offset(lv, (S7300C7*)(S7300C2*), ABISELECT(80,48), "S7300C11");
    check_base_class_offset(lv, (S7300C4*)(S7300C8*)(S7300C2*), ABISELECT(24,16), "S7300C11");
    check_base_class_offset(lv, (S7300C8*)(S7300C2*), ABISELECT(24,16), "S7300C11");
    check_base_class_offset(lv, (S7300C2*), ABISELECT(24,16), "S7300C11");
    check_base_class_offset(lv, (S7300C12*), ABISELECT(88,52), "S7300C11");
    check_base_class_offset(lv, (S7300C9*)(S7300C13*), ABISELECT(96,56), "S7300C11");
    check_base_class_offset(lv, (S7300C13*), 0, "S7300C11");
    test_class_info(&lv, &cd_S7300C11);
    dp->~S7300C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7300C11(Test_S7300C11, "S7300C11", ABISELECT(112,64));

#else // __cplusplus

extern void _ZN8S7300C11C1Ev();
extern void _ZN8S7300C11D2Ev();
Name_Map name_map_S7300C11[] = {
  NSPAIR(_ZN8S7300C11C1Ev),
  NSPAIR(_ZN8S7300C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7300C4;
extern VTBL_ENTRY _ZTI7S7300C4[];
extern  VTBL_ENTRY _ZTV7S7300C4[];
extern Class_Descriptor cd_S7300C4;
extern VTBL_ENTRY _ZTI7S7300C4[];
extern  VTBL_ENTRY _ZTV7S7300C4[];
extern Class_Descriptor cd_S7300C5;
extern VTBL_ENTRY _ZTI7S7300C5[];
extern  VTBL_ENTRY _ZTV7S7300C5[];
extern Class_Descriptor cd_S7300C4;
extern VTBL_ENTRY _ZTI7S7300C4[];
extern  VTBL_ENTRY _ZTV7S7300C4[];
extern Class_Descriptor cd_S7300C6;
extern VTBL_ENTRY _ZTI7S7300C6[];
extern  VTBL_ENTRY _ZTV7S7300C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7300C6[];
extern Class_Descriptor cd_S7300C3;
extern VTBL_ENTRY _ZTI7S7300C3[];
extern  VTBL_ENTRY _ZTV7S7300C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7300C3[];
extern Class_Descriptor cd_S7300C7;
extern VTBL_ENTRY _ZTI7S7300C7[];
extern  VTBL_ENTRY _ZTV7S7300C7[];
extern Class_Descriptor cd_S7300C4;
extern VTBL_ENTRY _ZTI7S7300C4[];
extern  VTBL_ENTRY _ZTV7S7300C4[];
extern Class_Descriptor cd_S7300C8;
extern VTBL_ENTRY _ZTI7S7300C8[];
extern  VTBL_ENTRY _ZTV7S7300C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7300C8[];
extern Class_Descriptor cd_S7300C2;
extern VTBL_ENTRY _ZTI7S7300C2[];
extern  VTBL_ENTRY _ZTV7S7300C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7300C2[];
extern Class_Descriptor cd_S7300C12;
extern VTBL_ENTRY _ZTI8S7300C12[];
extern  VTBL_ENTRY _ZTV8S7300C12[];
extern Class_Descriptor cd_S7300C9;
extern VTBL_ENTRY _ZTI7S7300C9[];
extern  VTBL_ENTRY _ZTV7S7300C9[];
extern Class_Descriptor cd_S7300C13;
extern VTBL_ENTRY _ZTI8S7300C13[];
extern  VTBL_ENTRY _ZTV8S7300C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7300C13[];
static Base_Class bases_S7300C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7300C4,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7300C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7300C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7300C4,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7300C6,    ABISELECT(64,36), //bcp->offset
    73, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7300C3,    ABISELECT(56,32), //bcp->offset
    48, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7300C7,    ABISELECT(80,48), //bcp->offset
    83, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7300C4,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7300C8,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7300C2,    ABISELECT(24,16), //bcp->offset
    29, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7300C12,    ABISELECT(88,52), //bcp->offset
    95, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7300C9,    ABISELECT(96,56), //bcp->offset
    108, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7300C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7300C11[];
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C52v2Ev();
extern void _ZN7S7300C52v3Ev();
extern void _ZN7S7300C52v4Ev();
extern void _ZN8S7300C133v34Ev();
extern void _ZN8S7300C133v35Ev();
extern void _ZN8S7300C133v36Ev();
extern void _ZN8S7300C133v37Ev();
extern void _ZN8S7300C133v38Ev();
extern void _ZN8S7300C11D1Ev();
extern void _ZN8S7300C11D0Ev();
extern void _ZN8S7300C113v39Ev();
extern void _ZN8S7300C113v40Ev();
extern void _ZN8S7300C113v41Ev();
extern void _ZN8S7300C113v42Ev();
extern void _ZN8S7300C113v43Ev();
extern void _ZN7S7300C42v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S7300C11D1Ev,_ZTv0_n32_N8S7300C11D1Ev)();
extern void ABISELECT(_ZThn24_N8S7300C11D1Ev,_ZThn16_N8S7300C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7300C11D0Ev,_ZTv0_n32_N8S7300C11D0Ev)();
extern void ABISELECT(_ZThn24_N8S7300C11D0Ev,_ZThn16_N8S7300C11D0Ev)() __attribute__((weak));
extern void _ZN7S7300C83v23Ev();
extern void _ZN7S7300C23v24Ev();
extern void _ZN7S7300C23v25Ev();
extern void _ZN7S7300C23v26Ev();
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C33v11Ev();
extern void _ZN7S7300C33v12Ev();
extern void _ZN7S7300C33v13Ev();
extern void _ZN7S7300C33v14Ev();
extern void _ZN7S7300C33v15Ev();
extern void _ZN7S7300C33v16Ev();
extern void _ZN7S7300C33v17Ev();
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C62v5Ev();
extern void _ZN7S7300C62v6Ev();
extern void _ZN7S7300C62v7Ev();
extern void _ZN7S7300C62v8Ev();
extern void _ZN7S7300C62v9Ev();
extern void _ZN7S7300C63v10Ev();
extern void _ZN7S7300C73v18Ev();
extern void _ZN7S7300C73v19Ev();
extern void _ZN7S7300C73v20Ev();
extern void _ZN7S7300C73v21Ev();
extern void _ZN7S7300C73v22Ev();
extern void ABISELECT(_ZTv0_n24_N8S7300C11D1Ev,_ZTv0_n12_N8S7300C11D1Ev)();
extern void ABISELECT(_ZThn88_N8S7300C11D1Ev,_ZThn52_N8S7300C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7300C11D0Ev,_ZTv0_n12_N8S7300C11D0Ev)();
extern void ABISELECT(_ZThn88_N8S7300C11D0Ev,_ZThn52_N8S7300C11D0Ev)() __attribute__((weak));
extern void _ZN8S7300C123v27Ev();
extern void _ZN8S7300C123v28Ev();
extern void _ZN8S7300C123v29Ev();
extern void _ZN8S7300C123v30Ev();
extern void _ZN7S7300C93v31Ev();
extern void _ZN7S7300C93v32Ev();
extern void _ZN7S7300C93v33Ev();
static  VTBL_ENTRY vtc_S7300C11[] = {
  ABISELECT(88,52),
  ABISELECT(24,16),
  ABISELECT(80,48),
  ABISELECT(24,16),
  ABISELECT(96,56),
  0,
  ABISELECT(56,32),
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7300C11[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v4Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v34Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v35Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v36Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v37Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v38Ev,
  (VTBL_ENTRY)&_ZN8S7300C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7300C11D0Ev,
  (VTBL_ENTRY)&_ZN8S7300C113v39Ev,
  (VTBL_ENTRY)&_ZN8S7300C113v40Ev,
  (VTBL_ENTRY)&_ZN8S7300C113v41Ev,
  (VTBL_ENTRY)&_ZN8S7300C113v42Ev,
  (VTBL_ENTRY)&_ZN8S7300C113v43Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(56,32),
  ABISELECT(-24,-16),
  ABISELECT(32,16),
  0,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7300C11[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7300C11D1Ev,_ZTv0_n32_N8S7300C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7300C11D0Ev,_ZTv0_n32_N8S7300C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7300C83v23Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v24Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v25Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v26Ev,
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7300C11[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v17Ev,
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7300C11[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7300C63v10Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S7300C11[0]),
  (VTBL_ENTRY)&_ZN7S7300C73v18Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v19Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v20Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v21Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v22Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-88,-52),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S7300C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7300C11D1Ev,_ZTv0_n12_N8S7300C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7300C11D0Ev,_ZTv0_n12_N8S7300C11D0Ev),
  (VTBL_ENTRY)&_ZN8S7300C123v27Ev,
  (VTBL_ENTRY)&_ZN8S7300C123v28Ev,
  (VTBL_ENTRY)&_ZN8S7300C123v29Ev,
  (VTBL_ENTRY)&_ZN8S7300C123v30Ev,
  0,
  0,
  0,
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S7300C11[0]),
  (VTBL_ENTRY)&_ZN7S7300C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7300C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7300C93v33Ev,
};
extern VTBL_ENTRY _ZTV8S7300C11[];
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C52v2Ev();
extern void _ZN7S7300C52v3Ev();
extern void _ZN7S7300C52v4Ev();
extern void _ZN8S7300C133v34Ev();
extern void _ZN8S7300C133v35Ev();
extern void _ZN8S7300C133v36Ev();
extern void _ZN8S7300C133v37Ev();
extern void _ZN8S7300C133v38Ev();
static  VTBL_ENTRY _tg__ZTV8S7300C13__8S7300C11[] = {
  ABISELECT(96,56),
  0,
  ABISELECT(56,32),
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7300C13[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v4Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v34Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v35Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v36Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v37Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v38Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C33v11Ev();
extern void _ZN7S7300C33v12Ev();
extern void _ZN7S7300C33v13Ev();
extern void _ZN7S7300C33v14Ev();
extern void _ZN7S7300C33v15Ev();
extern void _ZN7S7300C33v16Ev();
extern void _ZN7S7300C33v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C3__8S7300C13__8S7300C11[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7300C13[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v17Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C62v5Ev();
extern void _ZN7S7300C62v6Ev();
extern void _ZN7S7300C62v7Ev();
extern void _ZN7S7300C62v8Ev();
extern void _ZN7S7300C62v9Ev();
extern void _ZN7S7300C63v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C67S7300C3__8S7300C13__8S7300C11[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7300C13[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7300C63v10Ev,
};
extern void _ZN7S7300C93v31Ev();
extern void _ZN7S7300C93v32Ev();
extern void _ZN7S7300C93v33Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C9__8S7300C13__8S7300C11[] = {
  0,
  0,
  0,
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S7300C13[0]),
  (VTBL_ENTRY)&_ZN7S7300C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7300C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7300C93v33Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C2D1Ev();
extern void _ZN7S7300C2D0Ev();
extern void _ZN7S7300C83v23Ev();
extern void _ZN7S7300C23v24Ev();
extern void _ZN7S7300C23v25Ev();
extern void _ZN7S7300C23v26Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C2__8S7300C11[] = {
  ABISELECT(56,32),
  ABISELECT(-24,-16),
  ABISELECT(32,16),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7300C2[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7300C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7300C83v23Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v24Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v25Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v26Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C8D1Ev();
extern void _ZN7S7300C8D0Ev();
extern void _ZN7S7300C83v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C87S7300C2__8S7300C11[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7300C8[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7300C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7300C83v23Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C33v11Ev();
extern void _ZN7S7300C33v12Ev();
extern void _ZN7S7300C33v13Ev();
extern void _ZN7S7300C33v14Ev();
extern void _ZN7S7300C33v15Ev();
extern void _ZN7S7300C33v16Ev();
extern void _ZN7S7300C33v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C3__7S7300C2__8S7300C11[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-32),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7300C2[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v17Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C52v2Ev();
extern void _ZN7S7300C52v3Ev();
extern void _ZN7S7300C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C5__7S7300C2__8S7300C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S7300C2[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v4Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C62v5Ev();
extern void _ZN7S7300C62v6Ev();
extern void _ZN7S7300C62v7Ev();
extern void _ZN7S7300C62v8Ev();
extern void _ZN7S7300C62v9Ev();
extern void _ZN7S7300C63v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C67S7300C3__7S7300C2__8S7300C11[] = {
  ABISELECT(-64,-36),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7300C2[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7300C63v10Ev,
};
extern void _ZN7S7300C73v18Ev();
extern void _ZN7S7300C73v19Ev();
extern void _ZN7S7300C73v20Ev();
extern void _ZN7S7300C73v21Ev();
extern void _ZN7S7300C73v22Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C7__7S7300C2__8S7300C11[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7300C2[0]),
  (VTBL_ENTRY)&_ZN7S7300C73v18Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v19Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v20Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v21Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v22Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C33v11Ev();
extern void _ZN7S7300C33v12Ev();
extern void _ZN7S7300C33v13Ev();
extern void _ZN7S7300C33v14Ev();
extern void _ZN7S7300C33v15Ev();
extern void _ZN7S7300C33v16Ev();
extern void _ZN7S7300C33v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C3__8S7300C11[] = {
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7300C3[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v17Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C62v5Ev();
extern void _ZN7S7300C62v6Ev();
extern void _ZN7S7300C62v7Ev();
extern void _ZN7S7300C62v8Ev();
extern void _ZN7S7300C62v9Ev();
extern void _ZN7S7300C63v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C67S7300C3__8S7300C11[] = {
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7300C6[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7300C63v10Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C52v2Ev();
extern void _ZN7S7300C52v3Ev();
extern void _ZN7S7300C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C5__7S7300C67S7300C3__8S7300C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI7S7300C6[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v4Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C52v2Ev();
extern void _ZN7S7300C52v3Ev();
extern void _ZN7S7300C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C5__7S7300C3__8S7300C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S7300C3[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v4Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C62v5Ev();
extern void _ZN7S7300C62v6Ev();
extern void _ZN7S7300C62v7Ev();
extern void _ZN7S7300C62v8Ev();
extern void _ZN7S7300C62v9Ev();
extern void _ZN7S7300C63v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C6__7S7300C3__8S7300C11[] = {
  ABISELECT(-64,-36),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7300C3[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7300C63v10Ev,
};
static  VTT_ENTRY vtt_S7300C11[] = {
  {&(_ZTV8S7300C11[13]),  13,116},
  {&(_tg__ZTV8S7300C13__8S7300C11[9]),  9,18},
  {&(_tg__ZTV7S7300C3__8S7300C13__8S7300C11[17]),  17,25},
  {&(_tg__ZTV8S7300C13__8S7300C11[9]),  9,18},
  {&(_tg__ZTV7S7300C67S7300C3__8S7300C13__8S7300C11[3]),  3,10},
  {&(_tg__ZTV7S7300C9__8S7300C13__8S7300C11[5]),  5,8},
  {&(_ZTV8S7300C11[41]),  41,116},
  {&(_ZTV8S7300C11[65]),  65,116},
  {&(_ZTV8S7300C11[13]),  13,116},
  {&(_ZTV8S7300C11[76]),  76,116},
  {&(_ZTV8S7300C11[90]),  90,116},
  {&(_ZTV8S7300C11[41]),  41,116},
  {&(_ZTV8S7300C11[102]),  102,116},
  {&(_ZTV8S7300C11[113]),  113,116},
  {&(_tg__ZTV7S7300C2__8S7300C11[7]),  7,14},
  {&(_tg__ZTV7S7300C87S7300C2__8S7300C11[4]),  4,8},
  {&(_tg__ZTV7S7300C87S7300C2__8S7300C11[4]),  4,8},
  {&(_tg__ZTV7S7300C3__7S7300C2__8S7300C11[17]),  17,25},
  {&(_tg__ZTV7S7300C5__7S7300C2__8S7300C11[6]),  6,10},
  {&(_tg__ZTV7S7300C67S7300C3__7S7300C2__8S7300C11[3]),  3,10},
  {&(_tg__ZTV7S7300C7__7S7300C2__8S7300C11[7]),  7,12},
  {&(_tg__ZTV7S7300C2__8S7300C11[7]),  7,14},
  {&(_tg__ZTV7S7300C3__8S7300C11[3]),  3,11},
  {&(_tg__ZTV7S7300C67S7300C3__8S7300C11[3]),  3,10},
  {&(_tg__ZTV7S7300C5__7S7300C67S7300C3__8S7300C11[6]),  6,10},
  {&(_tg__ZTV7S7300C5__7S7300C3__8S7300C11[6]),  6,10},
  {&(_tg__ZTV7S7300C6__7S7300C3__8S7300C11[3]),  3,10},
};
extern VTBL_ENTRY _ZTI8S7300C11[];
extern  VTBL_ENTRY _ZTV8S7300C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7300C11[];
static VTBL_ENTRY alt_thunk_names38[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7300C11D0Ev,_ZTv0_n12_N8S7300C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7300C11D0Ev,_ZThn52_N8S7300C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7300C11D1Ev,_ZTv0_n12_N8S7300C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7300C11D1Ev,_ZThn52_N8S7300C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7300C11D0Ev,_ZTv0_n32_N8S7300C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7300C11D0Ev,_ZThn16_N8S7300C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7300C11D1Ev,_ZTv0_n32_N8S7300C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7300C11D1Ev,_ZThn16_N8S7300C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7300C11 = {  "S7300C11", // class name
  bases_S7300C11, 13,
  &(vtc_S7300C11[0]), // expected_vtbl_contents
  &(vtt_S7300C11[0]), // expected_vtt_contents
  ABISELECT(112,64), // object size
  NSPAIRA(_ZTI8S7300C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7300C11),116, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7300C11),27, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names38,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7300C10  : S7300C11 , S7300C2 {
  void *s7300c10f0;
  long double s7300c10f1;
  virtual void  v44(); // _ZN8S7300C103v44Ev
  virtual void  v45(); // _ZN8S7300C103v45Ev
  virtual void  v46(); // _ZN8S7300C103v46Ev
  virtual void  v47(); // _ZN8S7300C103v47Ev
  virtual void  v48(); // _ZN8S7300C103v48Ev
  virtual void  v49(); // _ZN8S7300C103v49Ev
  ~S7300C10(); // tgen
  S7300C10(); // tgen
};
//SIG(-1 S7300C10) C1{ BC2{ VBC3{ VBC4{ BC5{ v7} VBC6{ BC5 v8 v9 v10} BC7{ VBC6 BC5 v11 v12 v13 v14 v15 v16 Fi} v17 v18 v19 v20 v21 v22 v23 Fc} VBC8{ v24 v25 v26 v27 v28} BC9{ VBC5 vd v29} vd v30 v31 v32 FC7} VBC10{ vd v33 v34 v35 v36} BC11{ VBC4 VBC12{ v37 v38 v39 Fi} v40 v41 v42 v43 v44 Fp Fc[7]} vd v45 v46 v47 v48 v49} BC3 v1 v2 v3 v4 v5 v6 Fp FD}


void  S7300C10 ::v44(){vfunc_called(this, "_ZN8S7300C103v44Ev");}
void  S7300C10 ::v45(){vfunc_called(this, "_ZN8S7300C103v45Ev");}
void  S7300C10 ::v46(){vfunc_called(this, "_ZN8S7300C103v46Ev");}
void  S7300C10 ::v47(){vfunc_called(this, "_ZN8S7300C103v47Ev");}
void  S7300C10 ::v48(){vfunc_called(this, "_ZN8S7300C103v48Ev");}
void  S7300C10 ::v49(){vfunc_called(this, "_ZN8S7300C103v49Ev");}
S7300C10 ::~S7300C10(){ note_dtor("S7300C10", this);} // tgen
S7300C10 ::S7300C10(){ note_ctor("S7300C10", this);} // tgen

static void Test_S7300C10()
{
  extern Class_Descriptor cd_S7300C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,25)];
    init_test(&cd_S7300C10, buf);
    S7300C10 *dp, &lv = *(dp=new (buf) S7300C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,96), "sizeof(S7300C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7300C10)");
    /*is_ambiguous_... S7300C3::S7300C4 */ AMB_check_base_class_offset(lv, (S7300C4*)(S7300C3*), ABISELECT(112,64), "S7300C10");
    check_base_class_offset(lv, (S7300C4*)(S7300C5*), 0, "S7300C10");
    check_base_class_offset(lv, (S7300C5*)(S7300C3*), 0, "S7300C10");
    check_base_class_offset(lv, (S7300C5*)(S7300C6*)(S7300C3*), 0, "S7300C10");
    /*is_ambiguous_... S7300C6::S7300C4 */ AMB_check_base_class_offset(lv, (S7300C4*)(S7300C6*)(S7300C3*), ABISELECT(120,68), "S7300C10");
    check_base_class_offset(lv, (S7300C6*)(S7300C3*), ABISELECT(120,68), "S7300C10");
    /*is_ambiguous_... S7300C10::S7300C2 */ AMB_check_base_class_offset(lv, (S7300C3*)(S7300C2*), ABISELECT(112,64), "S7300C10");
    check_base_class_offset(lv, (S7300C3*)(S7300C13*)(S7300C11*), ABISELECT(112,64), "S7300C10");
    /*is_ambiguous_... S7300C10::S7300C2 */ AMB_check_base_class_offset(lv, (S7300C3*)(S7300C2*), ABISELECT(112,64), "S7300C10");
    /*is_ambiguous_... S7300C10::S7300C2 */ AMB_check_base_class_offset(lv, (S7300C7*)(S7300C2*), ABISELECT(136,80), "S7300C10");
    /*is_ambiguous_... S7300C10::S7300C2 */ AMB_check_base_class_offset(lv, (S7300C7*)(S7300C2*), ABISELECT(136,80), "S7300C10");
    /*is_ambiguous_... S7300C10::S7300C2 */ AMB_check_base_class_offset(lv, (S7300C4*)(S7300C8*)(S7300C2*), ABISELECT(80,48), "S7300C10");
    /*is_ambiguous_... S7300C10::S7300C2 */ AMB_check_base_class_offset(lv, (S7300C4*)(S7300C8*)(S7300C2*), ABISELECT(80,48), "S7300C10");
    /*is_ambiguous_... S7300C10::S7300C2 */ AMB_check_base_class_offset(lv, (S7300C8*)(S7300C2*), ABISELECT(80,48), "S7300C10");
    check_base_class_offset(lv, (S7300C2*)(S7300C11*), ABISELECT(80,48), "S7300C10");
    check_base_class_offset(lv, (S7300C12*)(S7300C11*), ABISELECT(144,84), "S7300C10");
    check_base_class_offset(lv, (S7300C9*)(S7300C13*)(S7300C11*), ABISELECT(152,88), "S7300C10");
    check_base_class_offset(lv, (S7300C13*)(S7300C11*), 0, "S7300C10");
    check_base_class_offset(lv, (S7300C11*), 0, "S7300C10");
    /*is_ambiguous_... S7300C10::S7300C2 */ AMB_check_base_class_offset(lv, (S7300C8*)(S7300C2*), ABISELECT(24,16), "S7300C10");
    /*is_ambiguous_... S7300C10::S7300C2 */ AMB_check_base_class_offset(lv, (S7300C2*), ABISELECT(24,16), "S7300C10");
    check_field_offset(lv, s7300c10f0, ABISELECT(56,32), "S7300C10.s7300c10f0");
    check_field_offset(lv, s7300c10f1, ABISELECT(64,36), "S7300C10.s7300c10f1");
    test_class_info(&lv, &cd_S7300C10);
    dp->~S7300C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7300C10(Test_S7300C10, "S7300C10", ABISELECT(176,96));

#else // __cplusplus

extern void _ZN8S7300C10C1Ev();
extern void _ZN8S7300C10D1Ev();
Name_Map name_map_S7300C10[] = {
  NSPAIR(_ZN8S7300C10C1Ev),
  NSPAIR(_ZN8S7300C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7300C4;
extern VTBL_ENTRY _ZTI7S7300C4[];
extern  VTBL_ENTRY _ZTV7S7300C4[];
extern Class_Descriptor cd_S7300C4;
extern VTBL_ENTRY _ZTI7S7300C4[];
extern  VTBL_ENTRY _ZTV7S7300C4[];
extern Class_Descriptor cd_S7300C5;
extern VTBL_ENTRY _ZTI7S7300C5[];
extern  VTBL_ENTRY _ZTV7S7300C5[];
extern Class_Descriptor cd_S7300C4;
extern VTBL_ENTRY _ZTI7S7300C4[];
extern  VTBL_ENTRY _ZTV7S7300C4[];
extern Class_Descriptor cd_S7300C6;
extern VTBL_ENTRY _ZTI7S7300C6[];
extern  VTBL_ENTRY _ZTV7S7300C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7300C6[];
extern Class_Descriptor cd_S7300C3;
extern VTBL_ENTRY _ZTI7S7300C3[];
extern  VTBL_ENTRY _ZTV7S7300C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7300C3[];
extern Class_Descriptor cd_S7300C7;
extern VTBL_ENTRY _ZTI7S7300C7[];
extern  VTBL_ENTRY _ZTV7S7300C7[];
extern Class_Descriptor cd_S7300C4;
extern VTBL_ENTRY _ZTI7S7300C4[];
extern  VTBL_ENTRY _ZTV7S7300C4[];
extern Class_Descriptor cd_S7300C8;
extern VTBL_ENTRY _ZTI7S7300C8[];
extern  VTBL_ENTRY _ZTV7S7300C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7300C8[];
extern Class_Descriptor cd_S7300C2;
extern VTBL_ENTRY _ZTI7S7300C2[];
extern  VTBL_ENTRY _ZTV7S7300C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7300C2[];
extern Class_Descriptor cd_S7300C12;
extern VTBL_ENTRY _ZTI8S7300C12[];
extern  VTBL_ENTRY _ZTV8S7300C12[];
extern Class_Descriptor cd_S7300C9;
extern VTBL_ENTRY _ZTI7S7300C9[];
extern  VTBL_ENTRY _ZTV7S7300C9[];
extern Class_Descriptor cd_S7300C13;
extern VTBL_ENTRY _ZTI8S7300C13[];
extern  VTBL_ENTRY _ZTV8S7300C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7300C13[];
extern Class_Descriptor cd_S7300C11;
extern VTBL_ENTRY _ZTI8S7300C11[];
extern  VTBL_ENTRY _ZTV8S7300C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7300C11[];
extern Class_Descriptor cd_S7300C8;
extern VTBL_ENTRY _ZTI7S7300C8[];
extern  VTBL_ENTRY _ZTV7S7300C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7300C8[];
extern Class_Descriptor cd_S7300C2;
extern VTBL_ENTRY _ZTI7S7300C2[];
extern  VTBL_ENTRY _ZTV7S7300C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7300C2[];
static Base_Class bases_S7300C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7300C4,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7300C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7300C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7300C4,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7300C6,    ABISELECT(120,68), //bcp->offset
    93, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7300C3,    ABISELECT(112,64), //bcp->offset
    68, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7300C7,    ABISELECT(136,80), //bcp->offset
    103, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7300C4,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7300C8,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7300C2,    ABISELECT(80,48), //bcp->offset
    49, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7300C12,    ABISELECT(144,84), //bcp->offset
    115, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7300C9,    ABISELECT(152,88), //bcp->offset
    128, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7300C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7300C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7300C8,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7300C2,    ABISELECT(24,16), //bcp->offset
    35, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7300C10[];
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C52v2Ev();
extern void _ZN7S7300C52v3Ev();
extern void _ZN7S7300C52v4Ev();
extern void _ZN8S7300C133v34Ev();
extern void _ZN8S7300C133v35Ev();
extern void _ZN8S7300C133v36Ev();
extern void _ZN8S7300C133v37Ev();
extern void _ZN8S7300C133v38Ev();
extern void _ZN8S7300C10D1Ev();
extern void _ZN8S7300C10D0Ev();
extern void _ZN8S7300C113v39Ev();
extern void _ZN8S7300C113v40Ev();
extern void _ZN8S7300C113v41Ev();
extern void _ZN8S7300C113v42Ev();
extern void _ZN8S7300C113v43Ev();
extern void _ZN8S7300C103v44Ev();
extern void _ZN8S7300C103v45Ev();
extern void _ZN8S7300C103v46Ev();
extern void _ZN8S7300C103v47Ev();
extern void _ZN8S7300C103v48Ev();
extern void _ZN8S7300C103v49Ev();
extern void _ZN7S7300C42v1Ev();
extern void ABISELECT(_ZThn24_N8S7300C10D1Ev,_ZThn16_N8S7300C10D1Ev)();
extern void ABISELECT(_ZThn24_N8S7300C10D0Ev,_ZThn16_N8S7300C10D0Ev)();
extern void _ZN7S7300C83v23Ev();
extern void _ZN7S7300C23v24Ev();
extern void _ZN7S7300C23v25Ev();
extern void _ZN7S7300C23v26Ev();
extern void _ZN7S7300C42v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S7300C10D1Ev,_ZTv0_n32_N8S7300C10D1Ev)();
extern void ABISELECT(_ZThn80_N8S7300C10D1Ev,_ZThn48_N8S7300C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7300C10D0Ev,_ZTv0_n32_N8S7300C10D0Ev)();
extern void ABISELECT(_ZThn80_N8S7300C10D0Ev,_ZThn48_N8S7300C10D0Ev)() __attribute__((weak));
extern void _ZN7S7300C83v23Ev();
extern void _ZN7S7300C23v24Ev();
extern void _ZN7S7300C23v25Ev();
extern void _ZN7S7300C23v26Ev();
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C33v11Ev();
extern void _ZN7S7300C33v12Ev();
extern void _ZN7S7300C33v13Ev();
extern void _ZN7S7300C33v14Ev();
extern void _ZN7S7300C33v15Ev();
extern void _ZN7S7300C33v16Ev();
extern void _ZN7S7300C33v17Ev();
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C62v5Ev();
extern void _ZN7S7300C62v6Ev();
extern void _ZN7S7300C62v7Ev();
extern void _ZN7S7300C62v8Ev();
extern void _ZN7S7300C62v9Ev();
extern void _ZN7S7300C63v10Ev();
extern void _ZN7S7300C73v18Ev();
extern void _ZN7S7300C73v19Ev();
extern void _ZN7S7300C73v20Ev();
extern void _ZN7S7300C73v21Ev();
extern void _ZN7S7300C73v22Ev();
extern void ABISELECT(_ZTv0_n24_N8S7300C10D1Ev,_ZTv0_n12_N8S7300C10D1Ev)();
extern void ABISELECT(_ZThn144_N8S7300C10D1Ev,_ZThn84_N8S7300C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7300C10D0Ev,_ZTv0_n12_N8S7300C10D0Ev)();
extern void ABISELECT(_ZThn144_N8S7300C10D0Ev,_ZThn84_N8S7300C10D0Ev)() __attribute__((weak));
extern void _ZN8S7300C123v27Ev();
extern void _ZN8S7300C123v28Ev();
extern void _ZN8S7300C123v29Ev();
extern void _ZN8S7300C123v30Ev();
extern void _ZN7S7300C93v31Ev();
extern void _ZN7S7300C93v32Ev();
extern void _ZN7S7300C93v33Ev();
static  VTBL_ENTRY vtc_S7300C10[] = {
  ABISELECT(144,84),
  ABISELECT(80,48),
  ABISELECT(136,80),
  ABISELECT(80,48),
  ABISELECT(152,88),
  0,
  ABISELECT(112,64),
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7300C10[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v4Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v34Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v35Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v36Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v37Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v38Ev,
  (VTBL_ENTRY)&_ZN8S7300C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7300C10D0Ev,
  (VTBL_ENTRY)&_ZN8S7300C113v39Ev,
  (VTBL_ENTRY)&_ZN8S7300C113v40Ev,
  (VTBL_ENTRY)&_ZN8S7300C113v41Ev,
  (VTBL_ENTRY)&_ZN8S7300C113v42Ev,
  (VTBL_ENTRY)&_ZN8S7300C113v43Ev,
  (VTBL_ENTRY)&_ZN8S7300C103v44Ev,
  (VTBL_ENTRY)&_ZN8S7300C103v45Ev,
  (VTBL_ENTRY)&_ZN8S7300C103v46Ev,
  (VTBL_ENTRY)&_ZN8S7300C103v47Ev,
  (VTBL_ENTRY)&_ZN8S7300C103v48Ev,
  (VTBL_ENTRY)&_ZN8S7300C103v49Ev,
  ABISELECT(112,64),
  ABISELECT(-24,-16),
  ABISELECT(88,48),
  ABISELECT(56,32),
  ABISELECT(56,32),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7300C10[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7300C10D1Ev,_ZThn16_N8S7300C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7300C10D0Ev,_ZThn16_N8S7300C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7300C83v23Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v24Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v25Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v26Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-80,-48),
  ABISELECT(56,32),
  ABISELECT(-80,-48),
  ABISELECT(32,16),
  0,
  0,
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S7300C10[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7300C10D1Ev,_ZTv0_n32_N8S7300C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7300C10D0Ev,_ZTv0_n32_N8S7300C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7300C83v23Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v24Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v25Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v26Ev,
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI8S7300C10[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v17Ev,
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S7300C10[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7300C63v10Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI8S7300C10[0]),
  (VTBL_ENTRY)&_ZN7S7300C73v18Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v19Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v20Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v21Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v22Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S7300C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7300C10D1Ev,_ZTv0_n12_N8S7300C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7300C10D0Ev,_ZTv0_n12_N8S7300C10D0Ev),
  (VTBL_ENTRY)&_ZN8S7300C123v27Ev,
  (VTBL_ENTRY)&_ZN8S7300C123v28Ev,
  (VTBL_ENTRY)&_ZN8S7300C123v29Ev,
  (VTBL_ENTRY)&_ZN8S7300C123v30Ev,
  0,
  0,
  0,
  ABISELECT(-152,-88),
  (VTBL_ENTRY)&(_ZTI8S7300C10[0]),
  (VTBL_ENTRY)&_ZN7S7300C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7300C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7300C93v33Ev,
};
extern VTBL_ENTRY _ZTV8S7300C10[];
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C52v2Ev();
extern void _ZN7S7300C52v3Ev();
extern void _ZN7S7300C52v4Ev();
extern void _ZN8S7300C133v34Ev();
extern void _ZN8S7300C133v35Ev();
extern void _ZN8S7300C133v36Ev();
extern void _ZN8S7300C133v37Ev();
extern void _ZN8S7300C133v38Ev();
extern void _ZN8S7300C11D1Ev();
extern void _ZN8S7300C11D0Ev();
extern void _ZN8S7300C113v39Ev();
extern void _ZN8S7300C113v40Ev();
extern void _ZN8S7300C113v41Ev();
extern void _ZN8S7300C113v42Ev();
extern void _ZN8S7300C113v43Ev();
static  VTBL_ENTRY _tg__ZTV8S7300C11__8S7300C10[] = {
  ABISELECT(144,84),
  ABISELECT(80,48),
  ABISELECT(136,80),
  ABISELECT(80,48),
  ABISELECT(152,88),
  0,
  ABISELECT(112,64),
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7300C11[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v4Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v34Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v35Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v36Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v37Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v38Ev,
  (VTBL_ENTRY)&_ZN8S7300C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7300C11D0Ev,
  (VTBL_ENTRY)&_ZN8S7300C113v39Ev,
  (VTBL_ENTRY)&_ZN8S7300C113v40Ev,
  (VTBL_ENTRY)&_ZN8S7300C113v41Ev,
  (VTBL_ENTRY)&_ZN8S7300C113v42Ev,
  (VTBL_ENTRY)&_ZN8S7300C113v43Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C52v2Ev();
extern void _ZN7S7300C52v3Ev();
extern void _ZN7S7300C52v4Ev();
extern void _ZN8S7300C133v34Ev();
extern void _ZN8S7300C133v35Ev();
extern void _ZN8S7300C133v36Ev();
extern void _ZN8S7300C133v37Ev();
extern void _ZN8S7300C133v38Ev();
static  VTBL_ENTRY _tg__ZTV8S7300C138S7300C11__8S7300C10[] = {
  ABISELECT(152,88),
  0,
  ABISELECT(112,64),
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7300C13[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v4Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v34Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v35Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v36Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v37Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v38Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C33v11Ev();
extern void _ZN7S7300C33v12Ev();
extern void _ZN7S7300C33v13Ev();
extern void _ZN7S7300C33v14Ev();
extern void _ZN7S7300C33v15Ev();
extern void _ZN7S7300C33v16Ev();
extern void _ZN7S7300C33v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C3__8S7300C138S7300C11__8S7300C10[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI8S7300C13[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v17Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C62v5Ev();
extern void _ZN7S7300C62v6Ev();
extern void _ZN7S7300C62v7Ev();
extern void _ZN7S7300C62v8Ev();
extern void _ZN7S7300C62v9Ev();
extern void _ZN7S7300C63v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C67S7300C3__8S7300C138S7300C11__8S7300C10[] = {
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S7300C13[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7300C63v10Ev,
};
extern void _ZN7S7300C93v31Ev();
extern void _ZN7S7300C93v32Ev();
extern void _ZN7S7300C93v33Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C9__8S7300C138S7300C11__8S7300C10[] = {
  0,
  0,
  0,
  ABISELECT(-152,-88),
  (VTBL_ENTRY)&(_ZTI8S7300C13[0]),
  (VTBL_ENTRY)&_ZN7S7300C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7300C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7300C93v33Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S7300C11D1Ev,_ZTv0_n32_N8S7300C11D1Ev)();
extern void ABISELECT(_ZThn80_N8S7300C11D1Ev,_ZThn48_N8S7300C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7300C11D0Ev,_ZTv0_n32_N8S7300C11D0Ev)();
extern void ABISELECT(_ZThn80_N8S7300C11D0Ev,_ZThn48_N8S7300C11D0Ev)() __attribute__((weak));
extern void _ZN7S7300C83v23Ev();
extern void _ZN7S7300C23v24Ev();
extern void _ZN7S7300C23v25Ev();
extern void _ZN7S7300C23v26Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C2__8S7300C11__8S7300C10[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-80,-48),
  ABISELECT(56,32),
  ABISELECT(-80,-48),
  ABISELECT(32,16),
  0,
  0,
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S7300C11[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7300C11D1Ev,_ZTv0_n32_N8S7300C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7300C11D0Ev,_ZTv0_n32_N8S7300C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7300C83v23Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v24Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v25Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v26Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C33v11Ev();
extern void _ZN7S7300C33v12Ev();
extern void _ZN7S7300C33v13Ev();
extern void _ZN7S7300C33v14Ev();
extern void _ZN7S7300C33v15Ev();
extern void _ZN7S7300C33v16Ev();
extern void _ZN7S7300C33v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C3__8S7300C11__8S7300C10[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI8S7300C11[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v17Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C62v5Ev();
extern void _ZN7S7300C62v6Ev();
extern void _ZN7S7300C62v7Ev();
extern void _ZN7S7300C62v8Ev();
extern void _ZN7S7300C62v9Ev();
extern void _ZN7S7300C63v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C67S7300C3__8S7300C11__8S7300C10[] = {
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S7300C11[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7300C63v10Ev,
};
extern void _ZN7S7300C73v18Ev();
extern void _ZN7S7300C73v19Ev();
extern void _ZN7S7300C73v20Ev();
extern void _ZN7S7300C73v21Ev();
extern void _ZN7S7300C73v22Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C7__8S7300C11__8S7300C10[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI8S7300C11[0]),
  (VTBL_ENTRY)&_ZN7S7300C73v18Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v19Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v20Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v21Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v22Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7300C11D1Ev,_ZTv0_n12_N8S7300C11D1Ev)();
extern void ABISELECT(_ZThn144_N8S7300C11D1Ev,_ZThn84_N8S7300C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7300C11D0Ev,_ZTv0_n12_N8S7300C11D0Ev)();
extern void ABISELECT(_ZThn144_N8S7300C11D0Ev,_ZThn84_N8S7300C11D0Ev)() __attribute__((weak));
extern void _ZN8S7300C123v27Ev();
extern void _ZN8S7300C123v28Ev();
extern void _ZN8S7300C123v29Ev();
extern void _ZN8S7300C123v30Ev();
static  VTBL_ENTRY _tg__ZTV8S7300C12__8S7300C11__8S7300C10[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S7300C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7300C11D1Ev,_ZTv0_n12_N8S7300C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7300C11D0Ev,_ZTv0_n12_N8S7300C11D0Ev),
  (VTBL_ENTRY)&_ZN8S7300C123v27Ev,
  (VTBL_ENTRY)&_ZN8S7300C123v28Ev,
  (VTBL_ENTRY)&_ZN8S7300C123v29Ev,
  (VTBL_ENTRY)&_ZN8S7300C123v30Ev,
};
extern void _ZN7S7300C93v31Ev();
extern void _ZN7S7300C93v32Ev();
extern void _ZN7S7300C93v33Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C9__8S7300C11__8S7300C10[] = {
  0,
  0,
  0,
  ABISELECT(-152,-88),
  (VTBL_ENTRY)&(_ZTI8S7300C11[0]),
  (VTBL_ENTRY)&_ZN7S7300C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7300C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7300C93v33Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C2D1Ev();
extern void _ZN7S7300C2D0Ev();
extern void _ZN7S7300C83v23Ev();
extern void _ZN7S7300C23v24Ev();
extern void _ZN7S7300C23v25Ev();
extern void _ZN7S7300C23v26Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C2__A__8S7300C10[] = {
  ABISELECT(112,64),
  ABISELECT(-24,-16),
  ABISELECT(88,48),
  ABISELECT(56,32),
  ABISELECT(56,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7300C2[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7300C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7300C83v23Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v24Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v25Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v26Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C8D1Ev();
extern void _ZN7S7300C8D0Ev();
extern void _ZN7S7300C83v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C87S7300C2__A1__8S7300C10[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7300C8[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7300C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7300C83v23Ev,
};
extern void _ZN7S7300C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C4__7S7300C87S7300C2__A1__8S7300C10[] = {
  0,
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7300C8[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C33v11Ev();
extern void _ZN7S7300C33v12Ev();
extern void _ZN7S7300C33v13Ev();
extern void _ZN7S7300C33v14Ev();
extern void _ZN7S7300C33v15Ev();
extern void _ZN7S7300C33v16Ev();
extern void _ZN7S7300C33v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C3__7S7300C2__A__8S7300C10[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-64),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI7S7300C2[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v17Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C52v2Ev();
extern void _ZN7S7300C52v3Ev();
extern void _ZN7S7300C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C5__7S7300C2__A__8S7300C10[] = {
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S7300C2[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v4Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C62v5Ev();
extern void _ZN7S7300C62v6Ev();
extern void _ZN7S7300C62v7Ev();
extern void _ZN7S7300C62v8Ev();
extern void _ZN7S7300C62v9Ev();
extern void _ZN7S7300C63v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C67S7300C3__7S7300C2__A__8S7300C10[] = {
  ABISELECT(-120,-68),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S7300C2[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7300C63v10Ev,
};
extern void _ZN7S7300C73v18Ev();
extern void _ZN7S7300C73v19Ev();
extern void _ZN7S7300C73v20Ev();
extern void _ZN7S7300C73v21Ev();
extern void _ZN7S7300C73v22Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C7__7S7300C2__A__8S7300C10[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI7S7300C2[0]),
  (VTBL_ENTRY)&_ZN7S7300C73v18Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v19Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v20Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v21Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v22Ev,
};
extern void _ZN7S7300C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C4__A3__7S7300C2__A__8S7300C10[] = {
  0,
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7300C2[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C2D1Ev();
extern void _ZN7S7300C2D0Ev();
extern void _ZN7S7300C83v23Ev();
extern void _ZN7S7300C23v24Ev();
extern void _ZN7S7300C23v25Ev();
extern void _ZN7S7300C23v26Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C2__8S7300C10[] = {
  ABISELECT(56,32),
  ABISELECT(-80,-48),
  ABISELECT(32,16),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7300C2[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7300C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7300C83v23Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v24Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v25Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v26Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C8D1Ev();
extern void _ZN7S7300C8D0Ev();
extern void _ZN7S7300C83v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C87S7300C2__8S7300C10[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7300C8[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7300C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7300C83v23Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C33v11Ev();
extern void _ZN7S7300C33v12Ev();
extern void _ZN7S7300C33v13Ev();
extern void _ZN7S7300C33v14Ev();
extern void _ZN7S7300C33v15Ev();
extern void _ZN7S7300C33v16Ev();
extern void _ZN7S7300C33v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C3__7S7300C2__8S7300C10[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-64),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7300C2[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v17Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C52v2Ev();
extern void _ZN7S7300C52v3Ev();
extern void _ZN7S7300C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C5__7S7300C2__8S7300C10[] = {
  0,
  0,
  0,
  0,
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI7S7300C2[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v4Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C62v5Ev();
extern void _ZN7S7300C62v6Ev();
extern void _ZN7S7300C62v7Ev();
extern void _ZN7S7300C62v8Ev();
extern void _ZN7S7300C62v9Ev();
extern void _ZN7S7300C63v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C67S7300C3__7S7300C2__8S7300C10[] = {
  ABISELECT(-120,-68),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7300C2[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7300C63v10Ev,
};
extern void _ZN7S7300C73v18Ev();
extern void _ZN7S7300C73v19Ev();
extern void _ZN7S7300C73v20Ev();
extern void _ZN7S7300C73v21Ev();
extern void _ZN7S7300C73v22Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C7__7S7300C2__8S7300C10[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7300C2[0]),
  (VTBL_ENTRY)&_ZN7S7300C73v18Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v19Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v20Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v21Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v22Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C33v11Ev();
extern void _ZN7S7300C33v12Ev();
extern void _ZN7S7300C33v13Ev();
extern void _ZN7S7300C33v14Ev();
extern void _ZN7S7300C33v15Ev();
extern void _ZN7S7300C33v16Ev();
extern void _ZN7S7300C33v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C3__8S7300C10[] = {
  ABISELECT(-112,-64),
  0,
  (VTBL_ENTRY)&(_ZTI7S7300C3[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v17Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C62v5Ev();
extern void _ZN7S7300C62v6Ev();
extern void _ZN7S7300C62v7Ev();
extern void _ZN7S7300C62v8Ev();
extern void _ZN7S7300C62v9Ev();
extern void _ZN7S7300C63v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C67S7300C3__8S7300C10[] = {
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S7300C6[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7300C63v10Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C52v2Ev();
extern void _ZN7S7300C52v3Ev();
extern void _ZN7S7300C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C5__7S7300C67S7300C3__8S7300C10[] = {
  0,
  0,
  0,
  0,
  ABISELECT(120,68),
  (VTBL_ENTRY)&(_ZTI7S7300C6[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v4Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C52v2Ev();
extern void _ZN7S7300C52v3Ev();
extern void _ZN7S7300C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C5__7S7300C3__8S7300C10[] = {
  0,
  0,
  0,
  0,
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI7S7300C3[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v4Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C62v5Ev();
extern void _ZN7S7300C62v6Ev();
extern void _ZN7S7300C62v7Ev();
extern void _ZN7S7300C62v8Ev();
extern void _ZN7S7300C62v9Ev();
extern void _ZN7S7300C63v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C6__7S7300C3__8S7300C10[] = {
  ABISELECT(-120,-68),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7300C3[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7300C63v10Ev,
};
static  VTT_ENTRY vtt_S7300C10[] = {
  {&(_ZTV8S7300C10[13]),  13,136},
  {&(_tg__ZTV8S7300C11__8S7300C10[13]),  13,29},
  {&(_tg__ZTV8S7300C138S7300C11__8S7300C10[9]),  9,18},
  {&(_tg__ZTV7S7300C3__8S7300C138S7300C11__8S7300C10[17]),  17,25},
  {&(_tg__ZTV8S7300C138S7300C11__8S7300C10[9]),  9,18},
  {&(_tg__ZTV7S7300C67S7300C3__8S7300C138S7300C11__8S7300C10[3]),  3,10},
  {&(_tg__ZTV7S7300C9__8S7300C138S7300C11__8S7300C10[5]),  5,8},
  {&(_tg__ZTV7S7300C2__8S7300C11__8S7300C10[12]),  12,19},
  {&(_tg__ZTV7S7300C3__8S7300C11__8S7300C10[17]),  17,25},
  {&(_tg__ZTV8S7300C11__8S7300C10[13]),  13,29},
  {&(_tg__ZTV7S7300C67S7300C3__8S7300C11__8S7300C10[3]),  3,10},
  {&(_tg__ZTV7S7300C7__8S7300C11__8S7300C10[7]),  7,12},
  {&(_tg__ZTV7S7300C2__8S7300C11__8S7300C10[12]),  12,19},
  {&(_tg__ZTV8S7300C12__8S7300C11__8S7300C10[7]),  7,13},
  {&(_tg__ZTV7S7300C9__8S7300C11__8S7300C10[5]),  5,8},
  {&(_tg__ZTV7S7300C2__A__8S7300C10[7]),  7,14},
  {&(_tg__ZTV7S7300C87S7300C2__A1__8S7300C10[4]),  4,8},
  {&(_tg__ZTV7S7300C4__7S7300C87S7300C2__A1__8S7300C10[3]),  3,4},
  {&(_tg__ZTV7S7300C3__7S7300C2__A__8S7300C10[17]),  17,25},
  {&(_tg__ZTV7S7300C5__7S7300C2__A__8S7300C10[6]),  6,10},
  {&(_tg__ZTV7S7300C67S7300C3__7S7300C2__A__8S7300C10[3]),  3,10},
  {&(_tg__ZTV7S7300C7__7S7300C2__A__8S7300C10[7]),  7,12},
  {&(_tg__ZTV7S7300C4__A3__7S7300C2__A__8S7300C10[3]),  3,4},
  {&(_ZTV8S7300C10[61]),  61,136},
  {&(_ZTV8S7300C10[85]),  85,136},
  {&(_ZTV8S7300C10[13]),  13,136},
  {&(_ZTV8S7300C10[96]),  96,136},
  {&(_ZTV8S7300C10[110]),  110,136},
  {&(_ZTV8S7300C10[61]),  61,136},
  {&(_ZTV8S7300C10[122]),  122,136},
  {&(_ZTV8S7300C10[133]),  133,136},
  {&(_ZTV8S7300C10[42]),  42,136},
  {&(_tg__ZTV7S7300C2__8S7300C10[7]),  7,14},
  {&(_tg__ZTV7S7300C87S7300C2__8S7300C10[4]),  4,8},
  {&(_tg__ZTV7S7300C87S7300C2__8S7300C10[4]),  4,8},
  {&(_tg__ZTV7S7300C3__7S7300C2__8S7300C10[17]),  17,25},
  {&(_tg__ZTV7S7300C5__7S7300C2__8S7300C10[6]),  6,10},
  {&(_tg__ZTV7S7300C67S7300C3__7S7300C2__8S7300C10[3]),  3,10},
  {&(_tg__ZTV7S7300C7__7S7300C2__8S7300C10[7]),  7,12},
  {&(_tg__ZTV7S7300C2__8S7300C10[7]),  7,14},
  {&(_tg__ZTV7S7300C3__8S7300C10[3]),  3,11},
  {&(_tg__ZTV7S7300C67S7300C3__8S7300C10[3]),  3,10},
  {&(_tg__ZTV7S7300C5__7S7300C67S7300C3__8S7300C10[6]),  6,10},
  {&(_tg__ZTV7S7300C5__7S7300C3__8S7300C10[6]),  6,10},
  {&(_tg__ZTV7S7300C6__7S7300C3__8S7300C10[3]),  3,10},
};
extern VTBL_ENTRY _ZTI8S7300C10[];
extern  VTBL_ENTRY _ZTV8S7300C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7300C10[];
static VTBL_ENTRY alt_thunk_names39[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7300C11D0Ev,_ZTv0_n12_N8S7300C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7300C11D0Ev,_ZThn84_N8S7300C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7300C11D1Ev,_ZTv0_n12_N8S7300C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7300C11D1Ev,_ZThn84_N8S7300C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7300C11D0Ev,_ZTv0_n32_N8S7300C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7300C11D0Ev,_ZThn48_N8S7300C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7300C11D1Ev,_ZTv0_n32_N8S7300C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7300C11D1Ev,_ZThn48_N8S7300C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7300C10D0Ev,_ZTv0_n12_N8S7300C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7300C10D0Ev,_ZThn84_N8S7300C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7300C10D1Ev,_ZTv0_n12_N8S7300C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7300C10D1Ev,_ZThn84_N8S7300C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7300C10D0Ev,_ZTv0_n32_N8S7300C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7300C10D0Ev,_ZThn48_N8S7300C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7300C10D1Ev,_ZTv0_n32_N8S7300C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7300C10D1Ev,_ZThn48_N8S7300C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7300C10 = {  "S7300C10", // class name
  bases_S7300C10, 16,
  &(vtc_S7300C10[0]), // expected_vtbl_contents
  &(vtt_S7300C10[0]), // expected_vtt_contents
  ABISELECT(176,96), // object size
  NSPAIRA(_ZTI8S7300C10),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7300C10),136, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7300C10),45, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names39,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7300C1  : S7300C2 , virtual S7300C9 , S7300C10 {
  void *s7300c1f0[6];
  ::S7300C6 s7300c1f1;
  virtual  ~S7300C1(); // _ZN7S7300C1D2Ev
  S7300C1(); // tgen
};
//SIG(1 S7300C1) C1{ BC2{ VBC3{ BC4{ v1} VBC5{ BC4 v2 v3 v4} BC6{ VBC5 BC4 v5 v6 v7 v8 v9 v10 Fi} v11 v12 v13 v14 v15 v16 v17 Fc} VBC7{ v18 v19 v20 v21 v22} BC8{ VBC4 vd v23} vd v24 v25 v26 FC6} VBC9{ v27 v28 v29 Fi} BC10{ BC11{ VBC2 VBC12{ vd v30 v31 v32 v33} BC13{ VBC3 VBC9 v34 v35 v36 v37 v38 Fp Fc[7]} vd v39 v40 v41 v42 v43} BC2 v44 v45 v46 v47 v48 v49 Fp FD} vd Fp[6] FC6}


 S7300C1 ::~S7300C1(){ note_dtor("S7300C1", this);}
S7300C1 ::S7300C1(){ note_ctor("S7300C1", this);} // tgen

static void Test_S7300C1()
{
  extern Class_Descriptor cd_S7300C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(18,38)];
    init_test(&cd_S7300C1, buf);
    S7300C1 *dp, &lv = *(dp=new (buf) S7300C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(272,148), "sizeof(S7300C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7300C1)");
    /*is_ambiguous_... S7300C3::S7300C4 */ AMB_check_base_class_offset(lv, (S7300C4*)(S7300C3*), ABISELECT(184,100), "S7300C1");
    check_base_class_offset(lv, (S7300C4*)(S7300C5*), ABISELECT(32,16), "S7300C1");
    check_base_class_offset(lv, (S7300C5*)(S7300C3*), ABISELECT(32,16), "S7300C1");
    check_base_class_offset(lv, (S7300C5*)(S7300C6*)(S7300C3*), ABISELECT(32,16), "S7300C1");
    /*is_ambiguous_... S7300C6::S7300C4 */ AMB_check_base_class_offset(lv, (S7300C4*)(S7300C6*)(S7300C3*), ABISELECT(192,104), "S7300C1");
    check_base_class_offset(lv, (S7300C6*)(S7300C3*), ABISELECT(192,104), "S7300C1");
    /*is_ambiguous_... S7300C1::S7300C2 */ AMB_check_base_class_offset(lv, (S7300C3*)(S7300C2*), ABISELECT(184,100), "S7300C1");
    /*is_ambiguous_... S7300C1::S7300C2 */ AMB_check_base_class_offset(lv, (S7300C3*)(S7300C2*), ABISELECT(184,100), "S7300C1");
    check_base_class_offset(lv, (S7300C3*)(S7300C13*)(S7300C11*)(S7300C10*), ABISELECT(184,100), "S7300C1");
    /*is_ambiguous_... S7300C10::S7300C2 */ AMB_check_base_class_offset(lv, (S7300C3*)(S7300C2*)(S7300C10*), ABISELECT(184,100), "S7300C1");
    /*is_ambiguous_... S7300C1::S7300C2 */ AMB_check_base_class_offset(lv, (S7300C7*)(S7300C2*), ABISELECT(208,116), "S7300C1");
    /*is_ambiguous_... S7300C1::S7300C2 */ AMB_check_base_class_offset(lv, (S7300C7*)(S7300C2*), ABISELECT(208,116), "S7300C1");
    /*is_ambiguous_... S7300C10::S7300C2 */ AMB_check_base_class_offset(lv, (S7300C7*)(S7300C2*)(S7300C10*), ABISELECT(208,116), "S7300C1");
    /*is_ambiguous_... S7300C1::S7300C2 */ AMB_check_base_class_offset(lv, (S7300C4*)(S7300C8*)(S7300C2*), 0, "S7300C1");
    /*is_ambiguous_... S7300C1::S7300C2 */ AMB_check_base_class_offset(lv, (S7300C4*)(S7300C8*)(S7300C2*), 0, "S7300C1");
    /*is_ambiguous_... S7300C10::S7300C2 */ AMB_check_base_class_offset(lv, (S7300C4*)(S7300C8*)(S7300C2*)(S7300C10*), 0, "S7300C1");
    /*is_ambiguous_... S7300C1::S7300C2 */ AMB_check_base_class_offset(lv, (S7300C8*)(S7300C2*), 0, "S7300C1");
    /*is_ambiguous_... S7300C1::S7300C2 */ AMB_check_base_class_offset(lv, (S7300C2*), 0, "S7300C1");
    check_base_class_offset(lv, (S7300C9*), ABISELECT(216,120), "S7300C1");
    check_base_class_offset(lv, (S7300C9*)(S7300C13*)(S7300C11*)(S7300C10*), ABISELECT(216,120), "S7300C1");
    /*is_ambiguous_... S7300C1::S7300C2 */ AMB_check_base_class_offset(lv, (S7300C8*)(S7300C2*), ABISELECT(232,128), "S7300C1");
    check_base_class_offset(lv, (S7300C2*)(S7300C11*)(S7300C10*), ABISELECT(232,128), "S7300C1");
    check_base_class_offset(lv, (S7300C12*)(S7300C11*)(S7300C10*), ABISELECT(264,144), "S7300C1");
    check_base_class_offset(lv, (S7300C13*)(S7300C11*)(S7300C10*), ABISELECT(32,16), "S7300C1");
    check_base_class_offset(lv, (S7300C11*)(S7300C10*), ABISELECT(32,16), "S7300C1");
    /*is_ambiguous_... S7300C10::S7300C2 */ AMB_check_base_class_offset(lv, (S7300C8*)(S7300C2*)(S7300C10*), ABISELECT(56,32), "S7300C1");
    /*is_ambiguous_... S7300C10::S7300C2 */ AMB_check_base_class_offset(lv, (S7300C2*)(S7300C10*), ABISELECT(56,32), "S7300C1");
    check_base_class_offset(lv, (S7300C10*), ABISELECT(32,16), "S7300C1");
    check_field_offset(lv, s7300c1f0, ABISELECT(112,64), "S7300C1.s7300c1f0");
    check_field_offset(lv, s7300c1f1, ABISELECT(160,88), "S7300C1.s7300c1f1");
    test_class_info(&lv, &cd_S7300C1);
    dp->~S7300C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7300C1(Test_S7300C1, "S7300C1", ABISELECT(272,148));

#else // __cplusplus

extern void _ZN7S7300C1C1Ev();
extern void _ZN7S7300C1D2Ev();
Name_Map name_map_S7300C1[] = {
  NSPAIR(_ZN7S7300C1C1Ev),
  NSPAIR(_ZN7S7300C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7300C4;
extern VTBL_ENTRY _ZTI7S7300C4[];
extern  VTBL_ENTRY _ZTV7S7300C4[];
extern Class_Descriptor cd_S7300C4;
extern VTBL_ENTRY _ZTI7S7300C4[];
extern  VTBL_ENTRY _ZTV7S7300C4[];
extern Class_Descriptor cd_S7300C5;
extern VTBL_ENTRY _ZTI7S7300C5[];
extern  VTBL_ENTRY _ZTV7S7300C5[];
extern Class_Descriptor cd_S7300C4;
extern VTBL_ENTRY _ZTI7S7300C4[];
extern  VTBL_ENTRY _ZTV7S7300C4[];
extern Class_Descriptor cd_S7300C6;
extern VTBL_ENTRY _ZTI7S7300C6[];
extern  VTBL_ENTRY _ZTV7S7300C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7300C6[];
extern Class_Descriptor cd_S7300C3;
extern VTBL_ENTRY _ZTI7S7300C3[];
extern  VTBL_ENTRY _ZTV7S7300C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7300C3[];
extern Class_Descriptor cd_S7300C7;
extern VTBL_ENTRY _ZTI7S7300C7[];
extern  VTBL_ENTRY _ZTV7S7300C7[];
extern Class_Descriptor cd_S7300C4;
extern VTBL_ENTRY _ZTI7S7300C4[];
extern  VTBL_ENTRY _ZTV7S7300C4[];
extern Class_Descriptor cd_S7300C8;
extern VTBL_ENTRY _ZTI7S7300C8[];
extern  VTBL_ENTRY _ZTV7S7300C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7300C8[];
extern Class_Descriptor cd_S7300C2;
extern VTBL_ENTRY _ZTI7S7300C2[];
extern  VTBL_ENTRY _ZTV7S7300C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7300C2[];
extern Class_Descriptor cd_S7300C9;
extern VTBL_ENTRY _ZTI7S7300C9[];
extern  VTBL_ENTRY _ZTV7S7300C9[];
extern Class_Descriptor cd_S7300C8;
extern VTBL_ENTRY _ZTI7S7300C8[];
extern  VTBL_ENTRY _ZTV7S7300C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7300C8[];
extern Class_Descriptor cd_S7300C2;
extern VTBL_ENTRY _ZTI7S7300C2[];
extern  VTBL_ENTRY _ZTV7S7300C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7300C2[];
extern Class_Descriptor cd_S7300C12;
extern VTBL_ENTRY _ZTI8S7300C12[];
extern  VTBL_ENTRY _ZTV8S7300C12[];
extern Class_Descriptor cd_S7300C13;
extern VTBL_ENTRY _ZTI8S7300C13[];
extern  VTBL_ENTRY _ZTV8S7300C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7300C13[];
extern Class_Descriptor cd_S7300C11;
extern VTBL_ENTRY _ZTI8S7300C11[];
extern  VTBL_ENTRY _ZTV8S7300C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7300C11[];
extern Class_Descriptor cd_S7300C8;
extern VTBL_ENTRY _ZTI7S7300C8[];
extern  VTBL_ENTRY _ZTV7S7300C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7300C8[];
extern Class_Descriptor cd_S7300C2;
extern VTBL_ENTRY _ZTI7S7300C2[];
extern  VTBL_ENTRY _ZTV7S7300C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7300C2[];
extern Class_Descriptor cd_S7300C10;
extern VTBL_ENTRY _ZTI8S7300C10[];
extern  VTBL_ENTRY _ZTV8S7300C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7300C10[];
static Base_Class bases_S7300C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7300C4,    ABISELECT(184,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7300C4,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7300C5,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7300C4,    ABISELECT(192,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7300C6,    ABISELECT(192,104), //bcp->offset
    91, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7300C3,    ABISELECT(184,100), //bcp->offset
    66, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7300C7,    ABISELECT(208,116), //bcp->offset
    101, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7300C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7300C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7300C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7300C9,    ABISELECT(216,120), //bcp->offset
    113, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7300C8,    ABISELECT(232,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7300C2,    ABISELECT(232,128), //bcp->offset
    121, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S7300C12,    ABISELECT(264,144), //bcp->offset
    140, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S7300C13,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7300C11,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7300C8,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7300C2,    ABISELECT(56,32), //bcp->offset
    52, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7300C10,    ABISELECT(32,16), //bcp->offset
    17, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7300C1[];
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C1D1Ev();
extern void _ZN7S7300C1D0Ev();
extern void _ZN7S7300C83v23Ev();
extern void _ZN7S7300C23v24Ev();
extern void _ZN7S7300C23v25Ev();
extern void _ZN7S7300C23v26Ev();
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C52v2Ev();
extern void _ZN7S7300C52v3Ev();
extern void _ZN7S7300C52v4Ev();
extern void _ZN8S7300C133v34Ev();
extern void _ZN8S7300C133v35Ev();
extern void _ZN8S7300C133v36Ev();
extern void _ZN8S7300C133v37Ev();
extern void _ZN8S7300C133v38Ev();
extern void ABISELECT(_ZThn32_N7S7300C1D1Ev,_ZThn16_N7S7300C1D1Ev)();
extern void ABISELECT(_ZThn32_N7S7300C1D0Ev,_ZThn16_N7S7300C1D0Ev)();
extern void _ZN8S7300C113v39Ev();
extern void _ZN8S7300C113v40Ev();
extern void _ZN8S7300C113v41Ev();
extern void _ZN8S7300C113v42Ev();
extern void _ZN8S7300C113v43Ev();
extern void _ZN8S7300C103v44Ev();
extern void _ZN8S7300C103v45Ev();
extern void _ZN8S7300C103v46Ev();
extern void _ZN8S7300C103v47Ev();
extern void _ZN8S7300C103v48Ev();
extern void _ZN8S7300C103v49Ev();
extern void _ZN7S7300C42v1Ev();
extern void ABISELECT(_ZThn56_N7S7300C1D1Ev,_ZThn32_N7S7300C1D1Ev)();
extern void ABISELECT(_ZThn56_N7S7300C1D0Ev,_ZThn32_N7S7300C1D0Ev)();
extern void _ZN7S7300C83v23Ev();
extern void _ZN7S7300C23v24Ev();
extern void _ZN7S7300C23v25Ev();
extern void _ZN7S7300C23v26Ev();
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C33v11Ev();
extern void _ZN7S7300C33v12Ev();
extern void _ZN7S7300C33v13Ev();
extern void _ZN7S7300C33v14Ev();
extern void _ZN7S7300C33v15Ev();
extern void _ZN7S7300C33v16Ev();
extern void _ZN7S7300C33v17Ev();
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C62v5Ev();
extern void _ZN7S7300C62v6Ev();
extern void _ZN7S7300C62v7Ev();
extern void _ZN7S7300C62v8Ev();
extern void _ZN7S7300C62v9Ev();
extern void _ZN7S7300C63v10Ev();
extern void _ZN7S7300C73v18Ev();
extern void _ZN7S7300C73v19Ev();
extern void _ZN7S7300C73v20Ev();
extern void _ZN7S7300C73v21Ev();
extern void _ZN7S7300C73v22Ev();
extern void _ZN7S7300C93v31Ev();
extern void _ZN7S7300C93v32Ev();
extern void _ZN7S7300C93v33Ev();
extern void _ZN7S7300C42v1Ev();
extern void ABISELECT(_ZTv0_n64_N7S7300C1D1Ev,_ZTv0_n32_N7S7300C1D1Ev)();
extern void ABISELECT(_ZThn232_N7S7300C1D1Ev,_ZThn128_N7S7300C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7300C1D0Ev,_ZTv0_n32_N7S7300C1D0Ev)();
extern void ABISELECT(_ZThn232_N7S7300C1D0Ev,_ZThn128_N7S7300C1D0Ev)() __attribute__((weak));
extern void _ZN7S7300C83v23Ev();
extern void _ZN7S7300C23v24Ev();
extern void _ZN7S7300C23v25Ev();
extern void _ZN7S7300C23v26Ev();
extern void ABISELECT(_ZTv0_n24_N7S7300C1D1Ev,_ZTv0_n12_N7S7300C1D1Ev)();
extern void ABISELECT(_ZThn264_N7S7300C1D1Ev,_ZThn144_N7S7300C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7300C1D0Ev,_ZTv0_n12_N7S7300C1D0Ev)();
extern void ABISELECT(_ZThn264_N7S7300C1D0Ev,_ZThn144_N7S7300C1D0Ev)() __attribute__((weak));
extern void _ZN8S7300C123v27Ev();
extern void _ZN8S7300C123v28Ev();
extern void _ZN8S7300C123v29Ev();
extern void _ZN8S7300C123v30Ev();
static  VTBL_ENTRY vtc_S7300C1[] = {
  ABISELECT(264,144),
  ABISELECT(232,128),
  ABISELECT(216,120),
  ABISELECT(208,116),
  ABISELECT(32,16),
  ABISELECT(184,100),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7300C1[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7300C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7300C83v23Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v24Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v25Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v26Ev,
  ABISELECT(232,128),
  ABISELECT(-32,-16),
  ABISELECT(176,100),
  ABISELECT(200,112),
  ABISELECT(184,104),
  0,
  ABISELECT(152,84),
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7300C1[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v4Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v34Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v35Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v36Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v37Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v38Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7300C1D1Ev,_ZThn16_N7S7300C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7300C1D0Ev,_ZThn16_N7S7300C1D0Ev),
  (VTBL_ENTRY)&_ZN8S7300C113v39Ev,
  (VTBL_ENTRY)&_ZN8S7300C113v40Ev,
  (VTBL_ENTRY)&_ZN8S7300C113v41Ev,
  (VTBL_ENTRY)&_ZN8S7300C113v42Ev,
  (VTBL_ENTRY)&_ZN8S7300C113v43Ev,
  (VTBL_ENTRY)&_ZN8S7300C103v44Ev,
  (VTBL_ENTRY)&_ZN8S7300C103v45Ev,
  (VTBL_ENTRY)&_ZN8S7300C103v46Ev,
  (VTBL_ENTRY)&_ZN8S7300C103v47Ev,
  (VTBL_ENTRY)&_ZN8S7300C103v48Ev,
  (VTBL_ENTRY)&_ZN8S7300C103v49Ev,
  ABISELECT(152,84),
  ABISELECT(-24,-16),
  ABISELECT(128,68),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7300C1[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S7300C1D1Ev,_ZThn32_N7S7300C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S7300C1D0Ev,_ZThn32_N7S7300C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7300C83v23Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v24Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v25Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v26Ev,
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-152,-84),
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI7S7300C1[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v17Ev,
  ABISELECT(-160,-88),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI7S7300C1[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7300C63v10Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI7S7300C1[0]),
  (VTBL_ENTRY)&_ZN7S7300C73v18Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v19Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v20Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v21Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v22Ev,
  0,
  0,
  0,
  ABISELECT(-216,-120),
  (VTBL_ENTRY)&(_ZTI7S7300C1[0]),
  (VTBL_ENTRY)&_ZN7S7300C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7300C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7300C93v33Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-232,-128),
  ABISELECT(-24,-12),
  ABISELECT(-200,-112),
  ABISELECT(-48,-28),
  ABISELECT(-232,-128),
  ABISELECT(-232,-128),
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI7S7300C1[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7300C1D1Ev,_ZTv0_n32_N7S7300C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7300C1D0Ev,_ZTv0_n32_N7S7300C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7300C83v23Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v24Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v25Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v26Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-264,-144),
  ABISELECT(-264,-144),
  (VTBL_ENTRY)&(_ZTI7S7300C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7300C1D1Ev,_ZTv0_n12_N7S7300C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7300C1D0Ev,_ZTv0_n12_N7S7300C1D0Ev),
  (VTBL_ENTRY)&_ZN8S7300C123v27Ev,
  (VTBL_ENTRY)&_ZN8S7300C123v28Ev,
  (VTBL_ENTRY)&_ZN8S7300C123v29Ev,
  (VTBL_ENTRY)&_ZN8S7300C123v30Ev,
};
extern VTBL_ENTRY _ZTV7S7300C1[];
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C2D1Ev();
extern void _ZN7S7300C2D0Ev();
extern void _ZN7S7300C83v23Ev();
extern void _ZN7S7300C23v24Ev();
extern void _ZN7S7300C23v25Ev();
extern void _ZN7S7300C23v26Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C2__A__7S7300C1[] = {
  ABISELECT(208,116),
  ABISELECT(32,16),
  ABISELECT(184,100),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7300C2[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7300C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7300C83v23Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v24Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v25Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v26Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C8D1Ev();
extern void _ZN7S7300C8D0Ev();
extern void _ZN7S7300C83v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C87S7300C2__7S7300C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7300C8[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7300C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7300C83v23Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C33v11Ev();
extern void _ZN7S7300C33v12Ev();
extern void _ZN7S7300C33v13Ev();
extern void _ZN7S7300C33v14Ev();
extern void _ZN7S7300C33v15Ev();
extern void _ZN7S7300C33v16Ev();
extern void _ZN7S7300C33v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C3__7S7300C2__A__7S7300C1[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-152,-84),
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI7S7300C2[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v17Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C52v2Ev();
extern void _ZN7S7300C52v3Ev();
extern void _ZN7S7300C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C5__7S7300C2__A__7S7300C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7300C2[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v4Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C62v5Ev();
extern void _ZN7S7300C62v6Ev();
extern void _ZN7S7300C62v7Ev();
extern void _ZN7S7300C62v8Ev();
extern void _ZN7S7300C62v9Ev();
extern void _ZN7S7300C63v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C67S7300C3__7S7300C2__A__7S7300C1[] = {
  ABISELECT(-160,-88),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI7S7300C2[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7300C63v10Ev,
};
extern void _ZN7S7300C73v18Ev();
extern void _ZN7S7300C73v19Ev();
extern void _ZN7S7300C73v20Ev();
extern void _ZN7S7300C73v21Ev();
extern void _ZN7S7300C73v22Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C7__7S7300C2__A__7S7300C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI7S7300C2[0]),
  (VTBL_ENTRY)&_ZN7S7300C73v18Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v19Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v20Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v21Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v22Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C52v2Ev();
extern void _ZN7S7300C52v3Ev();
extern void _ZN7S7300C52v4Ev();
extern void _ZN8S7300C133v34Ev();
extern void _ZN8S7300C133v35Ev();
extern void _ZN8S7300C133v36Ev();
extern void _ZN8S7300C133v37Ev();
extern void _ZN8S7300C133v38Ev();
extern void _ZN8S7300C10D1Ev();
extern void _ZN8S7300C10D0Ev();
extern void _ZN8S7300C113v39Ev();
extern void _ZN8S7300C113v40Ev();
extern void _ZN8S7300C113v41Ev();
extern void _ZN8S7300C113v42Ev();
extern void _ZN8S7300C113v43Ev();
extern void _ZN8S7300C103v44Ev();
extern void _ZN8S7300C103v45Ev();
extern void _ZN8S7300C103v46Ev();
extern void _ZN8S7300C103v47Ev();
extern void _ZN8S7300C103v48Ev();
extern void _ZN8S7300C103v49Ev();
static  VTBL_ENTRY _tg__ZTV8S7300C10__7S7300C1[] = {
  ABISELECT(232,128),
  ABISELECT(-32,-16),
  ABISELECT(176,100),
  ABISELECT(200,112),
  ABISELECT(184,104),
  0,
  ABISELECT(152,84),
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7300C10[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v4Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v34Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v35Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v36Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v37Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v38Ev,
  (VTBL_ENTRY)&_ZN8S7300C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7300C10D0Ev,
  (VTBL_ENTRY)&_ZN8S7300C113v39Ev,
  (VTBL_ENTRY)&_ZN8S7300C113v40Ev,
  (VTBL_ENTRY)&_ZN8S7300C113v41Ev,
  (VTBL_ENTRY)&_ZN8S7300C113v42Ev,
  (VTBL_ENTRY)&_ZN8S7300C113v43Ev,
  (VTBL_ENTRY)&_ZN8S7300C103v44Ev,
  (VTBL_ENTRY)&_ZN8S7300C103v45Ev,
  (VTBL_ENTRY)&_ZN8S7300C103v46Ev,
  (VTBL_ENTRY)&_ZN8S7300C103v47Ev,
  (VTBL_ENTRY)&_ZN8S7300C103v48Ev,
  (VTBL_ENTRY)&_ZN8S7300C103v49Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C52v2Ev();
extern void _ZN7S7300C52v3Ev();
extern void _ZN7S7300C52v4Ev();
extern void _ZN8S7300C133v34Ev();
extern void _ZN8S7300C133v35Ev();
extern void _ZN8S7300C133v36Ev();
extern void _ZN8S7300C133v37Ev();
extern void _ZN8S7300C133v38Ev();
extern void _ZN8S7300C11D1Ev();
extern void _ZN8S7300C11D0Ev();
extern void _ZN8S7300C113v39Ev();
extern void _ZN8S7300C113v40Ev();
extern void _ZN8S7300C113v41Ev();
extern void _ZN8S7300C113v42Ev();
extern void _ZN8S7300C113v43Ev();
static  VTBL_ENTRY _tg__ZTV8S7300C118S7300C10__7S7300C1[] = {
  ABISELECT(232,128),
  ABISELECT(-32,-16),
  ABISELECT(176,100),
  ABISELECT(200,112),
  ABISELECT(184,104),
  0,
  ABISELECT(152,84),
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7300C11[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v4Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v34Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v35Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v36Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v37Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v38Ev,
  (VTBL_ENTRY)&_ZN8S7300C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7300C11D0Ev,
  (VTBL_ENTRY)&_ZN8S7300C113v39Ev,
  (VTBL_ENTRY)&_ZN8S7300C113v40Ev,
  (VTBL_ENTRY)&_ZN8S7300C113v41Ev,
  (VTBL_ENTRY)&_ZN8S7300C113v42Ev,
  (VTBL_ENTRY)&_ZN8S7300C113v43Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C52v2Ev();
extern void _ZN7S7300C52v3Ev();
extern void _ZN7S7300C52v4Ev();
extern void _ZN8S7300C133v34Ev();
extern void _ZN8S7300C133v35Ev();
extern void _ZN8S7300C133v36Ev();
extern void _ZN8S7300C133v37Ev();
extern void _ZN8S7300C133v38Ev();
static  VTBL_ENTRY _tg__ZTV8S7300C138S7300C118S7300C10__7S7300C1[] = {
  ABISELECT(184,104),
  0,
  ABISELECT(152,84),
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7300C13[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v4Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v34Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v35Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v36Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v37Ev,
  (VTBL_ENTRY)&_ZN8S7300C133v38Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C33v11Ev();
extern void _ZN7S7300C33v12Ev();
extern void _ZN7S7300C33v13Ev();
extern void _ZN7S7300C33v14Ev();
extern void _ZN7S7300C33v15Ev();
extern void _ZN7S7300C33v16Ev();
extern void _ZN7S7300C33v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C3__8S7300C138S7300C118S7300C10__7S7300C1[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-152,-84),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI8S7300C13[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v17Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C62v5Ev();
extern void _ZN7S7300C62v6Ev();
extern void _ZN7S7300C62v7Ev();
extern void _ZN7S7300C62v8Ev();
extern void _ZN7S7300C62v9Ev();
extern void _ZN7S7300C63v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C67S7300C3__8S7300C138S7300C118S7300C10__7S7300C1[] = {
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S7300C13[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7300C63v10Ev,
};
extern void _ZN7S7300C93v31Ev();
extern void _ZN7S7300C93v32Ev();
extern void _ZN7S7300C93v33Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C9__8S7300C138S7300C118S7300C10__7S7300C1[] = {
  0,
  0,
  0,
  ABISELECT(-184,-104),
  (VTBL_ENTRY)&(_ZTI8S7300C13[0]),
  (VTBL_ENTRY)&_ZN7S7300C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7300C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7300C93v33Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S7300C11D1Ev,_ZTv0_n32_N8S7300C11D1Ev)();
extern void ABISELECT(_ZThn200_N8S7300C11D1Ev,_ZThn112_N8S7300C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7300C11D0Ev,_ZTv0_n32_N8S7300C11D0Ev)();
extern void ABISELECT(_ZThn200_N8S7300C11D0Ev,_ZThn112_N8S7300C11D0Ev)() __attribute__((weak));
extern void _ZN7S7300C83v23Ev();
extern void _ZN7S7300C23v24Ev();
extern void _ZN7S7300C23v25Ev();
extern void _ZN7S7300C23v26Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C2__8S7300C118S7300C10__7S7300C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-200,-112),
  ABISELECT(-24,-12),
  ABISELECT(-200,-112),
  ABISELECT(-48,-28),
  ABISELECT(-232,-128),
  ABISELECT(-232,-128),
  ABISELECT(-200,-112),
  (VTBL_ENTRY)&(_ZTI8S7300C11[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7300C11D1Ev,_ZTv0_n32_N8S7300C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7300C11D0Ev,_ZTv0_n32_N8S7300C11D0Ev),
  (VTBL_ENTRY)&_ZN7S7300C83v23Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v24Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v25Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v26Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C33v11Ev();
extern void _ZN7S7300C33v12Ev();
extern void _ZN7S7300C33v13Ev();
extern void _ZN7S7300C33v14Ev();
extern void _ZN7S7300C33v15Ev();
extern void _ZN7S7300C33v16Ev();
extern void _ZN7S7300C33v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C3__8S7300C118S7300C10__7S7300C1[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-152,-84),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI8S7300C11[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v17Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C62v5Ev();
extern void _ZN7S7300C62v6Ev();
extern void _ZN7S7300C62v7Ev();
extern void _ZN7S7300C62v8Ev();
extern void _ZN7S7300C62v9Ev();
extern void _ZN7S7300C63v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C67S7300C3__8S7300C118S7300C10__7S7300C1[] = {
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S7300C11[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7300C63v10Ev,
};
extern void _ZN7S7300C73v18Ev();
extern void _ZN7S7300C73v19Ev();
extern void _ZN7S7300C73v20Ev();
extern void _ZN7S7300C73v21Ev();
extern void _ZN7S7300C73v22Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C7__8S7300C118S7300C10__7S7300C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI8S7300C11[0]),
  (VTBL_ENTRY)&_ZN7S7300C73v18Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v19Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v20Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v21Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v22Ev,
};
extern void _ZN7S7300C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C4__A3__8S7300C118S7300C10__7S7300C1[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7300C11[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7300C11D1Ev,_ZTv0_n12_N8S7300C11D1Ev)();
extern void ABISELECT(_ZThn232_N8S7300C11D1Ev,_ZThn128_N8S7300C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7300C11D0Ev,_ZTv0_n12_N8S7300C11D0Ev)();
extern void ABISELECT(_ZThn232_N8S7300C11D0Ev,_ZThn128_N8S7300C11D0Ev)() __attribute__((weak));
extern void _ZN8S7300C123v27Ev();
extern void _ZN8S7300C123v28Ev();
extern void _ZN8S7300C123v29Ev();
extern void _ZN8S7300C123v30Ev();
static  VTBL_ENTRY _tg__ZTV8S7300C12__8S7300C118S7300C10__7S7300C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-232,-128),
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI8S7300C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7300C11D1Ev,_ZTv0_n12_N8S7300C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7300C11D0Ev,_ZTv0_n12_N8S7300C11D0Ev),
  (VTBL_ENTRY)&_ZN8S7300C123v27Ev,
  (VTBL_ENTRY)&_ZN8S7300C123v28Ev,
  (VTBL_ENTRY)&_ZN8S7300C123v29Ev,
  (VTBL_ENTRY)&_ZN8S7300C123v30Ev,
};
extern void _ZN7S7300C93v31Ev();
extern void _ZN7S7300C93v32Ev();
extern void _ZN7S7300C93v33Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C9__8S7300C118S7300C10__7S7300C1[] = {
  0,
  0,
  0,
  ABISELECT(-184,-104),
  (VTBL_ENTRY)&(_ZTI8S7300C11[0]),
  (VTBL_ENTRY)&_ZN7S7300C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7300C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7300C93v33Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C2D1Ev();
extern void _ZN7S7300C2D0Ev();
extern void _ZN7S7300C83v23Ev();
extern void _ZN7S7300C23v24Ev();
extern void _ZN7S7300C23v25Ev();
extern void _ZN7S7300C23v26Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C28S7300C10__A2__7S7300C1[] = {
  ABISELECT(152,84),
  ABISELECT(-24,-16),
  ABISELECT(128,68),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7300C2[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7300C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7300C83v23Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v24Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v25Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v26Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C8D1Ev();
extern void _ZN7S7300C8D0Ev();
extern void _ZN7S7300C83v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C87S7300C28S7300C10__A2__7S7300C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7300C8[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7300C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7300C83v23Ev,
};
extern void _ZN7S7300C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C4__7S7300C87S7300C28S7300C10__A2__7S7300C1[] = {
  0,
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S7300C8[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C33v11Ev();
extern void _ZN7S7300C33v12Ev();
extern void _ZN7S7300C33v13Ev();
extern void _ZN7S7300C33v14Ev();
extern void _ZN7S7300C33v15Ev();
extern void _ZN7S7300C33v16Ev();
extern void _ZN7S7300C33v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C3__7S7300C28S7300C10__A2__7S7300C1[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-152,-84),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI7S7300C2[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v17Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C52v2Ev();
extern void _ZN7S7300C52v3Ev();
extern void _ZN7S7300C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C5__7S7300C28S7300C10__A2__7S7300C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S7300C2[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v4Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C62v5Ev();
extern void _ZN7S7300C62v6Ev();
extern void _ZN7S7300C62v7Ev();
extern void _ZN7S7300C62v8Ev();
extern void _ZN7S7300C62v9Ev();
extern void _ZN7S7300C63v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C67S7300C3__7S7300C28S7300C10__A2__7S7300C1[] = {
  ABISELECT(-160,-88),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI7S7300C2[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7300C63v10Ev,
};
extern void _ZN7S7300C73v18Ev();
extern void _ZN7S7300C73v19Ev();
extern void _ZN7S7300C73v20Ev();
extern void _ZN7S7300C73v21Ev();
extern void _ZN7S7300C73v22Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C7__7S7300C28S7300C10__A2__7S7300C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI7S7300C2[0]),
  (VTBL_ENTRY)&_ZN7S7300C73v18Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v19Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v20Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v21Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v22Ev,
};
extern void _ZN7S7300C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C4__A3__7S7300C28S7300C10__A2__7S7300C1[] = {
  0,
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S7300C2[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S7300C10D1Ev,_ZTv0_n32_N8S7300C10D1Ev)();
extern void ABISELECT(_ZThn200_N8S7300C10D1Ev,_ZThn112_N8S7300C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7300C10D0Ev,_ZTv0_n32_N8S7300C10D0Ev)();
extern void ABISELECT(_ZThn200_N8S7300C10D0Ev,_ZThn112_N8S7300C10D0Ev)() __attribute__((weak));
extern void _ZN7S7300C83v23Ev();
extern void _ZN7S7300C23v24Ev();
extern void _ZN7S7300C23v25Ev();
extern void _ZN7S7300C23v26Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C2__8S7300C10__7S7300C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-200,-112),
  ABISELECT(-24,-12),
  ABISELECT(-200,-112),
  ABISELECT(-48,-28),
  ABISELECT(-232,-128),
  ABISELECT(-232,-128),
  ABISELECT(-200,-112),
  (VTBL_ENTRY)&(_ZTI8S7300C10[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7300C10D1Ev,_ZTv0_n32_N8S7300C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7300C10D0Ev,_ZTv0_n32_N8S7300C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7300C83v23Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v24Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v25Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v26Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C33v11Ev();
extern void _ZN7S7300C33v12Ev();
extern void _ZN7S7300C33v13Ev();
extern void _ZN7S7300C33v14Ev();
extern void _ZN7S7300C33v15Ev();
extern void _ZN7S7300C33v16Ev();
extern void _ZN7S7300C33v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C3__8S7300C10__7S7300C1[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-152,-84),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI8S7300C10[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v17Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C62v5Ev();
extern void _ZN7S7300C62v6Ev();
extern void _ZN7S7300C62v7Ev();
extern void _ZN7S7300C62v8Ev();
extern void _ZN7S7300C62v9Ev();
extern void _ZN7S7300C63v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C67S7300C3__8S7300C10__7S7300C1[] = {
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S7300C10[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7300C63v10Ev,
};
extern void _ZN7S7300C73v18Ev();
extern void _ZN7S7300C73v19Ev();
extern void _ZN7S7300C73v20Ev();
extern void _ZN7S7300C73v21Ev();
extern void _ZN7S7300C73v22Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C7__8S7300C10__7S7300C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI8S7300C10[0]),
  (VTBL_ENTRY)&_ZN7S7300C73v18Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v19Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v20Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v21Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v22Ev,
};
extern void _ZN7S7300C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C4__A3__8S7300C10__7S7300C1[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7300C10[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7300C10D1Ev,_ZTv0_n12_N8S7300C10D1Ev)();
extern void ABISELECT(_ZThn232_N8S7300C10D1Ev,_ZThn128_N8S7300C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7300C10D0Ev,_ZTv0_n12_N8S7300C10D0Ev)();
extern void ABISELECT(_ZThn232_N8S7300C10D0Ev,_ZThn128_N8S7300C10D0Ev)() __attribute__((weak));
extern void _ZN8S7300C123v27Ev();
extern void _ZN8S7300C123v28Ev();
extern void _ZN8S7300C123v29Ev();
extern void _ZN8S7300C123v30Ev();
static  VTBL_ENTRY _tg__ZTV8S7300C12__8S7300C10__7S7300C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-232,-128),
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI8S7300C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7300C10D1Ev,_ZTv0_n12_N8S7300C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7300C10D0Ev,_ZTv0_n12_N8S7300C10D0Ev),
  (VTBL_ENTRY)&_ZN8S7300C123v27Ev,
  (VTBL_ENTRY)&_ZN8S7300C123v28Ev,
  (VTBL_ENTRY)&_ZN8S7300C123v29Ev,
  (VTBL_ENTRY)&_ZN8S7300C123v30Ev,
};
extern void _ZN7S7300C93v31Ev();
extern void _ZN7S7300C93v32Ev();
extern void _ZN7S7300C93v33Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C9__8S7300C10__7S7300C1[] = {
  0,
  0,
  0,
  ABISELECT(-184,-104),
  (VTBL_ENTRY)&(_ZTI8S7300C10[0]),
  (VTBL_ENTRY)&_ZN7S7300C93v31Ev,
  (VTBL_ENTRY)&_ZN7S7300C93v32Ev,
  (VTBL_ENTRY)&_ZN7S7300C93v33Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void ABISELECT(_ZThn24_N8S7300C10D1Ev,_ZThn16_N8S7300C10D1Ev)();
extern void ABISELECT(_ZThn24_N8S7300C10D0Ev,_ZThn16_N8S7300C10D0Ev)();
extern void _ZN7S7300C83v23Ev();
extern void _ZN7S7300C23v24Ev();
extern void _ZN7S7300C23v25Ev();
extern void _ZN7S7300C23v26Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C2__A__8S7300C10__7S7300C1[] = {
  ABISELECT(152,84),
  ABISELECT(-24,-16),
  ABISELECT(128,68),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7300C10[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7300C10D1Ev,_ZThn16_N8S7300C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7300C10D0Ev,_ZThn16_N8S7300C10D0Ev),
  (VTBL_ENTRY)&_ZN7S7300C83v23Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v24Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v25Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v26Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C33v11Ev();
extern void _ZN7S7300C33v12Ev();
extern void _ZN7S7300C33v13Ev();
extern void _ZN7S7300C33v14Ev();
extern void _ZN7S7300C33v15Ev();
extern void _ZN7S7300C33v16Ev();
extern void _ZN7S7300C33v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C3__7S7300C1[] = {
  ABISELECT(-152,-84),
  0,
  (VTBL_ENTRY)&(_ZTI7S7300C3[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v17Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C62v5Ev();
extern void _ZN7S7300C62v6Ev();
extern void _ZN7S7300C62v7Ev();
extern void _ZN7S7300C62v8Ev();
extern void _ZN7S7300C62v9Ev();
extern void _ZN7S7300C63v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C67S7300C3__7S7300C1[] = {
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S7300C6[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7300C63v10Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C52v2Ev();
extern void _ZN7S7300C52v3Ev();
extern void _ZN7S7300C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C5__7S7300C67S7300C3__7S7300C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI7S7300C6[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v4Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C52v2Ev();
extern void _ZN7S7300C52v3Ev();
extern void _ZN7S7300C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C5__7S7300C3__7S7300C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(152,84),
  (VTBL_ENTRY)&(_ZTI7S7300C3[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v4Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C62v5Ev();
extern void _ZN7S7300C62v6Ev();
extern void _ZN7S7300C62v7Ev();
extern void _ZN7S7300C62v8Ev();
extern void _ZN7S7300C62v9Ev();
extern void _ZN7S7300C63v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C6__7S7300C3__7S7300C1[] = {
  ABISELECT(-160,-88),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7300C3[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7300C63v10Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C2D1Ev();
extern void _ZN7S7300C2D0Ev();
extern void _ZN7S7300C83v23Ev();
extern void _ZN7S7300C23v24Ev();
extern void _ZN7S7300C23v25Ev();
extern void _ZN7S7300C23v26Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C2__A1__7S7300C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-200,-112),
  ABISELECT(-48,-28),
  ABISELECT(-232,-128),
  ABISELECT(-232,-128),
  0,
  (VTBL_ENTRY)&(_ZTI7S7300C2[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7300C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7300C83v23Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v24Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v25Ev,
  (VTBL_ENTRY)&_ZN7S7300C23v26Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C8D1Ev();
extern void _ZN7S7300C8D0Ev();
extern void _ZN7S7300C83v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C87S7300C2__A1__7S7300C1[] = {
  ABISELECT(-232,-128),
  ABISELECT(-232,-128),
  0,
  (VTBL_ENTRY)&(_ZTI7S7300C8[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7300C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7300C83v23Ev,
};
extern void _ZN7S7300C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C4__7S7300C87S7300C2__A1__7S7300C1[] = {
  0,
  ABISELECT(232,128),
  (VTBL_ENTRY)&(_ZTI7S7300C8[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C33v11Ev();
extern void _ZN7S7300C33v12Ev();
extern void _ZN7S7300C33v13Ev();
extern void _ZN7S7300C33v14Ev();
extern void _ZN7S7300C33v15Ev();
extern void _ZN7S7300C33v16Ev();
extern void _ZN7S7300C33v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C3__7S7300C2__A1__7S7300C1[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-152,-84),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7300C2[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7300C33v17Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C52v2Ev();
extern void _ZN7S7300C52v3Ev();
extern void _ZN7S7300C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C5__7S7300C2__A1__7S7300C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI7S7300C2[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v2Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7300C52v4Ev,
};
extern void _ZN7S7300C42v1Ev();
extern void _ZN7S7300C62v5Ev();
extern void _ZN7S7300C62v6Ev();
extern void _ZN7S7300C62v7Ev();
extern void _ZN7S7300C62v8Ev();
extern void _ZN7S7300C62v9Ev();
extern void _ZN7S7300C63v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C67S7300C3__7S7300C2__A1__7S7300C1[] = {
  ABISELECT(-160,-88),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI7S7300C2[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7300C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7300C63v10Ev,
};
extern void _ZN7S7300C73v18Ev();
extern void _ZN7S7300C73v19Ev();
extern void _ZN7S7300C73v20Ev();
extern void _ZN7S7300C73v21Ev();
extern void _ZN7S7300C73v22Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C7__7S7300C2__A1__7S7300C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S7300C2[0]),
  (VTBL_ENTRY)&_ZN7S7300C73v18Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v19Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v20Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v21Ev,
  (VTBL_ENTRY)&_ZN7S7300C73v22Ev,
};
extern void _ZN7S7300C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7300C4__A3__7S7300C2__A1__7S7300C1[] = {
  0,
  ABISELECT(232,128),
  (VTBL_ENTRY)&(_ZTI7S7300C2[0]),
  (VTBL_ENTRY)&_ZN7S7300C42v1Ev,
};
static  VTT_ENTRY vtt_S7300C1[] = {
  {&(_ZTV7S7300C1[10]),  10,153},
  {&(_tg__ZTV7S7300C2__A__7S7300C1[7]),  7,14},
  {&(_tg__ZTV7S7300C87S7300C2__7S7300C1[4]),  4,8},
  {&(_tg__ZTV7S7300C87S7300C2__7S7300C1[4]),  4,8},
  {&(_tg__ZTV7S7300C3__7S7300C2__A__7S7300C1[17]),  17,25},
  {&(_tg__ZTV7S7300C5__7S7300C2__A__7S7300C1[6]),  6,10},
  {&(_tg__ZTV7S7300C67S7300C3__7S7300C2__A__7S7300C1[3]),  3,10},
  {&(_tg__ZTV7S7300C7__7S7300C2__A__7S7300C1[7]),  7,12},
  {&(_tg__ZTV7S7300C2__A__7S7300C1[7]),  7,14},
  {&(_tg__ZTV8S7300C10__7S7300C1[13]),  13,35},
  {&(_tg__ZTV8S7300C118S7300C10__7S7300C1[13]),  13,29},
  {&(_tg__ZTV8S7300C138S7300C118S7300C10__7S7300C1[9]),  9,18},
  {&(_tg__ZTV7S7300C3__8S7300C138S7300C118S7300C10__7S7300C1[17]),  17,25},
  {&(_tg__ZTV8S7300C138S7300C118S7300C10__7S7300C1[9]),  9,18},
  {&(_tg__ZTV7S7300C67S7300C3__8S7300C138S7300C118S7300C10__7S7300C1[3]),  3,10},
  {&(_tg__ZTV7S7300C9__8S7300C138S7300C118S7300C10__7S7300C1[5]),  5,8},
  {&(_tg__ZTV7S7300C2__8S7300C118S7300C10__7S7300C1[12]),  12,19},
  {&(_tg__ZTV7S7300C3__8S7300C118S7300C10__7S7300C1[17]),  17,25},
  {&(_tg__ZTV8S7300C118S7300C10__7S7300C1[13]),  13,29},
  {&(_tg__ZTV7S7300C67S7300C3__8S7300C118S7300C10__7S7300C1[3]),  3,10},
  {&(_tg__ZTV7S7300C7__8S7300C118S7300C10__7S7300C1[7]),  7,12},
  {&(_tg__ZTV7S7300C4__A3__8S7300C118S7300C10__7S7300C1[3]),  3,4},
  {&(_tg__ZTV8S7300C12__8S7300C118S7300C10__7S7300C1[7]),  7,13},
  {&(_tg__ZTV7S7300C9__8S7300C118S7300C10__7S7300C1[5]),  5,8},
  {&(_tg__ZTV7S7300C28S7300C10__A2__7S7300C1[7]),  7,14},
  {&(_tg__ZTV7S7300C87S7300C28S7300C10__A2__7S7300C1[4]),  4,8},
  {&(_tg__ZTV7S7300C4__7S7300C87S7300C28S7300C10__A2__7S7300C1[3]),  3,4},
  {&(_tg__ZTV7S7300C3__7S7300C28S7300C10__A2__7S7300C1[17]),  17,25},
  {&(_tg__ZTV7S7300C5__7S7300C28S7300C10__A2__7S7300C1[6]),  6,10},
  {&(_tg__ZTV7S7300C67S7300C3__7S7300C28S7300C10__A2__7S7300C1[3]),  3,10},
  {&(_tg__ZTV7S7300C7__7S7300C28S7300C10__A2__7S7300C1[7]),  7,12},
  {&(_tg__ZTV7S7300C4__A3__7S7300C28S7300C10__A2__7S7300C1[3]),  3,4},
  {&(_tg__ZTV7S7300C2__8S7300C10__7S7300C1[12]),  12,19},
  {&(_tg__ZTV7S7300C3__8S7300C10__7S7300C1[17]),  17,25},
  {&(_tg__ZTV8S7300C10__7S7300C1[13]),  13,35},
  {&(_tg__ZTV7S7300C67S7300C3__8S7300C10__7S7300C1[3]),  3,10},
  {&(_tg__ZTV7S7300C7__8S7300C10__7S7300C1[7]),  7,12},
  {&(_tg__ZTV7S7300C4__A3__8S7300C10__7S7300C1[3]),  3,4},
  {&(_tg__ZTV8S7300C12__8S7300C10__7S7300C1[7]),  7,13},
  {&(_tg__ZTV7S7300C9__8S7300C10__7S7300C1[5]),  5,8},
  {&(_tg__ZTV7S7300C2__A__8S7300C10__7S7300C1[7]),  7,14},
  {&(_ZTV7S7300C1[83]),  83,153},
  {&(_ZTV7S7300C1[30]),  30,153},
  {&(_ZTV7S7300C1[94]),  94,153},
  {&(_ZTV7S7300C1[108]),  108,153},
  {&(_ZTV7S7300C1[10]),  10,153},
  {&(_ZTV7S7300C1[118]),  118,153},
  {&(_ZTV7S7300C1[30]),  30,153},
  {&(_ZTV7S7300C1[133]),  133,153},
  {&(_ZTV7S7300C1[147]),  147,153},
  {&(_ZTV7S7300C1[59]),  59,153},
  {&(_tg__ZTV7S7300C3__7S7300C1[3]),  3,11},
  {&(_tg__ZTV7S7300C67S7300C3__7S7300C1[3]),  3,10},
  {&(_tg__ZTV7S7300C5__7S7300C67S7300C3__7S7300C1[6]),  6,10},
  {&(_tg__ZTV7S7300C5__7S7300C3__7S7300C1[6]),  6,10},
  {&(_tg__ZTV7S7300C6__7S7300C3__7S7300C1[3]),  3,10},
  {&(_tg__ZTV7S7300C2__A1__7S7300C1[7]),  7,14},
  {&(_tg__ZTV7S7300C87S7300C2__A1__7S7300C1[4]),  4,8},
  {&(_tg__ZTV7S7300C4__7S7300C87S7300C2__A1__7S7300C1[3]),  3,4},
  {&(_tg__ZTV7S7300C3__7S7300C2__A1__7S7300C1[17]),  17,25},
  {&(_tg__ZTV7S7300C5__7S7300C2__A1__7S7300C1[6]),  6,10},
  {&(_tg__ZTV7S7300C67S7300C3__7S7300C2__A1__7S7300C1[3]),  3,10},
  {&(_tg__ZTV7S7300C7__7S7300C2__A1__7S7300C1[7]),  7,12},
  {&(_tg__ZTV7S7300C4__A3__7S7300C2__A1__7S7300C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7300C1[];
extern  VTBL_ENTRY _ZTV7S7300C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7300C1[];
static VTBL_ENTRY alt_thunk_names40[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7300C10D0Ev,_ZTv0_n12_N8S7300C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S7300C10D0Ev,_ZThn128_N8S7300C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7300C10D1Ev,_ZTv0_n12_N8S7300C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S7300C10D1Ev,_ZThn128_N8S7300C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7300C10D0Ev,_ZTv0_n32_N8S7300C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S7300C10D0Ev,_ZThn112_N8S7300C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7300C10D1Ev,_ZTv0_n32_N8S7300C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S7300C10D1Ev,_ZThn112_N8S7300C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7300C11D0Ev,_ZTv0_n12_N8S7300C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S7300C11D0Ev,_ZThn128_N8S7300C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7300C11D1Ev,_ZTv0_n12_N8S7300C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S7300C11D1Ev,_ZThn128_N8S7300C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7300C11D0Ev,_ZTv0_n32_N8S7300C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S7300C11D0Ev,_ZThn112_N8S7300C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7300C11D1Ev,_ZTv0_n32_N8S7300C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S7300C11D1Ev,_ZThn112_N8S7300C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7300C1D0Ev,_ZTv0_n12_N7S7300C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S7300C1D0Ev,_ZThn144_N7S7300C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7300C1D1Ev,_ZTv0_n12_N7S7300C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S7300C1D1Ev,_ZThn144_N7S7300C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7300C1D0Ev,_ZTv0_n32_N7S7300C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N7S7300C1D0Ev,_ZThn128_N7S7300C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7300C1D1Ev,_ZTv0_n32_N7S7300C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N7S7300C1D1Ev,_ZThn128_N7S7300C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7300C1 = {  "S7300C1", // class name
  bases_S7300C1, 19,
  &(vtc_S7300C1[0]), // expected_vtbl_contents
  &(vtt_S7300C1[0]), // expected_vtt_contents
  ABISELECT(272,148), // object size
  NSPAIRA(_ZTI7S7300C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7300C1),153, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7300C1),64, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names40,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

union  S3589C4  {
  char s3589c4f0[6];
  void  mf3589c4(); // _ZN7S3589C48mf3589c4Ev
};
//SIG(1 S3589C4) U1{ m Fc[6]}

#endif // __cplusplus
#ifdef __cplusplus

struct  S3589C3  {
  char s3589c3f0;
  ::S3589C4 s3589c3f1;
  void  mf3589c3(); // _ZN7S3589C38mf3589c3Ev
  virtual  ~S3589C3(); // _ZN7S3589C3D1Ev
  S3589C3(); // tgen
};
//SIG(-1 S3589C3) C1{ vd m Fc FU2{ m Fc[6]}}


void  S3589C3 ::mf3589c3(){}
 S3589C3 ::~S3589C3(){ note_dtor("S3589C3", this);}
S3589C3 ::S3589C3(){ note_ctor("S3589C3", this);} // tgen

static void Test_S3589C3()
{
  extern Class_Descriptor cd_S3589C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3589C3, buf);
    S3589C3 *dp, &lv = *(dp=new (buf) S3589C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3589C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3589C3)");
    check_field_offset(lv, s3589c3f0, ABISELECT(8,4), "S3589C3.s3589c3f0");
    check_field_offset(lv, s3589c3f1, ABISELECT(9,5), "S3589C3.s3589c3f1");
    test_class_info(&lv, &cd_S3589C3);
    dp->~S3589C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3589C3(Test_S3589C3, "S3589C3", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S3589C3C1Ev();
extern void _ZN7S3589C3D1Ev();
Name_Map name_map_S3589C3[] = {
  NSPAIR(_ZN7S3589C3C1Ev),
  NSPAIR(_ZN7S3589C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3589C3[];
extern void _ZN7S3589C3D1Ev();
extern void _ZN7S3589C3D0Ev();
static  VTBL_ENTRY vtc_S3589C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3589C3[0]),
  (VTBL_ENTRY)&_ZN7S3589C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3589C3D0Ev,
};
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
Class_Descriptor cd_S3589C3 = {  "S3589C3", // class name
  0,0,//no base classes
  &(vtc_S3589C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S3589C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3589C3),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3589C2  : S3589C3 {
  __tsi64 s3589c2f0;
  ::S3589C4 s3589c2f1;
  virtual  ~S3589C2(); // _ZN7S3589C2D1Ev
  S3589C2(); // tgen
};
//SIG(-1 S3589C2) C1{ BC2{ vd m Fc FU3{ m Fc[6]}} vd FL FU3}


 S3589C2 ::~S3589C2(){ note_dtor("S3589C2", this);}
S3589C2 ::S3589C2(){ note_ctor("S3589C2", this);} // tgen

static void Test_S3589C2()
{
  extern Class_Descriptor cd_S3589C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,8)];
    init_test(&cd_S3589C2, buf);
    S3589C2 *dp, &lv = *(dp=new (buf) S3589C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,28), "sizeof(S3589C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3589C2)");
    check_base_class_offset(lv, (S3589C3*), 0, "S3589C2");
    check_field_offset(lv, s3589c2f0, ABISELECT(16,12), "S3589C2.s3589c2f0");
    check_field_offset(lv, s3589c2f1, ABISELECT(24,20), "S3589C2.s3589c2f1");
    test_class_info(&lv, &cd_S3589C2);
    dp->~S3589C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3589C2(Test_S3589C2, "S3589C2", ABISELECT(32,28));

#else // __cplusplus

extern void _ZN7S3589C2C1Ev();
extern void _ZN7S3589C2D1Ev();
Name_Map name_map_S3589C2[] = {
  NSPAIR(_ZN7S3589C2C1Ev),
  NSPAIR(_ZN7S3589C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
static Base_Class bases_S3589C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3589C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3589C2[];
extern void _ZN7S3589C2D1Ev();
extern void _ZN7S3589C2D0Ev();
static  VTBL_ENTRY vtc_S3589C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3589C2[0]),
  (VTBL_ENTRY)&_ZN7S3589C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3589C2D0Ev,
};
extern VTBL_ENTRY _ZTI7S3589C2[];
extern  VTBL_ENTRY _ZTV7S3589C2[];
Class_Descriptor cd_S3589C2 = {  "S3589C2", // class name
  bases_S3589C2, 1,
  &(vtc_S3589C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,28), // object size
  NSPAIRA(_ZTI7S3589C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3589C2),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3589C8  : virtual S3589C2 , virtual S3589C3 {
  virtual  ~S3589C8(); // _ZN7S3589C8D2Ev
  S3589C8(); // tgen
};
//SIG(-1 S3589C8) C1{ VBC2{ BC3{ vd m Fc FU4{ m Fc[6]}} vd FL FU4} VBC3 vd}


 S3589C8 ::~S3589C8(){ note_dtor("S3589C8", this);}
S3589C8 ::S3589C8(){ note_ctor("S3589C8", this);} // tgen

static void Test_S3589C8()
{
  extern Class_Descriptor cd_S3589C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,12)];
    init_test(&cd_S3589C8, buf);
    S3589C8 *dp, &lv = *(dp=new (buf) S3589C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,44), "sizeof(S3589C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3589C8)");
    check_base_class_offset(lv, (S3589C3*)(S3589C2*), ABISELECT(8,4), "S3589C8");
    check_base_class_offset(lv, (S3589C2*), ABISELECT(8,4), "S3589C8");
    /*is_ambiguous_... S3589C8::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*), ABISELECT(40,32), "S3589C8");
    test_class_info(&lv, &cd_S3589C8);
    dp->~S3589C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3589C8(Test_S3589C8, "S3589C8", ABISELECT(56,44));

#else // __cplusplus

extern void _ZN7S3589C8C1Ev();
extern void _ZN7S3589C8D2Ev();
Name_Map name_map_S3589C8[] = {
  NSPAIR(_ZN7S3589C8C1Ev),
  NSPAIR(_ZN7S3589C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S3589C2;
extern VTBL_ENTRY _ZTI7S3589C2[];
extern  VTBL_ENTRY _ZTV7S3589C2[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
static Base_Class bases_S3589C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3589C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3589C2,    ABISELECT(8,4), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3589C3,    ABISELECT(40,32), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3589C8[];
extern void _ZN7S3589C8D1Ev();
extern void _ZN7S3589C8D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev)();
extern void ABISELECT(_ZThn8_N7S3589C8D1Ev,_ZThn4_N7S3589C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev)();
extern void ABISELECT(_ZThn8_N7S3589C8D0Ev,_ZThn4_N7S3589C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev)();
extern void ABISELECT(_ZThn40_N7S3589C8D1Ev,_ZThn32_N7S3589C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev)();
extern void ABISELECT(_ZThn40_N7S3589C8D0Ev,_ZThn32_N7S3589C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3589C8[] = {
  ABISELECT(40,32),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&_ZN7S3589C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3589C8D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev),
};
extern VTBL_ENTRY _ZTV7S3589C8[];
static  VTT_ENTRY vtt_S3589C8[] = {
  {&(_ZTV7S3589C8[4]),  4,16},
  {&(_ZTV7S3589C8[9]),  9,16},
  {&(_ZTV7S3589C8[14]),  14,16},
};
extern VTBL_ENTRY _ZTI7S3589C8[];
extern  VTBL_ENTRY _ZTV7S3589C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3589C8[];
static VTBL_ENTRY alt_thunk_names41[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S3589C8D0Ev,_ZThn32_N7S3589C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S3589C8D0Ev,_ZThn4_N7S3589C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S3589C8D1Ev,_ZThn32_N7S3589C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S3589C8D1Ev,_ZThn4_N7S3589C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3589C8 = {  "S3589C8", // class name
  bases_S3589C8, 3,
  &(vtc_S3589C8[0]), // expected_vtbl_contents
  &(vtt_S3589C8[0]), // expected_vtt_contents
  ABISELECT(56,44), // object size
  NSPAIRA(_ZTI7S3589C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3589C8),16, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3589C8),3, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names41,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3589C9_nt  {
  int s3589c9f0;
  char s3589c9f1;
  int s3589c9f2;
  void  mf3589c9(); // _ZN10S3589C9_nt8mf3589c9Ev
  virtual  ~S3589C9_nt(); // _ZN10S3589C9_ntD1Ev
  S3589C9_nt(); // tgen
};
//SIG(-1 S3589C9_nt) C1{ vd m Fi Fc Fi}


void  S3589C9_nt ::mf3589c9(){}
 S3589C9_nt ::~S3589C9_nt(){ note_dtor("S3589C9_nt", this);}
S3589C9_nt ::S3589C9_nt(){ note_ctor("S3589C9_nt", this);} // tgen

//skip512 S3589C9_nt

#else // __cplusplus

extern void _ZN10S3589C9_ntC1Ev();
extern void _ZN10S3589C9_ntD1Ev();
Name_Map name_map_S3589C9_nt[] = {
  NSPAIR(_ZN10S3589C9_ntC1Ev),
  NSPAIR(_ZN10S3589C9_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S3589C9_nt[];
extern void _ZN10S3589C9_ntD1Ev();
extern void _ZN10S3589C9_ntD0Ev();
static  VTBL_ENTRY vtc_S3589C9_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3589C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S3589C9_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S3589C9_ntD0Ev,
};
extern VTBL_ENTRY _ZTI10S3589C9_nt[];
VTBL_ENTRY *P__ZTI10S3589C9_nt = _ZTI10S3589C9_nt; 
extern  VTBL_ENTRY _ZTV10S3589C9_nt[];
Class_Descriptor cd_S3589C9_nt = {  "S3589C9_nt", // class name
  0,0,//no base classes
  &(vtc_S3589C9_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI10S3589C9_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S3589C9_nt),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3589C7  : virtual S3589C8 , S3589C3 , S3589C9_nt , S3589C2 {
  int s3589c7f0;
  void *s3589c7f1;
  ~S3589C7(); // tgen
  S3589C7(); // tgen
};
//SIG(-1 S3589C7) C1{ VBC2{ VBC3{ BC4{ vd m Fc FU5{ m Fc[6]}} vd FL FU5} VBC4 vd} BC4 BC6{ vd m Fi Fc Fi} BC3 Fi Fp}


S3589C7 ::~S3589C7(){ note_dtor("S3589C7", this);} // tgen
S3589C7 ::S3589C7(){ note_ctor("S3589C7", this);} // tgen

static void Test_S3589C7()
{
  extern Class_Descriptor cd_S3589C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,28)];
    init_test(&cd_S3589C7, buf);
    S3589C7 *dp, &lv = *(dp=new (buf) S3589C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,108), "sizeof(S3589C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3589C7)");
    /*is_ambiguous_... S3589C7::S3589C2 */ AMB_check_base_class_offset(lv, (S3589C3*)(S3589C2*), ABISELECT(96,68), "S3589C7");
    check_base_class_offset(lv, (S3589C2*)(S3589C8*), ABISELECT(96,68), "S3589C7");
    /*is_ambiguous_... S3589C8::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*)(S3589C8*), ABISELECT(128,96), "S3589C7");
    check_base_class_offset(lv, (S3589C8*), ABISELECT(88,64), "S3589C7");
    /*is_ambiguous_... S3589C7::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*), 0, "S3589C7");
    check_base_class_offset(lv, (S3589C9_nt*), ABISELECT(16,12), "S3589C7");
    /*is_ambiguous_... S3589C7::S3589C2 */ AMB_check_base_class_offset(lv, (S3589C3*)(S3589C2*), ABISELECT(40,28), "S3589C7");
    /*is_ambiguous_... S3589C7::S3589C2 */ AMB_check_base_class_offset(lv, (S3589C2*), ABISELECT(40,28), "S3589C7");
    check_field_offset(lv, s3589c7f0, ABISELECT(72,56), "S3589C7.s3589c7f0");
    check_field_offset(lv, s3589c7f1, ABISELECT(80,60), "S3589C7.s3589c7f1");
    test_class_info(&lv, &cd_S3589C7);
    dp->~S3589C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3589C7(Test_S3589C7, "S3589C7", ABISELECT(144,108));

#else // __cplusplus

extern void _ZN7S3589C7C1Ev();
extern void _ZN7S3589C7D1Ev();
Name_Map name_map_S3589C7[] = {
  NSPAIR(_ZN7S3589C7C1Ev),
  NSPAIR(_ZN7S3589C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S3589C2;
extern VTBL_ENTRY _ZTI7S3589C2[];
extern  VTBL_ENTRY _ZTV7S3589C2[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S3589C8;
extern VTBL_ENTRY _ZTI7S3589C8[];
extern  VTBL_ENTRY _ZTV7S3589C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3589C8[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S3589C9_nt;
extern VTBL_ENTRY _ZTI10S3589C9_nt[];
extern  VTBL_ENTRY _ZTV10S3589C9_nt[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S3589C2;
extern VTBL_ENTRY _ZTI7S3589C2[];
extern  VTBL_ENTRY _ZTV7S3589C2[];
static Base_Class bases_S3589C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3589C3,    ABISELECT(96,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3589C2,    ABISELECT(96,68), //bcp->offset
    22, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3589C3,    ABISELECT(128,96), //bcp->offset
    27, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3589C8,    ABISELECT(88,64), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3589C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3589C9_nt,    ABISELECT(16,12), //bcp->offset
    7, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3589C3,    ABISELECT(40,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3589C2,    ABISELECT(40,28), //bcp->offset
    11, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3589C7[];
extern void _ZN7S3589C7D1Ev();
extern void _ZN7S3589C7D0Ev();
extern void ABISELECT(_ZThn16_N7S3589C7D1Ev,_ZThn12_N7S3589C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S3589C7D0Ev,_ZThn12_N7S3589C7D0Ev)();
extern void ABISELECT(_ZThn40_N7S3589C7D1Ev,_ZThn28_N7S3589C7D1Ev)();
extern void ABISELECT(_ZThn40_N7S3589C7D0Ev,_ZThn28_N7S3589C7D0Ev)();
extern void ABISELECT(_ZTv0_n40_N7S3589C7D1Ev,_ZTv0_n20_N7S3589C7D1Ev)();
extern void ABISELECT(_ZThn88_N7S3589C7D1Ev,_ZThn64_N7S3589C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3589C7D0Ev,_ZTv0_n20_N7S3589C7D0Ev)();
extern void ABISELECT(_ZThn88_N7S3589C7D0Ev,_ZThn64_N7S3589C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C7D1Ev,_ZTv0_n12_N7S3589C7D1Ev)();
extern void ABISELECT(_ZThn96_N7S3589C7D1Ev,_ZThn68_N7S3589C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C7D0Ev,_ZTv0_n12_N7S3589C7D0Ev)();
extern void ABISELECT(_ZThn96_N7S3589C7D0Ev,_ZThn68_N7S3589C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C7D1Ev,_ZTv0_n12_N7S3589C7D1Ev)();
extern void ABISELECT(_ZThn128_N7S3589C7D1Ev,_ZThn96_N7S3589C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C7D0Ev,_ZTv0_n12_N7S3589C7D0Ev)();
extern void ABISELECT(_ZThn128_N7S3589C7D0Ev,_ZThn96_N7S3589C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3589C7[] = {
  ABISELECT(128,96),
  ABISELECT(96,68),
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI7S3589C7[0]),
  (VTBL_ENTRY)&_ZN7S3589C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3589C7D0Ev,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S3589C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S3589C7D1Ev,_ZThn12_N7S3589C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S3589C7D0Ev,_ZThn12_N7S3589C7D0Ev),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI7S3589C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S3589C7D1Ev,_ZThn28_N7S3589C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S3589C7D0Ev,_ZThn28_N7S3589C7D0Ev),
  ABISELECT(-88,-64),
  ABISELECT(40,32),
  ABISELECT(8,4),
  ABISELECT(-88,-64),
  (VTBL_ENTRY)&(_ZTI7S3589C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3589C7D1Ev,_ZTv0_n20_N7S3589C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3589C7D0Ev,_ZTv0_n20_N7S3589C7D0Ev),
  ABISELECT(-96,-68),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI7S3589C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C7D1Ev,_ZTv0_n12_N7S3589C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C7D0Ev,_ZTv0_n12_N7S3589C7D0Ev),
  ABISELECT(-128,-96),
  ABISELECT(-128,-96),
  (VTBL_ENTRY)&(_ZTI7S3589C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C7D1Ev,_ZTv0_n12_N7S3589C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C7D0Ev,_ZTv0_n12_N7S3589C7D0Ev),
};
extern VTBL_ENTRY _ZTV7S3589C7[];
extern void _ZN7S3589C8D1Ev();
extern void _ZN7S3589C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3589C8__7S3589C7[] = {
  ABISELECT(40,32),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&_ZN7S3589C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3589C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev)();
extern void ABISELECT(_ZThn8_N7S3589C8D1Ev,_ZThn4_N7S3589C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev)();
extern void ABISELECT(_ZThn8_N7S3589C8D0Ev,_ZThn4_N7S3589C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C2__7S3589C8__7S3589C7[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev)();
extern void ABISELECT(_ZThn40_N7S3589C8D1Ev,_ZThn32_N7S3589C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev)();
extern void ABISELECT(_ZThn40_N7S3589C8D0Ev,_ZThn32_N7S3589C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__7S3589C8__7S3589C7[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev),
};
static  VTT_ENTRY vtt_S3589C7[] = {
  {&(_ZTV7S3589C7[5]),  5,32},
  {&(_ZTV7S3589C7[20]),  20,32},
  {&(_ZTV7S3589C7[25]),  25,32},
  {&(_ZTV7S3589C7[30]),  30,32},
  {&(_tg__ZTV7S3589C8__7S3589C7[4]),  4,6},
  {&(_tg__ZTV7S3589C2__7S3589C8__7S3589C7[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__7S3589C8__7S3589C7[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S3589C7[];
extern  VTBL_ENTRY _ZTV7S3589C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3589C7[];
static VTBL_ENTRY alt_thunk_names42[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S3589C8D0Ev,_ZThn32_N7S3589C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S3589C8D0Ev,_ZThn4_N7S3589C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S3589C8D1Ev,_ZThn32_N7S3589C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S3589C8D1Ev,_ZThn4_N7S3589C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3589C7D0Ev,_ZTv0_n12_N7S3589C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S3589C7D0Ev,_ZThn96_N7S3589C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S3589C7D0Ev,_ZThn68_N7S3589C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3589C7D1Ev,_ZTv0_n12_N7S3589C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S3589C7D1Ev,_ZThn96_N7S3589C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S3589C7D1Ev,_ZThn68_N7S3589C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3589C7D0Ev,_ZTv0_n20_N7S3589C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S3589C7D0Ev,_ZThn64_N7S3589C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3589C7D1Ev,_ZTv0_n20_N7S3589C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S3589C7D1Ev,_ZThn64_N7S3589C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3589C7 = {  "S3589C7", // class name
  bases_S3589C7, 8,
  &(vtc_S3589C7[0]), // expected_vtbl_contents
  &(vtt_S3589C7[0]), // expected_vtt_contents
  ABISELECT(144,108), // object size
  NSPAIRA(_ZTI7S3589C7),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S3589C7),32, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3589C7),7, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names42,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3589C6  : S3589C7 , S3589C8 , virtual S3589C9_nt {
  ~S3589C6(); // tgen
  S3589C6(); // tgen
};
//SIG(-1 S3589C6) C1{ BC2{ VBC3{ VBC4{ BC5{ vd m Fc FU6{ m Fc[6]}} vd FL FU6} VBC5 vd} BC5 BC7{ vd m Fi Fc Fi} BC4 Fi Fp} BC3 VBC7}


S3589C6 ::~S3589C6(){ note_dtor("S3589C6", this);} // tgen
S3589C6 ::S3589C6(){ note_ctor("S3589C6", this);} // tgen

static void Test_S3589C6()
{
  extern Class_Descriptor cd_S3589C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,33)];
    init_test(&cd_S3589C6, buf);
    S3589C6 *dp, &lv = *(dp=new (buf) S3589C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,128), "sizeof(S3589C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3589C6)");
    /*is_ambiguous_... S3589C6::S3589C2 */ AMB_check_base_class_offset(lv, (S3589C3*)(S3589C2*), ABISELECT(104,72), "S3589C6");
    /*is_ambiguous_... S3589C6::S3589C8 */ AMB_check_base_class_offset(lv, (S3589C2*)(S3589C8*), ABISELECT(104,72), "S3589C6");
    /*is_ambiguous_... S3589C6::S3589C8 */ AMB_check_base_class_offset(lv, (S3589C2*)(S3589C8*), ABISELECT(104,72), "S3589C6");
    /*is_ambiguous_... S3589C6::S3589C8 */ AMB_check_base_class_offset(lv, (S3589C3*)(S3589C8*), ABISELECT(136,100), "S3589C6");
    /*is_ambiguous_... S3589C6::S3589C8 */ AMB_check_base_class_offset(lv, (S3589C3*)(S3589C8*), ABISELECT(136,100), "S3589C6");
    check_base_class_offset(lv, (S3589C8*)(S3589C7*), ABISELECT(96,68), "S3589C6");
    /*is_ambiguous_... S3589C7::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*)(S3589C7*), 0, "S3589C6");
    check_base_class_offset(lv, (S3589C9_nt*)(S3589C7*), ABISELECT(16,12), "S3589C6");
    /*is_ambiguous_... S3589C7::S3589C2 */ AMB_check_base_class_offset(lv, (S3589C3*)(S3589C2*)(S3589C7*), ABISELECT(40,28), "S3589C6");
    /*is_ambiguous_... S3589C7::S3589C2 */ AMB_check_base_class_offset(lv, (S3589C2*)(S3589C7*), ABISELECT(40,28), "S3589C6");
    check_base_class_offset(lv, (S3589C7*), 0, "S3589C6");
    /*is_ambiguous_... S3589C6::S3589C8 */ AMB_check_base_class_offset(lv, (S3589C8*), ABISELECT(88,64), "S3589C6");
    /*is_ambiguous_... S3589C6::S3589C9_nt */ AMB_check_base_class_offset(lv, (S3589C9_nt*), ABISELECT(152,112), "S3589C6");
    test_class_info(&lv, &cd_S3589C6);
    dp->~S3589C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3589C6(Test_S3589C6, "S3589C6", ABISELECT(176,128));

#else // __cplusplus

extern void _ZN7S3589C6C1Ev();
extern void _ZN7S3589C6D1Ev();
Name_Map name_map_S3589C6[] = {
  NSPAIR(_ZN7S3589C6C1Ev),
  NSPAIR(_ZN7S3589C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S3589C2;
extern VTBL_ENTRY _ZTI7S3589C2[];
extern  VTBL_ENTRY _ZTV7S3589C2[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S3589C8;
extern VTBL_ENTRY _ZTI7S3589C8[];
extern  VTBL_ENTRY _ZTV7S3589C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3589C8[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S3589C9_nt;
extern VTBL_ENTRY _ZTI10S3589C9_nt[];
extern  VTBL_ENTRY _ZTV10S3589C9_nt[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S3589C2;
extern VTBL_ENTRY _ZTI7S3589C2[];
extern  VTBL_ENTRY _ZTV7S3589C2[];
extern Class_Descriptor cd_S3589C7;
extern VTBL_ENTRY _ZTI7S3589C7[];
extern  VTBL_ENTRY _ZTV7S3589C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3589C7[];
extern Class_Descriptor cd_S3589C8;
extern VTBL_ENTRY _ZTI7S3589C8[];
extern  VTBL_ENTRY _ZTV7S3589C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3589C8[];
extern Class_Descriptor cd_S3589C9_nt;
extern VTBL_ENTRY _ZTI10S3589C9_nt[];
extern  VTBL_ENTRY _ZTV10S3589C9_nt[];
static Base_Class bases_S3589C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3589C3,    ABISELECT(104,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3589C2,    ABISELECT(104,72), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3589C3,    ABISELECT(136,100), //bcp->offset
    34, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3589C8,    ABISELECT(96,68), //bcp->offset
    22, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S3589C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3589C9_nt,    ABISELECT(16,12), //bcp->offset
    8, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3589C3,    ABISELECT(40,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3589C2,    ABISELECT(40,28), //bcp->offset
    12, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3589C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3589C8,    ABISELECT(88,64), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3589C9_nt,    ABISELECT(152,112), //bcp->offset
    39, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3589C6[];
extern void _ZN7S3589C6D1Ev();
extern void _ZN7S3589C6D0Ev();
extern void ABISELECT(_ZThn16_N7S3589C6D1Ev,_ZThn12_N7S3589C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S3589C6D0Ev,_ZThn12_N7S3589C6D0Ev)();
extern void ABISELECT(_ZThn40_N7S3589C6D1Ev,_ZThn28_N7S3589C6D1Ev)();
extern void ABISELECT(_ZThn40_N7S3589C6D0Ev,_ZThn28_N7S3589C6D0Ev)();
extern void ABISELECT(_ZThn88_N7S3589C6D1Ev,_ZThn64_N7S3589C6D1Ev)();
extern void ABISELECT(_ZThn88_N7S3589C6D0Ev,_ZThn64_N7S3589C6D0Ev)();
extern void ABISELECT(_ZTv0_n40_N7S3589C6D1Ev,_ZTv0_n20_N7S3589C6D1Ev)();
extern void ABISELECT(_ZThn96_N7S3589C6D1Ev,_ZThn68_N7S3589C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3589C6D0Ev,_ZTv0_n20_N7S3589C6D0Ev)();
extern void ABISELECT(_ZThn96_N7S3589C6D0Ev,_ZThn68_N7S3589C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C6D1Ev,_ZTv0_n12_N7S3589C6D1Ev)();
extern void ABISELECT(_ZThn104_N7S3589C6D1Ev,_ZThn72_N7S3589C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C6D0Ev,_ZTv0_n12_N7S3589C6D0Ev)();
extern void ABISELECT(_ZThn104_N7S3589C6D0Ev,_ZThn72_N7S3589C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C6D1Ev,_ZTv0_n12_N7S3589C6D1Ev)();
extern void ABISELECT(_ZThn136_N7S3589C6D1Ev,_ZThn100_N7S3589C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C6D0Ev,_ZTv0_n12_N7S3589C6D0Ev)();
extern void ABISELECT(_ZThn136_N7S3589C6D0Ev,_ZThn100_N7S3589C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C6D1Ev,_ZTv0_n12_N7S3589C6D1Ev)();
extern void ABISELECT(_ZThn152_N7S3589C6D1Ev,_ZThn112_N7S3589C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C6D0Ev,_ZTv0_n12_N7S3589C6D0Ev)();
extern void ABISELECT(_ZThn152_N7S3589C6D0Ev,_ZThn112_N7S3589C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3589C6[] = {
  ABISELECT(152,112),
  ABISELECT(136,100),
  ABISELECT(104,72),
  ABISELECT(96,68),
  0,
  (VTBL_ENTRY)&(_ZTI7S3589C6[0]),
  (VTBL_ENTRY)&_ZN7S3589C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3589C6D0Ev,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S3589C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S3589C6D1Ev,_ZThn12_N7S3589C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S3589C6D0Ev,_ZThn12_N7S3589C6D0Ev),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI7S3589C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S3589C6D1Ev,_ZThn28_N7S3589C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S3589C6D0Ev,_ZThn28_N7S3589C6D0Ev),
  ABISELECT(48,36),
  ABISELECT(16,8),
  ABISELECT(-88,-64),
  (VTBL_ENTRY)&(_ZTI7S3589C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn88_N7S3589C6D1Ev,_ZThn64_N7S3589C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn88_N7S3589C6D0Ev,_ZThn64_N7S3589C6D0Ev),
  ABISELECT(-96,-68),
  ABISELECT(40,32),
  ABISELECT(8,4),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI7S3589C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3589C6D1Ev,_ZTv0_n20_N7S3589C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3589C6D0Ev,_ZTv0_n20_N7S3589C6D0Ev),
  ABISELECT(-104,-72),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI7S3589C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C6D1Ev,_ZTv0_n12_N7S3589C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C6D0Ev,_ZTv0_n12_N7S3589C6D0Ev),
  ABISELECT(-136,-100),
  ABISELECT(-136,-100),
  (VTBL_ENTRY)&(_ZTI7S3589C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C6D1Ev,_ZTv0_n12_N7S3589C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C6D0Ev,_ZTv0_n12_N7S3589C6D0Ev),
  ABISELECT(-152,-112),
  ABISELECT(-152,-112),
  (VTBL_ENTRY)&(_ZTI7S3589C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C6D1Ev,_ZTv0_n12_N7S3589C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C6D0Ev,_ZTv0_n12_N7S3589C6D0Ev),
};
extern VTBL_ENTRY _ZTV7S3589C6[];
extern void _ZN7S3589C7D1Ev();
extern void _ZN7S3589C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3589C7__7S3589C6[] = {
  ABISELECT(136,100),
  ABISELECT(104,72),
  ABISELECT(96,68),
  0,
  (VTBL_ENTRY)&(_ZTI7S3589C7[0]),
  (VTBL_ENTRY)&_ZN7S3589C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3589C7D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N7S3589C7D1Ev,_ZTv0_n20_N7S3589C7D1Ev)();
extern void ABISELECT(_ZThn96_N7S3589C7D1Ev,_ZThn68_N7S3589C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3589C7D0Ev,_ZTv0_n20_N7S3589C7D0Ev)();
extern void ABISELECT(_ZThn96_N7S3589C7D0Ev,_ZThn68_N7S3589C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C8__7S3589C7__7S3589C6[] = {
  ABISELECT(-96,-68),
  ABISELECT(40,32),
  ABISELECT(8,4),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI7S3589C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3589C7D1Ev,_ZTv0_n20_N7S3589C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3589C7D0Ev,_ZTv0_n20_N7S3589C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3589C7D1Ev,_ZTv0_n12_N7S3589C7D1Ev)();
extern void ABISELECT(_ZThn104_N7S3589C7D1Ev,_ZThn72_N7S3589C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C7D0Ev,_ZTv0_n12_N7S3589C7D0Ev)();
extern void ABISELECT(_ZThn104_N7S3589C7D0Ev,_ZThn72_N7S3589C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C2__7S3589C7__7S3589C6[] = {
  ABISELECT(-104,-72),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI7S3589C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C7D1Ev,_ZTv0_n12_N7S3589C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C7D0Ev,_ZTv0_n12_N7S3589C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3589C7D1Ev,_ZTv0_n12_N7S3589C7D1Ev)();
extern void ABISELECT(_ZThn136_N7S3589C7D1Ev,_ZThn100_N7S3589C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C7D0Ev,_ZTv0_n12_N7S3589C7D0Ev)();
extern void ABISELECT(_ZThn136_N7S3589C7D0Ev,_ZThn100_N7S3589C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__7S3589C7__7S3589C6[] = {
  ABISELECT(-136,-100),
  ABISELECT(-136,-100),
  (VTBL_ENTRY)&(_ZTI7S3589C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C7D1Ev,_ZTv0_n12_N7S3589C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C7D0Ev,_ZTv0_n12_N7S3589C7D0Ev),
};
extern void _ZN7S3589C8D1Ev();
extern void _ZN7S3589C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3589C8__A__7S3589C6[] = {
  ABISELECT(48,36),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&_ZN7S3589C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3589C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev)();
extern void ABISELECT(_ZThn16_N7S3589C8D1Ev,_ZThn8_N7S3589C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev)();
extern void ABISELECT(_ZThn16_N7S3589C8D0Ev,_ZThn8_N7S3589C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C2__7S3589C8__A__7S3589C6[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S3589C8D1Ev,_ZThn36_N7S3589C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev)();
extern void ABISELECT(_ZThn48_N7S3589C8D0Ev,_ZThn36_N7S3589C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__7S3589C8__A__7S3589C6[] = {
  ABISELECT(-48,-36),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev),
};
extern void _ZN7S3589C8D1Ev();
extern void _ZN7S3589C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3589C8__7S3589C6[] = {
  ABISELECT(40,32),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&_ZN7S3589C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3589C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev)();
extern void ABISELECT(_ZThn8_N7S3589C8D1Ev,_ZThn4_N7S3589C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev)();
extern void ABISELECT(_ZThn8_N7S3589C8D0Ev,_ZThn4_N7S3589C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C2__7S3589C8__7S3589C6[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev)();
extern void ABISELECT(_ZThn40_N7S3589C8D1Ev,_ZThn32_N7S3589C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev)();
extern void ABISELECT(_ZThn40_N7S3589C8D0Ev,_ZThn32_N7S3589C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__7S3589C8__7S3589C6[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev),
};
static  VTT_ENTRY vtt_S3589C6[] = {
  {&(_ZTV7S3589C6[6]),  6,44},
  {&(_tg__ZTV7S3589C7__7S3589C6[5]),  5,7},
  {&(_tg__ZTV7S3589C8__7S3589C7__7S3589C6[5]),  5,7},
  {&(_tg__ZTV7S3589C2__7S3589C7__7S3589C6[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__7S3589C7__7S3589C6[3]),  3,5},
  {&(_tg__ZTV7S3589C8__A__7S3589C6[4]),  4,6},
  {&(_tg__ZTV7S3589C2__7S3589C8__A__7S3589C6[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__7S3589C8__A__7S3589C6[3]),  3,5},
  {&(_ZTV7S3589C6[27]),  27,44},
  {&(_ZTV7S3589C6[32]),  32,44},
  {&(_ZTV7S3589C6[37]),  37,44},
  {&(_ZTV7S3589C6[20]),  20,44},
  {&(_ZTV7S3589C6[42]),  42,44},
  {&(_tg__ZTV7S3589C8__7S3589C6[4]),  4,6},
  {&(_tg__ZTV7S3589C2__7S3589C8__7S3589C6[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__7S3589C8__7S3589C6[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S3589C6[];
extern  VTBL_ENTRY _ZTV7S3589C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3589C6[];
static VTBL_ENTRY alt_thunk_names43[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S3589C8D0Ev,_ZThn32_N7S3589C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S3589C8D0Ev,_ZThn4_N7S3589C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S3589C8D0Ev,_ZThn36_N7S3589C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S3589C8D0Ev,_ZThn8_N7S3589C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S3589C8D1Ev,_ZThn32_N7S3589C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S3589C8D1Ev,_ZThn4_N7S3589C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S3589C8D1Ev,_ZThn36_N7S3589C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S3589C8D1Ev,_ZThn8_N7S3589C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3589C7D0Ev,_ZTv0_n12_N7S3589C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S3589C7D0Ev,_ZThn100_N7S3589C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S3589C7D0Ev,_ZThn72_N7S3589C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3589C7D1Ev,_ZTv0_n12_N7S3589C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S3589C7D1Ev,_ZThn100_N7S3589C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S3589C7D1Ev,_ZThn72_N7S3589C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3589C7D0Ev,_ZTv0_n20_N7S3589C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S3589C7D0Ev,_ZThn68_N7S3589C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3589C7D1Ev,_ZTv0_n20_N7S3589C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S3589C7D1Ev,_ZThn68_N7S3589C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3589C6D0Ev,_ZTv0_n12_N7S3589C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S3589C6D0Ev,_ZThn112_N7S3589C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S3589C6D0Ev,_ZThn100_N7S3589C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S3589C6D0Ev,_ZThn72_N7S3589C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3589C6D1Ev,_ZTv0_n12_N7S3589C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S3589C6D1Ev,_ZThn112_N7S3589C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S3589C6D1Ev,_ZThn100_N7S3589C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S3589C6D1Ev,_ZThn72_N7S3589C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3589C6D0Ev,_ZTv0_n20_N7S3589C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S3589C6D0Ev,_ZThn68_N7S3589C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3589C6D1Ev,_ZTv0_n20_N7S3589C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S3589C6D1Ev,_ZThn68_N7S3589C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3589C6 = {  "S3589C6", // class name
  bases_S3589C6, 11,
  &(vtc_S3589C6[0]), // expected_vtbl_contents
  &(vtt_S3589C6[0]), // expected_vtt_contents
  ABISELECT(176,128), // object size
  NSPAIRA(_ZTI7S3589C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S3589C6),44, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3589C6),16, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names43,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3589C11  : virtual S3589C3 {
  ~S3589C11(); // tgen
  S3589C11(); // tgen
};
//SIG(-1 S3589C11) C1{ VBC2{ vd m Fc FU3{ m Fc[6]}}}


S3589C11 ::~S3589C11(){ note_dtor("S3589C11", this);} // tgen
S3589C11 ::S3589C11(){ note_ctor("S3589C11", this);} // tgen

static void Test_S3589C11()
{
  extern Class_Descriptor cd_S3589C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S3589C11, buf);
    S3589C11 *dp, &lv = *(dp=new (buf) S3589C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S3589C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3589C11)");
    check_base_class_offset(lv, (S3589C3*), ABISELECT(8,4), "S3589C11");
    test_class_info(&lv, &cd_S3589C11);
    dp->~S3589C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3589C11(Test_S3589C11, "S3589C11", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S3589C11C1Ev();
extern void _ZN8S3589C11D1Ev();
Name_Map name_map_S3589C11[] = {
  NSPAIR(_ZN8S3589C11C1Ev),
  NSPAIR(_ZN8S3589C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
static Base_Class bases_S3589C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3589C3,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S3589C11[];
extern void _ZN8S3589C11D1Ev();
extern void _ZN8S3589C11D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S3589C11D1Ev,_ZTv0_n12_N8S3589C11D1Ev)();
extern void ABISELECT(_ZThn8_N8S3589C11D1Ev,_ZThn4_N8S3589C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C11D0Ev,_ZTv0_n12_N8S3589C11D0Ev)();
extern void ABISELECT(_ZThn8_N8S3589C11D0Ev,_ZThn4_N8S3589C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3589C11[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S3589C11[0]),
  (VTBL_ENTRY)&_ZN8S3589C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3589C11D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S3589C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C11D1Ev,_ZTv0_n12_N8S3589C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C11D0Ev,_ZTv0_n12_N8S3589C11D0Ev),
};
extern VTBL_ENTRY _ZTV8S3589C11[];
static  VTT_ENTRY vtt_S3589C11[] = {
  {&(_ZTV8S3589C11[3]),  3,10},
  {&(_ZTV8S3589C11[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S3589C11[];
extern  VTBL_ENTRY _ZTV8S3589C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3589C11[];
static VTBL_ENTRY alt_thunk_names44[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3589C11D0Ev,_ZTv0_n12_N8S3589C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S3589C11D0Ev,_ZThn4_N8S3589C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3589C11D1Ev,_ZTv0_n12_N8S3589C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S3589C11D1Ev,_ZThn4_N8S3589C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3589C11 = {  "S3589C11", // class name
  bases_S3589C11, 1,
  &(vtc_S3589C11[0]), // expected_vtbl_contents
  &(vtt_S3589C11[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S3589C11),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S3589C11),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3589C11),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names44,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3589C13_nt  {
  long double s3589c13f0;
  void  mf3589c13(); // _ZN11S3589C13_nt9mf3589c13Ev
};
//SIG(-1 S3589C13_nt) C1{ m FD}


void  S3589C13_nt ::mf3589c13(){}

//skip512 S3589C13_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI11S3589C13_nt[];
VTBL_ENTRY *P__ZTI11S3589C13_nt = _ZTI11S3589C13_nt; 
Class_Descriptor cd_S3589C13_nt = {  "S3589C13_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI11S3589C13_nt),ABISELECT(16,8), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3589C14  : virtual S3589C9_nt {
  void *s3589c14f0[2];
  ~S3589C14(); // tgen
  S3589C14(); // tgen
};
//SIG(-1 S3589C14) C1{ VBC2{ vd m Fi Fc Fi} Fp[2]}


S3589C14 ::~S3589C14(){ note_dtor("S3589C14", this);} // tgen
S3589C14 ::S3589C14(){ note_ctor("S3589C14", this);} // tgen

static void Test_S3589C14()
{
  extern Class_Descriptor cd_S3589C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S3589C14, buf);
    S3589C14 *dp, &lv = *(dp=new (buf) S3589C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S3589C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3589C14)");
    check_base_class_offset(lv, (S3589C9_nt*), ABISELECT(24,12), "S3589C14");
    check_field_offset(lv, s3589c14f0, ABISELECT(8,4), "S3589C14.s3589c14f0");
    test_class_info(&lv, &cd_S3589C14);
    dp->~S3589C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3589C14(Test_S3589C14, "S3589C14", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN8S3589C14C1Ev();
extern void _ZN8S3589C14D1Ev();
Name_Map name_map_S3589C14[] = {
  NSPAIR(_ZN8S3589C14C1Ev),
  NSPAIR(_ZN8S3589C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3589C9_nt;
extern VTBL_ENTRY _ZTI10S3589C9_nt[];
extern  VTBL_ENTRY _ZTV10S3589C9_nt[];
static Base_Class bases_S3589C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3589C9_nt,    ABISELECT(24,12), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S3589C14[];
extern void _ZN8S3589C14D1Ev();
extern void _ZN8S3589C14D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S3589C14D1Ev,_ZTv0_n12_N8S3589C14D1Ev)();
extern void ABISELECT(_ZThn24_N8S3589C14D1Ev,_ZThn12_N8S3589C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C14D0Ev,_ZTv0_n12_N8S3589C14D0Ev)();
extern void ABISELECT(_ZThn24_N8S3589C14D0Ev,_ZThn12_N8S3589C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3589C14[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S3589C14[0]),
  (VTBL_ENTRY)&_ZN8S3589C14D1Ev,
  (VTBL_ENTRY)&_ZN8S3589C14D0Ev,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S3589C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C14D1Ev,_ZTv0_n12_N8S3589C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C14D0Ev,_ZTv0_n12_N8S3589C14D0Ev),
};
extern VTBL_ENTRY _ZTV8S3589C14[];
static  VTT_ENTRY vtt_S3589C14[] = {
  {&(_ZTV8S3589C14[3]),  3,10},
  {&(_ZTV8S3589C14[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S3589C14[];
extern  VTBL_ENTRY _ZTV8S3589C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3589C14[];
static VTBL_ENTRY alt_thunk_names45[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3589C14D0Ev,_ZTv0_n12_N8S3589C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S3589C14D0Ev,_ZThn12_N8S3589C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3589C14D1Ev,_ZTv0_n12_N8S3589C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S3589C14D1Ev,_ZThn12_N8S3589C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3589C14 = {  "S3589C14", // class name
  bases_S3589C14, 1,
  &(vtc_S3589C14[0]), // expected_vtbl_contents
  &(vtt_S3589C14[0]), // expected_vtt_contents
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI8S3589C14),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S3589C14),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3589C14),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names45,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3589C12  : S3589C13_nt , virtual S3589C14 , virtual S3589C8 , S3589C3 , virtual S3589C11 {
  char s3589c12f0;
  int s3589c12f1;
  ~S3589C12(); // tgen
  S3589C12(); // tgen
};
//SIG(-1 S3589C12) C1{ BC2{ m FD} VBC3{ VBC4{ vd m Fi Fc Fi} Fp[2]} VBC5{ VBC6{ BC7{ vd m Fc FU8{ m Fc[6]}} vd FL FU8} VBC7 vd} BC7 VBC9{ VBC7} Fc Fi}


S3589C12 ::~S3589C12(){ note_dtor("S3589C12", this);} // tgen
S3589C12 ::S3589C12(){ note_ctor("S3589C12", this);} // tgen

static void Test_S3589C12()
{
  extern Class_Descriptor cd_S3589C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,28)];
    init_test(&cd_S3589C12, buf);
    S3589C12 *dp, &lv = *(dp=new (buf) S3589C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,108), "sizeof(S3589C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3589C12)");
    check_base_class_offset(lv, (S3589C13_nt*), ABISELECT(16,12), "S3589C12");
    check_base_class_offset(lv, (S3589C9_nt*)(S3589C14*), ABISELECT(64,44), "S3589C12");
    check_base_class_offset(lv, (S3589C14*), ABISELECT(40,32), "S3589C12");
    check_base_class_offset(lv, (S3589C3*)(S3589C2*), ABISELECT(96,64), "S3589C12");
    check_base_class_offset(lv, (S3589C2*)(S3589C8*), ABISELECT(96,64), "S3589C12");
    /*is_ambiguous_... S3589C8::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*)(S3589C8*), ABISELECT(128,92), "S3589C12");
    check_base_class_offset(lv, (S3589C3*)(S3589C11*), ABISELECT(128,92), "S3589C12");
    check_base_class_offset(lv, (S3589C8*), ABISELECT(88,60), "S3589C12");
    /*is_ambiguous_... S3589C12::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*), 0, "S3589C12");
    check_base_class_offset(lv, (S3589C11*), ABISELECT(144,104), "S3589C12");
    check_field_offset(lv, s3589c12f0, ABISELECT(32,24), "S3589C12.s3589c12f0");
    check_field_offset(lv, s3589c12f1, ABISELECT(36,28), "S3589C12.s3589c12f1");
    test_class_info(&lv, &cd_S3589C12);
    dp->~S3589C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3589C12(Test_S3589C12, "S3589C12", ABISELECT(160,108));

#else // __cplusplus

extern void _ZN8S3589C12C1Ev();
extern void _ZN8S3589C12D1Ev();
Name_Map name_map_S3589C12[] = {
  NSPAIR(_ZN8S3589C12C1Ev),
  NSPAIR(_ZN8S3589C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3589C13_nt;
extern VTBL_ENTRY _ZTI11S3589C13_nt[];
extern Class_Descriptor cd_S3589C9_nt;
extern VTBL_ENTRY _ZTI10S3589C9_nt[];
extern  VTBL_ENTRY _ZTV10S3589C9_nt[];
extern Class_Descriptor cd_S3589C14;
extern VTBL_ENTRY _ZTI8S3589C14[];
extern  VTBL_ENTRY _ZTV8S3589C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3589C14[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S3589C2;
extern VTBL_ENTRY _ZTI7S3589C2[];
extern  VTBL_ENTRY _ZTV7S3589C2[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S3589C8;
extern VTBL_ENTRY _ZTI7S3589C8[];
extern  VTBL_ENTRY _ZTV7S3589C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3589C8[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S3589C11;
extern VTBL_ENTRY _ZTI8S3589C11[];
extern  VTBL_ENTRY _ZTV8S3589C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3589C11[];
static Base_Class bases_S3589C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3589C13_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3589C9_nt,    ABISELECT(64,44), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3589C14,    ABISELECT(40,32), //bcp->offset
    10, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3589C3,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3589C2,    ABISELECT(96,64), //bcp->offset
    28, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3589C3,    ABISELECT(128,92), //bcp->offset
    33, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3589C8,    ABISELECT(88,60), //bcp->offset
    21, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3589C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3589C11,    ABISELECT(144,104), //bcp->offset
    38, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S3589C12[];
extern void _ZN8S3589C12D1Ev();
extern void _ZN8S3589C12D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S3589C12D1Ev,_ZTv0_n16_N8S3589C12D1Ev)();
extern void ABISELECT(_ZThn40_N8S3589C12D1Ev,_ZThn32_N8S3589C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3589C12D0Ev,_ZTv0_n16_N8S3589C12D0Ev)();
extern void ABISELECT(_ZThn40_N8S3589C12D0Ev,_ZThn32_N8S3589C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C12D1Ev,_ZTv0_n12_N8S3589C12D1Ev)();
extern void ABISELECT(_ZThn64_N8S3589C12D1Ev,_ZThn44_N8S3589C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C12D0Ev,_ZTv0_n12_N8S3589C12D0Ev)();
extern void ABISELECT(_ZThn64_N8S3589C12D0Ev,_ZThn44_N8S3589C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3589C12D1Ev,_ZTv0_n20_N8S3589C12D1Ev)();
extern void ABISELECT(_ZThn88_N8S3589C12D1Ev,_ZThn60_N8S3589C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3589C12D0Ev,_ZTv0_n20_N8S3589C12D0Ev)();
extern void ABISELECT(_ZThn88_N8S3589C12D0Ev,_ZThn60_N8S3589C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C12D1Ev,_ZTv0_n12_N8S3589C12D1Ev)();
extern void ABISELECT(_ZThn96_N8S3589C12D1Ev,_ZThn64_N8S3589C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C12D0Ev,_ZTv0_n12_N8S3589C12D0Ev)();
extern void ABISELECT(_ZThn96_N8S3589C12D0Ev,_ZThn64_N8S3589C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C12D1Ev,_ZTv0_n12_N8S3589C12D1Ev)();
extern void ABISELECT(_ZThn128_N8S3589C12D1Ev,_ZThn92_N8S3589C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C12D0Ev,_ZTv0_n12_N8S3589C12D0Ev)();
extern void ABISELECT(_ZThn128_N8S3589C12D0Ev,_ZThn92_N8S3589C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3589C12D1Ev,_ZTv0_n16_N8S3589C12D1Ev)();
extern void ABISELECT(_ZThn144_N8S3589C12D1Ev,_ZThn104_N8S3589C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3589C12D0Ev,_ZTv0_n16_N8S3589C12D0Ev)();
extern void ABISELECT(_ZThn144_N8S3589C12D0Ev,_ZThn104_N8S3589C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3589C12[] = {
  ABISELECT(144,104),
  ABISELECT(128,92),
  ABISELECT(96,64),
  ABISELECT(88,60),
  ABISELECT(64,44),
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&_ZN8S3589C12D1Ev,
  (VTBL_ENTRY)&_ZN8S3589C12D0Ev,
  ABISELECT(-40,-32),
  ABISELECT(24,12),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C12D1Ev,_ZTv0_n16_N8S3589C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C12D0Ev,_ZTv0_n16_N8S3589C12D0Ev),
  ABISELECT(-64,-44),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C12D1Ev,_ZTv0_n12_N8S3589C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C12D0Ev,_ZTv0_n12_N8S3589C12D0Ev),
  ABISELECT(-88,-60),
  ABISELECT(40,32),
  ABISELECT(8,4),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3589C12D1Ev,_ZTv0_n20_N8S3589C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3589C12D0Ev,_ZTv0_n20_N8S3589C12D0Ev),
  ABISELECT(-96,-64),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C12D1Ev,_ZTv0_n12_N8S3589C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C12D0Ev,_ZTv0_n12_N8S3589C12D0Ev),
  ABISELECT(-128,-92),
  ABISELECT(-128,-92),
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C12D1Ev,_ZTv0_n12_N8S3589C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C12D0Ev,_ZTv0_n12_N8S3589C12D0Ev),
  ABISELECT(-144,-104),
  ABISELECT(-16,-12),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C12D1Ev,_ZTv0_n16_N8S3589C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C12D0Ev,_ZTv0_n16_N8S3589C12D0Ev),
};
extern VTBL_ENTRY _ZTV8S3589C12[];
extern void _ZN8S3589C14D1Ev();
extern void _ZN8S3589C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3589C14__8S3589C12[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S3589C14[0]),
  (VTBL_ENTRY)&_ZN8S3589C14D1Ev,
  (VTBL_ENTRY)&_ZN8S3589C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S3589C14D1Ev,_ZTv0_n12_N8S3589C14D1Ev)();
extern void ABISELECT(_ZThn24_N8S3589C14D1Ev,_ZThn12_N8S3589C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C14D0Ev,_ZTv0_n12_N8S3589C14D0Ev)();
extern void ABISELECT(_ZThn24_N8S3589C14D0Ev,_ZThn12_N8S3589C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt__8S3589C14__8S3589C12[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S3589C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C14D1Ev,_ZTv0_n12_N8S3589C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C14D0Ev,_ZTv0_n12_N8S3589C14D0Ev),
};
extern void _ZN7S3589C8D1Ev();
extern void _ZN7S3589C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3589C8__8S3589C12[] = {
  ABISELECT(40,32),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&_ZN7S3589C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3589C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev)();
extern void ABISELECT(_ZThn8_N7S3589C8D1Ev,_ZThn4_N7S3589C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev)();
extern void ABISELECT(_ZThn8_N7S3589C8D0Ev,_ZThn4_N7S3589C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C2__7S3589C8__8S3589C12[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev)();
extern void ABISELECT(_ZThn40_N7S3589C8D1Ev,_ZThn32_N7S3589C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev)();
extern void ABISELECT(_ZThn40_N7S3589C8D0Ev,_ZThn32_N7S3589C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__7S3589C8__8S3589C12[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev),
};
extern void _ZN8S3589C11D1Ev();
extern void _ZN8S3589C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3589C11__8S3589C12[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S3589C11[0]),
  (VTBL_ENTRY)&_ZN8S3589C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3589C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S3589C11D1Ev,_ZTv0_n12_N8S3589C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3589C11D0Ev,_ZTv0_n12_N8S3589C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__8S3589C11__8S3589C12[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S3589C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C11D1Ev,_ZTv0_n12_N8S3589C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C11D0Ev,_ZTv0_n12_N8S3589C11D0Ev),
};
static  VTT_ENTRY vtt_S3589C12[] = {
  {&(_ZTV8S3589C12[8]),  8,44},
  {&(_ZTV8S3589C12[14]),  14,44},
  {&(_ZTV8S3589C12[19]),  19,44},
  {&(_ZTV8S3589C12[26]),  26,44},
  {&(_ZTV8S3589C12[31]),  31,44},
  {&(_ZTV8S3589C12[36]),  36,44},
  {&(_ZTV8S3589C12[42]),  42,44},
  {&(_tg__ZTV8S3589C14__8S3589C12[3]),  3,5},
  {&(_tg__ZTV10S3589C9_nt__8S3589C14__8S3589C12[3]),  3,5},
  {&(_tg__ZTV7S3589C8__8S3589C12[4]),  4,6},
  {&(_tg__ZTV7S3589C2__7S3589C8__8S3589C12[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__7S3589C8__8S3589C12[3]),  3,5},
  {&(_tg__ZTV8S3589C11__8S3589C12[3]),  3,5},
  {&(_tg__ZTV7S3589C3__8S3589C11__8S3589C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S3589C12[];
extern  VTBL_ENTRY _ZTV8S3589C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3589C12[];
static VTBL_ENTRY alt_thunk_names46[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S3589C8D0Ev,_ZThn32_N7S3589C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S3589C8D0Ev,_ZThn4_N7S3589C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S3589C8D1Ev,_ZThn32_N7S3589C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S3589C8D1Ev,_ZThn4_N7S3589C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3589C14D0Ev,_ZTv0_n12_N8S3589C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S3589C14D0Ev,_ZThn12_N8S3589C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3589C14D1Ev,_ZTv0_n12_N8S3589C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S3589C14D1Ev,_ZThn12_N8S3589C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3589C12D0Ev,_ZTv0_n20_N8S3589C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S3589C12D0Ev,_ZThn60_N8S3589C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3589C12D1Ev,_ZTv0_n20_N8S3589C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S3589C12D1Ev,_ZThn60_N8S3589C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3589C12D0Ev,_ZTv0_n12_N8S3589C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3589C12D0Ev,_ZThn92_N8S3589C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S3589C12D0Ev,_ZThn64_N8S3589C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S3589C12D0Ev,_ZThn44_N8S3589C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3589C12D1Ev,_ZTv0_n12_N8S3589C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3589C12D1Ev,_ZThn92_N8S3589C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S3589C12D1Ev,_ZThn64_N8S3589C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S3589C12D1Ev,_ZThn44_N8S3589C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S3589C12D0Ev,_ZTv0_n16_N8S3589C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S3589C12D0Ev,_ZThn104_N8S3589C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S3589C12D0Ev,_ZThn32_N8S3589C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S3589C12D1Ev,_ZTv0_n16_N8S3589C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S3589C12D1Ev,_ZThn104_N8S3589C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S3589C12D1Ev,_ZThn32_N8S3589C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3589C12 = {  "S3589C12", // class name
  bases_S3589C12, 9,
  &(vtc_S3589C12[0]), // expected_vtbl_contents
  &(vtt_S3589C12[0]), // expected_vtt_contents
  ABISELECT(160,108), // object size
  NSPAIRA(_ZTI8S3589C12),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S3589C12),44, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3589C12),14, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names46,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3589C10  : virtual S3589C8 , S3589C11 , virtual S3589C12 {
  virtual  ~S3589C10(); // _ZN8S3589C10D2Ev
  S3589C10(); // tgen
};
//SIG(-1 S3589C10) C1{ VBC2{ VBC3{ BC4{ vd m Fc FU5{ m Fc[6]}} vd FL FU5} VBC4 vd} BC6{ VBC4} VBC7{ BC8{ m FD} VBC9{ VBC10{ vd m Fi Fc Fi} Fp[2]} VBC2 BC4 VBC6 Fc Fi} vd}


 S3589C10 ::~S3589C10(){ note_dtor("S3589C10", this);}
S3589C10 ::S3589C10(){ note_ctor("S3589C10", this);} // tgen

static void Test_S3589C10()
{
  extern Class_Descriptor cd_S3589C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,29)];
    init_test(&cd_S3589C10, buf);
    S3589C10 *dp, &lv = *(dp=new (buf) S3589C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,112), "sizeof(S3589C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3589C10)");
    check_base_class_offset(lv, (S3589C3*)(S3589C2*), ABISELECT(16,8), "S3589C10");
    check_base_class_offset(lv, (S3589C2*)(S3589C8*), ABISELECT(16,8), "S3589C10");
    /*is_ambiguous_... S3589C8::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*)(S3589C8*), ABISELECT(48,36), "S3589C10");
    /*is_ambiguous_... S3589C10::S3589C11 */ AMB_check_base_class_offset(lv, (S3589C3*)(S3589C11*), ABISELECT(48,36), "S3589C10");
    /*is_ambiguous_... S3589C10::S3589C11 */ AMB_check_base_class_offset(lv, (S3589C3*)(S3589C11*), ABISELECT(48,36), "S3589C10");
    check_base_class_offset(lv, (S3589C8*), ABISELECT(8,4), "S3589C10");
    check_base_class_offset(lv, (S3589C8*)(S3589C12*), ABISELECT(8,4), "S3589C10");
    /*is_ambiguous_... S3589C10::S3589C11 */ AMB_check_base_class_offset(lv, (S3589C11*), 0, "S3589C10");
    check_base_class_offset(lv, (S3589C13_nt*)(S3589C12*), ABISELECT(80,60), "S3589C10");
    check_base_class_offset(lv, (S3589C9_nt*)(S3589C14*), ABISELECT(128,92), "S3589C10");
    check_base_class_offset(lv, (S3589C14*)(S3589C12*), ABISELECT(104,80), "S3589C10");
    /*is_ambiguous_... S3589C12::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*)(S3589C12*), ABISELECT(64,48), "S3589C10");
    check_base_class_offset(lv, (S3589C11*)(S3589C12*), ABISELECT(152,108), "S3589C10");
    check_base_class_offset(lv, (S3589C12*), ABISELECT(64,48), "S3589C10");
    test_class_info(&lv, &cd_S3589C10);
    dp->~S3589C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3589C10(Test_S3589C10, "S3589C10", ABISELECT(160,112));

#else // __cplusplus

extern void _ZN8S3589C10C1Ev();
extern void _ZN8S3589C10D2Ev();
Name_Map name_map_S3589C10[] = {
  NSPAIR(_ZN8S3589C10C1Ev),
  NSPAIR(_ZN8S3589C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S3589C2;
extern VTBL_ENTRY _ZTI7S3589C2[];
extern  VTBL_ENTRY _ZTV7S3589C2[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S3589C8;
extern VTBL_ENTRY _ZTI7S3589C8[];
extern  VTBL_ENTRY _ZTV7S3589C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3589C8[];
extern Class_Descriptor cd_S3589C11;
extern VTBL_ENTRY _ZTI8S3589C11[];
extern  VTBL_ENTRY _ZTV8S3589C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3589C11[];
extern Class_Descriptor cd_S3589C13_nt;
extern VTBL_ENTRY _ZTI11S3589C13_nt[];
extern Class_Descriptor cd_S3589C9_nt;
extern VTBL_ENTRY _ZTI10S3589C9_nt[];
extern  VTBL_ENTRY _ZTV10S3589C9_nt[];
extern Class_Descriptor cd_S3589C14;
extern VTBL_ENTRY _ZTI8S3589C14[];
extern  VTBL_ENTRY _ZTV8S3589C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3589C14[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S3589C11;
extern VTBL_ENTRY _ZTI8S3589C11[];
extern  VTBL_ENTRY _ZTV8S3589C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3589C11[];
extern Class_Descriptor cd_S3589C12;
extern VTBL_ENTRY _ZTI8S3589C12[];
extern  VTBL_ENTRY _ZTV8S3589C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3589C12[];
static Base_Class bases_S3589C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3589C3,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3589C2,    ABISELECT(16,8), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3589C3,    ABISELECT(48,36), //bcp->offset
    23, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3589C8,    ABISELECT(8,4), //bcp->offset
    11, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3589C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3589C13_nt,    ABISELECT(80,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S3589C9_nt,    ABISELECT(128,92), //bcp->offset
    45, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S3589C14,    ABISELECT(104,80), //bcp->offset
    39, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S3589C3,    ABISELECT(64,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S3589C11,    ABISELECT(152,108), //bcp->offset
    50, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S3589C12,    ABISELECT(64,48), //bcp->offset
    28, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S3589C10[];
extern void _ZN8S3589C10D1Ev();
extern void _ZN8S3589C10D0Ev();
extern void ABISELECT(_ZTv0_n40_N8S3589C10D1Ev,_ZTv0_n20_N8S3589C10D1Ev)();
extern void ABISELECT(_ZThn8_N8S3589C10D1Ev,_ZThn4_N8S3589C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3589C10D0Ev,_ZTv0_n20_N8S3589C10D0Ev)();
extern void ABISELECT(_ZThn8_N8S3589C10D0Ev,_ZThn4_N8S3589C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C10D1Ev,_ZTv0_n12_N8S3589C10D1Ev)();
extern void ABISELECT(_ZThn16_N8S3589C10D1Ev,_ZThn8_N8S3589C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C10D0Ev,_ZTv0_n12_N8S3589C10D0Ev)();
extern void ABISELECT(_ZThn16_N8S3589C10D0Ev,_ZThn8_N8S3589C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C10D1Ev,_ZTv0_n12_N8S3589C10D1Ev)();
extern void ABISELECT(_ZThn48_N8S3589C10D1Ev,_ZThn36_N8S3589C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C10D0Ev,_ZTv0_n12_N8S3589C10D0Ev)();
extern void ABISELECT(_ZThn48_N8S3589C10D0Ev,_ZThn36_N8S3589C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S3589C10D1Ev,_ZTv0_n36_N8S3589C10D1Ev)();
extern void ABISELECT(_ZThn64_N8S3589C10D1Ev,_ZThn48_N8S3589C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S3589C10D0Ev,_ZTv0_n36_N8S3589C10D0Ev)();
extern void ABISELECT(_ZThn64_N8S3589C10D0Ev,_ZThn48_N8S3589C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3589C10D1Ev,_ZTv0_n16_N8S3589C10D1Ev)();
extern void ABISELECT(_ZThn104_N8S3589C10D1Ev,_ZThn80_N8S3589C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3589C10D0Ev,_ZTv0_n16_N8S3589C10D0Ev)();
extern void ABISELECT(_ZThn104_N8S3589C10D0Ev,_ZThn80_N8S3589C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C10D1Ev,_ZTv0_n12_N8S3589C10D1Ev)();
extern void ABISELECT(_ZThn128_N8S3589C10D1Ev,_ZThn92_N8S3589C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C10D0Ev,_ZTv0_n12_N8S3589C10D0Ev)();
extern void ABISELECT(_ZThn128_N8S3589C10D0Ev,_ZThn92_N8S3589C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3589C10D1Ev,_ZTv0_n16_N8S3589C10D1Ev)();
extern void ABISELECT(_ZThn152_N8S3589C10D1Ev,_ZThn108_N8S3589C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3589C10D0Ev,_ZTv0_n16_N8S3589C10D0Ev)();
extern void ABISELECT(_ZThn152_N8S3589C10D0Ev,_ZThn108_N8S3589C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3589C10[] = {
  ABISELECT(152,108),
  ABISELECT(128,92),
  ABISELECT(104,80),
  ABISELECT(64,48),
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(48,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S3589C10[0]),
  (VTBL_ENTRY)&_ZN8S3589C10D1Ev,
  (VTBL_ENTRY)&_ZN8S3589C10D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(40,32),
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S3589C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3589C10D1Ev,_ZTv0_n20_N8S3589C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3589C10D0Ev,_ZTv0_n20_N8S3589C10D0Ev),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3589C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C10D1Ev,_ZTv0_n12_N8S3589C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C10D0Ev,_ZTv0_n12_N8S3589C10D0Ev),
  ABISELECT(-48,-36),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S3589C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C10D1Ev,_ZTv0_n12_N8S3589C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C10D0Ev,_ZTv0_n12_N8S3589C10D0Ev),
  ABISELECT(-64,-48),
  ABISELECT(88,60),
  ABISELECT(-16,-12),
  ABISELECT(-48,-40),
  ABISELECT(-56,-44),
  ABISELECT(64,44),
  ABISELECT(40,32),
  ABISELECT(-64,-48),
  (VTBL_ENTRY)&(_ZTI8S3589C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S3589C10D1Ev,_ZTv0_n36_N8S3589C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S3589C10D0Ev,_ZTv0_n36_N8S3589C10D0Ev),
  ABISELECT(-104,-80),
  ABISELECT(24,12),
  ABISELECT(-104,-80),
  (VTBL_ENTRY)&(_ZTI8S3589C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C10D1Ev,_ZTv0_n16_N8S3589C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C10D0Ev,_ZTv0_n16_N8S3589C10D0Ev),
  ABISELECT(-128,-92),
  ABISELECT(-128,-92),
  (VTBL_ENTRY)&(_ZTI8S3589C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C10D1Ev,_ZTv0_n12_N8S3589C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C10D0Ev,_ZTv0_n12_N8S3589C10D0Ev),
  ABISELECT(-152,-108),
  ABISELECT(-104,-72),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI8S3589C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C10D1Ev,_ZTv0_n16_N8S3589C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C10D0Ev,_ZTv0_n16_N8S3589C10D0Ev),
};
extern VTBL_ENTRY _ZTV8S3589C10[];
extern void _ZN8S3589C11D1Ev();
extern void _ZN8S3589C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3589C11__A__8S3589C10[] = {
  ABISELECT(48,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S3589C11[0]),
  (VTBL_ENTRY)&_ZN8S3589C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3589C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S3589C11D1Ev,_ZTv0_n12_N8S3589C11D1Ev)();
extern void ABISELECT(_ZThn48_N8S3589C11D1Ev,_ZThn36_N8S3589C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C11D0Ev,_ZTv0_n12_N8S3589C11D0Ev)();
extern void ABISELECT(_ZThn48_N8S3589C11D0Ev,_ZThn36_N8S3589C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__8S3589C11__A__8S3589C10[] = {
  ABISELECT(-48,-36),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S3589C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C11D1Ev,_ZTv0_n12_N8S3589C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C11D0Ev,_ZTv0_n12_N8S3589C11D0Ev),
};
extern void _ZN7S3589C8D1Ev();
extern void _ZN7S3589C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3589C8__8S3589C10[] = {
  ABISELECT(40,32),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&_ZN7S3589C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3589C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev)();
extern void ABISELECT(_ZThn8_N7S3589C8D1Ev,_ZThn4_N7S3589C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev)();
extern void ABISELECT(_ZThn8_N7S3589C8D0Ev,_ZThn4_N7S3589C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C2__7S3589C8__8S3589C10[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev)();
extern void ABISELECT(_ZThn40_N7S3589C8D1Ev,_ZThn32_N7S3589C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev)();
extern void ABISELECT(_ZThn40_N7S3589C8D0Ev,_ZThn32_N7S3589C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__7S3589C8__8S3589C10[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev),
};
extern void _ZN8S3589C12D1Ev();
extern void _ZN8S3589C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3589C12__8S3589C10[] = {
  ABISELECT(88,60),
  ABISELECT(-16,-12),
  ABISELECT(-48,-40),
  ABISELECT(-56,-44),
  ABISELECT(64,44),
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&_ZN8S3589C12D1Ev,
  (VTBL_ENTRY)&_ZN8S3589C12D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S3589C12D1Ev,_ZTv0_n16_N8S3589C12D1Ev)();
extern void ABISELECT(_ZThn40_N8S3589C12D1Ev,_ZThn32_N8S3589C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3589C12D0Ev,_ZTv0_n16_N8S3589C12D0Ev)();
extern void ABISELECT(_ZThn40_N8S3589C12D0Ev,_ZThn32_N8S3589C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3589C14__8S3589C12__8S3589C10[] = {
  ABISELECT(-40,-32),
  ABISELECT(24,12),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C12D1Ev,_ZTv0_n16_N8S3589C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C12D0Ev,_ZTv0_n16_N8S3589C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3589C12D1Ev,_ZTv0_n12_N8S3589C12D1Ev)();
extern void ABISELECT(_ZThn64_N8S3589C12D1Ev,_ZThn44_N8S3589C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C12D0Ev,_ZTv0_n12_N8S3589C12D0Ev)();
extern void ABISELECT(_ZThn64_N8S3589C12D0Ev,_ZThn44_N8S3589C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt__8S3589C12__8S3589C10[] = {
  ABISELECT(-64,-44),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C12D1Ev,_ZTv0_n12_N8S3589C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C12D0Ev,_ZTv0_n12_N8S3589C12D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3589C12D1Ev,_ZTv0_n20_N8S3589C12D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3589C12D0Ev,_ZTv0_n20_N8S3589C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C8__8S3589C12__8S3589C10[] = {
  ABISELECT(56,44),
  ABISELECT(40,32),
  ABISELECT(8,4),
  ABISELECT(56,44),
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3589C12D1Ev,_ZTv0_n20_N8S3589C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3589C12D0Ev,_ZTv0_n20_N8S3589C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3589C12D1Ev,_ZTv0_n12_N8S3589C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3589C12D0Ev,_ZTv0_n12_N8S3589C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C2__8S3589C12__8S3589C10[] = {
  ABISELECT(48,40),
  ABISELECT(48,40),
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C12D1Ev,_ZTv0_n12_N8S3589C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C12D0Ev,_ZTv0_n12_N8S3589C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3589C12D1Ev,_ZTv0_n12_N8S3589C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3589C12D0Ev,_ZTv0_n12_N8S3589C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__8S3589C12__8S3589C10[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C12D1Ev,_ZTv0_n12_N8S3589C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C12D0Ev,_ZTv0_n12_N8S3589C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S3589C12D1Ev,_ZTv0_n16_N8S3589C12D1Ev)();
extern void ABISELECT(_ZThn88_N8S3589C12D1Ev,_ZThn60_N8S3589C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3589C12D0Ev,_ZTv0_n16_N8S3589C12D0Ev)();
extern void ABISELECT(_ZThn88_N8S3589C12D0Ev,_ZThn60_N8S3589C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3589C11__8S3589C12__8S3589C10[] = {
  ABISELECT(-88,-60),
  ABISELECT(-104,-72),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C12D1Ev,_ZTv0_n16_N8S3589C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C12D0Ev,_ZTv0_n16_N8S3589C12D0Ev),
};
extern void _ZN8S3589C14D1Ev();
extern void _ZN8S3589C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3589C14__8S3589C10[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S3589C14[0]),
  (VTBL_ENTRY)&_ZN8S3589C14D1Ev,
  (VTBL_ENTRY)&_ZN8S3589C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S3589C14D1Ev,_ZTv0_n12_N8S3589C14D1Ev)();
extern void ABISELECT(_ZThn24_N8S3589C14D1Ev,_ZThn12_N8S3589C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C14D0Ev,_ZTv0_n12_N8S3589C14D0Ev)();
extern void ABISELECT(_ZThn24_N8S3589C14D0Ev,_ZThn12_N8S3589C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt__8S3589C14__8S3589C10[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S3589C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C14D1Ev,_ZTv0_n12_N8S3589C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C14D0Ev,_ZTv0_n12_N8S3589C14D0Ev),
};
extern void _ZN8S3589C11D1Ev();
extern void _ZN8S3589C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3589C11__A1__8S3589C10[] = {
  ABISELECT(-104,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S3589C11[0]),
  (VTBL_ENTRY)&_ZN8S3589C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3589C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S3589C11D1Ev,_ZTv0_n12_N8S3589C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3589C11D0Ev,_ZTv0_n12_N8S3589C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__8S3589C11__A1__8S3589C10[] = {
  ABISELECT(104,72),
  ABISELECT(104,72),
  (VTBL_ENTRY)&(_ZTI8S3589C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C11D1Ev,_ZTv0_n12_N8S3589C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C11D0Ev,_ZTv0_n12_N8S3589C11D0Ev),
};
static  VTT_ENTRY vtt_S3589C10[] = {
  {&(_ZTV8S3589C10[9]),  9,56},
  {&(_tg__ZTV8S3589C11__A__8S3589C10[3]),  3,5},
  {&(_tg__ZTV7S3589C3__8S3589C11__A__8S3589C10[3]),  3,5},
  {&(_ZTV8S3589C10[16]),  16,56},
  {&(_ZTV8S3589C10[21]),  21,56},
  {&(_ZTV8S3589C10[26]),  26,56},
  {&(_ZTV8S3589C10[37]),  37,56},
  {&(_ZTV8S3589C10[43]),  43,56},
  {&(_ZTV8S3589C10[48]),  48,56},
  {&(_ZTV8S3589C10[54]),  54,56},
  {&(_tg__ZTV7S3589C8__8S3589C10[4]),  4,6},
  {&(_tg__ZTV7S3589C2__7S3589C8__8S3589C10[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__7S3589C8__8S3589C10[3]),  3,5},
  {&(_tg__ZTV8S3589C12__8S3589C10[8]),  8,10},
  {&(_tg__ZTV8S3589C14__8S3589C12__8S3589C10[4]),  4,6},
  {&(_tg__ZTV10S3589C9_nt__8S3589C12__8S3589C10[3]),  3,5},
  {&(_tg__ZTV7S3589C8__8S3589C12__8S3589C10[5]),  5,7},
  {&(_tg__ZTV7S3589C2__8S3589C12__8S3589C10[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__8S3589C12__8S3589C10[3]),  3,5},
  {&(_tg__ZTV8S3589C11__8S3589C12__8S3589C10[4]),  4,6},
  {&(_tg__ZTV8S3589C14__8S3589C10[3]),  3,5},
  {&(_tg__ZTV10S3589C9_nt__8S3589C14__8S3589C10[3]),  3,5},
  {&(_tg__ZTV8S3589C11__A1__8S3589C10[3]),  3,5},
  {&(_tg__ZTV7S3589C3__8S3589C11__A1__8S3589C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S3589C10[];
extern  VTBL_ENTRY _ZTV8S3589C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3589C10[];
static VTBL_ENTRY alt_thunk_names47[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3589C14D0Ev,_ZTv0_n12_N8S3589C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S3589C14D0Ev,_ZThn12_N8S3589C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3589C14D1Ev,_ZTv0_n12_N8S3589C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S3589C14D1Ev,_ZThn12_N8S3589C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3589C12D0Ev,_ZTv0_n12_N8S3589C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S3589C12D0Ev,_ZThn44_N8S3589C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3589C12D1Ev,_ZTv0_n12_N8S3589C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S3589C12D1Ev,_ZThn44_N8S3589C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S3589C12D0Ev,_ZTv0_n16_N8S3589C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S3589C12D0Ev,_ZThn60_N8S3589C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S3589C12D0Ev,_ZThn32_N8S3589C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S3589C12D1Ev,_ZTv0_n16_N8S3589C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S3589C12D1Ev,_ZThn60_N8S3589C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S3589C12D1Ev,_ZThn32_N8S3589C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S3589C8D0Ev,_ZThn32_N7S3589C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S3589C8D0Ev,_ZThn4_N7S3589C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S3589C8D1Ev,_ZThn32_N7S3589C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S3589C8D1Ev,_ZThn4_N7S3589C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3589C11D0Ev,_ZTv0_n12_N8S3589C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S3589C11D0Ev,_ZThn36_N8S3589C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3589C11D1Ev,_ZTv0_n12_N8S3589C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S3589C11D1Ev,_ZThn36_N8S3589C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S3589C10D0Ev,_ZTv0_n16_N8S3589C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S3589C10D0Ev,_ZThn108_N8S3589C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S3589C10D0Ev,_ZThn80_N8S3589C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S3589C10D1Ev,_ZTv0_n16_N8S3589C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S3589C10D1Ev,_ZThn108_N8S3589C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S3589C10D1Ev,_ZThn80_N8S3589C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S3589C10D0Ev,_ZTv0_n36_N8S3589C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S3589C10D0Ev,_ZThn48_N8S3589C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S3589C10D1Ev,_ZTv0_n36_N8S3589C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S3589C10D1Ev,_ZThn48_N8S3589C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3589C10D0Ev,_ZTv0_n12_N8S3589C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3589C10D0Ev,_ZThn92_N8S3589C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S3589C10D0Ev,_ZThn36_N8S3589C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S3589C10D0Ev,_ZThn8_N8S3589C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3589C10D1Ev,_ZTv0_n12_N8S3589C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3589C10D1Ev,_ZThn92_N8S3589C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S3589C10D1Ev,_ZThn36_N8S3589C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S3589C10D1Ev,_ZThn8_N8S3589C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3589C10D0Ev,_ZTv0_n20_N8S3589C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S3589C10D0Ev,_ZThn4_N8S3589C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3589C10D1Ev,_ZTv0_n20_N8S3589C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S3589C10D1Ev,_ZThn4_N8S3589C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3589C10 = {  "S3589C10", // class name
  bases_S3589C10, 11,
  &(vtc_S3589C10[0]), // expected_vtbl_contents
  &(vtt_S3589C10[0]), // expected_vtt_contents
  ABISELECT(160,112), // object size
  NSPAIRA(_ZTI8S3589C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S3589C10),56, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3589C10),24, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names47,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3589C16  : virtual S3589C3 {
  int s3589c16f0;
  ::S19905C17_nt s3589c16f1;
  ~S3589C16(); // tgen
  S3589C16(); // tgen
};
//SIG(-1 S3589C16) C1{ VBC2{ vd m Fc FU3{ m Fc[6]}} Fi FC4{}}


S3589C16 ::~S3589C16(){ note_dtor("S3589C16", this);} // tgen
S3589C16 ::S3589C16(){ note_ctor("S3589C16", this);} // tgen

static void Test_S3589C16()
{
  extern Class_Descriptor cd_S3589C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S3589C16, buf);
    S3589C16 *dp, &lv = *(dp=new (buf) S3589C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S3589C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3589C16)");
    check_base_class_offset(lv, (S3589C3*), ABISELECT(16,12), "S3589C16");
    check_field_offset(lv, s3589c16f0, ABISELECT(8,4), "S3589C16.s3589c16f0");
    check_field_offset(lv, s3589c16f1, ABISELECT(12,8), "S3589C16.s3589c16f1");
    test_class_info(&lv, &cd_S3589C16);
    dp->~S3589C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3589C16(Test_S3589C16, "S3589C16", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN8S3589C16C1Ev();
extern void _ZN8S3589C16D1Ev();
Name_Map name_map_S3589C16[] = {
  NSPAIR(_ZN8S3589C16C1Ev),
  NSPAIR(_ZN8S3589C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
static Base_Class bases_S3589C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3589C3,    ABISELECT(16,12), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S3589C16[];
extern void _ZN8S3589C16D1Ev();
extern void _ZN8S3589C16D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S3589C16D1Ev,_ZTv0_n12_N8S3589C16D1Ev)();
extern void ABISELECT(_ZThn16_N8S3589C16D1Ev,_ZThn12_N8S3589C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C16D0Ev,_ZTv0_n12_N8S3589C16D0Ev)();
extern void ABISELECT(_ZThn16_N8S3589C16D0Ev,_ZThn12_N8S3589C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3589C16[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S3589C16[0]),
  (VTBL_ENTRY)&_ZN8S3589C16D1Ev,
  (VTBL_ENTRY)&_ZN8S3589C16D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S3589C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C16D1Ev,_ZTv0_n12_N8S3589C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C16D0Ev,_ZTv0_n12_N8S3589C16D0Ev),
};
extern VTBL_ENTRY _ZTV8S3589C16[];
static  VTT_ENTRY vtt_S3589C16[] = {
  {&(_ZTV8S3589C16[3]),  3,10},
  {&(_ZTV8S3589C16[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S3589C16[];
extern  VTBL_ENTRY _ZTV8S3589C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3589C16[];
static VTBL_ENTRY alt_thunk_names48[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3589C16D0Ev,_ZTv0_n12_N8S3589C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S3589C16D0Ev,_ZThn12_N8S3589C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3589C16D1Ev,_ZTv0_n12_N8S3589C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S3589C16D1Ev,_ZThn12_N8S3589C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3589C16 = {  "S3589C16", // class name
  bases_S3589C16, 1,
  &(vtc_S3589C16[0]), // expected_vtbl_contents
  &(vtt_S3589C16[0]), // expected_vtt_contents
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI8S3589C16),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S3589C16),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3589C16),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names48,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3589C15  : S3589C8 , virtual S3589C16 {
  long double s3589c15f0;
  virtual  ~S3589C15(); // _ZN8S3589C15D2Ev
  S3589C15(); // tgen
};
//SIG(-1 S3589C15) C1{ BC2{ VBC3{ BC4{ vd m Fc FU5{ m Fc[6]}} vd FL FU5} VBC4 vd} VBC6{ VBC4 Fi FC7{}} vd FD}


 S3589C15 ::~S3589C15(){ note_dtor("S3589C15", this);}
S3589C15 ::S3589C15(){ note_ctor("S3589C15", this);} // tgen

static void Test_S3589C15()
{
  extern Class_Descriptor cd_S3589C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,18)];
    init_test(&cd_S3589C15, buf);
    S3589C15 *dp, &lv = *(dp=new (buf) S3589C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,68), "sizeof(S3589C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3589C15)");
    check_base_class_offset(lv, (S3589C3*)(S3589C2*), ABISELECT(32,16), "S3589C15");
    check_base_class_offset(lv, (S3589C2*)(S3589C8*), ABISELECT(32,16), "S3589C15");
    /*is_ambiguous_... S3589C8::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*)(S3589C8*), ABISELECT(64,44), "S3589C15");
    check_base_class_offset(lv, (S3589C3*)(S3589C16*), ABISELECT(64,44), "S3589C15");
    check_base_class_offset(lv, (S3589C8*), 0, "S3589C15");
    check_base_class_offset(lv, (S3589C16*), ABISELECT(80,56), "S3589C15");
    check_field_offset(lv, s3589c15f0, ABISELECT(16,4), "S3589C15.s3589c15f0");
    test_class_info(&lv, &cd_S3589C15);
    dp->~S3589C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3589C15(Test_S3589C15, "S3589C15", ABISELECT(96,68));

#else // __cplusplus

extern void _ZN8S3589C15C1Ev();
extern void _ZN8S3589C15D2Ev();
Name_Map name_map_S3589C15[] = {
  NSPAIR(_ZN8S3589C15C1Ev),
  NSPAIR(_ZN8S3589C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S3589C2;
extern VTBL_ENTRY _ZTI7S3589C2[];
extern  VTBL_ENTRY _ZTV7S3589C2[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S3589C8;
extern VTBL_ENTRY _ZTI7S3589C8[];
extern  VTBL_ENTRY _ZTV7S3589C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3589C8[];
extern Class_Descriptor cd_S3589C16;
extern VTBL_ENTRY _ZTI8S3589C16[];
extern  VTBL_ENTRY _ZTV8S3589C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3589C16[];
static Base_Class bases_S3589C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3589C3,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3589C2,    ABISELECT(32,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3589C3,    ABISELECT(64,44), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3589C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3589C16,    ABISELECT(80,56), //bcp->offset
    17, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S3589C15[];
extern void _ZN8S3589C15D1Ev();
extern void _ZN8S3589C15D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S3589C15D1Ev,_ZTv0_n12_N8S3589C15D1Ev)();
extern void ABISELECT(_ZThn32_N8S3589C15D1Ev,_ZThn16_N8S3589C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C15D0Ev,_ZTv0_n12_N8S3589C15D0Ev)();
extern void ABISELECT(_ZThn32_N8S3589C15D0Ev,_ZThn16_N8S3589C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C15D1Ev,_ZTv0_n12_N8S3589C15D1Ev)();
extern void ABISELECT(_ZThn64_N8S3589C15D1Ev,_ZThn44_N8S3589C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C15D0Ev,_ZTv0_n12_N8S3589C15D0Ev)();
extern void ABISELECT(_ZThn64_N8S3589C15D0Ev,_ZThn44_N8S3589C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3589C15D1Ev,_ZTv0_n16_N8S3589C15D1Ev)();
extern void ABISELECT(_ZThn80_N8S3589C15D1Ev,_ZThn56_N8S3589C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3589C15D0Ev,_ZTv0_n16_N8S3589C15D0Ev)();
extern void ABISELECT(_ZThn80_N8S3589C15D0Ev,_ZThn56_N8S3589C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3589C15[] = {
  ABISELECT(80,56),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S3589C15[0]),
  (VTBL_ENTRY)&_ZN8S3589C15D1Ev,
  (VTBL_ENTRY)&_ZN8S3589C15D0Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S3589C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C15D1Ev,_ZTv0_n12_N8S3589C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C15D0Ev,_ZTv0_n12_N8S3589C15D0Ev),
  ABISELECT(-64,-44),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S3589C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C15D1Ev,_ZTv0_n12_N8S3589C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C15D0Ev,_ZTv0_n12_N8S3589C15D0Ev),
  ABISELECT(-80,-56),
  ABISELECT(-16,-12),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S3589C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C15D1Ev,_ZTv0_n16_N8S3589C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C15D0Ev,_ZTv0_n16_N8S3589C15D0Ev),
};
extern VTBL_ENTRY _ZTV8S3589C15[];
extern void _ZN7S3589C8D1Ev();
extern void _ZN7S3589C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3589C8__8S3589C15[] = {
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&_ZN7S3589C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3589C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev)();
extern void ABISELECT(_ZThn32_N7S3589C8D1Ev,_ZThn16_N7S3589C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev)();
extern void ABISELECT(_ZThn32_N7S3589C8D0Ev,_ZThn16_N7S3589C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C2__7S3589C8__8S3589C15[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev)();
extern void ABISELECT(_ZThn64_N7S3589C8D1Ev,_ZThn44_N7S3589C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev)();
extern void ABISELECT(_ZThn64_N7S3589C8D0Ev,_ZThn44_N7S3589C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__7S3589C8__8S3589C15[] = {
  ABISELECT(-64,-44),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev),
};
extern void _ZN8S3589C16D1Ev();
extern void _ZN8S3589C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3589C16__8S3589C15[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S3589C16[0]),
  (VTBL_ENTRY)&_ZN8S3589C16D1Ev,
  (VTBL_ENTRY)&_ZN8S3589C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S3589C16D1Ev,_ZTv0_n12_N8S3589C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3589C16D0Ev,_ZTv0_n12_N8S3589C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__8S3589C16__8S3589C15[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S3589C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C16D1Ev,_ZTv0_n12_N8S3589C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C16D0Ev,_ZTv0_n12_N8S3589C16D0Ev),
};
static  VTT_ENTRY vtt_S3589C15[] = {
  {&(_ZTV8S3589C15[5]),  5,23},
  {&(_tg__ZTV7S3589C8__8S3589C15[4]),  4,6},
  {&(_tg__ZTV7S3589C2__7S3589C8__8S3589C15[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__7S3589C8__8S3589C15[3]),  3,5},
  {&(_ZTV8S3589C15[10]),  10,23},
  {&(_ZTV8S3589C15[15]),  15,23},
  {&(_ZTV8S3589C15[21]),  21,23},
  {&(_tg__ZTV8S3589C16__8S3589C15[3]),  3,5},
  {&(_tg__ZTV7S3589C3__8S3589C16__8S3589C15[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S3589C15[];
extern  VTBL_ENTRY _ZTV8S3589C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3589C15[];
static VTBL_ENTRY alt_thunk_names49[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S3589C8D0Ev,_ZThn44_N7S3589C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S3589C8D0Ev,_ZThn16_N7S3589C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S3589C8D1Ev,_ZThn44_N7S3589C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S3589C8D1Ev,_ZThn16_N7S3589C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S3589C15D0Ev,_ZTv0_n16_N8S3589C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S3589C15D0Ev,_ZThn56_N8S3589C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S3589C15D1Ev,_ZTv0_n16_N8S3589C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S3589C15D1Ev,_ZThn56_N8S3589C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3589C15D0Ev,_ZTv0_n12_N8S3589C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S3589C15D0Ev,_ZThn44_N8S3589C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S3589C15D0Ev,_ZThn16_N8S3589C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3589C15D1Ev,_ZTv0_n12_N8S3589C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S3589C15D1Ev,_ZThn44_N8S3589C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S3589C15D1Ev,_ZThn16_N8S3589C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3589C15 = {  "S3589C15", // class name
  bases_S3589C15, 5,
  &(vtc_S3589C15[0]), // expected_vtbl_contents
  &(vtt_S3589C15[0]), // expected_vtt_contents
  ABISELECT(96,68), // object size
  NSPAIRA(_ZTI8S3589C15),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S3589C15),23, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3589C15),9, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names49,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3589C5  : virtual S3589C6 , virtual S3589C10 , S3589C15 {
  int s3589c5f0[10];
  void *s3589c5f1;
  ::S3589C15 s3589c5f2;
  virtual  ~S3589C5(); // _ZN7S3589C5D2Ev
  S3589C5(); // tgen
};
//SIG(-1 S3589C5) C1{ VBC2{ BC3{ VBC4{ VBC5{ BC6{ vd m Fc FU7{ m Fc[6]}} vd FL FU7} VBC6 vd} BC6 BC8{ vd m Fi Fc Fi} BC5 Fi Fp} BC4 VBC8} VBC9{ VBC4 BC10{ VBC6} VBC11{ BC12{ m FD} VBC13{ VBC8 Fp[2]} VBC4 BC6 VBC10 Fc Fi} vd} BC14{ BC4 VBC15{ VBC6 Fi FC16{}} vd FD} vd Fi[10] Fp FC14}


 S3589C5 ::~S3589C5(){ note_dtor("S3589C5", this);}
S3589C5 ::S3589C5(){ note_ctor("S3589C5", this);} // tgen

static void Test_S3589C5()
{
  extern Class_Descriptor cd_S3589C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(30,81)];
    init_test(&cd_S3589C5, buf);
    S3589C5 *dp, &lv = *(dp=new (buf) S3589C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,320), "sizeof(S3589C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3589C5)");
    /*is_ambiguous_... S3589C5::S3589C2 */ AMB_check_base_class_offset(lv, (S3589C3*)(S3589C2*), ABISELECT(280,200), "S3589C5");
    /*is_ambiguous_... S3589C5::S3589C8 */ AMB_check_base_class_offset(lv, (S3589C2*)(S3589C8*), ABISELECT(280,200), "S3589C5");
    /*is_ambiguous_... S3589C6::S3589C8 */ AMB_check_base_class_offset(lv, (S3589C2*)(S3589C8*)(S3589C6*), ABISELECT(280,200), "S3589C5");
    check_base_class_offset(lv, (S3589C2*)(S3589C8*)(S3589C15*), ABISELECT(280,200), "S3589C5");
    /*is_ambiguous_... S3589C5::S3589C8 */ AMB_check_base_class_offset(lv, (S3589C3*)(S3589C8*), ABISELECT(312,228), "S3589C5");
    /*is_ambiguous_... S3589C6::S3589C8 */ AMB_check_base_class_offset(lv, (S3589C3*)(S3589C8*)(S3589C6*), ABISELECT(312,228), "S3589C5");
    /*is_ambiguous_... S3589C10::S3589C11 */ AMB_check_base_class_offset(lv, (S3589C3*)(S3589C11*)(S3589C10*), ABISELECT(312,228), "S3589C5");
    /*is_ambiguous_... S3589C5::S3589C11 */ AMB_check_base_class_offset(lv, (S3589C3*)(S3589C11*), ABISELECT(312,228), "S3589C5");
    /*is_ambiguous_... S3589C8::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*)(S3589C8*)(S3589C15*), ABISELECT(312,228), "S3589C5");
    check_base_class_offset(lv, (S3589C3*)(S3589C16*), ABISELECT(312,228), "S3589C5");
    check_base_class_offset(lv, (S3589C8*)(S3589C7*)(S3589C6*), ABISELECT(272,196), "S3589C5");
    check_base_class_offset(lv, (S3589C8*)(S3589C10*), ABISELECT(272,196), "S3589C5");
    check_base_class_offset(lv, (S3589C8*)(S3589C12*), ABISELECT(272,196), "S3589C5");
    /*is_ambiguous_... S3589C7::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*)(S3589C7*)(S3589C6*), ABISELECT(176,128), "S3589C5");
    check_base_class_offset(lv, (S3589C9_nt*)(S3589C7*)(S3589C6*), ABISELECT(192,140), "S3589C5");
    /*is_ambiguous_... S3589C7::S3589C2 */ AMB_check_base_class_offset(lv, (S3589C3*)(S3589C2*)(S3589C7*)(S3589C6*), ABISELECT(216,156), "S3589C5");
    /*is_ambiguous_... S3589C7::S3589C2 */ AMB_check_base_class_offset(lv, (S3589C2*)(S3589C7*)(S3589C6*), ABISELECT(216,156), "S3589C5");
    check_base_class_offset(lv, (S3589C7*)(S3589C6*), ABISELECT(176,128), "S3589C5");
    /*is_ambiguous_... S3589C6::S3589C8 */ AMB_check_base_class_offset(lv, (S3589C8*)(S3589C6*), ABISELECT(264,192), "S3589C5");
    /*is_ambiguous_... S3589C6::S3589C9_nt */ AMB_check_base_class_offset(lv, (S3589C9_nt*)(S3589C6*), ABISELECT(328,240), "S3589C5");
    check_base_class_offset(lv, (S3589C9_nt*)(S3589C14*), ABISELECT(328,240), "S3589C5");
    check_base_class_offset(lv, (S3589C6*), ABISELECT(176,128), "S3589C5");
    /*is_ambiguous_... S3589C10::S3589C11 */ AMB_check_base_class_offset(lv, (S3589C11*)(S3589C10*), ABISELECT(352,256), "S3589C5");
    check_base_class_offset(lv, (S3589C13_nt*)(S3589C12*), ABISELECT(384,272), "S3589C5");
    check_base_class_offset(lv, (S3589C14*)(S3589C12*), ABISELECT(408,292), "S3589C5");
    /*is_ambiguous_... S3589C12::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*)(S3589C12*), ABISELECT(368,260), "S3589C5");
    check_base_class_offset(lv, (S3589C11*)(S3589C12*), ABISELECT(432,304), "S3589C5");
    check_base_class_offset(lv, (S3589C12*)(S3589C10*), ABISELECT(368,260), "S3589C5");
    check_base_class_offset(lv, (S3589C10*), ABISELECT(352,256), "S3589C5");
    check_base_class_offset(lv, (S3589C8*)(S3589C15*), 0, "S3589C5");
    check_base_class_offset(lv, (S3589C16*)(S3589C15*), ABISELECT(440,308), "S3589C5");
    check_base_class_offset(lv, (S3589C15*), 0, "S3589C5");
    check_field_offset(lv, s3589c5f0, ABISELECT(32,16), "S3589C5.s3589c5f0");
    check_field_offset(lv, s3589c5f1, ABISELECT(72,56), "S3589C5.s3589c5f1");
    check_field_offset(lv, s3589c5f2, ABISELECT(80,60), "S3589C5.s3589c5f2");
    test_class_info(&lv, &cd_S3589C5);
    dp->~S3589C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3589C5(Test_S3589C5, "S3589C5", ABISELECT(464,320));

#else // __cplusplus

extern void _ZN7S3589C5C1Ev();
extern void _ZN7S3589C5D2Ev();
Name_Map name_map_S3589C5[] = {
  NSPAIR(_ZN7S3589C5C1Ev),
  NSPAIR(_ZN7S3589C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S3589C2;
extern VTBL_ENTRY _ZTI7S3589C2[];
extern  VTBL_ENTRY _ZTV7S3589C2[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S3589C8;
extern VTBL_ENTRY _ZTI7S3589C8[];
extern  VTBL_ENTRY _ZTV7S3589C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3589C8[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S3589C9_nt;
extern VTBL_ENTRY _ZTI10S3589C9_nt[];
extern  VTBL_ENTRY _ZTV10S3589C9_nt[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S3589C2;
extern VTBL_ENTRY _ZTI7S3589C2[];
extern  VTBL_ENTRY _ZTV7S3589C2[];
extern Class_Descriptor cd_S3589C7;
extern VTBL_ENTRY _ZTI7S3589C7[];
extern  VTBL_ENTRY _ZTV7S3589C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3589C7[];
extern Class_Descriptor cd_S3589C8;
extern VTBL_ENTRY _ZTI7S3589C8[];
extern  VTBL_ENTRY _ZTV7S3589C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3589C8[];
extern Class_Descriptor cd_S3589C9_nt;
extern VTBL_ENTRY _ZTI10S3589C9_nt[];
extern  VTBL_ENTRY _ZTV10S3589C9_nt[];
extern Class_Descriptor cd_S3589C6;
extern VTBL_ENTRY _ZTI7S3589C6[];
extern  VTBL_ENTRY _ZTV7S3589C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3589C6[];
extern Class_Descriptor cd_S3589C11;
extern VTBL_ENTRY _ZTI8S3589C11[];
extern  VTBL_ENTRY _ZTV8S3589C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3589C11[];
extern Class_Descriptor cd_S3589C13_nt;
extern VTBL_ENTRY _ZTI11S3589C13_nt[];
extern Class_Descriptor cd_S3589C14;
extern VTBL_ENTRY _ZTI8S3589C14[];
extern  VTBL_ENTRY _ZTV8S3589C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3589C14[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S3589C11;
extern VTBL_ENTRY _ZTI8S3589C11[];
extern  VTBL_ENTRY _ZTV8S3589C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3589C11[];
extern Class_Descriptor cd_S3589C12;
extern VTBL_ENTRY _ZTI8S3589C12[];
extern  VTBL_ENTRY _ZTV8S3589C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3589C12[];
extern Class_Descriptor cd_S3589C10;
extern VTBL_ENTRY _ZTI8S3589C10[];
extern  VTBL_ENTRY _ZTV8S3589C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3589C10[];
extern Class_Descriptor cd_S3589C8;
extern VTBL_ENTRY _ZTI7S3589C8[];
extern  VTBL_ENTRY _ZTV7S3589C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3589C8[];
extern Class_Descriptor cd_S3589C16;
extern VTBL_ENTRY _ZTI8S3589C16[];
extern  VTBL_ENTRY _ZTV8S3589C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3589C16[];
extern Class_Descriptor cd_S3589C15;
extern VTBL_ENTRY _ZTI8S3589C15[];
extern  VTBL_ENTRY _ZTV8S3589C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3589C15[];
static Base_Class bases_S3589C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3589C3,    ABISELECT(280,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3589C2,    ABISELECT(280,200), //bcp->offset
    44, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3589C3,    ABISELECT(312,228), //bcp->offset
    49, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3589C8,    ABISELECT(272,196), //bcp->offset
    37, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S3589C3,    ABISELECT(176,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3589C9_nt,    ABISELECT(192,140), //bcp->offset
    23, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3589C3,    ABISELECT(216,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3589C2,    ABISELECT(216,156), //bcp->offset
    27, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3589C7,    ABISELECT(176,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3589C8,    ABISELECT(264,192), //bcp->offset
    31, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3589C9_nt,    ABISELECT(328,240), //bcp->offset
    54, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S3589C6,    ABISELECT(176,128), //bcp->offset
    14, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3589C11,    ABISELECT(352,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S3589C13_nt,    ABISELECT(384,272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3589C14,    ABISELECT(408,292), //bcp->offset
    82, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S3589C3,    ABISELECT(368,260), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3589C11,    ABISELECT(432,304), //bcp->offset
    88, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S3589C12,    ABISELECT(368,260), //bcp->offset
    71, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S3589C10,    ABISELECT(352,256), //bcp->offset
    59, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3589C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S3589C16,    ABISELECT(440,308), //bcp->offset
    94, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S3589C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3589C5[];
extern void _ZN7S3589C5D1Ev();
extern void _ZN7S3589C5D0Ev();
extern void ABISELECT(_ZTv0_n56_N7S3589C5D1Ev,_ZTv0_n28_N7S3589C5D1Ev)();
extern void ABISELECT(_ZThn176_N7S3589C5D1Ev,_ZThn128_N7S3589C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S3589C5D0Ev,_ZTv0_n28_N7S3589C5D0Ev)();
extern void ABISELECT(_ZThn176_N7S3589C5D0Ev,_ZThn128_N7S3589C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n56_N7S3589C5D1Ev,_ZTvn12_n28_N7S3589C5D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N7S3589C5D0Ev,_ZTvn12_n28_N7S3589C5D0Ev)();
extern void ABISELECT(_ZTvn40_n56_N7S3589C5D1Ev,_ZTvn28_n28_N7S3589C5D1Ev)();
extern void ABISELECT(_ZTvn40_n56_N7S3589C5D0Ev,_ZTvn28_n28_N7S3589C5D0Ev)();
extern void ABISELECT(_ZTvn88_n56_N7S3589C5D1Ev,_ZTvn64_n28_N7S3589C5D1Ev)();
extern void ABISELECT(_ZTvn88_n56_N7S3589C5D0Ev,_ZTvn64_n28_N7S3589C5D0Ev)();
extern void ABISELECT(_ZTv0_n40_N7S3589C5D1Ev,_ZTv0_n20_N7S3589C5D1Ev)();
extern void ABISELECT(_ZThn272_N7S3589C5D1Ev,_ZThn196_N7S3589C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3589C5D0Ev,_ZTv0_n20_N7S3589C5D0Ev)();
extern void ABISELECT(_ZThn272_N7S3589C5D0Ev,_ZThn196_N7S3589C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C5D1Ev,_ZTv0_n12_N7S3589C5D1Ev)();
extern void ABISELECT(_ZThn280_N7S3589C5D1Ev,_ZThn200_N7S3589C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C5D0Ev,_ZTv0_n12_N7S3589C5D0Ev)();
extern void ABISELECT(_ZThn280_N7S3589C5D0Ev,_ZThn200_N7S3589C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C5D1Ev,_ZTv0_n12_N7S3589C5D1Ev)();
extern void ABISELECT(_ZThn312_N7S3589C5D1Ev,_ZThn228_N7S3589C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C5D0Ev,_ZTv0_n12_N7S3589C5D0Ev)();
extern void ABISELECT(_ZThn312_N7S3589C5D0Ev,_ZThn228_N7S3589C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C5D1Ev,_ZTv0_n12_N7S3589C5D1Ev)();
extern void ABISELECT(_ZThn328_N7S3589C5D1Ev,_ZThn240_N7S3589C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C5D0Ev,_ZTv0_n12_N7S3589C5D0Ev)();
extern void ABISELECT(_ZThn328_N7S3589C5D0Ev,_ZThn240_N7S3589C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S3589C5D1Ev,_ZTv0_n40_N7S3589C5D1Ev)();
extern void ABISELECT(_ZThn352_N7S3589C5D1Ev,_ZThn256_N7S3589C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S3589C5D0Ev,_ZTv0_n40_N7S3589C5D0Ev)();
extern void ABISELECT(_ZThn352_N7S3589C5D0Ev,_ZThn256_N7S3589C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S3589C5D1Ev,_ZTv0_n36_N7S3589C5D1Ev)();
extern void ABISELECT(_ZThn368_N7S3589C5D1Ev,_ZThn260_N7S3589C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S3589C5D0Ev,_ZTv0_n36_N7S3589C5D0Ev)();
extern void ABISELECT(_ZThn368_N7S3589C5D0Ev,_ZThn260_N7S3589C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3589C5D1Ev,_ZTv0_n16_N7S3589C5D1Ev)();
extern void ABISELECT(_ZThn408_N7S3589C5D1Ev,_ZThn292_N7S3589C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3589C5D0Ev,_ZTv0_n16_N7S3589C5D0Ev)();
extern void ABISELECT(_ZThn408_N7S3589C5D0Ev,_ZThn292_N7S3589C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3589C5D1Ev,_ZTv0_n16_N7S3589C5D1Ev)();
extern void ABISELECT(_ZThn432_N7S3589C5D1Ev,_ZThn304_N7S3589C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3589C5D0Ev,_ZTv0_n16_N7S3589C5D0Ev)();
extern void ABISELECT(_ZThn432_N7S3589C5D0Ev,_ZThn304_N7S3589C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3589C5D1Ev,_ZTv0_n16_N7S3589C5D1Ev)();
extern void ABISELECT(_ZThn440_N7S3589C5D1Ev,_ZThn308_N7S3589C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3589C5D0Ev,_ZTv0_n16_N7S3589C5D0Ev)();
extern void ABISELECT(_ZThn440_N7S3589C5D0Ev,_ZThn308_N7S3589C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3589C5[] = {
  ABISELECT(432,304),
  ABISELECT(408,292),
  ABISELECT(368,260),
  ABISELECT(352,256),
  ABISELECT(328,240),
  ABISELECT(272,196),
  ABISELECT(176,128),
  ABISELECT(440,308),
  ABISELECT(312,228),
  ABISELECT(280,200),
  0,
  (VTBL_ENTRY)&(_ZTI7S3589C5[0]),
  (VTBL_ENTRY)&_ZN7S3589C5D1Ev,
  (VTBL_ENTRY)&_ZN7S3589C5D0Ev,
  ABISELECT(-176,-128),
  ABISELECT(152,112),
  ABISELECT(136,100),
  ABISELECT(104,72),
  ABISELECT(96,68),
  ABISELECT(-176,-128),
  (VTBL_ENTRY)&(_ZTI7S3589C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3589C5D1Ev,_ZTv0_n28_N7S3589C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3589C5D0Ev,_ZTv0_n28_N7S3589C5D0Ev),
  ABISELECT(-192,-140),
  (VTBL_ENTRY)&(_ZTI7S3589C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N7S3589C5D1Ev,_ZTvn12_n28_N7S3589C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N7S3589C5D0Ev,_ZTvn12_n28_N7S3589C5D0Ev),
  ABISELECT(-216,-156),
  (VTBL_ENTRY)&(_ZTI7S3589C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n56_N7S3589C5D1Ev,_ZTvn28_n28_N7S3589C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n56_N7S3589C5D0Ev,_ZTvn28_n28_N7S3589C5D0Ev),
  ABISELECT(48,36),
  ABISELECT(16,8),
  ABISELECT(-264,-192),
  (VTBL_ENTRY)&(_ZTI7S3589C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn88_n56_N7S3589C5D1Ev,_ZTvn64_n28_N7S3589C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn88_n56_N7S3589C5D0Ev,_ZTvn64_n28_N7S3589C5D0Ev),
  ABISELECT(-272,-196),
  ABISELECT(40,32),
  ABISELECT(8,4),
  ABISELECT(-272,-196),
  (VTBL_ENTRY)&(_ZTI7S3589C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3589C5D1Ev,_ZTv0_n20_N7S3589C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3589C5D0Ev,_ZTv0_n20_N7S3589C5D0Ev),
  ABISELECT(-280,-200),
  ABISELECT(-280,-200),
  (VTBL_ENTRY)&(_ZTI7S3589C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C5D1Ev,_ZTv0_n12_N7S3589C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C5D0Ev,_ZTv0_n12_N7S3589C5D0Ev),
  ABISELECT(-312,-228),
  ABISELECT(-312,-228),
  (VTBL_ENTRY)&(_ZTI7S3589C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C5D1Ev,_ZTv0_n12_N7S3589C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C5D0Ev,_ZTv0_n12_N7S3589C5D0Ev),
  ABISELECT(-328,-240),
  ABISELECT(-328,-240),
  (VTBL_ENTRY)&(_ZTI7S3589C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C5D1Ev,_ZTv0_n12_N7S3589C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C5D0Ev,_ZTv0_n12_N7S3589C5D0Ev),
  ABISELECT(-352,-256),
  ABISELECT(80,48),
  ABISELECT(-24,-16),
  ABISELECT(56,36),
  ABISELECT(16,4),
  ABISELECT(-72,-56),
  ABISELECT(-80,-60),
  ABISELECT(-40,-28),
  ABISELECT(-352,-256),
  (VTBL_ENTRY)&(_ZTI7S3589C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S3589C5D1Ev,_ZTv0_n40_N7S3589C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S3589C5D0Ev,_ZTv0_n40_N7S3589C5D0Ev),
  ABISELECT(-368,-260),
  ABISELECT(64,44),
  ABISELECT(-56,-32),
  ABISELECT(-88,-60),
  ABISELECT(-96,-64),
  ABISELECT(-40,-20),
  ABISELECT(40,32),
  ABISELECT(-368,-260),
  (VTBL_ENTRY)&(_ZTI7S3589C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S3589C5D1Ev,_ZTv0_n36_N7S3589C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S3589C5D0Ev,_ZTv0_n36_N7S3589C5D0Ev),
  ABISELECT(-408,-292),
  ABISELECT(-80,-52),
  ABISELECT(-408,-292),
  (VTBL_ENTRY)&(_ZTI7S3589C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3589C5D1Ev,_ZTv0_n16_N7S3589C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3589C5D0Ev,_ZTv0_n16_N7S3589C5D0Ev),
  ABISELECT(-432,-304),
  ABISELECT(-120,-76),
  ABISELECT(-432,-304),
  (VTBL_ENTRY)&(_ZTI7S3589C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3589C5D1Ev,_ZTv0_n16_N7S3589C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3589C5D0Ev,_ZTv0_n16_N7S3589C5D0Ev),
  ABISELECT(-440,-308),
  ABISELECT(-128,-80),
  ABISELECT(-440,-308),
  (VTBL_ENTRY)&(_ZTI7S3589C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3589C5D1Ev,_ZTv0_n16_N7S3589C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3589C5D0Ev,_ZTv0_n16_N7S3589C5D0Ev),
};
extern VTBL_ENTRY _ZTV7S3589C5[];
extern void _ZN8S3589C15D1Ev();
extern void _ZN8S3589C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3589C15__7S3589C5[] = {
  ABISELECT(440,308),
  ABISELECT(312,228),
  ABISELECT(280,200),
  0,
  (VTBL_ENTRY)&(_ZTI8S3589C15[0]),
  (VTBL_ENTRY)&_ZN8S3589C15D1Ev,
  (VTBL_ENTRY)&_ZN8S3589C15D0Ev,
};
extern void _ZN7S3589C8D1Ev();
extern void _ZN7S3589C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3589C88S3589C15__A2__7S3589C5[] = {
  ABISELECT(312,228),
  ABISELECT(280,200),
  0,
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&_ZN7S3589C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3589C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev)();
extern void ABISELECT(_ZThn280_N7S3589C8D1Ev,_ZThn200_N7S3589C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev)();
extern void ABISELECT(_ZThn280_N7S3589C8D0Ev,_ZThn200_N7S3589C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C2__7S3589C88S3589C15__A2__7S3589C5[] = {
  ABISELECT(-280,-200),
  ABISELECT(-280,-200),
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev)();
extern void ABISELECT(_ZThn312_N7S3589C8D1Ev,_ZThn228_N7S3589C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev)();
extern void ABISELECT(_ZThn312_N7S3589C8D0Ev,_ZThn228_N7S3589C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__7S3589C88S3589C15__A2__7S3589C5[] = {
  ABISELECT(-312,-228),
  ABISELECT(-312,-228),
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3589C15D1Ev,_ZTv0_n12_N8S3589C15D1Ev)();
extern void ABISELECT(_ZThn280_N8S3589C15D1Ev,_ZThn200_N8S3589C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C15D0Ev,_ZTv0_n12_N8S3589C15D0Ev)();
extern void ABISELECT(_ZThn280_N8S3589C15D0Ev,_ZThn200_N8S3589C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C2__8S3589C15__7S3589C5[] = {
  ABISELECT(-280,-200),
  ABISELECT(-280,-200),
  (VTBL_ENTRY)&(_ZTI8S3589C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C15D1Ev,_ZTv0_n12_N8S3589C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C15D0Ev,_ZTv0_n12_N8S3589C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3589C15D1Ev,_ZTv0_n12_N8S3589C15D1Ev)();
extern void ABISELECT(_ZThn312_N8S3589C15D1Ev,_ZThn228_N8S3589C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C15D0Ev,_ZTv0_n12_N8S3589C15D0Ev)();
extern void ABISELECT(_ZThn312_N8S3589C15D0Ev,_ZThn228_N8S3589C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__8S3589C15__7S3589C5[] = {
  ABISELECT(-312,-228),
  ABISELECT(-312,-228),
  (VTBL_ENTRY)&(_ZTI8S3589C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C15D1Ev,_ZTv0_n12_N8S3589C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C15D0Ev,_ZTv0_n12_N8S3589C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S3589C15D1Ev,_ZTv0_n16_N8S3589C15D1Ev)();
extern void ABISELECT(_ZThn440_N8S3589C15D1Ev,_ZThn308_N8S3589C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3589C15D0Ev,_ZTv0_n16_N8S3589C15D0Ev)();
extern void ABISELECT(_ZThn440_N8S3589C15D0Ev,_ZThn308_N8S3589C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3589C16__8S3589C15__7S3589C5[] = {
  ABISELECT(-440,-308),
  ABISELECT(-128,-80),
  ABISELECT(-440,-308),
  (VTBL_ENTRY)&(_ZTI8S3589C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C15D1Ev,_ZTv0_n16_N8S3589C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C15D0Ev,_ZTv0_n16_N8S3589C15D0Ev),
};
extern void _ZN7S3589C6D1Ev();
extern void _ZN7S3589C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3589C6__7S3589C5[] = {
  ABISELECT(152,112),
  ABISELECT(136,100),
  ABISELECT(104,72),
  ABISELECT(96,68),
  0,
  (VTBL_ENTRY)&(_ZTI7S3589C6[0]),
  (VTBL_ENTRY)&_ZN7S3589C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3589C6D0Ev,
};
extern void _ZN7S3589C7D1Ev();
extern void _ZN7S3589C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3589C77S3589C6__7S3589C5[] = {
  ABISELECT(136,100),
  ABISELECT(104,72),
  ABISELECT(96,68),
  0,
  (VTBL_ENTRY)&(_ZTI7S3589C7[0]),
  (VTBL_ENTRY)&_ZN7S3589C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3589C7D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N7S3589C7D1Ev,_ZTv0_n20_N7S3589C7D1Ev)();
extern void ABISELECT(_ZThn96_N7S3589C7D1Ev,_ZThn68_N7S3589C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3589C7D0Ev,_ZTv0_n20_N7S3589C7D0Ev)();
extern void ABISELECT(_ZThn96_N7S3589C7D0Ev,_ZThn68_N7S3589C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C8__7S3589C77S3589C6__7S3589C5[] = {
  ABISELECT(-96,-68),
  ABISELECT(40,32),
  ABISELECT(8,4),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI7S3589C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3589C7D1Ev,_ZTv0_n20_N7S3589C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3589C7D0Ev,_ZTv0_n20_N7S3589C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3589C7D1Ev,_ZTv0_n12_N7S3589C7D1Ev)();
extern void ABISELECT(_ZThn104_N7S3589C7D1Ev,_ZThn72_N7S3589C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C7D0Ev,_ZTv0_n12_N7S3589C7D0Ev)();
extern void ABISELECT(_ZThn104_N7S3589C7D0Ev,_ZThn72_N7S3589C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C2__7S3589C77S3589C6__7S3589C5[] = {
  ABISELECT(-104,-72),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI7S3589C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C7D1Ev,_ZTv0_n12_N7S3589C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C7D0Ev,_ZTv0_n12_N7S3589C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3589C7D1Ev,_ZTv0_n12_N7S3589C7D1Ev)();
extern void ABISELECT(_ZThn136_N7S3589C7D1Ev,_ZThn100_N7S3589C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C7D0Ev,_ZTv0_n12_N7S3589C7D0Ev)();
extern void ABISELECT(_ZThn136_N7S3589C7D0Ev,_ZThn100_N7S3589C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__7S3589C77S3589C6__7S3589C5[] = {
  ABISELECT(-136,-100),
  ABISELECT(-136,-100),
  (VTBL_ENTRY)&(_ZTI7S3589C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C7D1Ev,_ZTv0_n12_N7S3589C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C7D0Ev,_ZTv0_n12_N7S3589C7D0Ev),
};
extern void _ZN7S3589C8D1Ev();
extern void _ZN7S3589C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3589C87S3589C6__A1__7S3589C5[] = {
  ABISELECT(48,36),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&_ZN7S3589C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3589C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev)();
extern void ABISELECT(_ZThn16_N7S3589C8D1Ev,_ZThn8_N7S3589C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev)();
extern void ABISELECT(_ZThn16_N7S3589C8D0Ev,_ZThn8_N7S3589C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C2__7S3589C87S3589C6__A1__7S3589C5[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S3589C8D1Ev,_ZThn36_N7S3589C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev)();
extern void ABISELECT(_ZThn48_N7S3589C8D0Ev,_ZThn36_N7S3589C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__7S3589C87S3589C6__A1__7S3589C5[] = {
  ABISELECT(-48,-36),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S3589C6D1Ev,_ZTv0_n20_N7S3589C6D1Ev)();
extern void ABISELECT(_ZThn96_N7S3589C6D1Ev,_ZThn68_N7S3589C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3589C6D0Ev,_ZTv0_n20_N7S3589C6D0Ev)();
extern void ABISELECT(_ZThn96_N7S3589C6D0Ev,_ZThn68_N7S3589C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C8__7S3589C6__7S3589C5[] = {
  ABISELECT(-96,-68),
  ABISELECT(40,32),
  ABISELECT(8,4),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI7S3589C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3589C6D1Ev,_ZTv0_n20_N7S3589C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3589C6D0Ev,_ZTv0_n20_N7S3589C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3589C6D1Ev,_ZTv0_n12_N7S3589C6D1Ev)();
extern void ABISELECT(_ZThn104_N7S3589C6D1Ev,_ZThn72_N7S3589C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C6D0Ev,_ZTv0_n12_N7S3589C6D0Ev)();
extern void ABISELECT(_ZThn104_N7S3589C6D0Ev,_ZThn72_N7S3589C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C2__7S3589C6__7S3589C5[] = {
  ABISELECT(-104,-72),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI7S3589C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C6D1Ev,_ZTv0_n12_N7S3589C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C6D0Ev,_ZTv0_n12_N7S3589C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3589C6D1Ev,_ZTv0_n12_N7S3589C6D1Ev)();
extern void ABISELECT(_ZThn136_N7S3589C6D1Ev,_ZThn100_N7S3589C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C6D0Ev,_ZTv0_n12_N7S3589C6D0Ev)();
extern void ABISELECT(_ZThn136_N7S3589C6D0Ev,_ZThn100_N7S3589C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__7S3589C6__7S3589C5[] = {
  ABISELECT(-136,-100),
  ABISELECT(-136,-100),
  (VTBL_ENTRY)&(_ZTI7S3589C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C6D1Ev,_ZTv0_n12_N7S3589C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C6D0Ev,_ZTv0_n12_N7S3589C6D0Ev),
};
extern void ABISELECT(_ZThn88_N7S3589C6D1Ev,_ZThn64_N7S3589C6D1Ev)();
extern void ABISELECT(_ZThn88_N7S3589C6D0Ev,_ZThn64_N7S3589C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C8__A__7S3589C6__7S3589C5[] = {
  ABISELECT(48,36),
  ABISELECT(16,8),
  ABISELECT(-88,-64),
  (VTBL_ENTRY)&(_ZTI7S3589C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn88_N7S3589C6D1Ev,_ZThn64_N7S3589C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn88_N7S3589C6D0Ev,_ZThn64_N7S3589C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3589C6D1Ev,_ZTv0_n12_N7S3589C6D1Ev)();
extern void ABISELECT(_ZThn152_N7S3589C6D1Ev,_ZThn112_N7S3589C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C6D0Ev,_ZTv0_n12_N7S3589C6D0Ev)();
extern void ABISELECT(_ZThn152_N7S3589C6D0Ev,_ZThn112_N7S3589C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt__A1__7S3589C6__7S3589C5[] = {
  ABISELECT(-152,-112),
  ABISELECT(-152,-112),
  (VTBL_ENTRY)&(_ZTI7S3589C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C6D1Ev,_ZTv0_n12_N7S3589C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C6D0Ev,_ZTv0_n12_N7S3589C6D0Ev),
};
extern void _ZN7S3589C8D1Ev();
extern void _ZN7S3589C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3589C8__7S3589C5[] = {
  ABISELECT(40,32),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&_ZN7S3589C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3589C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev)();
extern void ABISELECT(_ZThn8_N7S3589C8D1Ev,_ZThn4_N7S3589C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev)();
extern void ABISELECT(_ZThn8_N7S3589C8D0Ev,_ZThn4_N7S3589C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C2__7S3589C8__7S3589C5[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev)();
extern void ABISELECT(_ZThn40_N7S3589C8D1Ev,_ZThn32_N7S3589C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev)();
extern void ABISELECT(_ZThn40_N7S3589C8D0Ev,_ZThn32_N7S3589C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__7S3589C8__7S3589C5[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev),
};
extern void _ZN8S3589C10D1Ev();
extern void _ZN8S3589C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3589C10__7S3589C5[] = {
  ABISELECT(80,48),
  ABISELECT(-24,-16),
  ABISELECT(56,36),
  ABISELECT(16,4),
  ABISELECT(-72,-56),
  ABISELECT(-80,-60),
  ABISELECT(-40,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S3589C10[0]),
  (VTBL_ENTRY)&_ZN8S3589C10D1Ev,
  (VTBL_ENTRY)&_ZN8S3589C10D0Ev,
};
extern void _ZN8S3589C11D1Ev();
extern void _ZN8S3589C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3589C118S3589C10__7S3589C5[] = {
  ABISELECT(-40,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S3589C11[0]),
  (VTBL_ENTRY)&_ZN8S3589C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3589C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S3589C11D1Ev,_ZTv0_n12_N8S3589C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3589C11D0Ev,_ZTv0_n12_N8S3589C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__8S3589C118S3589C10__7S3589C5[] = {
  ABISELECT(40,28),
  ABISELECT(40,28),
  (VTBL_ENTRY)&(_ZTI8S3589C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C11D1Ev,_ZTv0_n12_N8S3589C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C11D0Ev,_ZTv0_n12_N8S3589C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3589C10D1Ev,_ZTv0_n20_N8S3589C10D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3589C10D0Ev,_ZTv0_n20_N8S3589C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C8__8S3589C10__7S3589C5[] = {
  ABISELECT(80,60),
  ABISELECT(40,32),
  ABISELECT(8,4),
  ABISELECT(80,60),
  (VTBL_ENTRY)&(_ZTI8S3589C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3589C10D1Ev,_ZTv0_n20_N8S3589C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3589C10D0Ev,_ZTv0_n20_N8S3589C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3589C10D1Ev,_ZTv0_n12_N8S3589C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3589C10D0Ev,_ZTv0_n12_N8S3589C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C2__8S3589C10__7S3589C5[] = {
  ABISELECT(72,56),
  ABISELECT(72,56),
  (VTBL_ENTRY)&(_ZTI8S3589C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C10D1Ev,_ZTv0_n12_N8S3589C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C10D0Ev,_ZTv0_n12_N8S3589C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3589C10D1Ev,_ZTv0_n12_N8S3589C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3589C10D0Ev,_ZTv0_n12_N8S3589C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__8S3589C10__7S3589C5[] = {
  ABISELECT(40,28),
  ABISELECT(40,28),
  (VTBL_ENTRY)&(_ZTI8S3589C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C10D1Ev,_ZTv0_n12_N8S3589C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C10D0Ev,_ZTv0_n12_N8S3589C10D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S3589C10D1Ev,_ZTv0_n36_N8S3589C10D1Ev)();
extern void ABISELECT(_ZThn16_N8S3589C10D1Ev,_ZThn4_N8S3589C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S3589C10D0Ev,_ZTv0_n36_N8S3589C10D0Ev)();
extern void ABISELECT(_ZThn16_N8S3589C10D0Ev,_ZThn4_N8S3589C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3589C12__8S3589C10__7S3589C5[] = {
  ABISELECT(-16,-4),
  ABISELECT(64,44),
  ABISELECT(-56,-32),
  ABISELECT(-88,-60),
  ABISELECT(-96,-64),
  ABISELECT(-40,-20),
  ABISELECT(40,32),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S3589C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S3589C10D1Ev,_ZTv0_n36_N8S3589C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S3589C10D0Ev,_ZTv0_n36_N8S3589C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S3589C10D1Ev,_ZTv0_n16_N8S3589C10D1Ev)();
extern void ABISELECT(_ZThn56_N8S3589C10D1Ev,_ZThn36_N8S3589C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3589C10D0Ev,_ZTv0_n16_N8S3589C10D0Ev)();
extern void ABISELECT(_ZThn56_N8S3589C10D0Ev,_ZThn36_N8S3589C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3589C14__8S3589C10__7S3589C5[] = {
  ABISELECT(-56,-36),
  ABISELECT(-80,-52),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S3589C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C10D1Ev,_ZTv0_n16_N8S3589C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C10D0Ev,_ZTv0_n16_N8S3589C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3589C10D1Ev,_ZTv0_n12_N8S3589C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3589C10D0Ev,_ZTv0_n12_N8S3589C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt__8S3589C10__7S3589C5[] = {
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S3589C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C10D1Ev,_ZTv0_n12_N8S3589C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C10D0Ev,_ZTv0_n12_N8S3589C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S3589C10D1Ev,_ZTv0_n16_N8S3589C10D1Ev)();
extern void ABISELECT(_ZThn80_N8S3589C10D1Ev,_ZThn48_N8S3589C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3589C10D0Ev,_ZTv0_n16_N8S3589C10D0Ev)();
extern void ABISELECT(_ZThn80_N8S3589C10D0Ev,_ZThn48_N8S3589C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3589C11__A1__8S3589C10__7S3589C5[] = {
  ABISELECT(-80,-48),
  ABISELECT(-120,-76),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S3589C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C10D1Ev,_ZTv0_n16_N8S3589C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C10D0Ev,_ZTv0_n16_N8S3589C10D0Ev),
};
extern void _ZN8S3589C12D1Ev();
extern void _ZN8S3589C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3589C12__7S3589C5[] = {
  ABISELECT(64,44),
  ABISELECT(-56,-32),
  ABISELECT(-88,-60),
  ABISELECT(-96,-64),
  ABISELECT(-40,-20),
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&_ZN8S3589C12D1Ev,
  (VTBL_ENTRY)&_ZN8S3589C12D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S3589C12D1Ev,_ZTv0_n16_N8S3589C12D1Ev)();
extern void ABISELECT(_ZThn40_N8S3589C12D1Ev,_ZThn32_N8S3589C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3589C12D0Ev,_ZTv0_n16_N8S3589C12D0Ev)();
extern void ABISELECT(_ZThn40_N8S3589C12D0Ev,_ZThn32_N8S3589C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3589C14__8S3589C12__7S3589C5[] = {
  ABISELECT(-40,-32),
  ABISELECT(-80,-52),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C12D1Ev,_ZTv0_n16_N8S3589C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C12D0Ev,_ZTv0_n16_N8S3589C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3589C12D1Ev,_ZTv0_n12_N8S3589C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3589C12D0Ev,_ZTv0_n12_N8S3589C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt__8S3589C12__7S3589C5[] = {
  ABISELECT(40,20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C12D1Ev,_ZTv0_n12_N8S3589C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C12D0Ev,_ZTv0_n12_N8S3589C12D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3589C12D1Ev,_ZTv0_n20_N8S3589C12D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3589C12D0Ev,_ZTv0_n20_N8S3589C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C8__8S3589C12__7S3589C5[] = {
  ABISELECT(96,64),
  ABISELECT(40,32),
  ABISELECT(8,4),
  ABISELECT(96,64),
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3589C12D1Ev,_ZTv0_n20_N8S3589C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3589C12D0Ev,_ZTv0_n20_N8S3589C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3589C12D1Ev,_ZTv0_n12_N8S3589C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3589C12D0Ev,_ZTv0_n12_N8S3589C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C2__8S3589C12__7S3589C5[] = {
  ABISELECT(88,60),
  ABISELECT(88,60),
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C12D1Ev,_ZTv0_n12_N8S3589C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C12D0Ev,_ZTv0_n12_N8S3589C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3589C12D1Ev,_ZTv0_n12_N8S3589C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3589C12D0Ev,_ZTv0_n12_N8S3589C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__8S3589C12__7S3589C5[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C12D1Ev,_ZTv0_n12_N8S3589C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C12D0Ev,_ZTv0_n12_N8S3589C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S3589C12D1Ev,_ZTv0_n16_N8S3589C12D1Ev)();
extern void ABISELECT(_ZThn64_N8S3589C12D1Ev,_ZThn44_N8S3589C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3589C12D0Ev,_ZTv0_n16_N8S3589C12D0Ev)();
extern void ABISELECT(_ZThn64_N8S3589C12D0Ev,_ZThn44_N8S3589C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3589C11__8S3589C12__7S3589C5[] = {
  ABISELECT(-64,-44),
  ABISELECT(-120,-76),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C12D1Ev,_ZTv0_n16_N8S3589C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C12D0Ev,_ZTv0_n16_N8S3589C12D0Ev),
};
extern void _ZN8S3589C14D1Ev();
extern void _ZN8S3589C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3589C14__7S3589C5[] = {
  ABISELECT(-80,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S3589C14[0]),
  (VTBL_ENTRY)&_ZN8S3589C14D1Ev,
  (VTBL_ENTRY)&_ZN8S3589C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S3589C14D1Ev,_ZTv0_n12_N8S3589C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3589C14D0Ev,_ZTv0_n12_N8S3589C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt__8S3589C14__7S3589C5[] = {
  ABISELECT(80,52),
  ABISELECT(80,52),
  (VTBL_ENTRY)&(_ZTI8S3589C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C14D1Ev,_ZTv0_n12_N8S3589C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C14D0Ev,_ZTv0_n12_N8S3589C14D0Ev),
};
extern void _ZN8S3589C11D1Ev();
extern void _ZN8S3589C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3589C11__A1__7S3589C5[] = {
  ABISELECT(-120,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S3589C11[0]),
  (VTBL_ENTRY)&_ZN8S3589C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3589C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S3589C11D1Ev,_ZTv0_n12_N8S3589C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3589C11D0Ev,_ZTv0_n12_N8S3589C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__8S3589C11__A1__7S3589C5[] = {
  ABISELECT(120,76),
  ABISELECT(120,76),
  (VTBL_ENTRY)&(_ZTI8S3589C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C11D1Ev,_ZTv0_n12_N8S3589C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C11D0Ev,_ZTv0_n12_N8S3589C11D0Ev),
};
extern void _ZN8S3589C16D1Ev();
extern void _ZN8S3589C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3589C16__7S3589C5[] = {
  ABISELECT(-128,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S3589C16[0]),
  (VTBL_ENTRY)&_ZN8S3589C16D1Ev,
  (VTBL_ENTRY)&_ZN8S3589C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S3589C16D1Ev,_ZTv0_n12_N8S3589C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3589C16D0Ev,_ZTv0_n12_N8S3589C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__8S3589C16__7S3589C5[] = {
  ABISELECT(128,80),
  ABISELECT(128,80),
  (VTBL_ENTRY)&(_ZTI8S3589C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C16D1Ev,_ZTv0_n12_N8S3589C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C16D0Ev,_ZTv0_n12_N8S3589C16D0Ev),
};
static  VTT_ENTRY vtt_S3589C5[] = {
  {&(_ZTV7S3589C5[12]),  12,100},
  {&(_tg__ZTV8S3589C15__7S3589C5[5]),  5,7},
  {&(_tg__ZTV7S3589C88S3589C15__A2__7S3589C5[4]),  4,6},
  {&(_tg__ZTV7S3589C2__7S3589C88S3589C15__A2__7S3589C5[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__7S3589C88S3589C15__A2__7S3589C5[3]),  3,5},
  {&(_tg__ZTV7S3589C2__8S3589C15__7S3589C5[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__8S3589C15__7S3589C5[3]),  3,5},
  {&(_tg__ZTV8S3589C16__8S3589C15__7S3589C5[4]),  4,6},
  {&(_ZTV7S3589C5[21]),  21,100},
  {&(_ZTV7S3589C5[42]),  42,100},
  {&(_ZTV7S3589C5[47]),  47,100},
  {&(_ZTV7S3589C5[52]),  52,100},
  {&(_ZTV7S3589C5[25]),  25,100},
  {&(_ZTV7S3589C5[29]),  29,100},
  {&(_ZTV7S3589C5[35]),  35,100},
  {&(_ZTV7S3589C5[57]),  57,100},
  {&(_ZTV7S3589C5[69]),  69,100},
  {&(_ZTV7S3589C5[80]),  80,100},
  {&(_ZTV7S3589C5[86]),  86,100},
  {&(_ZTV7S3589C5[92]),  92,100},
  {&(_ZTV7S3589C5[98]),  98,100},
  {&(_tg__ZTV7S3589C6__7S3589C5[6]),  6,8},
  {&(_tg__ZTV7S3589C77S3589C6__7S3589C5[5]),  5,7},
  {&(_tg__ZTV7S3589C8__7S3589C77S3589C6__7S3589C5[5]),  5,7},
  {&(_tg__ZTV7S3589C2__7S3589C77S3589C6__7S3589C5[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__7S3589C77S3589C6__7S3589C5[3]),  3,5},
  {&(_tg__ZTV7S3589C87S3589C6__A1__7S3589C5[4]),  4,6},
  {&(_tg__ZTV7S3589C2__7S3589C87S3589C6__A1__7S3589C5[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__7S3589C87S3589C6__A1__7S3589C5[3]),  3,5},
  {&(_tg__ZTV7S3589C8__7S3589C6__7S3589C5[5]),  5,7},
  {&(_tg__ZTV7S3589C2__7S3589C6__7S3589C5[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__7S3589C6__7S3589C5[3]),  3,5},
  {&(_tg__ZTV7S3589C8__A__7S3589C6__7S3589C5[4]),  4,6},
  {&(_tg__ZTV10S3589C9_nt__A1__7S3589C6__7S3589C5[3]),  3,5},
  {&(_tg__ZTV7S3589C8__7S3589C5[4]),  4,6},
  {&(_tg__ZTV7S3589C2__7S3589C8__7S3589C5[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__7S3589C8__7S3589C5[3]),  3,5},
  {&(_tg__ZTV8S3589C10__7S3589C5[9]),  9,11},
  {&(_tg__ZTV8S3589C118S3589C10__7S3589C5[3]),  3,5},
  {&(_tg__ZTV7S3589C3__8S3589C118S3589C10__7S3589C5[3]),  3,5},
  {&(_tg__ZTV7S3589C8__8S3589C10__7S3589C5[5]),  5,7},
  {&(_tg__ZTV7S3589C2__8S3589C10__7S3589C5[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__8S3589C10__7S3589C5[3]),  3,5},
  {&(_tg__ZTV8S3589C12__8S3589C10__7S3589C5[9]),  9,11},
  {&(_tg__ZTV8S3589C14__8S3589C10__7S3589C5[4]),  4,6},
  {&(_tg__ZTV10S3589C9_nt__8S3589C10__7S3589C5[3]),  3,5},
  {&(_tg__ZTV8S3589C11__A1__8S3589C10__7S3589C5[4]),  4,6},
  {&(_tg__ZTV8S3589C12__7S3589C5[8]),  8,10},
  {&(_tg__ZTV8S3589C14__8S3589C12__7S3589C5[4]),  4,6},
  {&(_tg__ZTV10S3589C9_nt__8S3589C12__7S3589C5[3]),  3,5},
  {&(_tg__ZTV7S3589C8__8S3589C12__7S3589C5[5]),  5,7},
  {&(_tg__ZTV7S3589C2__8S3589C12__7S3589C5[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__8S3589C12__7S3589C5[3]),  3,5},
  {&(_tg__ZTV8S3589C11__8S3589C12__7S3589C5[4]),  4,6},
  {&(_tg__ZTV8S3589C14__7S3589C5[3]),  3,5},
  {&(_tg__ZTV10S3589C9_nt__8S3589C14__7S3589C5[3]),  3,5},
  {&(_tg__ZTV8S3589C11__A1__7S3589C5[3]),  3,5},
  {&(_tg__ZTV7S3589C3__8S3589C11__A1__7S3589C5[3]),  3,5},
  {&(_tg__ZTV8S3589C16__7S3589C5[3]),  3,5},
  {&(_tg__ZTV7S3589C3__8S3589C16__7S3589C5[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S3589C5[];
extern  VTBL_ENTRY _ZTV7S3589C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3589C5[];
static VTBL_ENTRY alt_thunk_names50[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S3589C12D0Ev,_ZTv0_n16_N8S3589C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S3589C12D0Ev,_ZThn44_N8S3589C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S3589C12D0Ev,_ZThn32_N8S3589C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S3589C12D1Ev,_ZTv0_n16_N8S3589C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S3589C12D1Ev,_ZThn44_N8S3589C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S3589C12D1Ev,_ZThn32_N8S3589C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S3589C10D0Ev,_ZTv0_n16_N8S3589C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S3589C10D0Ev,_ZThn48_N8S3589C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S3589C10D0Ev,_ZThn36_N8S3589C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S3589C10D1Ev,_ZTv0_n16_N8S3589C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S3589C10D1Ev,_ZThn48_N8S3589C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S3589C10D1Ev,_ZThn36_N8S3589C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S3589C10D0Ev,_ZTv0_n36_N8S3589C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S3589C10D0Ev,_ZThn4_N8S3589C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S3589C10D1Ev,_ZTv0_n36_N8S3589C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S3589C10D1Ev,_ZThn4_N8S3589C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3589C6D0Ev,_ZTv0_n12_N7S3589C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S3589C6D0Ev,_ZThn112_N7S3589C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S3589C6D0Ev,_ZThn100_N7S3589C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S3589C6D0Ev,_ZThn72_N7S3589C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3589C6D1Ev,_ZTv0_n12_N7S3589C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S3589C6D1Ev,_ZThn112_N7S3589C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S3589C6D1Ev,_ZThn100_N7S3589C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S3589C6D1Ev,_ZThn72_N7S3589C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3589C6D0Ev,_ZTv0_n20_N7S3589C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S3589C6D0Ev,_ZThn68_N7S3589C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3589C6D1Ev,_ZTv0_n20_N7S3589C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S3589C6D1Ev,_ZThn68_N7S3589C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3589C7D0Ev,_ZTv0_n12_N7S3589C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S3589C7D0Ev,_ZThn100_N7S3589C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S3589C7D0Ev,_ZThn72_N7S3589C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3589C7D1Ev,_ZTv0_n12_N7S3589C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S3589C7D1Ev,_ZThn100_N7S3589C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S3589C7D1Ev,_ZThn72_N7S3589C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3589C7D0Ev,_ZTv0_n20_N7S3589C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S3589C7D0Ev,_ZThn68_N7S3589C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3589C7D1Ev,_ZTv0_n20_N7S3589C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S3589C7D1Ev,_ZThn68_N7S3589C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S3589C15D0Ev,_ZTv0_n16_N8S3589C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn440_N8S3589C15D0Ev,_ZThn308_N8S3589C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S3589C15D1Ev,_ZTv0_n16_N8S3589C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn440_N8S3589C15D1Ev,_ZThn308_N8S3589C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3589C15D0Ev,_ZTv0_n12_N8S3589C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S3589C15D0Ev,_ZThn228_N8S3589C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S3589C15D0Ev,_ZThn200_N8S3589C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3589C15D1Ev,_ZTv0_n12_N8S3589C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S3589C15D1Ev,_ZThn228_N8S3589C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S3589C15D1Ev,_ZThn200_N8S3589C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S3589C8D0Ev,_ZThn32_N7S3589C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S3589C8D0Ev,_ZThn4_N7S3589C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S3589C8D0Ev,_ZThn36_N7S3589C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S3589C8D0Ev,_ZThn8_N7S3589C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn312_N7S3589C8D0Ev,_ZThn228_N7S3589C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N7S3589C8D0Ev,_ZThn200_N7S3589C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S3589C8D1Ev,_ZThn32_N7S3589C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S3589C8D1Ev,_ZThn4_N7S3589C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S3589C8D1Ev,_ZThn36_N7S3589C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S3589C8D1Ev,_ZThn8_N7S3589C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn312_N7S3589C8D1Ev,_ZThn228_N7S3589C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N7S3589C8D1Ev,_ZThn200_N7S3589C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3589C5D0Ev,_ZTv0_n16_N7S3589C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn440_N7S3589C5D0Ev,_ZThn308_N7S3589C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn432_N7S3589C5D0Ev,_ZThn304_N7S3589C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn408_N7S3589C5D0Ev,_ZThn292_N7S3589C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3589C5D1Ev,_ZTv0_n16_N7S3589C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn440_N7S3589C5D1Ev,_ZThn308_N7S3589C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn432_N7S3589C5D1Ev,_ZThn304_N7S3589C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn408_N7S3589C5D1Ev,_ZThn292_N7S3589C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S3589C5D0Ev,_ZTv0_n36_N7S3589C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S3589C5D0Ev,_ZThn260_N7S3589C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S3589C5D1Ev,_ZTv0_n36_N7S3589C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S3589C5D1Ev,_ZThn260_N7S3589C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S3589C5D0Ev,_ZTv0_n40_N7S3589C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S3589C5D0Ev,_ZThn256_N7S3589C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S3589C5D1Ev,_ZTv0_n40_N7S3589C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S3589C5D1Ev,_ZThn256_N7S3589C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3589C5D0Ev,_ZTv0_n12_N7S3589C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N7S3589C5D0Ev,_ZThn240_N7S3589C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn312_N7S3589C5D0Ev,_ZThn228_N7S3589C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N7S3589C5D0Ev,_ZThn200_N7S3589C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3589C5D1Ev,_ZTv0_n12_N7S3589C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N7S3589C5D1Ev,_ZThn240_N7S3589C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn312_N7S3589C5D1Ev,_ZThn228_N7S3589C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N7S3589C5D1Ev,_ZThn200_N7S3589C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3589C5D0Ev,_ZTv0_n20_N7S3589C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S3589C5D0Ev,_ZThn196_N7S3589C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3589C5D1Ev,_ZTv0_n20_N7S3589C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S3589C5D1Ev,_ZThn196_N7S3589C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S3589C5D0Ev,_ZTv0_n28_N7S3589C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S3589C5D0Ev,_ZThn128_N7S3589C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S3589C5D1Ev,_ZTv0_n28_N7S3589C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S3589C5D1Ev,_ZThn128_N7S3589C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3589C5 = {  "S3589C5", // class name
  bases_S3589C5, 22,
  &(vtc_S3589C5[0]), // expected_vtbl_contents
  &(vtt_S3589C5[0]), // expected_vtt_contents
  ABISELECT(464,320), // object size
  NSPAIRA(_ZTI7S3589C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S3589C5),100, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3589C5),60, //virtual table table var
  21, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names50,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3589C19  : S3589C12 {
  short s3589c19f0;
  ::S3589C11 s3589c19f1;
  int s3589c19f2;
  ~S3589C19(); // tgen
  S3589C19(); // tgen
};
//SIG(-1 S3589C19) C1{ BC2{ BC3{ m FD} VBC4{ VBC5{ vd m Fi Fc Fi} Fp[2]} VBC6{ VBC7{ BC8{ vd m Fc FU9{ m Fc[6]}} vd FL FU9} VBC8 vd} BC8 VBC10{ VBC8} Fc Fi} Fs FC10 Fi}


S3589C19 ::~S3589C19(){ note_dtor("S3589C19", this);} // tgen
S3589C19 ::S3589C19(){ note_ctor("S3589C19", this);} // tgen

static void Test_S3589C19()
{
  extern Class_Descriptor cd_S3589C19;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,34)];
    init_test(&cd_S3589C19, buf);
    S3589C19 *dp, &lv = *(dp=new (buf) S3589C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,132), "sizeof(S3589C19)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3589C19)");
    check_base_class_offset(lv, (S3589C13_nt*)(S3589C12*), ABISELECT(16,12), "S3589C19");
    check_base_class_offset(lv, (S3589C9_nt*)(S3589C14*), ABISELECT(104,68), "S3589C19");
    check_base_class_offset(lv, (S3589C14*)(S3589C12*), ABISELECT(80,56), "S3589C19");
    check_base_class_offset(lv, (S3589C3*)(S3589C2*), ABISELECT(136,88), "S3589C19");
    check_base_class_offset(lv, (S3589C2*)(S3589C8*), ABISELECT(136,88), "S3589C19");
    /*is_ambiguous_... S3589C8::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*)(S3589C8*), ABISELECT(168,116), "S3589C19");
    check_base_class_offset(lv, (S3589C3*)(S3589C11*), ABISELECT(168,116), "S3589C19");
    check_base_class_offset(lv, (S3589C8*)(S3589C12*), ABISELECT(128,84), "S3589C19");
    /*is_ambiguous_... S3589C12::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*)(S3589C12*), 0, "S3589C19");
    check_base_class_offset(lv, (S3589C11*)(S3589C12*), ABISELECT(184,128), "S3589C19");
    check_base_class_offset(lv, (S3589C12*), 0, "S3589C19");
    check_field_offset(lv, s3589c19f0, ABISELECT(40,32), "S3589C19.s3589c19f0");
    check_field_offset(lv, s3589c19f1, ABISELECT(48,36), "S3589C19.s3589c19f1");
    check_field_offset(lv, s3589c19f2, ABISELECT(72,52), "S3589C19.s3589c19f2");
    test_class_info(&lv, &cd_S3589C19);
    dp->~S3589C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3589C19(Test_S3589C19, "S3589C19", ABISELECT(192,132));

#else // __cplusplus

extern void _ZN8S3589C19C1Ev();
extern void _ZN8S3589C19D1Ev();
Name_Map name_map_S3589C19[] = {
  NSPAIR(_ZN8S3589C19C1Ev),
  NSPAIR(_ZN8S3589C19D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3589C13_nt;
extern VTBL_ENTRY _ZTI11S3589C13_nt[];
extern Class_Descriptor cd_S3589C9_nt;
extern VTBL_ENTRY _ZTI10S3589C9_nt[];
extern  VTBL_ENTRY _ZTV10S3589C9_nt[];
extern Class_Descriptor cd_S3589C14;
extern VTBL_ENTRY _ZTI8S3589C14[];
extern  VTBL_ENTRY _ZTV8S3589C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3589C14[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S3589C2;
extern VTBL_ENTRY _ZTI7S3589C2[];
extern  VTBL_ENTRY _ZTV7S3589C2[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S3589C8;
extern VTBL_ENTRY _ZTI7S3589C8[];
extern  VTBL_ENTRY _ZTV7S3589C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3589C8[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S3589C11;
extern VTBL_ENTRY _ZTI8S3589C11[];
extern  VTBL_ENTRY _ZTV8S3589C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3589C11[];
extern Class_Descriptor cd_S3589C12;
extern VTBL_ENTRY _ZTI8S3589C12[];
extern  VTBL_ENTRY _ZTV8S3589C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3589C12[];
static Base_Class bases_S3589C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3589C13_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3589C9_nt,    ABISELECT(104,68), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3589C14,    ABISELECT(80,56), //bcp->offset
    10, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S3589C3,    ABISELECT(136,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3589C2,    ABISELECT(136,88), //bcp->offset
    28, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3589C3,    ABISELECT(168,116), //bcp->offset
    33, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3589C8,    ABISELECT(128,84), //bcp->offset
    21, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S3589C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3589C11,    ABISELECT(184,128), //bcp->offset
    38, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S3589C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3589C19[];
extern void _ZN8S3589C19D1Ev();
extern void _ZN8S3589C19D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S3589C19D1Ev,_ZTv0_n16_N8S3589C19D1Ev)();
extern void ABISELECT(_ZThn80_N8S3589C19D1Ev,_ZThn56_N8S3589C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3589C19D0Ev,_ZTv0_n16_N8S3589C19D0Ev)();
extern void ABISELECT(_ZThn80_N8S3589C19D0Ev,_ZThn56_N8S3589C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C19D1Ev,_ZTv0_n12_N8S3589C19D1Ev)();
extern void ABISELECT(_ZThn104_N8S3589C19D1Ev,_ZThn68_N8S3589C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C19D0Ev,_ZTv0_n12_N8S3589C19D0Ev)();
extern void ABISELECT(_ZThn104_N8S3589C19D0Ev,_ZThn68_N8S3589C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3589C19D1Ev,_ZTv0_n20_N8S3589C19D1Ev)();
extern void ABISELECT(_ZThn128_N8S3589C19D1Ev,_ZThn84_N8S3589C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3589C19D0Ev,_ZTv0_n20_N8S3589C19D0Ev)();
extern void ABISELECT(_ZThn128_N8S3589C19D0Ev,_ZThn84_N8S3589C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C19D1Ev,_ZTv0_n12_N8S3589C19D1Ev)();
extern void ABISELECT(_ZThn136_N8S3589C19D1Ev,_ZThn88_N8S3589C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C19D0Ev,_ZTv0_n12_N8S3589C19D0Ev)();
extern void ABISELECT(_ZThn136_N8S3589C19D0Ev,_ZThn88_N8S3589C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C19D1Ev,_ZTv0_n12_N8S3589C19D1Ev)();
extern void ABISELECT(_ZThn168_N8S3589C19D1Ev,_ZThn116_N8S3589C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C19D0Ev,_ZTv0_n12_N8S3589C19D0Ev)();
extern void ABISELECT(_ZThn168_N8S3589C19D0Ev,_ZThn116_N8S3589C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3589C19D1Ev,_ZTv0_n16_N8S3589C19D1Ev)();
extern void ABISELECT(_ZThn184_N8S3589C19D1Ev,_ZThn128_N8S3589C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3589C19D0Ev,_ZTv0_n16_N8S3589C19D0Ev)();
extern void ABISELECT(_ZThn184_N8S3589C19D0Ev,_ZThn128_N8S3589C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3589C19[] = {
  ABISELECT(184,128),
  ABISELECT(168,116),
  ABISELECT(136,88),
  ABISELECT(128,84),
  ABISELECT(104,68),
  ABISELECT(80,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S3589C19[0]),
  (VTBL_ENTRY)&_ZN8S3589C19D1Ev,
  (VTBL_ENTRY)&_ZN8S3589C19D0Ev,
  ABISELECT(-80,-56),
  ABISELECT(24,12),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S3589C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C19D1Ev,_ZTv0_n16_N8S3589C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C19D0Ev,_ZTv0_n16_N8S3589C19D0Ev),
  ABISELECT(-104,-68),
  ABISELECT(-104,-68),
  (VTBL_ENTRY)&(_ZTI8S3589C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C19D1Ev,_ZTv0_n12_N8S3589C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C19D0Ev,_ZTv0_n12_N8S3589C19D0Ev),
  ABISELECT(-128,-84),
  ABISELECT(40,32),
  ABISELECT(8,4),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S3589C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3589C19D1Ev,_ZTv0_n20_N8S3589C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3589C19D0Ev,_ZTv0_n20_N8S3589C19D0Ev),
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S3589C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C19D1Ev,_ZTv0_n12_N8S3589C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C19D0Ev,_ZTv0_n12_N8S3589C19D0Ev),
  ABISELECT(-168,-116),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S3589C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C19D1Ev,_ZTv0_n12_N8S3589C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C19D0Ev,_ZTv0_n12_N8S3589C19D0Ev),
  ABISELECT(-184,-128),
  ABISELECT(-16,-12),
  ABISELECT(-184,-128),
  (VTBL_ENTRY)&(_ZTI8S3589C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C19D1Ev,_ZTv0_n16_N8S3589C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C19D0Ev,_ZTv0_n16_N8S3589C19D0Ev),
};
extern VTBL_ENTRY _ZTV8S3589C19[];
extern void _ZN8S3589C12D1Ev();
extern void _ZN8S3589C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3589C12__8S3589C19[] = {
  ABISELECT(184,128),
  ABISELECT(168,116),
  ABISELECT(136,88),
  ABISELECT(128,84),
  ABISELECT(104,68),
  ABISELECT(80,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&_ZN8S3589C12D1Ev,
  (VTBL_ENTRY)&_ZN8S3589C12D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S3589C12D1Ev,_ZTv0_n16_N8S3589C12D1Ev)();
extern void ABISELECT(_ZThn80_N8S3589C12D1Ev,_ZThn56_N8S3589C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3589C12D0Ev,_ZTv0_n16_N8S3589C12D0Ev)();
extern void ABISELECT(_ZThn80_N8S3589C12D0Ev,_ZThn56_N8S3589C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3589C14__8S3589C12__8S3589C19[] = {
  ABISELECT(-80,-56),
  ABISELECT(24,12),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C12D1Ev,_ZTv0_n16_N8S3589C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C12D0Ev,_ZTv0_n16_N8S3589C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3589C12D1Ev,_ZTv0_n12_N8S3589C12D1Ev)();
extern void ABISELECT(_ZThn104_N8S3589C12D1Ev,_ZThn68_N8S3589C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C12D0Ev,_ZTv0_n12_N8S3589C12D0Ev)();
extern void ABISELECT(_ZThn104_N8S3589C12D0Ev,_ZThn68_N8S3589C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt__8S3589C12__8S3589C19[] = {
  ABISELECT(-104,-68),
  ABISELECT(-104,-68),
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C12D1Ev,_ZTv0_n12_N8S3589C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C12D0Ev,_ZTv0_n12_N8S3589C12D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3589C12D1Ev,_ZTv0_n20_N8S3589C12D1Ev)();
extern void ABISELECT(_ZThn128_N8S3589C12D1Ev,_ZThn84_N8S3589C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3589C12D0Ev,_ZTv0_n20_N8S3589C12D0Ev)();
extern void ABISELECT(_ZThn128_N8S3589C12D0Ev,_ZThn84_N8S3589C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C8__8S3589C12__8S3589C19[] = {
  ABISELECT(-128,-84),
  ABISELECT(40,32),
  ABISELECT(8,4),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3589C12D1Ev,_ZTv0_n20_N8S3589C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3589C12D0Ev,_ZTv0_n20_N8S3589C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3589C12D1Ev,_ZTv0_n12_N8S3589C12D1Ev)();
extern void ABISELECT(_ZThn136_N8S3589C12D1Ev,_ZThn88_N8S3589C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C12D0Ev,_ZTv0_n12_N8S3589C12D0Ev)();
extern void ABISELECT(_ZThn136_N8S3589C12D0Ev,_ZThn88_N8S3589C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C2__8S3589C12__8S3589C19[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C12D1Ev,_ZTv0_n12_N8S3589C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C12D0Ev,_ZTv0_n12_N8S3589C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3589C12D1Ev,_ZTv0_n12_N8S3589C12D1Ev)();
extern void ABISELECT(_ZThn168_N8S3589C12D1Ev,_ZThn116_N8S3589C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C12D0Ev,_ZTv0_n12_N8S3589C12D0Ev)();
extern void ABISELECT(_ZThn168_N8S3589C12D0Ev,_ZThn116_N8S3589C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__8S3589C12__8S3589C19[] = {
  ABISELECT(-168,-116),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C12D1Ev,_ZTv0_n12_N8S3589C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C12D0Ev,_ZTv0_n12_N8S3589C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S3589C12D1Ev,_ZTv0_n16_N8S3589C12D1Ev)();
extern void ABISELECT(_ZThn184_N8S3589C12D1Ev,_ZThn128_N8S3589C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3589C12D0Ev,_ZTv0_n16_N8S3589C12D0Ev)();
extern void ABISELECT(_ZThn184_N8S3589C12D0Ev,_ZThn128_N8S3589C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3589C11__8S3589C12__8S3589C19[] = {
  ABISELECT(-184,-128),
  ABISELECT(-16,-12),
  ABISELECT(-184,-128),
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C12D1Ev,_ZTv0_n16_N8S3589C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C12D0Ev,_ZTv0_n16_N8S3589C12D0Ev),
};
extern void _ZN8S3589C14D1Ev();
extern void _ZN8S3589C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3589C14__8S3589C19[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S3589C14[0]),
  (VTBL_ENTRY)&_ZN8S3589C14D1Ev,
  (VTBL_ENTRY)&_ZN8S3589C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S3589C14D1Ev,_ZTv0_n12_N8S3589C14D1Ev)();
extern void ABISELECT(_ZThn24_N8S3589C14D1Ev,_ZThn12_N8S3589C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C14D0Ev,_ZTv0_n12_N8S3589C14D0Ev)();
extern void ABISELECT(_ZThn24_N8S3589C14D0Ev,_ZThn12_N8S3589C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt__8S3589C14__8S3589C19[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S3589C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C14D1Ev,_ZTv0_n12_N8S3589C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C14D0Ev,_ZTv0_n12_N8S3589C14D0Ev),
};
extern void _ZN7S3589C8D1Ev();
extern void _ZN7S3589C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3589C8__8S3589C19[] = {
  ABISELECT(40,32),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&_ZN7S3589C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3589C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev)();
extern void ABISELECT(_ZThn8_N7S3589C8D1Ev,_ZThn4_N7S3589C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev)();
extern void ABISELECT(_ZThn8_N7S3589C8D0Ev,_ZThn4_N7S3589C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C2__7S3589C8__8S3589C19[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev)();
extern void ABISELECT(_ZThn40_N7S3589C8D1Ev,_ZThn32_N7S3589C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev)();
extern void ABISELECT(_ZThn40_N7S3589C8D0Ev,_ZThn32_N7S3589C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__7S3589C8__8S3589C19[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev),
};
extern void _ZN8S3589C11D1Ev();
extern void _ZN8S3589C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3589C11__8S3589C19[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S3589C11[0]),
  (VTBL_ENTRY)&_ZN8S3589C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3589C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S3589C11D1Ev,_ZTv0_n12_N8S3589C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3589C11D0Ev,_ZTv0_n12_N8S3589C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__8S3589C11__8S3589C19[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S3589C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C11D1Ev,_ZTv0_n12_N8S3589C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C11D0Ev,_ZTv0_n12_N8S3589C11D0Ev),
};
static  VTT_ENTRY vtt_S3589C19[] = {
  {&(_ZTV8S3589C19[8]),  8,44},
  {&(_tg__ZTV8S3589C12__8S3589C19[8]),  8,10},
  {&(_tg__ZTV8S3589C14__8S3589C12__8S3589C19[4]),  4,6},
  {&(_tg__ZTV10S3589C9_nt__8S3589C12__8S3589C19[3]),  3,5},
  {&(_tg__ZTV7S3589C8__8S3589C12__8S3589C19[5]),  5,7},
  {&(_tg__ZTV7S3589C2__8S3589C12__8S3589C19[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__8S3589C12__8S3589C19[3]),  3,5},
  {&(_tg__ZTV8S3589C11__8S3589C12__8S3589C19[4]),  4,6},
  {&(_ZTV8S3589C19[14]),  14,44},
  {&(_ZTV8S3589C19[19]),  19,44},
  {&(_ZTV8S3589C19[26]),  26,44},
  {&(_ZTV8S3589C19[31]),  31,44},
  {&(_ZTV8S3589C19[36]),  36,44},
  {&(_ZTV8S3589C19[42]),  42,44},
  {&(_tg__ZTV8S3589C14__8S3589C19[3]),  3,5},
  {&(_tg__ZTV10S3589C9_nt__8S3589C14__8S3589C19[3]),  3,5},
  {&(_tg__ZTV7S3589C8__8S3589C19[4]),  4,6},
  {&(_tg__ZTV7S3589C2__7S3589C8__8S3589C19[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__7S3589C8__8S3589C19[3]),  3,5},
  {&(_tg__ZTV8S3589C11__8S3589C19[3]),  3,5},
  {&(_tg__ZTV7S3589C3__8S3589C11__8S3589C19[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S3589C19[];
extern  VTBL_ENTRY _ZTV8S3589C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3589C19[];
static VTBL_ENTRY alt_thunk_names51[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S3589C8D0Ev,_ZThn32_N7S3589C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S3589C8D0Ev,_ZThn4_N7S3589C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S3589C8D1Ev,_ZThn32_N7S3589C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S3589C8D1Ev,_ZThn4_N7S3589C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3589C14D0Ev,_ZTv0_n12_N8S3589C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S3589C14D0Ev,_ZThn12_N8S3589C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3589C14D1Ev,_ZTv0_n12_N8S3589C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S3589C14D1Ev,_ZThn12_N8S3589C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3589C12D0Ev,_ZTv0_n20_N8S3589C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3589C12D0Ev,_ZThn84_N8S3589C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3589C12D1Ev,_ZTv0_n20_N8S3589C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3589C12D1Ev,_ZThn84_N8S3589C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3589C12D0Ev,_ZTv0_n12_N8S3589C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S3589C12D0Ev,_ZThn116_N8S3589C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S3589C12D0Ev,_ZThn88_N8S3589C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S3589C12D0Ev,_ZThn68_N8S3589C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3589C12D1Ev,_ZTv0_n12_N8S3589C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S3589C12D1Ev,_ZThn116_N8S3589C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S3589C12D1Ev,_ZThn88_N8S3589C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S3589C12D1Ev,_ZThn68_N8S3589C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S3589C12D0Ev,_ZTv0_n16_N8S3589C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S3589C12D0Ev,_ZThn128_N8S3589C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S3589C12D0Ev,_ZThn56_N8S3589C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S3589C12D1Ev,_ZTv0_n16_N8S3589C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S3589C12D1Ev,_ZThn128_N8S3589C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S3589C12D1Ev,_ZThn56_N8S3589C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3589C19D0Ev,_ZTv0_n20_N8S3589C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3589C19D0Ev,_ZThn84_N8S3589C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3589C19D1Ev,_ZTv0_n20_N8S3589C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3589C19D1Ev,_ZThn84_N8S3589C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3589C19D0Ev,_ZTv0_n12_N8S3589C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S3589C19D0Ev,_ZThn116_N8S3589C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S3589C19D0Ev,_ZThn88_N8S3589C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S3589C19D0Ev,_ZThn68_N8S3589C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3589C19D1Ev,_ZTv0_n12_N8S3589C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S3589C19D1Ev,_ZThn116_N8S3589C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S3589C19D1Ev,_ZThn88_N8S3589C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S3589C19D1Ev,_ZThn68_N8S3589C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S3589C19D0Ev,_ZTv0_n16_N8S3589C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S3589C19D0Ev,_ZThn128_N8S3589C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S3589C19D0Ev,_ZThn56_N8S3589C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S3589C19D1Ev,_ZTv0_n16_N8S3589C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S3589C19D1Ev,_ZThn128_N8S3589C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S3589C19D1Ev,_ZThn56_N8S3589C19D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3589C19 = {  "S3589C19", // class name
  bases_S3589C19, 10,
  &(vtc_S3589C19[0]), // expected_vtbl_contents
  &(vtt_S3589C19[0]), // expected_vtt_contents
  ABISELECT(192,132), // object size
  NSPAIRA(_ZTI8S3589C19),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S3589C19),44, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3589C19),21, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names51,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3589C18  : virtual S3589C3 , virtual S3589C16 , S3589C15 , S3589C19 , S3589C8 {
  int s3589c18f0;
  ~S3589C18(); // tgen
  S3589C18(); // tgen
};
//SIG(-1 S3589C18) C1{ VBC2{ vd m Fc FU3{ m Fc[6]}} VBC4{ VBC2 Fi FC5{}} BC6{ BC7{ VBC8{ BC2 vd FL FU3} VBC2 vd} VBC4 vd FD} BC9{ BC10{ BC11{ m FD} VBC12{ VBC13{ vd m Fi Fc Fi} Fp[2]} VBC7 BC2 VBC14{ VBC2} Fc Fi} Fs FC14 Fi} BC7 Fi}


S3589C18 ::~S3589C18(){ note_dtor("S3589C18", this);} // tgen
S3589C18 ::S3589C18(){ note_ctor("S3589C18", this);} // tgen

static void Test_S3589C18()
{
  extern Class_Descriptor cd_S3589C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(17,43)];
    init_test(&cd_S3589C18, buf);
    S3589C18 *dp, &lv = *(dp=new (buf) S3589C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,168), "sizeof(S3589C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3589C18)");
    /*is_ambiguous_... S3589C18::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*), ABISELECT(128,80), "S3589C18");
    check_base_class_offset(lv, (S3589C3*)(S3589C16*), ABISELECT(128,80), "S3589C18");
    /*is_ambiguous_... S3589C8::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*)(S3589C8*)(S3589C15*), ABISELECT(128,80), "S3589C18");
    /*is_ambiguous_... S3589C18::S3589C8 */ AMB_check_base_class_offset(lv, (S3589C3*)(S3589C8*), ABISELECT(128,80), "S3589C18");
    check_base_class_offset(lv, (S3589C3*)(S3589C11*), ABISELECT(128,80), "S3589C18");
    /*is_ambiguous_... S3589C18::S3589C8 */ AMB_check_base_class_offset(lv, (S3589C3*)(S3589C8*), ABISELECT(128,80), "S3589C18");
    check_base_class_offset(lv, (S3589C16*), ABISELECT(144,92), "S3589C18");
    check_base_class_offset(lv, (S3589C16*)(S3589C15*), ABISELECT(144,92), "S3589C18");
    check_base_class_offset(lv, (S3589C3*)(S3589C2*), ABISELECT(160,104), "S3589C18");
    check_base_class_offset(lv, (S3589C2*)(S3589C8*)(S3589C15*), ABISELECT(160,104), "S3589C18");
    /*is_ambiguous_... S3589C18::S3589C8 */ AMB_check_base_class_offset(lv, (S3589C2*)(S3589C8*), ABISELECT(160,104), "S3589C18");
    /*is_ambiguous_... S3589C18::S3589C8 */ AMB_check_base_class_offset(lv, (S3589C2*)(S3589C8*), ABISELECT(160,104), "S3589C18");
    check_base_class_offset(lv, (S3589C8*)(S3589C15*), 0, "S3589C18");
    check_base_class_offset(lv, (S3589C15*), 0, "S3589C18");
    check_base_class_offset(lv, (S3589C13_nt*)(S3589C12*)(S3589C19*), ABISELECT(48,28), "S3589C18");
    check_base_class_offset(lv, (S3589C9_nt*)(S3589C14*), ABISELECT(216,144), "S3589C18");
    check_base_class_offset(lv, (S3589C14*)(S3589C12*)(S3589C19*), ABISELECT(192,132), "S3589C18");
    check_base_class_offset(lv, (S3589C8*)(S3589C12*)(S3589C19*), ABISELECT(240,160), "S3589C18");
    /*is_ambiguous_... S3589C12::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*)(S3589C12*)(S3589C19*), ABISELECT(32,16), "S3589C18");
    check_base_class_offset(lv, (S3589C11*)(S3589C12*)(S3589C19*), ABISELECT(248,164), "S3589C18");
    check_base_class_offset(lv, (S3589C12*)(S3589C19*), ABISELECT(32,16), "S3589C18");
    check_base_class_offset(lv, (S3589C19*), ABISELECT(32,16), "S3589C18");
    /*is_ambiguous_... S3589C18::S3589C8 */ AMB_check_base_class_offset(lv, (S3589C8*), ABISELECT(112,72), "S3589C18");
    check_field_offset(lv, s3589c18f0, ABISELECT(120,76), "S3589C18.s3589c18f0");
    test_class_info(&lv, &cd_S3589C18);
    dp->~S3589C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3589C18(Test_S3589C18, "S3589C18", ABISELECT(256,168));

#else // __cplusplus

extern void _ZN8S3589C18C1Ev();
extern void _ZN8S3589C18D1Ev();
Name_Map name_map_S3589C18[] = {
  NSPAIR(_ZN8S3589C18C1Ev),
  NSPAIR(_ZN8S3589C18D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S3589C16;
extern VTBL_ENTRY _ZTI8S3589C16[];
extern  VTBL_ENTRY _ZTV8S3589C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3589C16[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S3589C2;
extern VTBL_ENTRY _ZTI7S3589C2[];
extern  VTBL_ENTRY _ZTV7S3589C2[];
extern Class_Descriptor cd_S3589C8;
extern VTBL_ENTRY _ZTI7S3589C8[];
extern  VTBL_ENTRY _ZTV7S3589C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3589C8[];
extern Class_Descriptor cd_S3589C15;
extern VTBL_ENTRY _ZTI8S3589C15[];
extern  VTBL_ENTRY _ZTV8S3589C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3589C15[];
extern Class_Descriptor cd_S3589C13_nt;
extern VTBL_ENTRY _ZTI11S3589C13_nt[];
extern Class_Descriptor cd_S3589C9_nt;
extern VTBL_ENTRY _ZTI10S3589C9_nt[];
extern  VTBL_ENTRY _ZTV10S3589C9_nt[];
extern Class_Descriptor cd_S3589C14;
extern VTBL_ENTRY _ZTI8S3589C14[];
extern  VTBL_ENTRY _ZTV8S3589C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3589C14[];
extern Class_Descriptor cd_S3589C8;
extern VTBL_ENTRY _ZTI7S3589C8[];
extern  VTBL_ENTRY _ZTV7S3589C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3589C8[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S3589C11;
extern VTBL_ENTRY _ZTI8S3589C11[];
extern  VTBL_ENTRY _ZTV8S3589C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3589C11[];
extern Class_Descriptor cd_S3589C12;
extern VTBL_ENTRY _ZTI8S3589C12[];
extern  VTBL_ENTRY _ZTV8S3589C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3589C12[];
extern Class_Descriptor cd_S3589C19;
extern VTBL_ENTRY _ZTI8S3589C19[];
extern  VTBL_ENTRY _ZTV8S3589C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3589C19[];
extern Class_Descriptor cd_S3589C8;
extern VTBL_ENTRY _ZTI7S3589C8[];
extern  VTBL_ENTRY _ZTV7S3589C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3589C8[];
static Base_Class bases_S3589C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3589C3,    ABISELECT(128,80), //bcp->offset
    27, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3589C16,    ABISELECT(144,92), //bcp->offset
    32, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3589C3,    ABISELECT(160,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S3589C2,    ABISELECT(160,104), //bcp->offset
    38, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S3589C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3589C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3589C13_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3589C9_nt,    ABISELECT(216,144), //bcp->offset
    49, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S3589C14,    ABISELECT(192,132), //bcp->offset
    43, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S3589C8,    ABISELECT(240,160), //bcp->offset
    54, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S3589C3,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3589C11,    ABISELECT(248,164), //bcp->offset
    61, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S3589C12,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3589C19,    ABISELECT(32,16), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3589C8,    ABISELECT(112,72), //bcp->offset
    21, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3589C18[];
extern void _ZN8S3589C18D1Ev();
extern void _ZN8S3589C18D0Ev();
extern void ABISELECT(_ZThn32_N8S3589C18D1Ev,_ZThn16_N8S3589C18D1Ev)();
extern void ABISELECT(_ZThn32_N8S3589C18D0Ev,_ZThn16_N8S3589C18D0Ev)();
extern void ABISELECT(_ZThn112_N8S3589C18D1Ev,_ZThn72_N8S3589C18D1Ev)();
extern void ABISELECT(_ZThn112_N8S3589C18D0Ev,_ZThn72_N8S3589C18D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3589C18D1Ev,_ZTv0_n12_N8S3589C18D1Ev)();
extern void ABISELECT(_ZThn128_N8S3589C18D1Ev,_ZThn80_N8S3589C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C18D0Ev,_ZTv0_n12_N8S3589C18D0Ev)();
extern void ABISELECT(_ZThn128_N8S3589C18D0Ev,_ZThn80_N8S3589C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3589C18D1Ev,_ZTv0_n16_N8S3589C18D1Ev)();
extern void ABISELECT(_ZThn144_N8S3589C18D1Ev,_ZThn92_N8S3589C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3589C18D0Ev,_ZTv0_n16_N8S3589C18D0Ev)();
extern void ABISELECT(_ZThn144_N8S3589C18D0Ev,_ZThn92_N8S3589C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C18D1Ev,_ZTv0_n12_N8S3589C18D1Ev)();
extern void ABISELECT(_ZThn160_N8S3589C18D1Ev,_ZThn104_N8S3589C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C18D0Ev,_ZTv0_n12_N8S3589C18D0Ev)();
extern void ABISELECT(_ZThn160_N8S3589C18D0Ev,_ZThn104_N8S3589C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3589C18D1Ev,_ZTv0_n16_N8S3589C18D1Ev)();
extern void ABISELECT(_ZThn192_N8S3589C18D1Ev,_ZThn132_N8S3589C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3589C18D0Ev,_ZTv0_n16_N8S3589C18D0Ev)();
extern void ABISELECT(_ZThn192_N8S3589C18D0Ev,_ZThn132_N8S3589C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C18D1Ev,_ZTv0_n12_N8S3589C18D1Ev)();
extern void ABISELECT(_ZThn216_N8S3589C18D1Ev,_ZThn144_N8S3589C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C18D0Ev,_ZTv0_n12_N8S3589C18D0Ev)();
extern void ABISELECT(_ZThn216_N8S3589C18D0Ev,_ZThn144_N8S3589C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3589C18D1Ev,_ZTv0_n20_N8S3589C18D1Ev)();
extern void ABISELECT(_ZThn240_N8S3589C18D1Ev,_ZThn160_N8S3589C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3589C18D0Ev,_ZTv0_n20_N8S3589C18D0Ev)();
extern void ABISELECT(_ZThn240_N8S3589C18D0Ev,_ZThn160_N8S3589C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3589C18D1Ev,_ZTv0_n16_N8S3589C18D1Ev)();
extern void ABISELECT(_ZThn248_N8S3589C18D1Ev,_ZThn164_N8S3589C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3589C18D0Ev,_ZTv0_n16_N8S3589C18D0Ev)();
extern void ABISELECT(_ZThn248_N8S3589C18D0Ev,_ZThn164_N8S3589C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3589C18[] = {
  ABISELECT(248,164),
  ABISELECT(240,160),
  ABISELECT(216,144),
  ABISELECT(192,132),
  ABISELECT(144,92),
  ABISELECT(128,80),
  ABISELECT(160,104),
  0,
  (VTBL_ENTRY)&(_ZTI8S3589C18[0]),
  (VTBL_ENTRY)&_ZN8S3589C18D1Ev,
  (VTBL_ENTRY)&_ZN8S3589C18D0Ev,
  ABISELECT(216,148),
  ABISELECT(96,64),
  ABISELECT(128,88),
  ABISELECT(208,144),
  ABISELECT(184,128),
  ABISELECT(160,116),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S3589C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S3589C18D1Ev,_ZThn16_N8S3589C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S3589C18D0Ev,_ZThn16_N8S3589C18D0Ev),
  ABISELECT(16,8),
  ABISELECT(48,32),
  ABISELECT(-112,-72),
  (VTBL_ENTRY)&(_ZTI8S3589C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S3589C18D1Ev,_ZThn72_N8S3589C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S3589C18D0Ev,_ZThn72_N8S3589C18D0Ev),
  ABISELECT(-128,-80),
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI8S3589C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C18D1Ev,_ZTv0_n12_N8S3589C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C18D0Ev,_ZTv0_n12_N8S3589C18D0Ev),
  ABISELECT(-144,-92),
  ABISELECT(-16,-12),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI8S3589C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C18D1Ev,_ZTv0_n16_N8S3589C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C18D0Ev,_ZTv0_n16_N8S3589C18D0Ev),
  ABISELECT(-160,-104),
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI8S3589C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C18D1Ev,_ZTv0_n12_N8S3589C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C18D0Ev,_ZTv0_n12_N8S3589C18D0Ev),
  ABISELECT(-192,-132),
  ABISELECT(24,12),
  ABISELECT(-192,-132),
  (VTBL_ENTRY)&(_ZTI8S3589C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C18D1Ev,_ZTv0_n16_N8S3589C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C18D0Ev,_ZTv0_n16_N8S3589C18D0Ev),
  ABISELECT(-216,-144),
  ABISELECT(-216,-144),
  (VTBL_ENTRY)&(_ZTI8S3589C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C18D1Ev,_ZTv0_n12_N8S3589C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C18D0Ev,_ZTv0_n12_N8S3589C18D0Ev),
  ABISELECT(-240,-160),
  ABISELECT(-112,-80),
  ABISELECT(-80,-56),
  ABISELECT(-240,-160),
  (VTBL_ENTRY)&(_ZTI8S3589C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3589C18D1Ev,_ZTv0_n20_N8S3589C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3589C18D0Ev,_ZTv0_n20_N8S3589C18D0Ev),
  ABISELECT(-248,-164),
  ABISELECT(-120,-84),
  ABISELECT(-248,-164),
  (VTBL_ENTRY)&(_ZTI8S3589C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C18D1Ev,_ZTv0_n16_N8S3589C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C18D0Ev,_ZTv0_n16_N8S3589C18D0Ev),
};
extern VTBL_ENTRY _ZTV8S3589C18[];
extern void _ZN8S3589C15D1Ev();
extern void _ZN8S3589C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3589C15__8S3589C18[] = {
  ABISELECT(144,92),
  ABISELECT(128,80),
  ABISELECT(160,104),
  0,
  (VTBL_ENTRY)&(_ZTI8S3589C15[0]),
  (VTBL_ENTRY)&_ZN8S3589C15D1Ev,
  (VTBL_ENTRY)&_ZN8S3589C15D0Ev,
};
extern void _ZN7S3589C8D1Ev();
extern void _ZN7S3589C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3589C88S3589C15__8S3589C18[] = {
  ABISELECT(128,80),
  ABISELECT(160,104),
  0,
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&_ZN7S3589C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3589C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev)();
extern void ABISELECT(_ZThn160_N7S3589C8D1Ev,_ZThn104_N7S3589C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev)();
extern void ABISELECT(_ZThn160_N7S3589C8D0Ev,_ZThn104_N7S3589C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C2__7S3589C88S3589C15__8S3589C18[] = {
  ABISELECT(-160,-104),
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev)();
extern void ABISELECT(_ZThn128_N7S3589C8D1Ev,_ZThn80_N7S3589C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev)();
extern void ABISELECT(_ZThn128_N7S3589C8D0Ev,_ZThn80_N7S3589C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__7S3589C88S3589C15__8S3589C18[] = {
  ABISELECT(-128,-80),
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3589C15D1Ev,_ZTv0_n12_N8S3589C15D1Ev)();
extern void ABISELECT(_ZThn160_N8S3589C15D1Ev,_ZThn104_N8S3589C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C15D0Ev,_ZTv0_n12_N8S3589C15D0Ev)();
extern void ABISELECT(_ZThn160_N8S3589C15D0Ev,_ZThn104_N8S3589C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C2__8S3589C15__8S3589C18[] = {
  ABISELECT(-160,-104),
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI8S3589C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C15D1Ev,_ZTv0_n12_N8S3589C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C15D0Ev,_ZTv0_n12_N8S3589C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3589C15D1Ev,_ZTv0_n12_N8S3589C15D1Ev)();
extern void ABISELECT(_ZThn128_N8S3589C15D1Ev,_ZThn80_N8S3589C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C15D0Ev,_ZTv0_n12_N8S3589C15D0Ev)();
extern void ABISELECT(_ZThn128_N8S3589C15D0Ev,_ZThn80_N8S3589C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__8S3589C15__8S3589C18[] = {
  ABISELECT(-128,-80),
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI8S3589C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C15D1Ev,_ZTv0_n12_N8S3589C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C15D0Ev,_ZTv0_n12_N8S3589C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S3589C15D1Ev,_ZTv0_n16_N8S3589C15D1Ev)();
extern void ABISELECT(_ZThn144_N8S3589C15D1Ev,_ZThn92_N8S3589C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3589C15D0Ev,_ZTv0_n16_N8S3589C15D0Ev)();
extern void ABISELECT(_ZThn144_N8S3589C15D0Ev,_ZThn92_N8S3589C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3589C16__8S3589C15__8S3589C18[] = {
  ABISELECT(-144,-92),
  ABISELECT(-16,-12),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI8S3589C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C15D1Ev,_ZTv0_n16_N8S3589C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C15D0Ev,_ZTv0_n16_N8S3589C15D0Ev),
};
extern void _ZN8S3589C19D1Ev();
extern void _ZN8S3589C19D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3589C19__8S3589C18[] = {
  ABISELECT(216,148),
  ABISELECT(96,64),
  ABISELECT(128,88),
  ABISELECT(208,144),
  ABISELECT(184,128),
  ABISELECT(160,116),
  0,
  (VTBL_ENTRY)&(_ZTI8S3589C19[0]),
  (VTBL_ENTRY)&_ZN8S3589C19D1Ev,
  (VTBL_ENTRY)&_ZN8S3589C19D0Ev,
};
extern void _ZN8S3589C12D1Ev();
extern void _ZN8S3589C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3589C128S3589C19__8S3589C18[] = {
  ABISELECT(216,148),
  ABISELECT(96,64),
  ABISELECT(128,88),
  ABISELECT(208,144),
  ABISELECT(184,128),
  ABISELECT(160,116),
  0,
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&_ZN8S3589C12D1Ev,
  (VTBL_ENTRY)&_ZN8S3589C12D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S3589C12D1Ev,_ZTv0_n16_N8S3589C12D1Ev)();
extern void ABISELECT(_ZThn160_N8S3589C12D1Ev,_ZThn116_N8S3589C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3589C12D0Ev,_ZTv0_n16_N8S3589C12D0Ev)();
extern void ABISELECT(_ZThn160_N8S3589C12D0Ev,_ZThn116_N8S3589C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3589C14__8S3589C128S3589C19__8S3589C18[] = {
  ABISELECT(-160,-116),
  ABISELECT(24,12),
  ABISELECT(-160,-116),
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C12D1Ev,_ZTv0_n16_N8S3589C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C12D0Ev,_ZTv0_n16_N8S3589C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3589C12D1Ev,_ZTv0_n12_N8S3589C12D1Ev)();
extern void ABISELECT(_ZThn184_N8S3589C12D1Ev,_ZThn128_N8S3589C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C12D0Ev,_ZTv0_n12_N8S3589C12D0Ev)();
extern void ABISELECT(_ZThn184_N8S3589C12D0Ev,_ZThn128_N8S3589C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt__8S3589C128S3589C19__8S3589C18[] = {
  ABISELECT(-184,-128),
  ABISELECT(-184,-128),
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C12D1Ev,_ZTv0_n12_N8S3589C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C12D0Ev,_ZTv0_n12_N8S3589C12D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3589C12D1Ev,_ZTv0_n20_N8S3589C12D1Ev)();
extern void ABISELECT(_ZThn208_N8S3589C12D1Ev,_ZThn144_N8S3589C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3589C12D0Ev,_ZTv0_n20_N8S3589C12D0Ev)();
extern void ABISELECT(_ZThn208_N8S3589C12D0Ev,_ZThn144_N8S3589C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C8__8S3589C128S3589C19__8S3589C18[] = {
  ABISELECT(-208,-144),
  ABISELECT(-112,-80),
  ABISELECT(-80,-56),
  ABISELECT(-208,-144),
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3589C12D1Ev,_ZTv0_n20_N8S3589C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3589C12D0Ev,_ZTv0_n20_N8S3589C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3589C12D1Ev,_ZTv0_n12_N8S3589C12D1Ev)();
extern void ABISELECT(_ZThn128_N8S3589C12D1Ev,_ZThn88_N8S3589C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C12D0Ev,_ZTv0_n12_N8S3589C12D0Ev)();
extern void ABISELECT(_ZThn128_N8S3589C12D0Ev,_ZThn88_N8S3589C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C2__8S3589C128S3589C19__8S3589C18[] = {
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C12D1Ev,_ZTv0_n12_N8S3589C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C12D0Ev,_ZTv0_n12_N8S3589C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3589C12D1Ev,_ZTv0_n12_N8S3589C12D1Ev)();
extern void ABISELECT(_ZThn96_N8S3589C12D1Ev,_ZThn64_N8S3589C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C12D0Ev,_ZTv0_n12_N8S3589C12D0Ev)();
extern void ABISELECT(_ZThn96_N8S3589C12D0Ev,_ZThn64_N8S3589C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__8S3589C128S3589C19__8S3589C18[] = {
  ABISELECT(-96,-64),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C12D1Ev,_ZTv0_n12_N8S3589C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C12D0Ev,_ZTv0_n12_N8S3589C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S3589C12D1Ev,_ZTv0_n16_N8S3589C12D1Ev)();
extern void ABISELECT(_ZThn216_N8S3589C12D1Ev,_ZThn148_N8S3589C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3589C12D0Ev,_ZTv0_n16_N8S3589C12D0Ev)();
extern void ABISELECT(_ZThn216_N8S3589C12D0Ev,_ZThn148_N8S3589C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3589C11__8S3589C128S3589C19__8S3589C18[] = {
  ABISELECT(-216,-148),
  ABISELECT(-120,-84),
  ABISELECT(-216,-148),
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C12D1Ev,_ZTv0_n16_N8S3589C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C12D0Ev,_ZTv0_n16_N8S3589C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S3589C19D1Ev,_ZTv0_n16_N8S3589C19D1Ev)();
extern void ABISELECT(_ZThn160_N8S3589C19D1Ev,_ZThn116_N8S3589C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3589C19D0Ev,_ZTv0_n16_N8S3589C19D0Ev)();
extern void ABISELECT(_ZThn160_N8S3589C19D0Ev,_ZThn116_N8S3589C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3589C14__8S3589C19__8S3589C18[] = {
  ABISELECT(-160,-116),
  ABISELECT(24,12),
  ABISELECT(-160,-116),
  (VTBL_ENTRY)&(_ZTI8S3589C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C19D1Ev,_ZTv0_n16_N8S3589C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C19D0Ev,_ZTv0_n16_N8S3589C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3589C19D1Ev,_ZTv0_n12_N8S3589C19D1Ev)();
extern void ABISELECT(_ZThn184_N8S3589C19D1Ev,_ZThn128_N8S3589C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C19D0Ev,_ZTv0_n12_N8S3589C19D0Ev)();
extern void ABISELECT(_ZThn184_N8S3589C19D0Ev,_ZThn128_N8S3589C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt__8S3589C19__8S3589C18[] = {
  ABISELECT(-184,-128),
  ABISELECT(-184,-128),
  (VTBL_ENTRY)&(_ZTI8S3589C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C19D1Ev,_ZTv0_n12_N8S3589C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C19D0Ev,_ZTv0_n12_N8S3589C19D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3589C19D1Ev,_ZTv0_n20_N8S3589C19D1Ev)();
extern void ABISELECT(_ZThn208_N8S3589C19D1Ev,_ZThn144_N8S3589C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3589C19D0Ev,_ZTv0_n20_N8S3589C19D0Ev)();
extern void ABISELECT(_ZThn208_N8S3589C19D0Ev,_ZThn144_N8S3589C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C8__8S3589C19__8S3589C18[] = {
  ABISELECT(-208,-144),
  ABISELECT(-112,-80),
  ABISELECT(-80,-56),
  ABISELECT(-208,-144),
  (VTBL_ENTRY)&(_ZTI8S3589C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3589C19D1Ev,_ZTv0_n20_N8S3589C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3589C19D0Ev,_ZTv0_n20_N8S3589C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3589C19D1Ev,_ZTv0_n12_N8S3589C19D1Ev)();
extern void ABISELECT(_ZThn128_N8S3589C19D1Ev,_ZThn88_N8S3589C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C19D0Ev,_ZTv0_n12_N8S3589C19D0Ev)();
extern void ABISELECT(_ZThn128_N8S3589C19D0Ev,_ZThn88_N8S3589C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C2__8S3589C19__8S3589C18[] = {
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S3589C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C19D1Ev,_ZTv0_n12_N8S3589C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C19D0Ev,_ZTv0_n12_N8S3589C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3589C19D1Ev,_ZTv0_n12_N8S3589C19D1Ev)();
extern void ABISELECT(_ZThn96_N8S3589C19D1Ev,_ZThn64_N8S3589C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C19D0Ev,_ZTv0_n12_N8S3589C19D0Ev)();
extern void ABISELECT(_ZThn96_N8S3589C19D0Ev,_ZThn64_N8S3589C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__8S3589C19__8S3589C18[] = {
  ABISELECT(-96,-64),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S3589C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C19D1Ev,_ZTv0_n12_N8S3589C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C19D0Ev,_ZTv0_n12_N8S3589C19D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S3589C19D1Ev,_ZTv0_n16_N8S3589C19D1Ev)();
extern void ABISELECT(_ZThn216_N8S3589C19D1Ev,_ZThn148_N8S3589C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3589C19D0Ev,_ZTv0_n16_N8S3589C19D0Ev)();
extern void ABISELECT(_ZThn216_N8S3589C19D0Ev,_ZThn148_N8S3589C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3589C11__8S3589C19__8S3589C18[] = {
  ABISELECT(-216,-148),
  ABISELECT(-120,-84),
  ABISELECT(-216,-148),
  (VTBL_ENTRY)&(_ZTI8S3589C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C19D1Ev,_ZTv0_n16_N8S3589C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C19D0Ev,_ZTv0_n16_N8S3589C19D0Ev),
};
extern void _ZN7S3589C8D1Ev();
extern void _ZN7S3589C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3589C8__A__8S3589C18[] = {
  ABISELECT(16,8),
  ABISELECT(48,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&_ZN7S3589C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3589C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S3589C8D1Ev,_ZThn32_N7S3589C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev)();
extern void ABISELECT(_ZThn48_N7S3589C8D0Ev,_ZThn32_N7S3589C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C2__7S3589C8__A__8S3589C18[] = {
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev)();
extern void ABISELECT(_ZThn16_N7S3589C8D1Ev,_ZThn8_N7S3589C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev)();
extern void ABISELECT(_ZThn16_N7S3589C8D0Ev,_ZThn8_N7S3589C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__7S3589C8__A__8S3589C18[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev),
};
extern void _ZN8S3589C16D1Ev();
extern void _ZN8S3589C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3589C16__8S3589C18[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S3589C16[0]),
  (VTBL_ENTRY)&_ZN8S3589C16D1Ev,
  (VTBL_ENTRY)&_ZN8S3589C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S3589C16D1Ev,_ZTv0_n12_N8S3589C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3589C16D0Ev,_ZTv0_n12_N8S3589C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__8S3589C16__8S3589C18[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S3589C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C16D1Ev,_ZTv0_n12_N8S3589C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C16D0Ev,_ZTv0_n12_N8S3589C16D0Ev),
};
extern void _ZN8S3589C14D1Ev();
extern void _ZN8S3589C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3589C14__8S3589C18[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S3589C14[0]),
  (VTBL_ENTRY)&_ZN8S3589C14D1Ev,
  (VTBL_ENTRY)&_ZN8S3589C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S3589C14D1Ev,_ZTv0_n12_N8S3589C14D1Ev)();
extern void ABISELECT(_ZThn24_N8S3589C14D1Ev,_ZThn12_N8S3589C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C14D0Ev,_ZTv0_n12_N8S3589C14D0Ev)();
extern void ABISELECT(_ZThn24_N8S3589C14D0Ev,_ZThn12_N8S3589C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt__8S3589C14__8S3589C18[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S3589C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C14D1Ev,_ZTv0_n12_N8S3589C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C14D0Ev,_ZTv0_n12_N8S3589C14D0Ev),
};
extern void _ZN7S3589C8D1Ev();
extern void _ZN7S3589C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3589C8__A1__8S3589C18[] = {
  ABISELECT(-112,-80),
  ABISELECT(-80,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&_ZN7S3589C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3589C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C2__7S3589C8__A1__8S3589C18[] = {
  ABISELECT(80,56),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__7S3589C8__A1__8S3589C18[] = {
  ABISELECT(112,80),
  ABISELECT(112,80),
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev),
};
extern void _ZN8S3589C11D1Ev();
extern void _ZN8S3589C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3589C11__8S3589C18[] = {
  ABISELECT(-120,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S3589C11[0]),
  (VTBL_ENTRY)&_ZN8S3589C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3589C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S3589C11D1Ev,_ZTv0_n12_N8S3589C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3589C11D0Ev,_ZTv0_n12_N8S3589C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__8S3589C11__8S3589C18[] = {
  ABISELECT(120,84),
  ABISELECT(120,84),
  (VTBL_ENTRY)&(_ZTI8S3589C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C11D1Ev,_ZTv0_n12_N8S3589C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C11D0Ev,_ZTv0_n12_N8S3589C11D0Ev),
};
static  VTT_ENTRY vtt_S3589C18[] = {
  {&(_ZTV8S3589C18[9]),  9,67},
  {&(_tg__ZTV8S3589C15__8S3589C18[5]),  5,7},
  {&(_tg__ZTV7S3589C88S3589C15__8S3589C18[4]),  4,6},
  {&(_tg__ZTV7S3589C2__7S3589C88S3589C15__8S3589C18[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__7S3589C88S3589C15__8S3589C18[3]),  3,5},
  {&(_tg__ZTV7S3589C2__8S3589C15__8S3589C18[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__8S3589C15__8S3589C18[3]),  3,5},
  {&(_tg__ZTV8S3589C16__8S3589C15__8S3589C18[4]),  4,6},
  {&(_tg__ZTV8S3589C19__8S3589C18[8]),  8,10},
  {&(_tg__ZTV8S3589C128S3589C19__8S3589C18[8]),  8,10},
  {&(_tg__ZTV8S3589C14__8S3589C128S3589C19__8S3589C18[4]),  4,6},
  {&(_tg__ZTV10S3589C9_nt__8S3589C128S3589C19__8S3589C18[3]),  3,5},
  {&(_tg__ZTV7S3589C8__8S3589C128S3589C19__8S3589C18[5]),  5,7},
  {&(_tg__ZTV7S3589C2__8S3589C128S3589C19__8S3589C18[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__8S3589C128S3589C19__8S3589C18[3]),  3,5},
  {&(_tg__ZTV8S3589C11__8S3589C128S3589C19__8S3589C18[4]),  4,6},
  {&(_tg__ZTV8S3589C14__8S3589C19__8S3589C18[4]),  4,6},
  {&(_tg__ZTV10S3589C9_nt__8S3589C19__8S3589C18[3]),  3,5},
  {&(_tg__ZTV7S3589C8__8S3589C19__8S3589C18[5]),  5,7},
  {&(_tg__ZTV7S3589C2__8S3589C19__8S3589C18[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__8S3589C19__8S3589C18[3]),  3,5},
  {&(_tg__ZTV8S3589C11__8S3589C19__8S3589C18[4]),  4,6},
  {&(_tg__ZTV7S3589C8__A__8S3589C18[4]),  4,6},
  {&(_tg__ZTV7S3589C2__7S3589C8__A__8S3589C18[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__7S3589C8__A__8S3589C18[3]),  3,5},
  {&(_ZTV8S3589C18[30]),  30,67},
  {&(_ZTV8S3589C18[36]),  36,67},
  {&(_ZTV8S3589C18[41]),  41,67},
  {&(_ZTV8S3589C18[19]),  19,67},
  {&(_ZTV8S3589C18[47]),  47,67},
  {&(_ZTV8S3589C18[52]),  52,67},
  {&(_ZTV8S3589C18[59]),  59,67},
  {&(_ZTV8S3589C18[65]),  65,67},
  {&(_ZTV8S3589C18[25]),  25,67},
  {&(_tg__ZTV8S3589C16__8S3589C18[3]),  3,5},
  {&(_tg__ZTV7S3589C3__8S3589C16__8S3589C18[3]),  3,5},
  {&(_tg__ZTV8S3589C14__8S3589C18[3]),  3,5},
  {&(_tg__ZTV10S3589C9_nt__8S3589C14__8S3589C18[3]),  3,5},
  {&(_tg__ZTV7S3589C8__A1__8S3589C18[4]),  4,6},
  {&(_tg__ZTV7S3589C2__7S3589C8__A1__8S3589C18[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__7S3589C8__A1__8S3589C18[3]),  3,5},
  {&(_tg__ZTV8S3589C11__8S3589C18[3]),  3,5},
  {&(_tg__ZTV7S3589C3__8S3589C11__8S3589C18[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S3589C18[];
extern  VTBL_ENTRY _ZTV8S3589C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3589C18[];
static VTBL_ENTRY alt_thunk_names52[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3589C14D0Ev,_ZTv0_n12_N8S3589C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S3589C14D0Ev,_ZThn12_N8S3589C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3589C14D1Ev,_ZTv0_n12_N8S3589C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S3589C14D1Ev,_ZThn12_N8S3589C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3589C19D0Ev,_ZTv0_n20_N8S3589C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S3589C19D0Ev,_ZThn144_N8S3589C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3589C19D1Ev,_ZTv0_n20_N8S3589C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S3589C19D1Ev,_ZThn144_N8S3589C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3589C19D0Ev,_ZTv0_n12_N8S3589C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S3589C19D0Ev,_ZThn64_N8S3589C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3589C19D0Ev,_ZThn88_N8S3589C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S3589C19D0Ev,_ZThn128_N8S3589C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3589C19D1Ev,_ZTv0_n12_N8S3589C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S3589C19D1Ev,_ZThn64_N8S3589C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3589C19D1Ev,_ZThn88_N8S3589C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S3589C19D1Ev,_ZThn128_N8S3589C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S3589C19D0Ev,_ZTv0_n16_N8S3589C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S3589C19D0Ev,_ZThn148_N8S3589C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S3589C19D0Ev,_ZThn116_N8S3589C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S3589C19D1Ev,_ZTv0_n16_N8S3589C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S3589C19D1Ev,_ZThn148_N8S3589C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S3589C19D1Ev,_ZThn116_N8S3589C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3589C12D0Ev,_ZTv0_n20_N8S3589C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S3589C12D0Ev,_ZThn144_N8S3589C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3589C12D1Ev,_ZTv0_n20_N8S3589C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S3589C12D1Ev,_ZThn144_N8S3589C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3589C12D0Ev,_ZTv0_n12_N8S3589C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S3589C12D0Ev,_ZThn64_N8S3589C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3589C12D0Ev,_ZThn88_N8S3589C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S3589C12D0Ev,_ZThn128_N8S3589C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3589C12D1Ev,_ZTv0_n12_N8S3589C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S3589C12D1Ev,_ZThn64_N8S3589C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3589C12D1Ev,_ZThn88_N8S3589C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S3589C12D1Ev,_ZThn128_N8S3589C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S3589C12D0Ev,_ZTv0_n16_N8S3589C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S3589C12D0Ev,_ZThn148_N8S3589C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S3589C12D0Ev,_ZThn116_N8S3589C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S3589C12D1Ev,_ZTv0_n16_N8S3589C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S3589C12D1Ev,_ZThn148_N8S3589C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S3589C12D1Ev,_ZThn116_N8S3589C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S3589C15D0Ev,_ZTv0_n16_N8S3589C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S3589C15D0Ev,_ZThn92_N8S3589C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S3589C15D1Ev,_ZTv0_n16_N8S3589C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S3589C15D1Ev,_ZThn92_N8S3589C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3589C15D0Ev,_ZTv0_n12_N8S3589C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3589C15D0Ev,_ZThn80_N8S3589C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S3589C15D0Ev,_ZThn104_N8S3589C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3589C15D1Ev,_ZTv0_n12_N8S3589C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3589C15D1Ev,_ZThn80_N8S3589C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S3589C15D1Ev,_ZThn104_N8S3589C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S3589C8D0Ev,_ZThn8_N7S3589C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S3589C8D0Ev,_ZThn32_N7S3589C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S3589C8D0Ev,_ZThn80_N7S3589C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S3589C8D0Ev,_ZThn104_N7S3589C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S3589C8D1Ev,_ZThn8_N7S3589C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S3589C8D1Ev,_ZThn32_N7S3589C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S3589C8D1Ev,_ZThn80_N7S3589C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S3589C8D1Ev,_ZThn104_N7S3589C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3589C18D0Ev,_ZTv0_n20_N8S3589C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S3589C18D0Ev,_ZThn160_N8S3589C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3589C18D1Ev,_ZTv0_n20_N8S3589C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S3589C18D1Ev,_ZThn160_N8S3589C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S3589C18D0Ev,_ZTv0_n16_N8S3589C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S3589C18D0Ev,_ZThn164_N8S3589C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S3589C18D0Ev,_ZThn132_N8S3589C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S3589C18D0Ev,_ZThn92_N8S3589C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S3589C18D1Ev,_ZTv0_n16_N8S3589C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S3589C18D1Ev,_ZThn164_N8S3589C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S3589C18D1Ev,_ZThn132_N8S3589C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S3589C18D1Ev,_ZThn92_N8S3589C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3589C18D0Ev,_ZTv0_n12_N8S3589C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S3589C18D0Ev,_ZThn144_N8S3589C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S3589C18D0Ev,_ZThn104_N8S3589C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3589C18D0Ev,_ZThn80_N8S3589C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3589C18D1Ev,_ZTv0_n12_N8S3589C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S3589C18D1Ev,_ZThn144_N8S3589C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S3589C18D1Ev,_ZThn104_N8S3589C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3589C18D1Ev,_ZThn80_N8S3589C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3589C18 = {  "S3589C18", // class name
  bases_S3589C18, 15,
  &(vtc_S3589C18[0]), // expected_vtbl_contents
  &(vtt_S3589C18[0]), // expected_vtt_contents
  ABISELECT(256,168), // object size
  NSPAIRA(_ZTI8S3589C18),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S3589C18),67, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3589C18),43, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names52,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3589C1  : S3589C2 , S3589C5 , S3589C16 , S3589C18 , virtual S3589C7 {
  virtual  ~S3589C1(); // _ZN7S3589C1D2Ev
  S3589C1(); // tgen
};
//SIG(1 S3589C1) C1{ BC2{ BC3{ vd m Fc FU4{ m Fc[6]}} vd FL FU4} BC5{ VBC6{ BC7{ VBC8{ VBC2 VBC3 vd} BC3 BC9{ vd m Fi Fc Fi} BC2 Fi Fp} BC8 VBC9} VBC10{ VBC8 BC11{ VBC3} VBC12{ BC13{ m FD} VBC14{ VBC9 Fp[2]} VBC8 BC3 VBC11 Fc Fi} vd} BC15{ BC8 VBC16{ VBC3 Fi FC17{}} vd FD} vd Fi[10] Fp FC15} BC16 BC18{ VBC3 VBC16 BC15 BC19{ BC12 Fs FC11 Fi} BC8 Fi} VBC7 vd}


 S3589C1 ::~S3589C1(){ note_dtor("S3589C1", this);}
S3589C1 ::S3589C1(){ note_ctor("S3589C1", this);} // tgen

static void Test_S3589C1()
{
  extern Class_Descriptor cd_S3589C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(46,127)];
    init_test(&cd_S3589C1, buf);
    S3589C1 *dp, &lv = *(dp=new (buf) S3589C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(720,504), "sizeof(S3589C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3589C1)");
    /*is_ambiguous_... S3589C1::S3589C2 */ AMB_check_base_class_offset(lv, (S3589C3*)(S3589C2*), 0, "S3589C1");
    /*is_ambiguous_... S3589C1::S3589C2 */ AMB_check_base_class_offset(lv, (S3589C2*), 0, "S3589C1");
    /*is_ambiguous_... S3589C1::S3589C2 */ AMB_check_base_class_offset(lv, (S3589C3*)(S3589C2*), ABISELECT(456,320), "S3589C1");
    /*is_ambiguous_... S3589C1::S3589C8 */ AMB_check_base_class_offset(lv, (S3589C2*)(S3589C8*), ABISELECT(456,320), "S3589C1");
    /*is_ambiguous_... S3589C6::S3589C8 */ AMB_check_base_class_offset(lv, (S3589C2*)(S3589C8*)(S3589C6*), ABISELECT(456,320), "S3589C1");
    check_base_class_offset(lv, (S3589C2*)(S3589C8*)(S3589C15*)(S3589C5*), ABISELECT(456,320), "S3589C1");
    check_base_class_offset(lv, (S3589C2*)(S3589C8*)(S3589C15*)(S3589C18*), ABISELECT(456,320), "S3589C1");
    /*is_ambiguous_... S3589C18::S3589C8 */ AMB_check_base_class_offset(lv, (S3589C2*)(S3589C8*)(S3589C18*), ABISELECT(456,320), "S3589C1");
    /*is_ambiguous_... S3589C1::S3589C8 */ AMB_check_base_class_offset(lv, (S3589C3*)(S3589C8*), ABISELECT(488,348), "S3589C1");
    /*is_ambiguous_... S3589C6::S3589C8 */ AMB_check_base_class_offset(lv, (S3589C3*)(S3589C8*)(S3589C6*), ABISELECT(488,348), "S3589C1");
    /*is_ambiguous_... S3589C10::S3589C11 */ AMB_check_base_class_offset(lv, (S3589C3*)(S3589C11*)(S3589C10*), ABISELECT(488,348), "S3589C1");
    /*is_ambiguous_... S3589C1::S3589C11 */ AMB_check_base_class_offset(lv, (S3589C3*)(S3589C11*), ABISELECT(488,348), "S3589C1");
    /*is_ambiguous_... S3589C8::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*)(S3589C8*)(S3589C15*)(S3589C5*), ABISELECT(488,348), "S3589C1");
    /*is_ambiguous_... S3589C1::S3589C16 */ AMB_check_base_class_offset(lv, (S3589C3*)(S3589C16*), ABISELECT(488,348), "S3589C1");
    /*is_ambiguous_... S3589C1::S3589C16 */ AMB_check_base_class_offset(lv, (S3589C3*)(S3589C16*), ABISELECT(488,348), "S3589C1");
    /*is_ambiguous_... S3589C18::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*)(S3589C18*), ABISELECT(488,348), "S3589C1");
    /*is_ambiguous_... S3589C8::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*)(S3589C8*)(S3589C15*)(S3589C18*), ABISELECT(488,348), "S3589C1");
    /*is_ambiguous_... S3589C18::S3589C8 */ AMB_check_base_class_offset(lv, (S3589C3*)(S3589C8*)(S3589C18*), ABISELECT(488,348), "S3589C1");
    check_base_class_offset(lv, (S3589C8*)(S3589C7*)(S3589C6*), ABISELECT(448,316), "S3589C1");
    check_base_class_offset(lv, (S3589C8*)(S3589C10*), ABISELECT(448,316), "S3589C1");
    /*is_ambiguous_... S3589C1::S3589C12 */ AMB_check_base_class_offset(lv, (S3589C8*)(S3589C12*), ABISELECT(448,316), "S3589C1");
    check_base_class_offset(lv, (S3589C8*)(S3589C12*)(S3589C19*)(S3589C18*), ABISELECT(448,316), "S3589C1");
    /*is_ambiguous_... S3589C1::S3589C7 */ AMB_check_base_class_offset(lv, (S3589C8*)(S3589C7*), ABISELECT(448,316), "S3589C1");
    /*is_ambiguous_... S3589C7::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*)(S3589C7*)(S3589C6*), ABISELECT(352,248), "S3589C1");
    check_base_class_offset(lv, (S3589C9_nt*)(S3589C7*)(S3589C6*), ABISELECT(368,260), "S3589C1");
    /*is_ambiguous_... S3589C7::S3589C2 */ AMB_check_base_class_offset(lv, (S3589C3*)(S3589C2*)(S3589C7*)(S3589C6*), ABISELECT(392,276), "S3589C1");
    /*is_ambiguous_... S3589C7::S3589C2 */ AMB_check_base_class_offset(lv, (S3589C2*)(S3589C7*)(S3589C6*), ABISELECT(392,276), "S3589C1");
    check_base_class_offset(lv, (S3589C7*)(S3589C6*), ABISELECT(352,248), "S3589C1");
    /*is_ambiguous_... S3589C6::S3589C8 */ AMB_check_base_class_offset(lv, (S3589C8*)(S3589C6*), ABISELECT(440,312), "S3589C1");
    /*is_ambiguous_... S3589C6::S3589C9_nt */ AMB_check_base_class_offset(lv, (S3589C9_nt*)(S3589C6*), ABISELECT(504,360), "S3589C1");
    check_base_class_offset(lv, (S3589C9_nt*)(S3589C14*), ABISELECT(504,360), "S3589C1");
    check_base_class_offset(lv, (S3589C6*)(S3589C5*), ABISELECT(352,248), "S3589C1");
    /*is_ambiguous_... S3589C10::S3589C11 */ AMB_check_base_class_offset(lv, (S3589C11*)(S3589C10*), ABISELECT(528,376), "S3589C1");
    /*is_ambiguous_... S3589C1::S3589C12 */ AMB_check_base_class_offset(lv, (S3589C13_nt*)(S3589C12*), ABISELECT(560,392), "S3589C1");
    /*is_ambiguous_... S3589C1::S3589C12 */ AMB_check_base_class_offset(lv, (S3589C14*)(S3589C12*), ABISELECT(584,412), "S3589C1");
    check_base_class_offset(lv, (S3589C14*)(S3589C12*)(S3589C19*)(S3589C18*), ABISELECT(584,412), "S3589C1");
    /*is_ambiguous_... S3589C1::S3589C12 */ AMB_check_base_class_offset(lv, (S3589C3*)(S3589C12*), ABISELECT(544,380), "S3589C1");
    /*is_ambiguous_... S3589C1::S3589C12 */ AMB_check_base_class_offset(lv, (S3589C11*)(S3589C12*), ABISELECT(608,424), "S3589C1");
    check_base_class_offset(lv, (S3589C11*)(S3589C12*)(S3589C19*)(S3589C18*), ABISELECT(608,424), "S3589C1");
    check_base_class_offset(lv, (S3589C12*)(S3589C10*), ABISELECT(544,380), "S3589C1");
    check_base_class_offset(lv, (S3589C10*)(S3589C5*), ABISELECT(528,376), "S3589C1");
    check_base_class_offset(lv, (S3589C8*)(S3589C15*)(S3589C5*), ABISELECT(32,28), "S3589C1");
    check_base_class_offset(lv, (S3589C16*)(S3589C15*)(S3589C5*), ABISELECT(616,428), "S3589C1");
    check_base_class_offset(lv, (S3589C16*)(S3589C18*), ABISELECT(616,428), "S3589C1");
    check_base_class_offset(lv, (S3589C16*)(S3589C15*)(S3589C18*), ABISELECT(616,428), "S3589C1");
    check_base_class_offset(lv, (S3589C15*)(S3589C5*), ABISELECT(32,28), "S3589C1");
    check_base_class_offset(lv, (S3589C5*), ABISELECT(32,28), "S3589C1");
    /*is_ambiguous_... S3589C1::S3589C16 */ AMB_check_base_class_offset(lv, (S3589C16*), ABISELECT(208,156), "S3589C1");
    check_base_class_offset(lv, (S3589C8*)(S3589C15*)(S3589C18*), ABISELECT(224,168), "S3589C1");
    check_base_class_offset(lv, (S3589C15*)(S3589C18*), ABISELECT(224,168), "S3589C1");
    check_base_class_offset(lv, (S3589C13_nt*)(S3589C12*)(S3589C19*)(S3589C18*), ABISELECT(272,196), "S3589C1");
    /*is_ambiguous_... S3589C12::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*)(S3589C12*)(S3589C19*)(S3589C18*), ABISELECT(256,184), "S3589C1");
    check_base_class_offset(lv, (S3589C12*)(S3589C19*)(S3589C18*), ABISELECT(256,184), "S3589C1");
    check_base_class_offset(lv, (S3589C19*)(S3589C18*), ABISELECT(256,184), "S3589C1");
    /*is_ambiguous_... S3589C18::S3589C8 */ AMB_check_base_class_offset(lv, (S3589C8*)(S3589C18*), ABISELECT(336,240), "S3589C1");
    check_base_class_offset(lv, (S3589C18*), ABISELECT(224,168), "S3589C1");
    /*is_ambiguous_... S3589C1::S3589C7 */ AMB_check_base_class_offset(lv, (S3589C3*)(S3589C7*), ABISELECT(632,440), "S3589C1");
    /*is_ambiguous_... S3589C1::S3589C7 */ AMB_check_base_class_offset(lv, (S3589C9_nt*)(S3589C7*), ABISELECT(648,452), "S3589C1");
    /*is_ambiguous_... S3589C1::S3589C7 */ AMB_check_base_class_offset(lv, (S3589C3*)(S3589C2*)(S3589C7*), ABISELECT(672,468), "S3589C1");
    /*is_ambiguous_... S3589C1::S3589C7 */ AMB_check_base_class_offset(lv, (S3589C2*)(S3589C7*), ABISELECT(672,468), "S3589C1");
    /*is_ambiguous_... S3589C1::S3589C7 */ AMB_check_base_class_offset(lv, (S3589C7*), ABISELECT(632,440), "S3589C1");
    test_class_info(&lv, &cd_S3589C1);
    dp->~S3589C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3589C1(Test_S3589C1, "S3589C1", ABISELECT(720,504));

#else // __cplusplus

extern void _ZN7S3589C1C1Ev();
extern void _ZN7S3589C1D2Ev();
Name_Map name_map_S3589C1[] = {
  NSPAIR(_ZN7S3589C1C1Ev),
  NSPAIR(_ZN7S3589C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S3589C2;
extern VTBL_ENTRY _ZTI7S3589C2[];
extern  VTBL_ENTRY _ZTV7S3589C2[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S3589C2;
extern VTBL_ENTRY _ZTI7S3589C2[];
extern  VTBL_ENTRY _ZTV7S3589C2[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S3589C8;
extern VTBL_ENTRY _ZTI7S3589C8[];
extern  VTBL_ENTRY _ZTV7S3589C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3589C8[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S3589C9_nt;
extern VTBL_ENTRY _ZTI10S3589C9_nt[];
extern  VTBL_ENTRY _ZTV10S3589C9_nt[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S3589C2;
extern VTBL_ENTRY _ZTI7S3589C2[];
extern  VTBL_ENTRY _ZTV7S3589C2[];
extern Class_Descriptor cd_S3589C7;
extern VTBL_ENTRY _ZTI7S3589C7[];
extern  VTBL_ENTRY _ZTV7S3589C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3589C7[];
extern Class_Descriptor cd_S3589C8;
extern VTBL_ENTRY _ZTI7S3589C8[];
extern  VTBL_ENTRY _ZTV7S3589C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3589C8[];
extern Class_Descriptor cd_S3589C9_nt;
extern VTBL_ENTRY _ZTI10S3589C9_nt[];
extern  VTBL_ENTRY _ZTV10S3589C9_nt[];
extern Class_Descriptor cd_S3589C6;
extern VTBL_ENTRY _ZTI7S3589C6[];
extern  VTBL_ENTRY _ZTV7S3589C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3589C6[];
extern Class_Descriptor cd_S3589C11;
extern VTBL_ENTRY _ZTI8S3589C11[];
extern  VTBL_ENTRY _ZTV8S3589C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3589C11[];
extern Class_Descriptor cd_S3589C13_nt;
extern VTBL_ENTRY _ZTI11S3589C13_nt[];
extern Class_Descriptor cd_S3589C14;
extern VTBL_ENTRY _ZTI8S3589C14[];
extern  VTBL_ENTRY _ZTV8S3589C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3589C14[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S3589C11;
extern VTBL_ENTRY _ZTI8S3589C11[];
extern  VTBL_ENTRY _ZTV8S3589C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3589C11[];
extern Class_Descriptor cd_S3589C12;
extern VTBL_ENTRY _ZTI8S3589C12[];
extern  VTBL_ENTRY _ZTV8S3589C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3589C12[];
extern Class_Descriptor cd_S3589C10;
extern VTBL_ENTRY _ZTI8S3589C10[];
extern  VTBL_ENTRY _ZTV8S3589C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3589C10[];
extern Class_Descriptor cd_S3589C8;
extern VTBL_ENTRY _ZTI7S3589C8[];
extern  VTBL_ENTRY _ZTV7S3589C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3589C8[];
extern Class_Descriptor cd_S3589C16;
extern VTBL_ENTRY _ZTI8S3589C16[];
extern  VTBL_ENTRY _ZTV8S3589C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3589C16[];
extern Class_Descriptor cd_S3589C15;
extern VTBL_ENTRY _ZTI8S3589C15[];
extern  VTBL_ENTRY _ZTV8S3589C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3589C15[];
extern Class_Descriptor cd_S3589C5;
extern VTBL_ENTRY _ZTI7S3589C5[];
extern  VTBL_ENTRY _ZTV7S3589C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3589C5[];
extern Class_Descriptor cd_S3589C16;
extern VTBL_ENTRY _ZTI8S3589C16[];
extern  VTBL_ENTRY _ZTV8S3589C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3589C16[];
extern Class_Descriptor cd_S3589C8;
extern VTBL_ENTRY _ZTI7S3589C8[];
extern  VTBL_ENTRY _ZTV7S3589C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3589C8[];
extern Class_Descriptor cd_S3589C15;
extern VTBL_ENTRY _ZTI8S3589C15[];
extern  VTBL_ENTRY _ZTV8S3589C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3589C15[];
extern Class_Descriptor cd_S3589C13_nt;
extern VTBL_ENTRY _ZTI11S3589C13_nt[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S3589C12;
extern VTBL_ENTRY _ZTI8S3589C12[];
extern  VTBL_ENTRY _ZTV8S3589C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3589C12[];
extern Class_Descriptor cd_S3589C19;
extern VTBL_ENTRY _ZTI8S3589C19[];
extern  VTBL_ENTRY _ZTV8S3589C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3589C19[];
extern Class_Descriptor cd_S3589C8;
extern VTBL_ENTRY _ZTI7S3589C8[];
extern  VTBL_ENTRY _ZTV7S3589C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3589C8[];
extern Class_Descriptor cd_S3589C18;
extern VTBL_ENTRY _ZTI8S3589C18[];
extern  VTBL_ENTRY _ZTV8S3589C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3589C18[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S3589C9_nt;
extern VTBL_ENTRY _ZTI10S3589C9_nt[];
extern  VTBL_ENTRY _ZTV10S3589C9_nt[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S3589C2;
extern VTBL_ENTRY _ZTI7S3589C2[];
extern  VTBL_ENTRY _ZTV7S3589C2[];
extern Class_Descriptor cd_S3589C7;
extern VTBL_ENTRY _ZTI7S3589C7[];
extern  VTBL_ENTRY _ZTV7S3589C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3589C7[];
static Base_Class bases_S3589C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3589C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3589C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3589C3,    ABISELECT(456,320), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S3589C2,    ABISELECT(456,320), //bcp->offset
    91, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S3589C3,    ABISELECT(488,348), //bcp->offset
    96, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S3589C8,    ABISELECT(448,316), //bcp->offset
    84, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    93, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S3589C3,    ABISELECT(352,248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S3589C9_nt,    ABISELECT(368,260), //bcp->offset
    70, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S3589C3,    ABISELECT(392,276), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3589C2,    ABISELECT(392,276), //bcp->offset
    74, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S3589C7,    ABISELECT(352,248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3589C8,    ABISELECT(440,312), //bcp->offset
    78, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    66, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3589C9_nt,    ABISELECT(504,360), //bcp->offset
    101, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    67, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S3589C6,    ABISELECT(352,248), //bcp->offset
    61, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S3589C11,    ABISELECT(528,376), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S3589C13_nt,    ABISELECT(560,392), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S3589C14,    ABISELECT(584,412), //bcp->offset
    129, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    70, //bcp->index_in_construction_vtbl_array
    113, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S3589C3,    ABISELECT(544,380), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S3589C11,    ABISELECT(608,424), //bcp->offset
    135, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    71, //bcp->index_in_construction_vtbl_array
    115, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S3589C12,    ABISELECT(544,380), //bcp->offset
    118, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    69, //bcp->index_in_construction_vtbl_array
    106, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S3589C10,    ABISELECT(528,376), //bcp->offset
    106, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    68, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S3589C8,    ABISELECT(32,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S3589C16,    ABISELECT(616,428), //bcp->offset
    141, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    72, //bcp->index_in_construction_vtbl_array
    117, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S3589C15,    ABISELECT(32,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S3589C5,    ABISELECT(32,28), //bcp->offset
    15, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3589C16,    ABISELECT(208,156), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    73, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3589C8,    ABISELECT(224,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S3589C15,    ABISELECT(224,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S3589C13_nt,    ABISELECT(272,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S3589C3,    ABISELECT(256,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S3589C12,    ABISELECT(256,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S3589C19,    ABISELECT(256,184), //bcp->offset
    45, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    75, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S3589C8,    ABISELECT(336,240), //bcp->offset
    55, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    76, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S3589C18,    ABISELECT(224,168), //bcp->offset
    34, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    74, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3589C3,    ABISELECT(632,440), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S3589C9_nt,    ABISELECT(648,452), //bcp->offset
    155, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    78, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S3589C3,    ABISELECT(672,468), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S3589C2,    ABISELECT(672,468), //bcp->offset
    159, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    79, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S3589C7,    ABISELECT(632,440), //bcp->offset
    147, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    77, //bcp->index_in_construction_vtbl_array
    119, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3589C1[];
extern void _ZN7S3589C1D1Ev();
extern void _ZN7S3589C1D0Ev();
extern void ABISELECT(_ZThn32_N7S3589C1D1Ev,_ZThn28_N7S3589C1D1Ev)();
extern void ABISELECT(_ZThn32_N7S3589C1D0Ev,_ZThn28_N7S3589C1D0Ev)();
extern void ABISELECT(_ZThn208_N7S3589C1D1Ev,_ZThn156_N7S3589C1D1Ev)();
extern void ABISELECT(_ZThn208_N7S3589C1D0Ev,_ZThn156_N7S3589C1D0Ev)();
extern void ABISELECT(_ZThn224_N7S3589C1D1Ev,_ZThn168_N7S3589C1D1Ev)();
extern void ABISELECT(_ZThn224_N7S3589C1D0Ev,_ZThn168_N7S3589C1D0Ev)();
extern void ABISELECT(_ZThn256_N7S3589C1D1Ev,_ZThn184_N7S3589C1D1Ev)();
extern void ABISELECT(_ZThn256_N7S3589C1D0Ev,_ZThn184_N7S3589C1D0Ev)();
extern void ABISELECT(_ZThn336_N7S3589C1D1Ev,_ZThn240_N7S3589C1D1Ev)();
extern void ABISELECT(_ZThn336_N7S3589C1D0Ev,_ZThn240_N7S3589C1D0Ev)();
extern void ABISELECT(_ZTv0_n56_N7S3589C1D1Ev,_ZTv0_n28_N7S3589C1D1Ev)();
extern void ABISELECT(_ZThn352_N7S3589C1D1Ev,_ZThn248_N7S3589C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S3589C1D0Ev,_ZTv0_n28_N7S3589C1D0Ev)();
extern void ABISELECT(_ZThn352_N7S3589C1D0Ev,_ZThn248_N7S3589C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n56_N7S3589C1D1Ev,_ZTvn12_n28_N7S3589C1D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N7S3589C1D0Ev,_ZTvn12_n28_N7S3589C1D0Ev)();
extern void ABISELECT(_ZTvn40_n56_N7S3589C1D1Ev,_ZTvn28_n28_N7S3589C1D1Ev)();
extern void ABISELECT(_ZTvn40_n56_N7S3589C1D0Ev,_ZTvn28_n28_N7S3589C1D0Ev)();
extern void ABISELECT(_ZTvn88_n56_N7S3589C1D1Ev,_ZTvn64_n28_N7S3589C1D1Ev)();
extern void ABISELECT(_ZTvn88_n56_N7S3589C1D0Ev,_ZTvn64_n28_N7S3589C1D0Ev)();
extern void ABISELECT(_ZTv0_n40_N7S3589C1D1Ev,_ZTv0_n20_N7S3589C1D1Ev)();
extern void ABISELECT(_ZThn448_N7S3589C1D1Ev,_ZThn316_N7S3589C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3589C1D0Ev,_ZTv0_n20_N7S3589C1D0Ev)();
extern void ABISELECT(_ZThn448_N7S3589C1D0Ev,_ZThn316_N7S3589C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C1D1Ev,_ZTv0_n12_N7S3589C1D1Ev)();
extern void ABISELECT(_ZThn456_N7S3589C1D1Ev,_ZThn320_N7S3589C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C1D0Ev,_ZTv0_n12_N7S3589C1D0Ev)();
extern void ABISELECT(_ZThn456_N7S3589C1D0Ev,_ZThn320_N7S3589C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C1D1Ev,_ZTv0_n12_N7S3589C1D1Ev)();
extern void ABISELECT(_ZThn488_N7S3589C1D1Ev,_ZThn348_N7S3589C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C1D0Ev,_ZTv0_n12_N7S3589C1D0Ev)();
extern void ABISELECT(_ZThn488_N7S3589C1D0Ev,_ZThn348_N7S3589C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C1D1Ev,_ZTv0_n12_N7S3589C1D1Ev)();
extern void ABISELECT(_ZThn504_N7S3589C1D1Ev,_ZThn360_N7S3589C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C1D0Ev,_ZTv0_n12_N7S3589C1D0Ev)();
extern void ABISELECT(_ZThn504_N7S3589C1D0Ev,_ZThn360_N7S3589C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S3589C1D1Ev,_ZTv0_n40_N7S3589C1D1Ev)();
extern void ABISELECT(_ZThn528_N7S3589C1D1Ev,_ZThn376_N7S3589C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S3589C1D0Ev,_ZTv0_n40_N7S3589C1D0Ev)();
extern void ABISELECT(_ZThn528_N7S3589C1D0Ev,_ZThn376_N7S3589C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S3589C1D1Ev,_ZTv0_n36_N7S3589C1D1Ev)();
extern void ABISELECT(_ZThn544_N7S3589C1D1Ev,_ZThn380_N7S3589C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S3589C1D0Ev,_ZTv0_n36_N7S3589C1D0Ev)();
extern void ABISELECT(_ZThn544_N7S3589C1D0Ev,_ZThn380_N7S3589C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3589C1D1Ev,_ZTv0_n16_N7S3589C1D1Ev)();
extern void ABISELECT(_ZThn584_N7S3589C1D1Ev,_ZThn412_N7S3589C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3589C1D0Ev,_ZTv0_n16_N7S3589C1D0Ev)();
extern void ABISELECT(_ZThn584_N7S3589C1D0Ev,_ZThn412_N7S3589C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3589C1D1Ev,_ZTv0_n16_N7S3589C1D1Ev)();
extern void ABISELECT(_ZThn608_N7S3589C1D1Ev,_ZThn424_N7S3589C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3589C1D0Ev,_ZTv0_n16_N7S3589C1D0Ev)();
extern void ABISELECT(_ZThn608_N7S3589C1D0Ev,_ZThn424_N7S3589C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3589C1D1Ev,_ZTv0_n16_N7S3589C1D1Ev)();
extern void ABISELECT(_ZThn616_N7S3589C1D1Ev,_ZThn428_N7S3589C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3589C1D0Ev,_ZTv0_n16_N7S3589C1D0Ev)();
extern void ABISELECT(_ZThn616_N7S3589C1D0Ev,_ZThn428_N7S3589C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3589C1D1Ev,_ZTv0_n24_N7S3589C1D1Ev)();
extern void ABISELECT(_ZThn632_N7S3589C1D1Ev,_ZThn440_N7S3589C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3589C1D0Ev,_ZTv0_n24_N7S3589C1D0Ev)();
extern void ABISELECT(_ZThn632_N7S3589C1D0Ev,_ZThn440_N7S3589C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N7S3589C1D1Ev,_ZTvn12_n24_N7S3589C1D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N7S3589C1D0Ev,_ZTvn12_n24_N7S3589C1D0Ev)();
extern void ABISELECT(_ZTvn40_n48_N7S3589C1D1Ev,_ZTvn28_n24_N7S3589C1D1Ev)();
extern void ABISELECT(_ZTvn40_n48_N7S3589C1D0Ev,_ZTvn28_n24_N7S3589C1D0Ev)();
static  VTBL_ENTRY vtc_S3589C1[] = {
  ABISELECT(632,440),
  ABISELECT(616,428),
  ABISELECT(608,424),
  ABISELECT(584,412),
  ABISELECT(544,380),
  ABISELECT(528,376),
  ABISELECT(504,360),
  ABISELECT(488,348),
  ABISELECT(456,320),
  ABISELECT(448,316),
  ABISELECT(352,248),
  0,
  (VTBL_ENTRY)&(_ZTI7S3589C1[0]),
  (VTBL_ENTRY)&_ZN7S3589C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3589C1D0Ev,
  ABISELECT(576,396),
  ABISELECT(552,384),
  ABISELECT(512,352),
  ABISELECT(496,348),
  ABISELECT(472,332),
  ABISELECT(416,288),
  ABISELECT(320,220),
  ABISELECT(584,400),
  ABISELECT(456,320),
  ABISELECT(424,292),
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI7S3589C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S3589C1D1Ev,_ZThn28_N7S3589C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S3589C1D0Ev,_ZThn28_N7S3589C1D0Ev),
  ABISELECT(280,192),
  ABISELECT(-208,-156),
  (VTBL_ENTRY)&(_ZTI7S3589C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N7S3589C1D1Ev,_ZThn156_N7S3589C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N7S3589C1D0Ev,_ZThn156_N7S3589C1D0Ev),
  ABISELECT(384,256),
  ABISELECT(224,148),
  ABISELECT(280,192),
  ABISELECT(360,244),
  ABISELECT(392,260),
  ABISELECT(264,180),
  ABISELECT(232,152),
  ABISELECT(-224,-168),
  (VTBL_ENTRY)&(_ZTI7S3589C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn224_N7S3589C1D1Ev,_ZThn168_N7S3589C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn224_N7S3589C1D0Ev,_ZThn168_N7S3589C1D0Ev),
  ABISELECT(352,240),
  ABISELECT(232,164),
  ABISELECT(200,136),
  ABISELECT(192,132),
  ABISELECT(248,176),
  ABISELECT(328,228),
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI7S3589C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S3589C1D1Ev,_ZThn184_N7S3589C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S3589C1D0Ev,_ZThn184_N7S3589C1D0Ev),
  ABISELECT(152,108),
  ABISELECT(120,80),
  ABISELECT(-336,-240),
  (VTBL_ENTRY)&(_ZTI7S3589C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N7S3589C1D1Ev,_ZThn240_N7S3589C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N7S3589C1D0Ev,_ZThn240_N7S3589C1D0Ev),
  ABISELECT(-352,-248),
  ABISELECT(152,112),
  ABISELECT(136,100),
  ABISELECT(104,72),
  ABISELECT(96,68),
  ABISELECT(-352,-248),
  (VTBL_ENTRY)&(_ZTI7S3589C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3589C1D1Ev,_ZTv0_n28_N7S3589C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3589C1D0Ev,_ZTv0_n28_N7S3589C1D0Ev),
  ABISELECT(-368,-260),
  (VTBL_ENTRY)&(_ZTI7S3589C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N7S3589C1D1Ev,_ZTvn12_n28_N7S3589C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N7S3589C1D0Ev,_ZTvn12_n28_N7S3589C1D0Ev),
  ABISELECT(-392,-276),
  (VTBL_ENTRY)&(_ZTI7S3589C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n56_N7S3589C1D1Ev,_ZTvn28_n28_N7S3589C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n56_N7S3589C1D0Ev,_ZTvn28_n28_N7S3589C1D0Ev),
  ABISELECT(48,36),
  ABISELECT(16,8),
  ABISELECT(-440,-312),
  (VTBL_ENTRY)&(_ZTI7S3589C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn88_n56_N7S3589C1D1Ev,_ZTvn64_n28_N7S3589C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn88_n56_N7S3589C1D0Ev,_ZTvn64_n28_N7S3589C1D0Ev),
  ABISELECT(-448,-316),
  ABISELECT(40,32),
  ABISELECT(8,4),
  ABISELECT(-448,-316),
  (VTBL_ENTRY)&(_ZTI7S3589C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3589C1D1Ev,_ZTv0_n20_N7S3589C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3589C1D0Ev,_ZTv0_n20_N7S3589C1D0Ev),
  ABISELECT(-456,-320),
  ABISELECT(-456,-320),
  (VTBL_ENTRY)&(_ZTI7S3589C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C1D1Ev,_ZTv0_n12_N7S3589C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C1D0Ev,_ZTv0_n12_N7S3589C1D0Ev),
  ABISELECT(-488,-348),
  ABISELECT(-488,-348),
  (VTBL_ENTRY)&(_ZTI7S3589C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C1D1Ev,_ZTv0_n12_N7S3589C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C1D0Ev,_ZTv0_n12_N7S3589C1D0Ev),
  ABISELECT(-504,-360),
  ABISELECT(-504,-360),
  (VTBL_ENTRY)&(_ZTI7S3589C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C1D1Ev,_ZTv0_n12_N7S3589C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C1D0Ev,_ZTv0_n12_N7S3589C1D0Ev),
  ABISELECT(-528,-376),
  ABISELECT(80,48),
  ABISELECT(-24,-16),
  ABISELECT(56,36),
  ABISELECT(16,4),
  ABISELECT(-72,-56),
  ABISELECT(-80,-60),
  ABISELECT(-40,-28),
  ABISELECT(-528,-376),
  (VTBL_ENTRY)&(_ZTI7S3589C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S3589C1D1Ev,_ZTv0_n40_N7S3589C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S3589C1D0Ev,_ZTv0_n40_N7S3589C1D0Ev),
  ABISELECT(-544,-380),
  ABISELECT(64,44),
  ABISELECT(-56,-32),
  ABISELECT(-88,-60),
  ABISELECT(-96,-64),
  ABISELECT(-40,-20),
  ABISELECT(40,32),
  ABISELECT(-544,-380),
  (VTBL_ENTRY)&(_ZTI7S3589C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S3589C1D1Ev,_ZTv0_n36_N7S3589C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S3589C1D0Ev,_ZTv0_n36_N7S3589C1D0Ev),
  ABISELECT(-584,-412),
  ABISELECT(-80,-52),
  ABISELECT(-584,-412),
  (VTBL_ENTRY)&(_ZTI7S3589C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3589C1D1Ev,_ZTv0_n16_N7S3589C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3589C1D0Ev,_ZTv0_n16_N7S3589C1D0Ev),
  ABISELECT(-608,-424),
  ABISELECT(-120,-76),
  ABISELECT(-608,-424),
  (VTBL_ENTRY)&(_ZTI7S3589C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3589C1D1Ev,_ZTv0_n16_N7S3589C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3589C1D0Ev,_ZTv0_n16_N7S3589C1D0Ev),
  ABISELECT(-616,-428),
  ABISELECT(-128,-80),
  ABISELECT(-616,-428),
  (VTBL_ENTRY)&(_ZTI7S3589C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3589C1D1Ev,_ZTv0_n16_N7S3589C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3589C1D0Ev,_ZTv0_n16_N7S3589C1D0Ev),
  ABISELECT(-632,-440),
  ABISELECT(-144,-92),
  ABISELECT(-176,-120),
  ABISELECT(-184,-124),
  ABISELECT(-632,-440),
  (VTBL_ENTRY)&(_ZTI7S3589C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3589C1D1Ev,_ZTv0_n24_N7S3589C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3589C1D0Ev,_ZTv0_n24_N7S3589C1D0Ev),
  ABISELECT(-648,-452),
  (VTBL_ENTRY)&(_ZTI7S3589C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S3589C1D1Ev,_ZTvn12_n24_N7S3589C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S3589C1D0Ev,_ZTvn12_n24_N7S3589C1D0Ev),
  ABISELECT(-672,-468),
  (VTBL_ENTRY)&(_ZTI7S3589C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n48_N7S3589C1D1Ev,_ZTvn28_n24_N7S3589C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n48_N7S3589C1D0Ev,_ZTvn28_n24_N7S3589C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S3589C1[];
extern void _ZN7S3589C5D1Ev();
extern void _ZN7S3589C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3589C5__7S3589C1[] = {
  ABISELECT(576,396),
  ABISELECT(552,384),
  ABISELECT(512,352),
  ABISELECT(496,348),
  ABISELECT(472,332),
  ABISELECT(416,288),
  ABISELECT(320,220),
  ABISELECT(584,400),
  ABISELECT(456,320),
  ABISELECT(424,292),
  0,
  (VTBL_ENTRY)&(_ZTI7S3589C5[0]),
  (VTBL_ENTRY)&_ZN7S3589C5D1Ev,
  (VTBL_ENTRY)&_ZN7S3589C5D0Ev,
};
extern void _ZN8S3589C15D1Ev();
extern void _ZN8S3589C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3589C157S3589C5__7S3589C1[] = {
  ABISELECT(584,400),
  ABISELECT(456,320),
  ABISELECT(424,292),
  0,
  (VTBL_ENTRY)&(_ZTI8S3589C15[0]),
  (VTBL_ENTRY)&_ZN8S3589C15D1Ev,
  (VTBL_ENTRY)&_ZN8S3589C15D0Ev,
};
extern void _ZN7S3589C8D1Ev();
extern void _ZN7S3589C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3589C88S3589C157S3589C5__A2__7S3589C1[] = {
  ABISELECT(456,320),
  ABISELECT(424,292),
  0,
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&_ZN7S3589C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3589C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev)();
extern void ABISELECT(_ZThn424_N7S3589C8D1Ev,_ZThn292_N7S3589C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev)();
extern void ABISELECT(_ZThn424_N7S3589C8D0Ev,_ZThn292_N7S3589C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C2__7S3589C88S3589C157S3589C5__A2__7S3589C1[] = {
  ABISELECT(-424,-292),
  ABISELECT(-424,-292),
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev)();
extern void ABISELECT(_ZThn456_N7S3589C8D1Ev,_ZThn320_N7S3589C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev)();
extern void ABISELECT(_ZThn456_N7S3589C8D0Ev,_ZThn320_N7S3589C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__7S3589C88S3589C157S3589C5__A2__7S3589C1[] = {
  ABISELECT(-456,-320),
  ABISELECT(-456,-320),
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3589C15D1Ev,_ZTv0_n12_N8S3589C15D1Ev)();
extern void ABISELECT(_ZThn424_N8S3589C15D1Ev,_ZThn292_N8S3589C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C15D0Ev,_ZTv0_n12_N8S3589C15D0Ev)();
extern void ABISELECT(_ZThn424_N8S3589C15D0Ev,_ZThn292_N8S3589C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C2__8S3589C157S3589C5__7S3589C1[] = {
  ABISELECT(-424,-292),
  ABISELECT(-424,-292),
  (VTBL_ENTRY)&(_ZTI8S3589C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C15D1Ev,_ZTv0_n12_N8S3589C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C15D0Ev,_ZTv0_n12_N8S3589C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3589C15D1Ev,_ZTv0_n12_N8S3589C15D1Ev)();
extern void ABISELECT(_ZThn456_N8S3589C15D1Ev,_ZThn320_N8S3589C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C15D0Ev,_ZTv0_n12_N8S3589C15D0Ev)();
extern void ABISELECT(_ZThn456_N8S3589C15D0Ev,_ZThn320_N8S3589C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__8S3589C157S3589C5__7S3589C1[] = {
  ABISELECT(-456,-320),
  ABISELECT(-456,-320),
  (VTBL_ENTRY)&(_ZTI8S3589C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C15D1Ev,_ZTv0_n12_N8S3589C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C15D0Ev,_ZTv0_n12_N8S3589C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S3589C15D1Ev,_ZTv0_n16_N8S3589C15D1Ev)();
extern void ABISELECT(_ZThn584_N8S3589C15D1Ev,_ZThn400_N8S3589C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3589C15D0Ev,_ZTv0_n16_N8S3589C15D0Ev)();
extern void ABISELECT(_ZThn584_N8S3589C15D0Ev,_ZThn400_N8S3589C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3589C16__8S3589C157S3589C5__7S3589C1[] = {
  ABISELECT(-584,-400),
  ABISELECT(-128,-80),
  ABISELECT(-584,-400),
  (VTBL_ENTRY)&(_ZTI8S3589C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C15D1Ev,_ZTv0_n16_N8S3589C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C15D0Ev,_ZTv0_n16_N8S3589C15D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N7S3589C5D1Ev,_ZTv0_n28_N7S3589C5D1Ev)();
extern void ABISELECT(_ZThn320_N7S3589C5D1Ev,_ZThn220_N7S3589C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S3589C5D0Ev,_ZTv0_n28_N7S3589C5D0Ev)();
extern void ABISELECT(_ZThn320_N7S3589C5D0Ev,_ZThn220_N7S3589C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C6__7S3589C5__7S3589C1[] = {
  ABISELECT(-320,-220),
  ABISELECT(152,112),
  ABISELECT(136,100),
  ABISELECT(104,72),
  ABISELECT(96,68),
  ABISELECT(-320,-220),
  (VTBL_ENTRY)&(_ZTI7S3589C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3589C5D1Ev,_ZTv0_n28_N7S3589C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3589C5D0Ev,_ZTv0_n28_N7S3589C5D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S3589C5D1Ev,_ZTv0_n20_N7S3589C5D1Ev)();
extern void ABISELECT(_ZThn416_N7S3589C5D1Ev,_ZThn288_N7S3589C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3589C5D0Ev,_ZTv0_n20_N7S3589C5D0Ev)();
extern void ABISELECT(_ZThn416_N7S3589C5D0Ev,_ZThn288_N7S3589C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C8__7S3589C5__7S3589C1[] = {
  ABISELECT(-416,-288),
  ABISELECT(40,32),
  ABISELECT(8,4),
  ABISELECT(-416,-288),
  (VTBL_ENTRY)&(_ZTI7S3589C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3589C5D1Ev,_ZTv0_n20_N7S3589C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3589C5D0Ev,_ZTv0_n20_N7S3589C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3589C5D1Ev,_ZTv0_n12_N7S3589C5D1Ev)();
extern void ABISELECT(_ZThn424_N7S3589C5D1Ev,_ZThn292_N7S3589C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C5D0Ev,_ZTv0_n12_N7S3589C5D0Ev)();
extern void ABISELECT(_ZThn424_N7S3589C5D0Ev,_ZThn292_N7S3589C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C2__7S3589C5__7S3589C1[] = {
  ABISELECT(-424,-292),
  ABISELECT(-424,-292),
  (VTBL_ENTRY)&(_ZTI7S3589C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C5D1Ev,_ZTv0_n12_N7S3589C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C5D0Ev,_ZTv0_n12_N7S3589C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3589C5D1Ev,_ZTv0_n12_N7S3589C5D1Ev)();
extern void ABISELECT(_ZThn456_N7S3589C5D1Ev,_ZThn320_N7S3589C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C5D0Ev,_ZTv0_n12_N7S3589C5D0Ev)();
extern void ABISELECT(_ZThn456_N7S3589C5D0Ev,_ZThn320_N7S3589C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__7S3589C5__7S3589C1[] = {
  ABISELECT(-456,-320),
  ABISELECT(-456,-320),
  (VTBL_ENTRY)&(_ZTI7S3589C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C5D1Ev,_ZTv0_n12_N7S3589C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C5D0Ev,_ZTv0_n12_N7S3589C5D0Ev),
};
extern void ABISELECT(_ZTvn16_n56_N7S3589C5D1Ev,_ZTvn12_n28_N7S3589C5D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N7S3589C5D0Ev,_ZTvn12_n28_N7S3589C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt7S3589C77S3589C6__7S3589C5__7S3589C1[] = {
  ABISELECT(-336,-232),
  (VTBL_ENTRY)&(_ZTI7S3589C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N7S3589C5D1Ev,_ZTvn12_n28_N7S3589C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N7S3589C5D0Ev,_ZTvn12_n28_N7S3589C5D0Ev),
};
extern void ABISELECT(_ZTvn40_n56_N7S3589C5D1Ev,_ZTvn28_n28_N7S3589C5D1Ev)();
extern void ABISELECT(_ZTvn40_n56_N7S3589C5D0Ev,_ZTvn28_n28_N7S3589C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C27S3589C77S3589C6__A1__7S3589C5__7S3589C1[] = {
  ABISELECT(-360,-248),
  (VTBL_ENTRY)&(_ZTI7S3589C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n56_N7S3589C5D1Ev,_ZTvn28_n28_N7S3589C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n56_N7S3589C5D0Ev,_ZTvn28_n28_N7S3589C5D0Ev),
};
extern void ABISELECT(_ZTvn88_n56_N7S3589C5D1Ev,_ZTvn64_n28_N7S3589C5D1Ev)();
extern void ABISELECT(_ZTvn88_n56_N7S3589C5D0Ev,_ZTvn64_n28_N7S3589C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C87S3589C6__A1__7S3589C5__7S3589C1[] = {
  ABISELECT(48,36),
  ABISELECT(16,8),
  ABISELECT(-408,-284),
  (VTBL_ENTRY)&(_ZTI7S3589C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn88_n56_N7S3589C5D1Ev,_ZTvn64_n28_N7S3589C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn88_n56_N7S3589C5D0Ev,_ZTvn64_n28_N7S3589C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3589C5D1Ev,_ZTv0_n12_N7S3589C5D1Ev)();
extern void ABISELECT(_ZThn472_N7S3589C5D1Ev,_ZThn332_N7S3589C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C5D0Ev,_ZTv0_n12_N7S3589C5D0Ev)();
extern void ABISELECT(_ZThn472_N7S3589C5D0Ev,_ZThn332_N7S3589C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt__A1__7S3589C5__7S3589C1[] = {
  ABISELECT(-472,-332),
  ABISELECT(-472,-332),
  (VTBL_ENTRY)&(_ZTI7S3589C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C5D1Ev,_ZTv0_n12_N7S3589C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C5D0Ev,_ZTv0_n12_N7S3589C5D0Ev),
};
extern void ABISELECT(_ZTv0_n80_N7S3589C5D1Ev,_ZTv0_n40_N7S3589C5D1Ev)();
extern void ABISELECT(_ZThn496_N7S3589C5D1Ev,_ZThn348_N7S3589C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S3589C5D0Ev,_ZTv0_n40_N7S3589C5D0Ev)();
extern void ABISELECT(_ZThn496_N7S3589C5D0Ev,_ZThn348_N7S3589C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3589C10__7S3589C5__7S3589C1[] = {
  ABISELECT(-496,-348),
  ABISELECT(80,48),
  ABISELECT(-24,-16),
  ABISELECT(56,36),
  ABISELECT(16,4),
  ABISELECT(-72,-56),
  ABISELECT(-80,-60),
  ABISELECT(-40,-28),
  ABISELECT(-496,-348),
  (VTBL_ENTRY)&(_ZTI7S3589C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S3589C5D1Ev,_ZTv0_n40_N7S3589C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S3589C5D0Ev,_ZTv0_n40_N7S3589C5D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N7S3589C5D1Ev,_ZTv0_n36_N7S3589C5D1Ev)();
extern void ABISELECT(_ZThn512_N7S3589C5D1Ev,_ZThn352_N7S3589C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S3589C5D0Ev,_ZTv0_n36_N7S3589C5D0Ev)();
extern void ABISELECT(_ZThn512_N7S3589C5D0Ev,_ZThn352_N7S3589C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3589C12__7S3589C5__7S3589C1[] = {
  ABISELECT(-512,-352),
  ABISELECT(64,44),
  ABISELECT(-56,-32),
  ABISELECT(-88,-60),
  ABISELECT(-96,-64),
  ABISELECT(-40,-20),
  ABISELECT(40,32),
  ABISELECT(-512,-352),
  (VTBL_ENTRY)&(_ZTI7S3589C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S3589C5D1Ev,_ZTv0_n36_N7S3589C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S3589C5D0Ev,_ZTv0_n36_N7S3589C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S3589C5D1Ev,_ZTv0_n16_N7S3589C5D1Ev)();
extern void ABISELECT(_ZThn552_N7S3589C5D1Ev,_ZThn384_N7S3589C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3589C5D0Ev,_ZTv0_n16_N7S3589C5D0Ev)();
extern void ABISELECT(_ZThn552_N7S3589C5D0Ev,_ZThn384_N7S3589C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3589C14__7S3589C5__7S3589C1[] = {
  ABISELECT(-552,-384),
  ABISELECT(-80,-52),
  ABISELECT(-552,-384),
  (VTBL_ENTRY)&(_ZTI7S3589C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3589C5D1Ev,_ZTv0_n16_N7S3589C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3589C5D0Ev,_ZTv0_n16_N7S3589C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S3589C5D1Ev,_ZTv0_n16_N7S3589C5D1Ev)();
extern void ABISELECT(_ZThn576_N7S3589C5D1Ev,_ZThn396_N7S3589C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3589C5D0Ev,_ZTv0_n16_N7S3589C5D0Ev)();
extern void ABISELECT(_ZThn576_N7S3589C5D0Ev,_ZThn396_N7S3589C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3589C11__A1__7S3589C5__7S3589C1[] = {
  ABISELECT(-576,-396),
  ABISELECT(-120,-76),
  ABISELECT(-576,-396),
  (VTBL_ENTRY)&(_ZTI7S3589C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3589C5D1Ev,_ZTv0_n16_N7S3589C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3589C5D0Ev,_ZTv0_n16_N7S3589C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S3589C5D1Ev,_ZTv0_n16_N7S3589C5D1Ev)();
extern void ABISELECT(_ZThn584_N7S3589C5D1Ev,_ZThn400_N7S3589C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3589C5D0Ev,_ZTv0_n16_N7S3589C5D0Ev)();
extern void ABISELECT(_ZThn584_N7S3589C5D0Ev,_ZThn400_N7S3589C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3589C16__7S3589C5__7S3589C1[] = {
  ABISELECT(-584,-400),
  ABISELECT(-128,-80),
  ABISELECT(-584,-400),
  (VTBL_ENTRY)&(_ZTI7S3589C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3589C5D1Ev,_ZTv0_n16_N7S3589C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3589C5D0Ev,_ZTv0_n16_N7S3589C5D0Ev),
};
extern void _ZN8S3589C16D1Ev();
extern void _ZN8S3589C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3589C16__A__7S3589C1[] = {
  ABISELECT(280,192),
  0,
  (VTBL_ENTRY)&(_ZTI8S3589C16[0]),
  (VTBL_ENTRY)&_ZN8S3589C16D1Ev,
  (VTBL_ENTRY)&_ZN8S3589C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S3589C16D1Ev,_ZTv0_n12_N8S3589C16D1Ev)();
extern void ABISELECT(_ZThn280_N8S3589C16D1Ev,_ZThn192_N8S3589C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C16D0Ev,_ZTv0_n12_N8S3589C16D0Ev)();
extern void ABISELECT(_ZThn280_N8S3589C16D0Ev,_ZThn192_N8S3589C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__8S3589C16__A__7S3589C1[] = {
  ABISELECT(-280,-192),
  ABISELECT(-280,-192),
  (VTBL_ENTRY)&(_ZTI8S3589C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C16D1Ev,_ZTv0_n12_N8S3589C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C16D0Ev,_ZTv0_n12_N8S3589C16D0Ev),
};
extern void _ZN8S3589C18D1Ev();
extern void _ZN8S3589C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3589C18__7S3589C1[] = {
  ABISELECT(384,256),
  ABISELECT(224,148),
  ABISELECT(280,192),
  ABISELECT(360,244),
  ABISELECT(392,260),
  ABISELECT(264,180),
  ABISELECT(232,152),
  0,
  (VTBL_ENTRY)&(_ZTI8S3589C18[0]),
  (VTBL_ENTRY)&_ZN8S3589C18D1Ev,
  (VTBL_ENTRY)&_ZN8S3589C18D0Ev,
};
extern void _ZN8S3589C15D1Ev();
extern void _ZN8S3589C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3589C158S3589C18__A1__7S3589C1[] = {
  ABISELECT(392,260),
  ABISELECT(264,180),
  ABISELECT(232,152),
  0,
  (VTBL_ENTRY)&(_ZTI8S3589C15[0]),
  (VTBL_ENTRY)&_ZN8S3589C15D1Ev,
  (VTBL_ENTRY)&_ZN8S3589C15D0Ev,
};
extern void _ZN7S3589C8D1Ev();
extern void _ZN7S3589C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3589C88S3589C158S3589C18__A3__7S3589C1[] = {
  ABISELECT(264,180),
  ABISELECT(232,152),
  0,
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&_ZN7S3589C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3589C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev)();
extern void ABISELECT(_ZThn232_N7S3589C8D1Ev,_ZThn152_N7S3589C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev)();
extern void ABISELECT(_ZThn232_N7S3589C8D0Ev,_ZThn152_N7S3589C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C2__7S3589C88S3589C158S3589C18__A3__7S3589C1[] = {
  ABISELECT(-232,-152),
  ABISELECT(-232,-152),
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev)();
extern void ABISELECT(_ZThn264_N7S3589C8D1Ev,_ZThn180_N7S3589C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev)();
extern void ABISELECT(_ZThn264_N7S3589C8D0Ev,_ZThn180_N7S3589C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__7S3589C88S3589C158S3589C18__A3__7S3589C1[] = {
  ABISELECT(-264,-180),
  ABISELECT(-264,-180),
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3589C15D1Ev,_ZTv0_n12_N8S3589C15D1Ev)();
extern void ABISELECT(_ZThn232_N8S3589C15D1Ev,_ZThn152_N8S3589C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C15D0Ev,_ZTv0_n12_N8S3589C15D0Ev)();
extern void ABISELECT(_ZThn232_N8S3589C15D0Ev,_ZThn152_N8S3589C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C2__8S3589C158S3589C18__A1__7S3589C1[] = {
  ABISELECT(-232,-152),
  ABISELECT(-232,-152),
  (VTBL_ENTRY)&(_ZTI8S3589C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C15D1Ev,_ZTv0_n12_N8S3589C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C15D0Ev,_ZTv0_n12_N8S3589C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3589C15D1Ev,_ZTv0_n12_N8S3589C15D1Ev)();
extern void ABISELECT(_ZThn264_N8S3589C15D1Ev,_ZThn180_N8S3589C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C15D0Ev,_ZTv0_n12_N8S3589C15D0Ev)();
extern void ABISELECT(_ZThn264_N8S3589C15D0Ev,_ZThn180_N8S3589C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__8S3589C158S3589C18__A1__7S3589C1[] = {
  ABISELECT(-264,-180),
  ABISELECT(-264,-180),
  (VTBL_ENTRY)&(_ZTI8S3589C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C15D1Ev,_ZTv0_n12_N8S3589C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C15D0Ev,_ZTv0_n12_N8S3589C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S3589C15D1Ev,_ZTv0_n16_N8S3589C15D1Ev)();
extern void ABISELECT(_ZThn392_N8S3589C15D1Ev,_ZThn260_N8S3589C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3589C15D0Ev,_ZTv0_n16_N8S3589C15D0Ev)();
extern void ABISELECT(_ZThn392_N8S3589C15D0Ev,_ZThn260_N8S3589C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3589C16__8S3589C158S3589C18__A1__7S3589C1[] = {
  ABISELECT(-392,-260),
  ABISELECT(-128,-80),
  ABISELECT(-392,-260),
  (VTBL_ENTRY)&(_ZTI8S3589C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C15D1Ev,_ZTv0_n16_N8S3589C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C15D0Ev,_ZTv0_n16_N8S3589C15D0Ev),
};
extern void _ZN8S3589C19D1Ev();
extern void _ZN8S3589C19D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3589C198S3589C18__7S3589C1[] = {
  ABISELECT(352,240),
  ABISELECT(232,164),
  ABISELECT(200,136),
  ABISELECT(192,132),
  ABISELECT(248,176),
  ABISELECT(328,228),
  0,
  (VTBL_ENTRY)&(_ZTI8S3589C19[0]),
  (VTBL_ENTRY)&_ZN8S3589C19D1Ev,
  (VTBL_ENTRY)&_ZN8S3589C19D0Ev,
};
extern void _ZN8S3589C12D1Ev();
extern void _ZN8S3589C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3589C128S3589C198S3589C18__A1__7S3589C1[] = {
  ABISELECT(352,240),
  ABISELECT(232,164),
  ABISELECT(200,136),
  ABISELECT(192,132),
  ABISELECT(248,176),
  ABISELECT(328,228),
  0,
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&_ZN8S3589C12D1Ev,
  (VTBL_ENTRY)&_ZN8S3589C12D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S3589C12D1Ev,_ZTv0_n16_N8S3589C12D1Ev)();
extern void ABISELECT(_ZThn328_N8S3589C12D1Ev,_ZThn228_N8S3589C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3589C12D0Ev,_ZTv0_n16_N8S3589C12D0Ev)();
extern void ABISELECT(_ZThn328_N8S3589C12D0Ev,_ZThn228_N8S3589C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3589C14__8S3589C128S3589C198S3589C18__A1__7S3589C1[] = {
  ABISELECT(-328,-228),
  ABISELECT(-80,-52),
  ABISELECT(-328,-228),
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C12D1Ev,_ZTv0_n16_N8S3589C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C12D0Ev,_ZTv0_n16_N8S3589C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3589C12D1Ev,_ZTv0_n12_N8S3589C12D1Ev)();
extern void ABISELECT(_ZThn248_N8S3589C12D1Ev,_ZThn176_N8S3589C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C12D0Ev,_ZTv0_n12_N8S3589C12D0Ev)();
extern void ABISELECT(_ZThn248_N8S3589C12D0Ev,_ZThn176_N8S3589C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt__8S3589C128S3589C198S3589C18__A1__7S3589C1[] = {
  ABISELECT(-248,-176),
  ABISELECT(-248,-176),
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C12D1Ev,_ZTv0_n12_N8S3589C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C12D0Ev,_ZTv0_n12_N8S3589C12D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3589C12D1Ev,_ZTv0_n20_N8S3589C12D1Ev)();
extern void ABISELECT(_ZThn192_N8S3589C12D1Ev,_ZThn132_N8S3589C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3589C12D0Ev,_ZTv0_n20_N8S3589C12D0Ev)();
extern void ABISELECT(_ZThn192_N8S3589C12D0Ev,_ZThn132_N8S3589C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C8__8S3589C128S3589C198S3589C18__A1__7S3589C1[] = {
  ABISELECT(-192,-132),
  ABISELECT(40,32),
  ABISELECT(8,4),
  ABISELECT(-192,-132),
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3589C12D1Ev,_ZTv0_n20_N8S3589C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3589C12D0Ev,_ZTv0_n20_N8S3589C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3589C12D1Ev,_ZTv0_n12_N8S3589C12D1Ev)();
extern void ABISELECT(_ZThn200_N8S3589C12D1Ev,_ZThn136_N8S3589C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C12D0Ev,_ZTv0_n12_N8S3589C12D0Ev)();
extern void ABISELECT(_ZThn200_N8S3589C12D0Ev,_ZThn136_N8S3589C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C2__8S3589C128S3589C198S3589C18__A1__7S3589C1[] = {
  ABISELECT(-200,-136),
  ABISELECT(-200,-136),
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C12D1Ev,_ZTv0_n12_N8S3589C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C12D0Ev,_ZTv0_n12_N8S3589C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3589C12D1Ev,_ZTv0_n12_N8S3589C12D1Ev)();
extern void ABISELECT(_ZThn232_N8S3589C12D1Ev,_ZThn164_N8S3589C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C12D0Ev,_ZTv0_n12_N8S3589C12D0Ev)();
extern void ABISELECT(_ZThn232_N8S3589C12D0Ev,_ZThn164_N8S3589C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__8S3589C128S3589C198S3589C18__A1__7S3589C1[] = {
  ABISELECT(-232,-164),
  ABISELECT(-232,-164),
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C12D1Ev,_ZTv0_n12_N8S3589C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C12D0Ev,_ZTv0_n12_N8S3589C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S3589C12D1Ev,_ZTv0_n16_N8S3589C12D1Ev)();
extern void ABISELECT(_ZThn352_N8S3589C12D1Ev,_ZThn240_N8S3589C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3589C12D0Ev,_ZTv0_n16_N8S3589C12D0Ev)();
extern void ABISELECT(_ZThn352_N8S3589C12D0Ev,_ZThn240_N8S3589C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3589C11__8S3589C128S3589C198S3589C18__A1__7S3589C1[] = {
  ABISELECT(-352,-240),
  ABISELECT(-120,-76),
  ABISELECT(-352,-240),
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C12D1Ev,_ZTv0_n16_N8S3589C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C12D0Ev,_ZTv0_n16_N8S3589C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S3589C19D1Ev,_ZTv0_n16_N8S3589C19D1Ev)();
extern void ABISELECT(_ZThn328_N8S3589C19D1Ev,_ZThn228_N8S3589C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3589C19D0Ev,_ZTv0_n16_N8S3589C19D0Ev)();
extern void ABISELECT(_ZThn328_N8S3589C19D0Ev,_ZThn228_N8S3589C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3589C14__8S3589C198S3589C18__7S3589C1[] = {
  ABISELECT(-328,-228),
  ABISELECT(-80,-52),
  ABISELECT(-328,-228),
  (VTBL_ENTRY)&(_ZTI8S3589C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C19D1Ev,_ZTv0_n16_N8S3589C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C19D0Ev,_ZTv0_n16_N8S3589C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3589C19D1Ev,_ZTv0_n12_N8S3589C19D1Ev)();
extern void ABISELECT(_ZThn248_N8S3589C19D1Ev,_ZThn176_N8S3589C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C19D0Ev,_ZTv0_n12_N8S3589C19D0Ev)();
extern void ABISELECT(_ZThn248_N8S3589C19D0Ev,_ZThn176_N8S3589C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt__8S3589C198S3589C18__7S3589C1[] = {
  ABISELECT(-248,-176),
  ABISELECT(-248,-176),
  (VTBL_ENTRY)&(_ZTI8S3589C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C19D1Ev,_ZTv0_n12_N8S3589C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C19D0Ev,_ZTv0_n12_N8S3589C19D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3589C19D1Ev,_ZTv0_n20_N8S3589C19D1Ev)();
extern void ABISELECT(_ZThn192_N8S3589C19D1Ev,_ZThn132_N8S3589C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3589C19D0Ev,_ZTv0_n20_N8S3589C19D0Ev)();
extern void ABISELECT(_ZThn192_N8S3589C19D0Ev,_ZThn132_N8S3589C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C8__8S3589C198S3589C18__7S3589C1[] = {
  ABISELECT(-192,-132),
  ABISELECT(40,32),
  ABISELECT(8,4),
  ABISELECT(-192,-132),
  (VTBL_ENTRY)&(_ZTI8S3589C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3589C19D1Ev,_ZTv0_n20_N8S3589C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3589C19D0Ev,_ZTv0_n20_N8S3589C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3589C19D1Ev,_ZTv0_n12_N8S3589C19D1Ev)();
extern void ABISELECT(_ZThn200_N8S3589C19D1Ev,_ZThn136_N8S3589C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C19D0Ev,_ZTv0_n12_N8S3589C19D0Ev)();
extern void ABISELECT(_ZThn200_N8S3589C19D0Ev,_ZThn136_N8S3589C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C2__8S3589C198S3589C18__7S3589C1[] = {
  ABISELECT(-200,-136),
  ABISELECT(-200,-136),
  (VTBL_ENTRY)&(_ZTI8S3589C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C19D1Ev,_ZTv0_n12_N8S3589C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C19D0Ev,_ZTv0_n12_N8S3589C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3589C19D1Ev,_ZTv0_n12_N8S3589C19D1Ev)();
extern void ABISELECT(_ZThn232_N8S3589C19D1Ev,_ZThn164_N8S3589C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C19D0Ev,_ZTv0_n12_N8S3589C19D0Ev)();
extern void ABISELECT(_ZThn232_N8S3589C19D0Ev,_ZThn164_N8S3589C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__8S3589C198S3589C18__7S3589C1[] = {
  ABISELECT(-232,-164),
  ABISELECT(-232,-164),
  (VTBL_ENTRY)&(_ZTI8S3589C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C19D1Ev,_ZTv0_n12_N8S3589C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C19D0Ev,_ZTv0_n12_N8S3589C19D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S3589C19D1Ev,_ZTv0_n16_N8S3589C19D1Ev)();
extern void ABISELECT(_ZThn352_N8S3589C19D1Ev,_ZThn240_N8S3589C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3589C19D0Ev,_ZTv0_n16_N8S3589C19D0Ev)();
extern void ABISELECT(_ZThn352_N8S3589C19D0Ev,_ZThn240_N8S3589C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3589C11__8S3589C198S3589C18__7S3589C1[] = {
  ABISELECT(-352,-240),
  ABISELECT(-120,-76),
  ABISELECT(-352,-240),
  (VTBL_ENTRY)&(_ZTI8S3589C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C19D1Ev,_ZTv0_n16_N8S3589C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C19D0Ev,_ZTv0_n16_N8S3589C19D0Ev),
};
extern void _ZN7S3589C8D1Ev();
extern void _ZN7S3589C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3589C88S3589C18__A4__7S3589C1[] = {
  ABISELECT(152,108),
  ABISELECT(120,80),
  0,
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&_ZN7S3589C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3589C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev)();
extern void ABISELECT(_ZThn120_N7S3589C8D1Ev,_ZThn80_N7S3589C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev)();
extern void ABISELECT(_ZThn120_N7S3589C8D0Ev,_ZThn80_N7S3589C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C2__7S3589C88S3589C18__A4__7S3589C1[] = {
  ABISELECT(-120,-80),
  ABISELECT(-120,-80),
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev)();
extern void ABISELECT(_ZThn152_N7S3589C8D1Ev,_ZThn108_N7S3589C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev)();
extern void ABISELECT(_ZThn152_N7S3589C8D0Ev,_ZThn108_N7S3589C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__7S3589C88S3589C18__A4__7S3589C1[] = {
  ABISELECT(-152,-108),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3589C18D1Ev,_ZTv0_n12_N8S3589C18D1Ev)();
extern void ABISELECT(_ZThn264_N8S3589C18D1Ev,_ZThn180_N8S3589C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C18D0Ev,_ZTv0_n12_N8S3589C18D0Ev)();
extern void ABISELECT(_ZThn264_N8S3589C18D0Ev,_ZThn180_N8S3589C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__8S3589C18__7S3589C1[] = {
  ABISELECT(-264,-180),
  ABISELECT(-264,-180),
  (VTBL_ENTRY)&(_ZTI8S3589C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C18D1Ev,_ZTv0_n12_N8S3589C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C18D0Ev,_ZTv0_n12_N8S3589C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S3589C18D1Ev,_ZTv0_n16_N8S3589C18D1Ev)();
extern void ABISELECT(_ZThn392_N8S3589C18D1Ev,_ZThn260_N8S3589C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3589C18D0Ev,_ZTv0_n16_N8S3589C18D0Ev)();
extern void ABISELECT(_ZThn392_N8S3589C18D0Ev,_ZThn260_N8S3589C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3589C16__8S3589C18__7S3589C1[] = {
  ABISELECT(-392,-260),
  ABISELECT(-128,-80),
  ABISELECT(-392,-260),
  (VTBL_ENTRY)&(_ZTI8S3589C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C18D1Ev,_ZTv0_n16_N8S3589C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C18D0Ev,_ZTv0_n16_N8S3589C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3589C18D1Ev,_ZTv0_n12_N8S3589C18D1Ev)();
extern void ABISELECT(_ZThn232_N8S3589C18D1Ev,_ZThn152_N8S3589C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C18D0Ev,_ZTv0_n12_N8S3589C18D0Ev)();
extern void ABISELECT(_ZThn232_N8S3589C18D0Ev,_ZThn152_N8S3589C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C2__8S3589C18__7S3589C1[] = {
  ABISELECT(-232,-152),
  ABISELECT(-232,-152),
  (VTBL_ENTRY)&(_ZTI8S3589C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C18D1Ev,_ZTv0_n12_N8S3589C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C18D0Ev,_ZTv0_n12_N8S3589C18D0Ev),
};
extern void ABISELECT(_ZThn32_N8S3589C18D1Ev,_ZThn16_N8S3589C18D1Ev)();
extern void ABISELECT(_ZThn32_N8S3589C18D0Ev,_ZThn16_N8S3589C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3589C19__8S3589C18__7S3589C1[] = {
  ABISELECT(352,240),
  ABISELECT(232,164),
  ABISELECT(200,136),
  ABISELECT(192,132),
  ABISELECT(248,176),
  ABISELECT(328,228),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S3589C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S3589C18D1Ev,_ZThn16_N8S3589C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S3589C18D0Ev,_ZThn16_N8S3589C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S3589C18D1Ev,_ZTv0_n16_N8S3589C18D1Ev)();
extern void ABISELECT(_ZThn360_N8S3589C18D1Ev,_ZThn244_N8S3589C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3589C18D0Ev,_ZTv0_n16_N8S3589C18D0Ev)();
extern void ABISELECT(_ZThn360_N8S3589C18D0Ev,_ZThn244_N8S3589C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3589C14__8S3589C18__7S3589C1[] = {
  ABISELECT(-360,-244),
  ABISELECT(-80,-52),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI8S3589C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C18D1Ev,_ZTv0_n16_N8S3589C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C18D0Ev,_ZTv0_n16_N8S3589C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3589C18D1Ev,_ZTv0_n12_N8S3589C18D1Ev)();
extern void ABISELECT(_ZThn280_N8S3589C18D1Ev,_ZThn192_N8S3589C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3589C18D0Ev,_ZTv0_n12_N8S3589C18D0Ev)();
extern void ABISELECT(_ZThn280_N8S3589C18D0Ev,_ZThn192_N8S3589C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt__8S3589C18__7S3589C1[] = {
  ABISELECT(-280,-192),
  ABISELECT(-280,-192),
  (VTBL_ENTRY)&(_ZTI8S3589C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C18D1Ev,_ZTv0_n12_N8S3589C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C18D0Ev,_ZTv0_n12_N8S3589C18D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3589C18D1Ev,_ZTv0_n20_N8S3589C18D1Ev)();
extern void ABISELECT(_ZThn224_N8S3589C18D1Ev,_ZThn148_N8S3589C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3589C18D0Ev,_ZTv0_n20_N8S3589C18D0Ev)();
extern void ABISELECT(_ZThn224_N8S3589C18D0Ev,_ZThn148_N8S3589C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C8__A1__8S3589C18__7S3589C1[] = {
  ABISELECT(-224,-148),
  ABISELECT(40,32),
  ABISELECT(8,4),
  ABISELECT(-224,-148),
  (VTBL_ENTRY)&(_ZTI8S3589C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3589C18D1Ev,_ZTv0_n20_N8S3589C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3589C18D0Ev,_ZTv0_n20_N8S3589C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S3589C18D1Ev,_ZTv0_n16_N8S3589C18D1Ev)();
extern void ABISELECT(_ZThn384_N8S3589C18D1Ev,_ZThn256_N8S3589C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3589C18D0Ev,_ZTv0_n16_N8S3589C18D0Ev)();
extern void ABISELECT(_ZThn384_N8S3589C18D0Ev,_ZThn256_N8S3589C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3589C11__8S3589C18__7S3589C1[] = {
  ABISELECT(-384,-256),
  ABISELECT(-120,-76),
  ABISELECT(-384,-256),
  (VTBL_ENTRY)&(_ZTI8S3589C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C18D1Ev,_ZTv0_n16_N8S3589C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C18D0Ev,_ZTv0_n16_N8S3589C18D0Ev),
};
extern void ABISELECT(_ZThn112_N8S3589C18D1Ev,_ZThn72_N8S3589C18D1Ev)();
extern void ABISELECT(_ZThn112_N8S3589C18D0Ev,_ZThn72_N8S3589C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C8__A__8S3589C18__7S3589C1[] = {
  ABISELECT(152,108),
  ABISELECT(120,80),
  ABISELECT(-112,-72),
  (VTBL_ENTRY)&(_ZTI8S3589C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S3589C18D1Ev,_ZThn72_N8S3589C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S3589C18D0Ev,_ZThn72_N8S3589C18D0Ev),
};
extern void _ZN7S3589C6D1Ev();
extern void _ZN7S3589C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3589C6__7S3589C1[] = {
  ABISELECT(152,112),
  ABISELECT(136,100),
  ABISELECT(104,72),
  ABISELECT(96,68),
  0,
  (VTBL_ENTRY)&(_ZTI7S3589C6[0]),
  (VTBL_ENTRY)&_ZN7S3589C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3589C6D0Ev,
};
extern void _ZN7S3589C7D1Ev();
extern void _ZN7S3589C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3589C77S3589C6__7S3589C1[] = {
  ABISELECT(136,100),
  ABISELECT(104,72),
  ABISELECT(96,68),
  0,
  (VTBL_ENTRY)&(_ZTI7S3589C7[0]),
  (VTBL_ENTRY)&_ZN7S3589C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3589C7D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N7S3589C7D1Ev,_ZTv0_n20_N7S3589C7D1Ev)();
extern void ABISELECT(_ZThn96_N7S3589C7D1Ev,_ZThn68_N7S3589C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3589C7D0Ev,_ZTv0_n20_N7S3589C7D0Ev)();
extern void ABISELECT(_ZThn96_N7S3589C7D0Ev,_ZThn68_N7S3589C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C8__7S3589C77S3589C6__7S3589C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(40,32),
  ABISELECT(8,4),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI7S3589C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3589C7D1Ev,_ZTv0_n20_N7S3589C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3589C7D0Ev,_ZTv0_n20_N7S3589C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3589C7D1Ev,_ZTv0_n12_N7S3589C7D1Ev)();
extern void ABISELECT(_ZThn104_N7S3589C7D1Ev,_ZThn72_N7S3589C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C7D0Ev,_ZTv0_n12_N7S3589C7D0Ev)();
extern void ABISELECT(_ZThn104_N7S3589C7D0Ev,_ZThn72_N7S3589C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C2__7S3589C77S3589C6__7S3589C1[] = {
  ABISELECT(-104,-72),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI7S3589C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C7D1Ev,_ZTv0_n12_N7S3589C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C7D0Ev,_ZTv0_n12_N7S3589C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3589C7D1Ev,_ZTv0_n12_N7S3589C7D1Ev)();
extern void ABISELECT(_ZThn136_N7S3589C7D1Ev,_ZThn100_N7S3589C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C7D0Ev,_ZTv0_n12_N7S3589C7D0Ev)();
extern void ABISELECT(_ZThn136_N7S3589C7D0Ev,_ZThn100_N7S3589C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__7S3589C77S3589C6__7S3589C1[] = {
  ABISELECT(-136,-100),
  ABISELECT(-136,-100),
  (VTBL_ENTRY)&(_ZTI7S3589C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C7D1Ev,_ZTv0_n12_N7S3589C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C7D0Ev,_ZTv0_n12_N7S3589C7D0Ev),
};
extern void _ZN7S3589C8D1Ev();
extern void _ZN7S3589C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3589C87S3589C6__A1__7S3589C1[] = {
  ABISELECT(48,36),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&_ZN7S3589C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3589C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev)();
extern void ABISELECT(_ZThn16_N7S3589C8D1Ev,_ZThn8_N7S3589C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev)();
extern void ABISELECT(_ZThn16_N7S3589C8D0Ev,_ZThn8_N7S3589C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C2__7S3589C87S3589C6__A1__7S3589C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S3589C8D1Ev,_ZThn36_N7S3589C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev)();
extern void ABISELECT(_ZThn48_N7S3589C8D0Ev,_ZThn36_N7S3589C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__7S3589C87S3589C6__A1__7S3589C1[] = {
  ABISELECT(-48,-36),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S3589C6D1Ev,_ZTv0_n20_N7S3589C6D1Ev)();
extern void ABISELECT(_ZThn96_N7S3589C6D1Ev,_ZThn68_N7S3589C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3589C6D0Ev,_ZTv0_n20_N7S3589C6D0Ev)();
extern void ABISELECT(_ZThn96_N7S3589C6D0Ev,_ZThn68_N7S3589C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C8__7S3589C6__7S3589C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(40,32),
  ABISELECT(8,4),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI7S3589C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3589C6D1Ev,_ZTv0_n20_N7S3589C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3589C6D0Ev,_ZTv0_n20_N7S3589C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3589C6D1Ev,_ZTv0_n12_N7S3589C6D1Ev)();
extern void ABISELECT(_ZThn104_N7S3589C6D1Ev,_ZThn72_N7S3589C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C6D0Ev,_ZTv0_n12_N7S3589C6D0Ev)();
extern void ABISELECT(_ZThn104_N7S3589C6D0Ev,_ZThn72_N7S3589C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C2__7S3589C6__7S3589C1[] = {
  ABISELECT(-104,-72),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI7S3589C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C6D1Ev,_ZTv0_n12_N7S3589C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C6D0Ev,_ZTv0_n12_N7S3589C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3589C6D1Ev,_ZTv0_n12_N7S3589C6D1Ev)();
extern void ABISELECT(_ZThn136_N7S3589C6D1Ev,_ZThn100_N7S3589C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C6D0Ev,_ZTv0_n12_N7S3589C6D0Ev)();
extern void ABISELECT(_ZThn136_N7S3589C6D0Ev,_ZThn100_N7S3589C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__7S3589C6__7S3589C1[] = {
  ABISELECT(-136,-100),
  ABISELECT(-136,-100),
  (VTBL_ENTRY)&(_ZTI7S3589C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C6D1Ev,_ZTv0_n12_N7S3589C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C6D0Ev,_ZTv0_n12_N7S3589C6D0Ev),
};
extern void ABISELECT(_ZThn88_N7S3589C6D1Ev,_ZThn64_N7S3589C6D1Ev)();
extern void ABISELECT(_ZThn88_N7S3589C6D0Ev,_ZThn64_N7S3589C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C8__A__7S3589C6__7S3589C1[] = {
  ABISELECT(48,36),
  ABISELECT(16,8),
  ABISELECT(-88,-64),
  (VTBL_ENTRY)&(_ZTI7S3589C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn88_N7S3589C6D1Ev,_ZThn64_N7S3589C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn88_N7S3589C6D0Ev,_ZThn64_N7S3589C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3589C6D1Ev,_ZTv0_n12_N7S3589C6D1Ev)();
extern void ABISELECT(_ZThn152_N7S3589C6D1Ev,_ZThn112_N7S3589C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C6D0Ev,_ZTv0_n12_N7S3589C6D0Ev)();
extern void ABISELECT(_ZThn152_N7S3589C6D0Ev,_ZThn112_N7S3589C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt__A1__7S3589C6__7S3589C1[] = {
  ABISELECT(-152,-112),
  ABISELECT(-152,-112),
  (VTBL_ENTRY)&(_ZTI7S3589C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C6D1Ev,_ZTv0_n12_N7S3589C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C6D0Ev,_ZTv0_n12_N7S3589C6D0Ev),
};
extern void _ZN7S3589C8D1Ev();
extern void _ZN7S3589C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3589C8__7S3589C1[] = {
  ABISELECT(40,32),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&_ZN7S3589C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3589C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev)();
extern void ABISELECT(_ZThn8_N7S3589C8D1Ev,_ZThn4_N7S3589C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev)();
extern void ABISELECT(_ZThn8_N7S3589C8D0Ev,_ZThn4_N7S3589C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C2__7S3589C8__7S3589C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev)();
extern void ABISELECT(_ZThn40_N7S3589C8D1Ev,_ZThn32_N7S3589C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev)();
extern void ABISELECT(_ZThn40_N7S3589C8D0Ev,_ZThn32_N7S3589C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__7S3589C8__7S3589C1[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI7S3589C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev),
};
extern void _ZN8S3589C10D1Ev();
extern void _ZN8S3589C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3589C10__7S3589C1[] = {
  ABISELECT(80,48),
  ABISELECT(-24,-16),
  ABISELECT(56,36),
  ABISELECT(16,4),
  ABISELECT(-72,-56),
  ABISELECT(-80,-60),
  ABISELECT(-40,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S3589C10[0]),
  (VTBL_ENTRY)&_ZN8S3589C10D1Ev,
  (VTBL_ENTRY)&_ZN8S3589C10D0Ev,
};
extern void _ZN8S3589C11D1Ev();
extern void _ZN8S3589C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3589C118S3589C10__7S3589C1[] = {
  ABISELECT(-40,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S3589C11[0]),
  (VTBL_ENTRY)&_ZN8S3589C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3589C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S3589C11D1Ev,_ZTv0_n12_N8S3589C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3589C11D0Ev,_ZTv0_n12_N8S3589C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__8S3589C118S3589C10__7S3589C1[] = {
  ABISELECT(40,28),
  ABISELECT(40,28),
  (VTBL_ENTRY)&(_ZTI8S3589C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C11D1Ev,_ZTv0_n12_N8S3589C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C11D0Ev,_ZTv0_n12_N8S3589C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3589C10D1Ev,_ZTv0_n20_N8S3589C10D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3589C10D0Ev,_ZTv0_n20_N8S3589C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C8__8S3589C10__7S3589C1[] = {
  ABISELECT(80,60),
  ABISELECT(40,32),
  ABISELECT(8,4),
  ABISELECT(80,60),
  (VTBL_ENTRY)&(_ZTI8S3589C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3589C10D1Ev,_ZTv0_n20_N8S3589C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3589C10D0Ev,_ZTv0_n20_N8S3589C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3589C10D1Ev,_ZTv0_n12_N8S3589C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3589C10D0Ev,_ZTv0_n12_N8S3589C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C2__8S3589C10__7S3589C1[] = {
  ABISELECT(72,56),
  ABISELECT(72,56),
  (VTBL_ENTRY)&(_ZTI8S3589C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C10D1Ev,_ZTv0_n12_N8S3589C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C10D0Ev,_ZTv0_n12_N8S3589C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3589C10D1Ev,_ZTv0_n12_N8S3589C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3589C10D0Ev,_ZTv0_n12_N8S3589C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__8S3589C10__7S3589C1[] = {
  ABISELECT(40,28),
  ABISELECT(40,28),
  (VTBL_ENTRY)&(_ZTI8S3589C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C10D1Ev,_ZTv0_n12_N8S3589C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C10D0Ev,_ZTv0_n12_N8S3589C10D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S3589C10D1Ev,_ZTv0_n36_N8S3589C10D1Ev)();
extern void ABISELECT(_ZThn16_N8S3589C10D1Ev,_ZThn4_N8S3589C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S3589C10D0Ev,_ZTv0_n36_N8S3589C10D0Ev)();
extern void ABISELECT(_ZThn16_N8S3589C10D0Ev,_ZThn4_N8S3589C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3589C12__8S3589C10__7S3589C1[] = {
  ABISELECT(-16,-4),
  ABISELECT(64,44),
  ABISELECT(-56,-32),
  ABISELECT(-88,-60),
  ABISELECT(-96,-64),
  ABISELECT(-40,-20),
  ABISELECT(40,32),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S3589C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S3589C10D1Ev,_ZTv0_n36_N8S3589C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S3589C10D0Ev,_ZTv0_n36_N8S3589C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S3589C10D1Ev,_ZTv0_n16_N8S3589C10D1Ev)();
extern void ABISELECT(_ZThn56_N8S3589C10D1Ev,_ZThn36_N8S3589C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3589C10D0Ev,_ZTv0_n16_N8S3589C10D0Ev)();
extern void ABISELECT(_ZThn56_N8S3589C10D0Ev,_ZThn36_N8S3589C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3589C14__8S3589C10__7S3589C1[] = {
  ABISELECT(-56,-36),
  ABISELECT(-80,-52),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S3589C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C10D1Ev,_ZTv0_n16_N8S3589C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C10D0Ev,_ZTv0_n16_N8S3589C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3589C10D1Ev,_ZTv0_n12_N8S3589C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3589C10D0Ev,_ZTv0_n12_N8S3589C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt__8S3589C10__7S3589C1[] = {
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S3589C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C10D1Ev,_ZTv0_n12_N8S3589C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C10D0Ev,_ZTv0_n12_N8S3589C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S3589C10D1Ev,_ZTv0_n16_N8S3589C10D1Ev)();
extern void ABISELECT(_ZThn80_N8S3589C10D1Ev,_ZThn48_N8S3589C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3589C10D0Ev,_ZTv0_n16_N8S3589C10D0Ev)();
extern void ABISELECT(_ZThn80_N8S3589C10D0Ev,_ZThn48_N8S3589C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3589C11__A1__8S3589C10__7S3589C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-120,-76),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S3589C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C10D1Ev,_ZTv0_n16_N8S3589C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C10D0Ev,_ZTv0_n16_N8S3589C10D0Ev),
};
extern void _ZN8S3589C12D1Ev();
extern void _ZN8S3589C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3589C12__7S3589C1[] = {
  ABISELECT(64,44),
  ABISELECT(-56,-32),
  ABISELECT(-88,-60),
  ABISELECT(-96,-64),
  ABISELECT(-40,-20),
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&_ZN8S3589C12D1Ev,
  (VTBL_ENTRY)&_ZN8S3589C12D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S3589C12D1Ev,_ZTv0_n16_N8S3589C12D1Ev)();
extern void ABISELECT(_ZThn40_N8S3589C12D1Ev,_ZThn32_N8S3589C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3589C12D0Ev,_ZTv0_n16_N8S3589C12D0Ev)();
extern void ABISELECT(_ZThn40_N8S3589C12D0Ev,_ZThn32_N8S3589C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3589C14__8S3589C12__7S3589C1[] = {
  ABISELECT(-40,-32),
  ABISELECT(-80,-52),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C12D1Ev,_ZTv0_n16_N8S3589C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C12D0Ev,_ZTv0_n16_N8S3589C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3589C12D1Ev,_ZTv0_n12_N8S3589C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3589C12D0Ev,_ZTv0_n12_N8S3589C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt__8S3589C12__7S3589C1[] = {
  ABISELECT(40,20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C12D1Ev,_ZTv0_n12_N8S3589C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C12D0Ev,_ZTv0_n12_N8S3589C12D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3589C12D1Ev,_ZTv0_n20_N8S3589C12D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3589C12D0Ev,_ZTv0_n20_N8S3589C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C8__8S3589C12__7S3589C1[] = {
  ABISELECT(96,64),
  ABISELECT(40,32),
  ABISELECT(8,4),
  ABISELECT(96,64),
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3589C12D1Ev,_ZTv0_n20_N8S3589C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3589C12D0Ev,_ZTv0_n20_N8S3589C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3589C12D1Ev,_ZTv0_n12_N8S3589C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3589C12D0Ev,_ZTv0_n12_N8S3589C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C2__8S3589C12__7S3589C1[] = {
  ABISELECT(88,60),
  ABISELECT(88,60),
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C12D1Ev,_ZTv0_n12_N8S3589C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C12D0Ev,_ZTv0_n12_N8S3589C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3589C12D1Ev,_ZTv0_n12_N8S3589C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3589C12D0Ev,_ZTv0_n12_N8S3589C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__8S3589C12__7S3589C1[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C12D1Ev,_ZTv0_n12_N8S3589C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C12D0Ev,_ZTv0_n12_N8S3589C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S3589C12D1Ev,_ZTv0_n16_N8S3589C12D1Ev)();
extern void ABISELECT(_ZThn64_N8S3589C12D1Ev,_ZThn44_N8S3589C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3589C12D0Ev,_ZTv0_n16_N8S3589C12D0Ev)();
extern void ABISELECT(_ZThn64_N8S3589C12D0Ev,_ZThn44_N8S3589C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3589C11__8S3589C12__7S3589C1[] = {
  ABISELECT(-64,-44),
  ABISELECT(-120,-76),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S3589C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C12D1Ev,_ZTv0_n16_N8S3589C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3589C12D0Ev,_ZTv0_n16_N8S3589C12D0Ev),
};
extern void _ZN8S3589C14D1Ev();
extern void _ZN8S3589C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3589C14__7S3589C1[] = {
  ABISELECT(-80,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S3589C14[0]),
  (VTBL_ENTRY)&_ZN8S3589C14D1Ev,
  (VTBL_ENTRY)&_ZN8S3589C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S3589C14D1Ev,_ZTv0_n12_N8S3589C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3589C14D0Ev,_ZTv0_n12_N8S3589C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt__8S3589C14__7S3589C1[] = {
  ABISELECT(80,52),
  ABISELECT(80,52),
  (VTBL_ENTRY)&(_ZTI8S3589C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C14D1Ev,_ZTv0_n12_N8S3589C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C14D0Ev,_ZTv0_n12_N8S3589C14D0Ev),
};
extern void _ZN8S3589C11D1Ev();
extern void _ZN8S3589C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3589C11__A1__7S3589C1[] = {
  ABISELECT(-120,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S3589C11[0]),
  (VTBL_ENTRY)&_ZN8S3589C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3589C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S3589C11D1Ev,_ZTv0_n12_N8S3589C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3589C11D0Ev,_ZTv0_n12_N8S3589C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__8S3589C11__A1__7S3589C1[] = {
  ABISELECT(120,76),
  ABISELECT(120,76),
  (VTBL_ENTRY)&(_ZTI8S3589C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C11D1Ev,_ZTv0_n12_N8S3589C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C11D0Ev,_ZTv0_n12_N8S3589C11D0Ev),
};
extern void _ZN8S3589C16D1Ev();
extern void _ZN8S3589C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3589C16__7S3589C1[] = {
  ABISELECT(-128,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S3589C16[0]),
  (VTBL_ENTRY)&_ZN8S3589C16D1Ev,
  (VTBL_ENTRY)&_ZN8S3589C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S3589C16D1Ev,_ZTv0_n12_N8S3589C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3589C16D0Ev,_ZTv0_n12_N8S3589C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__8S3589C16__7S3589C1[] = {
  ABISELECT(128,80),
  ABISELECT(128,80),
  (VTBL_ENTRY)&(_ZTI8S3589C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C16D1Ev,_ZTv0_n12_N8S3589C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3589C16D0Ev,_ZTv0_n12_N8S3589C16D0Ev),
};
extern void _ZN7S3589C7D1Ev();
extern void _ZN7S3589C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3589C7__A1__7S3589C1[] = {
  ABISELECT(-144,-92),
  ABISELECT(-176,-120),
  ABISELECT(-184,-124),
  0,
  (VTBL_ENTRY)&(_ZTI7S3589C7[0]),
  (VTBL_ENTRY)&_ZN7S3589C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3589C7D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N7S3589C7D1Ev,_ZTv0_n20_N7S3589C7D1Ev)();
extern void ABISELECT(_ZTv0_n40_N7S3589C7D0Ev,_ZTv0_n20_N7S3589C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C8__7S3589C7__A1__7S3589C1[] = {
  ABISELECT(184,124),
  ABISELECT(40,32),
  ABISELECT(8,4),
  ABISELECT(184,124),
  (VTBL_ENTRY)&(_ZTI7S3589C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3589C7D1Ev,_ZTv0_n20_N7S3589C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3589C7D0Ev,_ZTv0_n20_N7S3589C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3589C7D1Ev,_ZTv0_n12_N7S3589C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3589C7D0Ev,_ZTv0_n12_N7S3589C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C2__7S3589C7__A1__7S3589C1[] = {
  ABISELECT(176,120),
  ABISELECT(176,120),
  (VTBL_ENTRY)&(_ZTI7S3589C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C7D1Ev,_ZTv0_n12_N7S3589C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C7D0Ev,_ZTv0_n12_N7S3589C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3589C7D1Ev,_ZTv0_n12_N7S3589C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3589C7D0Ev,_ZTv0_n12_N7S3589C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__7S3589C7__A1__7S3589C1[] = {
  ABISELECT(144,92),
  ABISELECT(144,92),
  (VTBL_ENTRY)&(_ZTI7S3589C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C7D1Ev,_ZTv0_n12_N7S3589C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3589C7D0Ev,_ZTv0_n12_N7S3589C7D0Ev),
};
static  VTT_ENTRY vtt_S3589C1[] = {
  {&(_ZTV7S3589C1[13]),  13,163},
  {&(_tg__ZTV7S3589C5__7S3589C1[12]),  12,14},
  {&(_tg__ZTV8S3589C157S3589C5__7S3589C1[5]),  5,7},
  {&(_tg__ZTV7S3589C88S3589C157S3589C5__A2__7S3589C1[4]),  4,6},
  {&(_tg__ZTV7S3589C2__7S3589C88S3589C157S3589C5__A2__7S3589C1[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__7S3589C88S3589C157S3589C5__A2__7S3589C1[3]),  3,5},
  {&(_tg__ZTV7S3589C2__8S3589C157S3589C5__7S3589C1[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__8S3589C157S3589C5__7S3589C1[3]),  3,5},
  {&(_tg__ZTV8S3589C16__8S3589C157S3589C5__7S3589C1[4]),  4,6},
  {&(_tg__ZTV7S3589C6__7S3589C5__7S3589C1[7]),  7,9},
  {&(_tg__ZTV7S3589C8__7S3589C5__7S3589C1[5]),  5,7},
  {&(_tg__ZTV7S3589C2__7S3589C5__7S3589C1[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__7S3589C5__7S3589C1[3]),  3,5},
  {&(_tg__ZTV10S3589C9_nt7S3589C77S3589C6__7S3589C5__7S3589C1[2]),  2,4},
  {&(_tg__ZTV7S3589C27S3589C77S3589C6__A1__7S3589C5__7S3589C1[2]),  2,4},
  {&(_tg__ZTV7S3589C87S3589C6__A1__7S3589C5__7S3589C1[4]),  4,6},
  {&(_tg__ZTV10S3589C9_nt__A1__7S3589C5__7S3589C1[3]),  3,5},
  {&(_tg__ZTV8S3589C10__7S3589C5__7S3589C1[10]),  10,12},
  {&(_tg__ZTV8S3589C12__7S3589C5__7S3589C1[9]),  9,11},
  {&(_tg__ZTV8S3589C14__7S3589C5__7S3589C1[4]),  4,6},
  {&(_tg__ZTV8S3589C11__A1__7S3589C5__7S3589C1[4]),  4,6},
  {&(_tg__ZTV8S3589C16__7S3589C5__7S3589C1[4]),  4,6},
  {&(_tg__ZTV8S3589C16__A__7S3589C1[3]),  3,5},
  {&(_tg__ZTV7S3589C3__8S3589C16__A__7S3589C1[3]),  3,5},
  {&(_tg__ZTV8S3589C18__7S3589C1[9]),  9,11},
  {&(_tg__ZTV8S3589C158S3589C18__A1__7S3589C1[5]),  5,7},
  {&(_tg__ZTV7S3589C88S3589C158S3589C18__A3__7S3589C1[4]),  4,6},
  {&(_tg__ZTV7S3589C2__7S3589C88S3589C158S3589C18__A3__7S3589C1[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__7S3589C88S3589C158S3589C18__A3__7S3589C1[3]),  3,5},
  {&(_tg__ZTV7S3589C2__8S3589C158S3589C18__A1__7S3589C1[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__8S3589C158S3589C18__A1__7S3589C1[3]),  3,5},
  {&(_tg__ZTV8S3589C16__8S3589C158S3589C18__A1__7S3589C1[4]),  4,6},
  {&(_tg__ZTV8S3589C198S3589C18__7S3589C1[8]),  8,10},
  {&(_tg__ZTV8S3589C128S3589C198S3589C18__A1__7S3589C1[8]),  8,10},
  {&(_tg__ZTV8S3589C14__8S3589C128S3589C198S3589C18__A1__7S3589C1[4]),  4,6},
  {&(_tg__ZTV10S3589C9_nt__8S3589C128S3589C198S3589C18__A1__7S3589C1[3]),  3,5},
  {&(_tg__ZTV7S3589C8__8S3589C128S3589C198S3589C18__A1__7S3589C1[5]),  5,7},
  {&(_tg__ZTV7S3589C2__8S3589C128S3589C198S3589C18__A1__7S3589C1[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__8S3589C128S3589C198S3589C18__A1__7S3589C1[3]),  3,5},
  {&(_tg__ZTV8S3589C11__8S3589C128S3589C198S3589C18__A1__7S3589C1[4]),  4,6},
  {&(_tg__ZTV8S3589C14__8S3589C198S3589C18__7S3589C1[4]),  4,6},
  {&(_tg__ZTV10S3589C9_nt__8S3589C198S3589C18__7S3589C1[3]),  3,5},
  {&(_tg__ZTV7S3589C8__8S3589C198S3589C18__7S3589C1[5]),  5,7},
  {&(_tg__ZTV7S3589C2__8S3589C198S3589C18__7S3589C1[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__8S3589C198S3589C18__7S3589C1[3]),  3,5},
  {&(_tg__ZTV8S3589C11__8S3589C198S3589C18__7S3589C1[4]),  4,6},
  {&(_tg__ZTV7S3589C88S3589C18__A4__7S3589C1[4]),  4,6},
  {&(_tg__ZTV7S3589C2__7S3589C88S3589C18__A4__7S3589C1[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__7S3589C88S3589C18__A4__7S3589C1[3]),  3,5},
  {&(_tg__ZTV7S3589C3__8S3589C18__7S3589C1[3]),  3,5},
  {&(_tg__ZTV8S3589C16__8S3589C18__7S3589C1[4]),  4,6},
  {&(_tg__ZTV7S3589C2__8S3589C18__7S3589C1[3]),  3,5},
  {&(_tg__ZTV8S3589C19__8S3589C18__7S3589C1[8]),  8,10},
  {&(_tg__ZTV8S3589C14__8S3589C18__7S3589C1[4]),  4,6},
  {&(_tg__ZTV10S3589C9_nt__8S3589C18__7S3589C1[3]),  3,5},
  {&(_tg__ZTV7S3589C8__A1__8S3589C18__7S3589C1[5]),  5,7},
  {&(_tg__ZTV8S3589C11__8S3589C18__7S3589C1[4]),  4,6},
  {&(_tg__ZTV7S3589C8__A__8S3589C18__7S3589C1[4]),  4,6},
  {&(_ZTV7S3589C1[27]),  27,163},
  {&(_ZTV7S3589C1[68]),  68,163},
  {&(_ZTV7S3589C1[89]),  89,163},
  {&(_ZTV7S3589C1[94]),  94,163},
  {&(_ZTV7S3589C1[99]),  99,163},
  {&(_ZTV7S3589C1[72]),  72,163},
  {&(_ZTV7S3589C1[76]),  76,163},
  {&(_ZTV7S3589C1[82]),  82,163},
  {&(_ZTV7S3589C1[104]),  104,163},
  {&(_ZTV7S3589C1[116]),  116,163},
  {&(_ZTV7S3589C1[127]),  127,163},
  {&(_ZTV7S3589C1[133]),  133,163},
  {&(_ZTV7S3589C1[139]),  139,163},
  {&(_ZTV7S3589C1[145]),  145,163},
  {&(_ZTV7S3589C1[32]),  32,163},
  {&(_ZTV7S3589C1[43]),  43,163},
  {&(_ZTV7S3589C1[53]),  53,163},
  {&(_ZTV7S3589C1[59]),  59,163},
  {&(_ZTV7S3589C1[153]),  153,163},
  {&(_ZTV7S3589C1[157]),  157,163},
  {&(_ZTV7S3589C1[161]),  161,163},
  {&(_tg__ZTV7S3589C6__7S3589C1[6]),  6,8},
  {&(_tg__ZTV7S3589C77S3589C6__7S3589C1[5]),  5,7},
  {&(_tg__ZTV7S3589C8__7S3589C77S3589C6__7S3589C1[5]),  5,7},
  {&(_tg__ZTV7S3589C2__7S3589C77S3589C6__7S3589C1[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__7S3589C77S3589C6__7S3589C1[3]),  3,5},
  {&(_tg__ZTV7S3589C87S3589C6__A1__7S3589C1[4]),  4,6},
  {&(_tg__ZTV7S3589C2__7S3589C87S3589C6__A1__7S3589C1[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__7S3589C87S3589C6__A1__7S3589C1[3]),  3,5},
  {&(_tg__ZTV7S3589C8__7S3589C6__7S3589C1[5]),  5,7},
  {&(_tg__ZTV7S3589C2__7S3589C6__7S3589C1[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__7S3589C6__7S3589C1[3]),  3,5},
  {&(_tg__ZTV7S3589C8__A__7S3589C6__7S3589C1[4]),  4,6},
  {&(_tg__ZTV10S3589C9_nt__A1__7S3589C6__7S3589C1[3]),  3,5},
  {&(_tg__ZTV7S3589C8__7S3589C1[4]),  4,6},
  {&(_tg__ZTV7S3589C2__7S3589C8__7S3589C1[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__7S3589C8__7S3589C1[3]),  3,5},
  {&(_tg__ZTV8S3589C10__7S3589C1[9]),  9,11},
  {&(_tg__ZTV8S3589C118S3589C10__7S3589C1[3]),  3,5},
  {&(_tg__ZTV7S3589C3__8S3589C118S3589C10__7S3589C1[3]),  3,5},
  {&(_tg__ZTV7S3589C8__8S3589C10__7S3589C1[5]),  5,7},
  {&(_tg__ZTV7S3589C2__8S3589C10__7S3589C1[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__8S3589C10__7S3589C1[3]),  3,5},
  {&(_tg__ZTV8S3589C12__8S3589C10__7S3589C1[9]),  9,11},
  {&(_tg__ZTV8S3589C14__8S3589C10__7S3589C1[4]),  4,6},
  {&(_tg__ZTV10S3589C9_nt__8S3589C10__7S3589C1[3]),  3,5},
  {&(_tg__ZTV8S3589C11__A1__8S3589C10__7S3589C1[4]),  4,6},
  {&(_tg__ZTV8S3589C12__7S3589C1[8]),  8,10},
  {&(_tg__ZTV8S3589C14__8S3589C12__7S3589C1[4]),  4,6},
  {&(_tg__ZTV10S3589C9_nt__8S3589C12__7S3589C1[3]),  3,5},
  {&(_tg__ZTV7S3589C8__8S3589C12__7S3589C1[5]),  5,7},
  {&(_tg__ZTV7S3589C2__8S3589C12__7S3589C1[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__8S3589C12__7S3589C1[3]),  3,5},
  {&(_tg__ZTV8S3589C11__8S3589C12__7S3589C1[4]),  4,6},
  {&(_tg__ZTV8S3589C14__7S3589C1[3]),  3,5},
  {&(_tg__ZTV10S3589C9_nt__8S3589C14__7S3589C1[3]),  3,5},
  {&(_tg__ZTV8S3589C11__A1__7S3589C1[3]),  3,5},
  {&(_tg__ZTV7S3589C3__8S3589C11__A1__7S3589C1[3]),  3,5},
  {&(_tg__ZTV8S3589C16__7S3589C1[3]),  3,5},
  {&(_tg__ZTV7S3589C3__8S3589C16__7S3589C1[3]),  3,5},
  {&(_tg__ZTV7S3589C7__A1__7S3589C1[5]),  5,7},
  {&(_tg__ZTV7S3589C8__7S3589C7__A1__7S3589C1[5]),  5,7},
  {&(_tg__ZTV7S3589C2__7S3589C7__A1__7S3589C1[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__7S3589C7__A1__7S3589C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S3589C1[];
extern  VTBL_ENTRY _ZTV7S3589C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3589C1[];
static VTBL_ENTRY alt_thunk_names53[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S3589C10D0Ev,_ZTv0_n16_N8S3589C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S3589C10D0Ev,_ZThn48_N8S3589C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S3589C10D0Ev,_ZThn36_N8S3589C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S3589C10D1Ev,_ZTv0_n16_N8S3589C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S3589C10D1Ev,_ZThn48_N8S3589C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S3589C10D1Ev,_ZThn36_N8S3589C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S3589C10D0Ev,_ZTv0_n36_N8S3589C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S3589C10D0Ev,_ZThn4_N8S3589C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S3589C10D1Ev,_ZTv0_n36_N8S3589C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S3589C10D1Ev,_ZThn4_N8S3589C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3589C6D0Ev,_ZTv0_n12_N7S3589C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S3589C6D0Ev,_ZThn112_N7S3589C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S3589C6D0Ev,_ZThn100_N7S3589C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S3589C6D0Ev,_ZThn72_N7S3589C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3589C6D1Ev,_ZTv0_n12_N7S3589C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S3589C6D1Ev,_ZThn112_N7S3589C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S3589C6D1Ev,_ZThn100_N7S3589C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S3589C6D1Ev,_ZThn72_N7S3589C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3589C6D0Ev,_ZTv0_n20_N7S3589C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S3589C6D0Ev,_ZThn68_N7S3589C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3589C6D1Ev,_ZTv0_n20_N7S3589C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S3589C6D1Ev,_ZThn68_N7S3589C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3589C7D0Ev,_ZTv0_n12_N7S3589C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S3589C7D0Ev,_ZThn100_N7S3589C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S3589C7D0Ev,_ZThn72_N7S3589C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3589C7D1Ev,_ZTv0_n12_N7S3589C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S3589C7D1Ev,_ZThn100_N7S3589C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S3589C7D1Ev,_ZThn72_N7S3589C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3589C7D0Ev,_ZTv0_n20_N7S3589C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S3589C7D0Ev,_ZThn68_N7S3589C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3589C7D1Ev,_ZTv0_n20_N7S3589C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S3589C7D1Ev,_ZThn68_N7S3589C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3589C18D0Ev,_ZTv0_n20_N8S3589C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S3589C18D0Ev,_ZThn148_N8S3589C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3589C18D1Ev,_ZTv0_n20_N8S3589C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S3589C18D1Ev,_ZThn148_N8S3589C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S3589C18D0Ev,_ZTv0_n16_N8S3589C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S3589C18D0Ev,_ZThn256_N8S3589C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn360_N8S3589C18D0Ev,_ZThn244_N8S3589C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn392_N8S3589C18D0Ev,_ZThn260_N8S3589C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S3589C18D1Ev,_ZTv0_n16_N8S3589C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S3589C18D1Ev,_ZThn256_N8S3589C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn360_N8S3589C18D1Ev,_ZThn244_N8S3589C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn392_N8S3589C18D1Ev,_ZThn260_N8S3589C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3589C18D0Ev,_ZTv0_n12_N8S3589C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S3589C18D0Ev,_ZThn192_N8S3589C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S3589C18D0Ev,_ZThn152_N8S3589C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S3589C18D0Ev,_ZThn180_N8S3589C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3589C18D1Ev,_ZTv0_n12_N8S3589C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S3589C18D1Ev,_ZThn192_N8S3589C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S3589C18D1Ev,_ZThn152_N8S3589C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S3589C18D1Ev,_ZThn180_N8S3589C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3589C19D0Ev,_ZTv0_n20_N8S3589C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S3589C19D0Ev,_ZThn132_N8S3589C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3589C19D1Ev,_ZTv0_n20_N8S3589C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S3589C19D1Ev,_ZThn132_N8S3589C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3589C19D0Ev,_ZTv0_n12_N8S3589C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S3589C19D0Ev,_ZThn164_N8S3589C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S3589C19D0Ev,_ZThn136_N8S3589C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S3589C19D0Ev,_ZThn176_N8S3589C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3589C19D1Ev,_ZTv0_n12_N8S3589C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S3589C19D1Ev,_ZThn164_N8S3589C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S3589C19D1Ev,_ZThn136_N8S3589C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S3589C19D1Ev,_ZThn176_N8S3589C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S3589C19D0Ev,_ZTv0_n16_N8S3589C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S3589C19D0Ev,_ZThn240_N8S3589C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn328_N8S3589C19D0Ev,_ZThn228_N8S3589C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S3589C19D1Ev,_ZTv0_n16_N8S3589C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S3589C19D1Ev,_ZThn240_N8S3589C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn328_N8S3589C19D1Ev,_ZThn228_N8S3589C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3589C12D0Ev,_ZTv0_n20_N8S3589C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S3589C12D0Ev,_ZThn132_N8S3589C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3589C12D1Ev,_ZTv0_n20_N8S3589C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S3589C12D1Ev,_ZThn132_N8S3589C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3589C12D0Ev,_ZTv0_n12_N8S3589C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S3589C12D0Ev,_ZThn164_N8S3589C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S3589C12D0Ev,_ZThn136_N8S3589C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S3589C12D0Ev,_ZThn176_N8S3589C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3589C12D1Ev,_ZTv0_n12_N8S3589C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S3589C12D1Ev,_ZThn164_N8S3589C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S3589C12D1Ev,_ZThn136_N8S3589C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S3589C12D1Ev,_ZThn176_N8S3589C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S3589C12D0Ev,_ZTv0_n16_N8S3589C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S3589C12D0Ev,_ZThn44_N8S3589C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S3589C12D0Ev,_ZThn32_N8S3589C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S3589C12D0Ev,_ZThn240_N8S3589C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn328_N8S3589C12D0Ev,_ZThn228_N8S3589C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S3589C12D1Ev,_ZTv0_n16_N8S3589C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S3589C12D1Ev,_ZThn44_N8S3589C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S3589C12D1Ev,_ZThn32_N8S3589C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S3589C12D1Ev,_ZThn240_N8S3589C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn328_N8S3589C12D1Ev,_ZThn228_N8S3589C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3589C16D0Ev,_ZTv0_n12_N8S3589C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S3589C16D0Ev,_ZThn192_N8S3589C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3589C16D1Ev,_ZTv0_n12_N8S3589C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S3589C16D1Ev,_ZThn192_N8S3589C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3589C5D0Ev,_ZTv0_n16_N7S3589C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn584_N7S3589C5D0Ev,_ZThn400_N7S3589C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn576_N7S3589C5D0Ev,_ZThn396_N7S3589C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn552_N7S3589C5D0Ev,_ZThn384_N7S3589C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3589C5D1Ev,_ZTv0_n16_N7S3589C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn584_N7S3589C5D1Ev,_ZThn400_N7S3589C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn576_N7S3589C5D1Ev,_ZThn396_N7S3589C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn552_N7S3589C5D1Ev,_ZThn384_N7S3589C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S3589C5D0Ev,_ZTv0_n36_N7S3589C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N7S3589C5D0Ev,_ZThn352_N7S3589C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S3589C5D1Ev,_ZTv0_n36_N7S3589C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N7S3589C5D1Ev,_ZThn352_N7S3589C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S3589C5D0Ev,_ZTv0_n40_N7S3589C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S3589C5D0Ev,_ZThn348_N7S3589C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S3589C5D1Ev,_ZTv0_n40_N7S3589C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S3589C5D1Ev,_ZThn348_N7S3589C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3589C5D0Ev,_ZTv0_n12_N7S3589C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N7S3589C5D0Ev,_ZThn332_N7S3589C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S3589C5D0Ev,_ZThn320_N7S3589C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn424_N7S3589C5D0Ev,_ZThn292_N7S3589C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3589C5D1Ev,_ZTv0_n12_N7S3589C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N7S3589C5D1Ev,_ZThn332_N7S3589C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S3589C5D1Ev,_ZThn320_N7S3589C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn424_N7S3589C5D1Ev,_ZThn292_N7S3589C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3589C5D0Ev,_ZTv0_n20_N7S3589C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N7S3589C5D0Ev,_ZThn288_N7S3589C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3589C5D1Ev,_ZTv0_n20_N7S3589C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N7S3589C5D1Ev,_ZThn288_N7S3589C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S3589C5D0Ev,_ZTv0_n28_N7S3589C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S3589C5D0Ev,_ZThn220_N7S3589C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S3589C5D1Ev,_ZTv0_n28_N7S3589C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S3589C5D1Ev,_ZThn220_N7S3589C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S3589C15D0Ev,_ZTv0_n16_N8S3589C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N8S3589C15D0Ev,_ZThn260_N8S3589C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn584_N8S3589C15D0Ev,_ZThn400_N8S3589C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S3589C15D1Ev,_ZTv0_n16_N8S3589C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N8S3589C15D1Ev,_ZThn260_N8S3589C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn584_N8S3589C15D1Ev,_ZThn400_N8S3589C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3589C15D0Ev,_ZTv0_n12_N8S3589C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S3589C15D0Ev,_ZThn180_N8S3589C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S3589C15D0Ev,_ZThn152_N8S3589C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn456_N8S3589C15D0Ev,_ZThn320_N8S3589C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn424_N8S3589C15D0Ev,_ZThn292_N8S3589C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3589C15D1Ev,_ZTv0_n12_N8S3589C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S3589C15D1Ev,_ZThn180_N8S3589C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S3589C15D1Ev,_ZThn152_N8S3589C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn456_N8S3589C15D1Ev,_ZThn320_N8S3589C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn424_N8S3589C15D1Ev,_ZThn292_N8S3589C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3589C8D0Ev,_ZTv0_n12_N7S3589C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S3589C8D0Ev,_ZThn32_N7S3589C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S3589C8D0Ev,_ZThn4_N7S3589C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S3589C8D0Ev,_ZThn36_N7S3589C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S3589C8D0Ev,_ZThn8_N7S3589C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S3589C8D0Ev,_ZThn108_N7S3589C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S3589C8D0Ev,_ZThn80_N7S3589C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S3589C8D0Ev,_ZThn180_N7S3589C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn232_N7S3589C8D0Ev,_ZThn152_N7S3589C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S3589C8D0Ev,_ZThn320_N7S3589C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn424_N7S3589C8D0Ev,_ZThn292_N7S3589C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3589C8D1Ev,_ZTv0_n12_N7S3589C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S3589C8D1Ev,_ZThn32_N7S3589C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S3589C8D1Ev,_ZThn4_N7S3589C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S3589C8D1Ev,_ZThn36_N7S3589C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S3589C8D1Ev,_ZThn8_N7S3589C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S3589C8D1Ev,_ZThn108_N7S3589C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S3589C8D1Ev,_ZThn80_N7S3589C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S3589C8D1Ev,_ZThn180_N7S3589C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn232_N7S3589C8D1Ev,_ZThn152_N7S3589C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S3589C8D1Ev,_ZThn320_N7S3589C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn424_N7S3589C8D1Ev,_ZThn292_N7S3589C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3589C1D0Ev,_ZTv0_n24_N7S3589C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn632_N7S3589C1D0Ev,_ZThn440_N7S3589C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3589C1D1Ev,_ZTv0_n24_N7S3589C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn632_N7S3589C1D1Ev,_ZThn440_N7S3589C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3589C1D0Ev,_ZTv0_n16_N7S3589C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn616_N7S3589C1D0Ev,_ZThn428_N7S3589C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn608_N7S3589C1D0Ev,_ZThn424_N7S3589C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn584_N7S3589C1D0Ev,_ZThn412_N7S3589C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3589C1D1Ev,_ZTv0_n16_N7S3589C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn616_N7S3589C1D1Ev,_ZThn428_N7S3589C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn608_N7S3589C1D1Ev,_ZThn424_N7S3589C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn584_N7S3589C1D1Ev,_ZThn412_N7S3589C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S3589C1D0Ev,_ZTv0_n36_N7S3589C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N7S3589C1D0Ev,_ZThn380_N7S3589C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S3589C1D1Ev,_ZTv0_n36_N7S3589C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N7S3589C1D1Ev,_ZThn380_N7S3589C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S3589C1D0Ev,_ZTv0_n40_N7S3589C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N7S3589C1D0Ev,_ZThn376_N7S3589C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S3589C1D1Ev,_ZTv0_n40_N7S3589C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N7S3589C1D1Ev,_ZThn376_N7S3589C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3589C1D0Ev,_ZTv0_n12_N7S3589C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N7S3589C1D0Ev,_ZThn360_N7S3589C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn488_N7S3589C1D0Ev,_ZThn348_N7S3589C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S3589C1D0Ev,_ZThn320_N7S3589C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3589C1D1Ev,_ZTv0_n12_N7S3589C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N7S3589C1D1Ev,_ZThn360_N7S3589C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn488_N7S3589C1D1Ev,_ZThn348_N7S3589C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S3589C1D1Ev,_ZThn320_N7S3589C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3589C1D0Ev,_ZTv0_n20_N7S3589C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N7S3589C1D0Ev,_ZThn316_N7S3589C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3589C1D1Ev,_ZTv0_n20_N7S3589C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N7S3589C1D1Ev,_ZThn316_N7S3589C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S3589C1D0Ev,_ZTv0_n28_N7S3589C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S3589C1D0Ev,_ZThn248_N7S3589C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S3589C1D1Ev,_ZTv0_n28_N7S3589C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S3589C1D1Ev,_ZThn248_N7S3589C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3589C1 = {  "S3589C1", // class name
  bases_S3589C1, 39,
  &(vtc_S3589C1[0]), // expected_vtbl_contents
  &(vtt_S3589C1[0]), // expected_vtt_contents
  ABISELECT(720,504), // object size
  NSPAIRA(_ZTI7S3589C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S3589C1),163, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3589C1),122, //virtual table table var
  37, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names53,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4533C3  {
  ::S17777C5_nt s4533c3f0;
  unsigned int s4533c3f1:1;
  virtual  ~S4533C3(); // _ZN7S4533C3D1Ev
  virtual void  v2(); // _ZN7S4533C32v2Ev
  virtual void  v3(); // _ZN7S4533C32v3Ev
  virtual void  v4(); // _ZN7S4533C32v4Ev
  virtual void  v5(); // _ZN7S4533C32v5Ev
  virtual void  v6(); // _ZN7S4533C32v6Ev
  virtual void  v7(); // _ZN7S4533C32v7Ev
  virtual void  v8(); // _ZN7S4533C32v8Ev
  S4533C3(); // tgen
};
//SIG(-1 S4533C3) C1{ vd v1 v2 v3 v4 v5 v6 v7 FC2{ m Fp[3]} Fi:1}


 S4533C3 ::~S4533C3(){ note_dtor("S4533C3", this);}
void  S4533C3 ::v2(){vfunc_called(this, "_ZN7S4533C32v2Ev");}
void  S4533C3 ::v3(){vfunc_called(this, "_ZN7S4533C32v3Ev");}
void  S4533C3 ::v4(){vfunc_called(this, "_ZN7S4533C32v4Ev");}
void  S4533C3 ::v5(){vfunc_called(this, "_ZN7S4533C32v5Ev");}
void  S4533C3 ::v6(){vfunc_called(this, "_ZN7S4533C32v6Ev");}
void  S4533C3 ::v7(){vfunc_called(this, "_ZN7S4533C32v7Ev");}
void  S4533C3 ::v8(){vfunc_called(this, "_ZN7S4533C32v8Ev");}
S4533C3 ::S4533C3(){ note_ctor("S4533C3", this);} // tgen

static void Test_S4533C3()
{
  extern Class_Descriptor cd_S4533C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S4533C3, buf);
    S4533C3 *dp, &lv = *(dp=new (buf) S4533C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S4533C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4533C3)");
    check_field_offset(lv, s4533c3f0, ABISELECT(8,4), "S4533C3.s4533c3f0");
    set_bf_and_test(lv, s4533c3f1, ABISELECT(32,16), 0, 1, 1, "S4533C3");
    test_class_info(&lv, &cd_S4533C3);
    dp->~S4533C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4533C3(Test_S4533C3, "S4533C3", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN7S4533C3C1Ev();
extern void _ZN7S4533C3D1Ev();
Name_Map name_map_S4533C3[] = {
  NSPAIR(_ZN7S4533C3C1Ev),
  NSPAIR(_ZN7S4533C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4533C3[];
extern void _ZN7S4533C3D1Ev();
extern void _ZN7S4533C3D0Ev();
extern void _ZN7S4533C32v2Ev();
extern void _ZN7S4533C32v3Ev();
extern void _ZN7S4533C32v4Ev();
extern void _ZN7S4533C32v5Ev();
extern void _ZN7S4533C32v6Ev();
extern void _ZN7S4533C32v7Ev();
extern void _ZN7S4533C32v8Ev();
static  VTBL_ENTRY vtc_S4533C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4533C3[0]),
  (VTBL_ENTRY)&_ZN7S4533C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4533C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4533C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4533C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4533C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4533C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4533C32v6Ev,
  (VTBL_ENTRY)&_ZN7S4533C32v7Ev,
  (VTBL_ENTRY)&_ZN7S4533C32v8Ev,
};
extern VTBL_ENTRY _ZTI7S4533C3[];
extern  VTBL_ENTRY _ZTV7S4533C3[];
Class_Descriptor cd_S4533C3 = {  "S4533C3", // class name
  0,0,//no base classes
  &(vtc_S4533C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI7S4533C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4533C3),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4533C5  {
  virtual void  v9(); // _ZN7S4533C52v9Ev
  ~S4533C5(); // tgen
  S4533C5(); // tgen
};
//SIG(-1 S4533C5) C1{ v1}


void  S4533C5 ::v9(){vfunc_called(this, "_ZN7S4533C52v9Ev");}
S4533C5 ::~S4533C5(){ note_dtor("S4533C5", this);} // tgen
S4533C5 ::S4533C5(){ note_ctor("S4533C5", this);} // tgen

static void Test_S4533C5()
{
  extern Class_Descriptor cd_S4533C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S4533C5, buf);
    S4533C5 *dp, &lv = *(dp=new (buf) S4533C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S4533C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4533C5)");
    test_class_info(&lv, &cd_S4533C5);
    dp->~S4533C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4533C5(Test_S4533C5, "S4533C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S4533C5C1Ev();
extern void _ZN7S4533C5D1Ev();
Name_Map name_map_S4533C5[] = {
  NSPAIR(_ZN7S4533C5C1Ev),
  NSPAIR(_ZN7S4533C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4533C5[];
extern void _ZN7S4533C52v9Ev();
static  VTBL_ENTRY vtc_S4533C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4533C5[0]),
  (VTBL_ENTRY)&_ZN7S4533C52v9Ev,
};
extern VTBL_ENTRY _ZTI7S4533C5[];
extern  VTBL_ENTRY _ZTV7S4533C5[];
Class_Descriptor cd_S4533C5 = {  "S4533C5", // class name
  0,0,//no base classes
  &(vtc_S4533C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S4533C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4533C5),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4533C6_nt  {
  ::S6961C7 s4533c6f0;
  int s4533c6f1;
  void  mf4533c6(); // _ZN10S4533C6_nt8mf4533c6Ev
};
//SIG(-1 S4533C6_nt) C1{ m FC2{ BC3{ m Fp Fi[2]}} Fi}


void  S4533C6_nt ::mf4533c6(){}

//skip512 S4533C6_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4533C9_nt  {
  unsigned int s4533c9f0:1;
  int s4533c9f1:3;
};
//SIG(-1 S4533C9_nt) C1{ Fi:1 Fi:3}



//skip512 S4533C9_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4533C11_nt  {
  void *s4533c11f0;
  void  mf4533c11(); // _ZN11S4533C11_nt9mf4533c11Ev
};
//SIG(-1 S4533C11_nt) C1{ m Fp}


void  S4533C11_nt ::mf4533c11(){}

//skip512 S4533C11_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4533C2_nt  : S4533C3 , S4533C5 {
  ::S4533C6_nt s4533c2f0;
  ::S4533C9_nt s4533c2f1;
  ::S17777C6_nt s4533c2f2;
  ::S4533C11_nt s4533c2f3;
  void *s4533c2f4;
  ::S79C23_nt s4533c2f5;
  int s4533c2f6;
  void *s4533c2f7;
  int s4533c2f8[2];
  virtual  ~S4533C2_nt(); // _ZN10S4533C2_ntD1Ev
  virtual void  v10(); // _ZN10S4533C2_nt3v10Ev
  virtual void  v11(); // _ZN10S4533C2_nt3v11Ev
  virtual void  v12(); // _ZN10S4533C2_nt3v12Ev
  virtual void  v13(); // _ZN10S4533C2_nt3v13Ev
  virtual void  v14(); // _ZN10S4533C2_nt3v14Ev
  S4533C2_nt(); // tgen
};
//SIG(-1 S4533C2_nt) C1{ BC2{ vd v6 v7 v8 v9 v10 v11 v12 FC3{ m Fp[3]} Fi:1} BC4{ v13} vd v1 v2 v3 v4 v5 FC5{ m FC6{ BC7{ m Fp Fi[2]}} Fi} FC8{ Fi:1 Fi:3} FC9{ m Fp} FC10{ m Fp} Fp FC11{ m Fi[4]} Fi Fp Fi[2]}


 S4533C2_nt ::~S4533C2_nt(){ note_dtor("S4533C2_nt", this);}
void  S4533C2_nt ::v10(){vfunc_called(this, "_ZN10S4533C2_nt3v10Ev");}
void  S4533C2_nt ::v11(){vfunc_called(this, "_ZN10S4533C2_nt3v11Ev");}
void  S4533C2_nt ::v12(){vfunc_called(this, "_ZN10S4533C2_nt3v12Ev");}
void  S4533C2_nt ::v13(){vfunc_called(this, "_ZN10S4533C2_nt3v13Ev");}
void  S4533C2_nt ::v14(){vfunc_called(this, "_ZN10S4533C2_nt3v14Ev");}
S4533C2_nt ::S4533C2_nt(){ note_ctor("S4533C2_nt", this);} // tgen

//skip512 S4533C2_nt

#else // __cplusplus

extern void _ZN10S4533C2_ntC1Ev();
extern void _ZN10S4533C2_ntD1Ev();
Name_Map name_map_S4533C2_nt[] = {
  NSPAIR(_ZN10S4533C2_ntC1Ev),
  NSPAIR(_ZN10S4533C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4533C3;
extern VTBL_ENTRY _ZTI7S4533C3[];
extern  VTBL_ENTRY _ZTV7S4533C3[];
extern Class_Descriptor cd_S4533C5;
extern VTBL_ENTRY _ZTI7S4533C5[];
extern  VTBL_ENTRY _ZTV7S4533C5[];
static Base_Class bases_S4533C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4533C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4533C5,    ABISELECT(40,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S4533C2_nt[];
extern void _ZN10S4533C2_ntD1Ev();
extern void _ZN10S4533C2_ntD0Ev();
extern void _ZN7S4533C32v2Ev();
extern void _ZN7S4533C32v3Ev();
extern void _ZN7S4533C32v4Ev();
extern void _ZN7S4533C32v5Ev();
extern void _ZN7S4533C32v6Ev();
extern void _ZN7S4533C32v7Ev();
extern void _ZN7S4533C32v8Ev();
extern void _ZN10S4533C2_nt3v10Ev();
extern void _ZN10S4533C2_nt3v11Ev();
extern void _ZN10S4533C2_nt3v12Ev();
extern void _ZN10S4533C2_nt3v13Ev();
extern void _ZN10S4533C2_nt3v14Ev();
extern void _ZN7S4533C52v9Ev();
static  VTBL_ENTRY vtc_S4533C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4533C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S4533C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4533C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN7S4533C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4533C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4533C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4533C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4533C32v6Ev,
  (VTBL_ENTRY)&_ZN7S4533C32v7Ev,
  (VTBL_ENTRY)&_ZN7S4533C32v8Ev,
  (VTBL_ENTRY)&_ZN10S4533C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S4533C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S4533C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S4533C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S4533C2_nt3v14Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI10S4533C2_nt[0]),
  (VTBL_ENTRY)&_ZN7S4533C52v9Ev,
};
extern VTBL_ENTRY _ZTI10S4533C2_nt[];
VTBL_ENTRY *P__ZTI10S4533C2_nt = _ZTI10S4533C2_nt; 
extern  VTBL_ENTRY _ZTV10S4533C2_nt[];
Class_Descriptor cd_S4533C2_nt = {  "S4533C2_nt", // class name
  bases_S4533C2_nt, 2,
  &(vtc_S4533C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,88), // object size
  NSPAIRA(_ZTI10S4533C2_nt),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV10S4533C2_nt),19, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4533C13_nt  {
  short s4533c13f0[3];
  void  mf4533c13(); // _ZN11S4533C13_nt9mf4533c13Ev
};
//SIG(-1 S4533C13_nt) C1{ m Fs[3]}


void  S4533C13_nt ::mf4533c13(){}

//skip512 S4533C13_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4533C18_nt  {
  ::S4533C13_nt s4533c18f0;
  ::S4533C13_nt s4533c18f1;
  ::S4533C13_nt s4533c18f2;
  ::S4533C13_nt s4533c18f3;
  void  mf4533c18(); // _ZN11S4533C18_nt9mf4533c18Ev
};
//SIG(-1 S4533C18_nt) C1{ m FC2{ m Fs[3]} FC2 FC2 FC2}


void  S4533C18_nt ::mf4533c18(){}

//skip512 S4533C18_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4533C15_nt  {
  ::S79C45 s4533c15f0;
  ::S79C41 s4533c15f1;
  ::S4533C13_nt s4533c15f2;
  ::S4533C13_nt s4533c15f3;
  ::S4533C13_nt s4533c15f4;
  ::S4533C13_nt s4533c15f5;
  ::S4533C18_nt s4533c15f6;
  ::S4533C13_nt s4533c15f7;
  ::S4533C13_nt s4533c15f8;
  void  mf4533c15(); // _ZN11S4533C15_nt9mf4533c15Ev
};
//SIG(-1 S4533C15_nt) C1{ m FC2{ BC3{ m Fp Fi[2]}} FC4{ BC3} FC5{ m Fs[3]} FC5 FC5 FC5 FC6{ m FC5 FC5 FC5 FC5} FC5 FC5}


void  S4533C15_nt ::mf4533c15(){}

//skip512 S4533C15_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4533C1  : S4533C2_nt {
  ::S4533C13_nt s4533c1f0;
  ::S4533C13_nt s4533c1f1;
  ::S4533C13_nt s4533c1f2;
  ::S4533C13_nt s4533c1f3;
  ::S4533C13_nt s4533c1f4;
  ::S4533C15_nt s4533c1f5;
  virtual void  v1(); // _ZN7S4533C12v1Ev
  ~S4533C1(); // tgen
  S4533C1(); // tgen
};
//SIG(1 S4533C1) C1{ BC2{ BC3{ vd v2 v3 v4 v5 v6 v7 v8 FC4{ m Fp[3]} Fi:1} BC5{ v9} vd v10 v11 v12 v13 v14 FC6{ m FC7{ BC8{ m Fp Fi[2]}} Fi} FC9{ Fi:1 Fi:3} FC10{ m Fp} FC11{ m Fp} Fp FC12{ m Fi[4]} Fi Fp Fi[2]} v1 FC13{ m Fs[3]} FC13 FC13 FC13 FC13 FC14{ m FC15{ BC8} FC16{ BC8} FC13 FC13 FC13 FC13 FC17{ m FC13 FC13 FC13 FC13} FC13 FC13}}


void  S4533C1 ::v1(){vfunc_called(this, "_ZN7S4533C12v1Ev");}
S4533C1 ::~S4533C1(){ note_dtor("S4533C1", this);} // tgen
S4533C1 ::S4533C1(){ note_ctor("S4533C1", this);} // tgen

static void Test_S4533C1()
{
  extern Class_Descriptor cd_S4533C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(35,52)];
    init_test(&cd_S4533C1, buf);
    S4533C1 *dp, &lv = *(dp=new (buf) S4533C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(272,204), "sizeof(S4533C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4533C1)");
    check_base_class_offset(lv, (S4533C3*)(S4533C2_nt*), 0, "S4533C1");
    check_base_class_offset(lv, (S4533C5*)(S4533C2_nt*), ABISELECT(40,20), "S4533C1");
    check_base_class_offset(lv, (S4533C2_nt*), 0, "S4533C1");
    check_field_offset(lv, s4533c1f0, ABISELECT(144,88), "S4533C1.s4533c1f0");
    check_field_offset(lv, s4533c1f1, ABISELECT(150,94), "S4533C1.s4533c1f1");
    check_field_offset(lv, s4533c1f2, ABISELECT(156,100), "S4533C1.s4533c1f2");
    check_field_offset(lv, s4533c1f3, ABISELECT(162,106), "S4533C1.s4533c1f3");
    check_field_offset(lv, s4533c1f4, ABISELECT(168,112), "S4533C1.s4533c1f4");
    check_field_offset(lv, s4533c1f5, ABISELECT(176,120), "S4533C1.s4533c1f5");
    test_class_info(&lv, &cd_S4533C1);
    dp->~S4533C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4533C1(Test_S4533C1, "S4533C1", ABISELECT(272,204));

#else // __cplusplus

extern void _ZN7S4533C1C1Ev();
extern void _ZN7S4533C1D1Ev();
Name_Map name_map_S4533C1[] = {
  NSPAIR(_ZN7S4533C1C1Ev),
  NSPAIR(_ZN7S4533C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4533C3;
extern VTBL_ENTRY _ZTI7S4533C3[];
extern  VTBL_ENTRY _ZTV7S4533C3[];
extern Class_Descriptor cd_S4533C5;
extern VTBL_ENTRY _ZTI7S4533C5[];
extern  VTBL_ENTRY _ZTV7S4533C5[];
extern Class_Descriptor cd_S4533C2_nt;
extern VTBL_ENTRY _ZTI10S4533C2_nt[];
extern  VTBL_ENTRY _ZTV10S4533C2_nt[];
static Base_Class bases_S4533C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4533C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S4533C5,    ABISELECT(40,20), //bcp->offset
    17, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S4533C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4533C1[];
extern void _ZN7S4533C1D1Ev();
extern void _ZN7S4533C1D0Ev();
extern void _ZN7S4533C32v2Ev();
extern void _ZN7S4533C32v3Ev();
extern void _ZN7S4533C32v4Ev();
extern void _ZN7S4533C32v5Ev();
extern void _ZN7S4533C32v6Ev();
extern void _ZN7S4533C32v7Ev();
extern void _ZN7S4533C32v8Ev();
extern void _ZN10S4533C2_nt3v10Ev();
extern void _ZN10S4533C2_nt3v11Ev();
extern void _ZN10S4533C2_nt3v12Ev();
extern void _ZN10S4533C2_nt3v13Ev();
extern void _ZN10S4533C2_nt3v14Ev();
extern void _ZN7S4533C12v1Ev();
extern void _ZN7S4533C52v9Ev();
static  VTBL_ENTRY vtc_S4533C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4533C1[0]),
  (VTBL_ENTRY)&_ZN7S4533C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4533C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4533C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4533C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4533C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4533C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4533C32v6Ev,
  (VTBL_ENTRY)&_ZN7S4533C32v7Ev,
  (VTBL_ENTRY)&_ZN7S4533C32v8Ev,
  (VTBL_ENTRY)&_ZN10S4533C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S4533C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S4533C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S4533C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S4533C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN7S4533C12v1Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S4533C1[0]),
  (VTBL_ENTRY)&_ZN7S4533C52v9Ev,
};
extern VTBL_ENTRY _ZTI7S4533C1[];
extern  VTBL_ENTRY _ZTV7S4533C1[];
Class_Descriptor cd_S4533C1 = {  "S4533C1", // class name
  bases_S4533C1, 3,
  &(vtc_S4533C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(272,204), // object size
  NSPAIRA(_ZTI7S4533C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4533C1),20, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21142C3  : virtual S3589C3 {
  ~S21142C3(); // tgen
  S21142C3(); // tgen
};
//SIG(-1 S21142C3) C1{ VBC2{ vd m Fc FU3{ m Fc[6]}}}


S21142C3 ::~S21142C3(){ note_dtor("S21142C3", this);} // tgen
S21142C3 ::S21142C3(){ note_ctor("S21142C3", this);} // tgen

static void Test_S21142C3()
{
  extern Class_Descriptor cd_S21142C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S21142C3, buf);
    S21142C3 *dp, &lv = *(dp=new (buf) S21142C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S21142C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21142C3)");
    check_base_class_offset(lv, (S3589C3*), ABISELECT(8,4), "S21142C3");
    test_class_info(&lv, &cd_S21142C3);
    dp->~S21142C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21142C3(Test_S21142C3, "S21142C3", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S21142C3C1Ev();
extern void _ZN8S21142C3D1Ev();
Name_Map name_map_S21142C3[] = {
  NSPAIR(_ZN8S21142C3C1Ev),
  NSPAIR(_ZN8S21142C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
static Base_Class bases_S21142C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3589C3,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21142C3[];
extern void _ZN8S21142C3D1Ev();
extern void _ZN8S21142C3D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21142C3D1Ev,_ZTv0_n12_N8S21142C3D1Ev)();
extern void ABISELECT(_ZThn8_N8S21142C3D1Ev,_ZThn4_N8S21142C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C3D0Ev,_ZTv0_n12_N8S21142C3D0Ev)();
extern void ABISELECT(_ZThn8_N8S21142C3D0Ev,_ZThn4_N8S21142C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21142C3[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21142C3[0]),
  (VTBL_ENTRY)&_ZN8S21142C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21142C3D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21142C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C3D1Ev,_ZTv0_n12_N8S21142C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C3D0Ev,_ZTv0_n12_N8S21142C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S21142C3[];
static  VTT_ENTRY vtt_S21142C3[] = {
  {&(_ZTV8S21142C3[3]),  3,10},
  {&(_ZTV8S21142C3[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S21142C3[];
extern  VTBL_ENTRY _ZTV8S21142C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21142C3[];
static VTBL_ENTRY alt_thunk_names54[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C3D0Ev,_ZTv0_n12_N8S21142C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21142C3D0Ev,_ZThn4_N8S21142C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C3D1Ev,_ZTv0_n12_N8S21142C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21142C3D1Ev,_ZThn4_N8S21142C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21142C3 = {  "S21142C3", // class name
  bases_S21142C3, 1,
  &(vtc_S21142C3[0]), // expected_vtbl_contents
  &(vtt_S21142C3[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S21142C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21142C3),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21142C3),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names54,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21142C10  : S3589C3 {
  __tsi64 s21142c10f0;
  ::S3589C4 s21142c10f1;
  virtual  ~S21142C10(); // _ZN9S21142C10D1Ev
  S21142C10(); // tgen
};
//SIG(-1 S21142C10) C1{ BC2{ vd m Fc FU3{ m Fc[6]}} vd FL FU3}


 S21142C10 ::~S21142C10(){ note_dtor("S21142C10", this);}
S21142C10 ::S21142C10(){ note_ctor("S21142C10", this);} // tgen

static void Test_S21142C10()
{
  extern Class_Descriptor cd_S21142C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,8)];
    init_test(&cd_S21142C10, buf);
    S21142C10 *dp, &lv = *(dp=new (buf) S21142C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,28), "sizeof(S21142C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21142C10)");
    check_base_class_offset(lv, (S3589C3*), 0, "S21142C10");
    check_field_offset(lv, s21142c10f0, ABISELECT(16,12), "S21142C10.s21142c10f0");
    check_field_offset(lv, s21142c10f1, ABISELECT(24,20), "S21142C10.s21142c10f1");
    test_class_info(&lv, &cd_S21142C10);
    dp->~S21142C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21142C10(Test_S21142C10, "S21142C10", ABISELECT(32,28));

#else // __cplusplus

extern void _ZN9S21142C10C1Ev();
extern void _ZN9S21142C10D1Ev();
Name_Map name_map_S21142C10[] = {
  NSPAIR(_ZN9S21142C10C1Ev),
  NSPAIR(_ZN9S21142C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
static Base_Class bases_S21142C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3589C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21142C10[];
extern void _ZN9S21142C10D1Ev();
extern void _ZN9S21142C10D0Ev();
static  VTBL_ENTRY vtc_S21142C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S21142C10[0]),
  (VTBL_ENTRY)&_ZN9S21142C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21142C10D0Ev,
};
extern VTBL_ENTRY _ZTI9S21142C10[];
extern  VTBL_ENTRY _ZTV9S21142C10[];
Class_Descriptor cd_S21142C10 = {  "S21142C10", // class name
  bases_S21142C10, 1,
  &(vtc_S21142C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,28), // object size
  NSPAIRA(_ZTI9S21142C10),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S21142C10),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21142C9  : virtual S21142C10 , virtual S3589C3 {
  virtual  ~S21142C9(); // _ZN8S21142C9D2Ev
  S21142C9(); // tgen
};
//SIG(-1 S21142C9) C1{ VBC2{ BC3{ vd m Fc FU4{ m Fc[6]}} vd FL FU4} VBC3 vd}


 S21142C9 ::~S21142C9(){ note_dtor("S21142C9", this);}
S21142C9 ::S21142C9(){ note_ctor("S21142C9", this);} // tgen

static void Test_S21142C9()
{
  extern Class_Descriptor cd_S21142C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,12)];
    init_test(&cd_S21142C9, buf);
    S21142C9 *dp, &lv = *(dp=new (buf) S21142C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,44), "sizeof(S21142C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21142C9)");
    check_base_class_offset(lv, (S3589C3*)(S21142C10*), ABISELECT(8,4), "S21142C9");
    check_base_class_offset(lv, (S21142C10*), ABISELECT(8,4), "S21142C9");
    /*is_ambiguous_... S21142C9::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*), ABISELECT(40,32), "S21142C9");
    test_class_info(&lv, &cd_S21142C9);
    dp->~S21142C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21142C9(Test_S21142C9, "S21142C9", ABISELECT(56,44));

#else // __cplusplus

extern void _ZN8S21142C9C1Ev();
extern void _ZN8S21142C9D2Ev();
Name_Map name_map_S21142C9[] = {
  NSPAIR(_ZN8S21142C9C1Ev),
  NSPAIR(_ZN8S21142C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S21142C10;
extern VTBL_ENTRY _ZTI9S21142C10[];
extern  VTBL_ENTRY _ZTV9S21142C10[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
static Base_Class bases_S21142C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3589C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S21142C10,    ABISELECT(8,4), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3589C3,    ABISELECT(40,32), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21142C9[];
extern void _ZN8S21142C9D1Ev();
extern void _ZN8S21142C9D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev)();
extern void ABISELECT(_ZThn8_N8S21142C9D1Ev,_ZThn4_N8S21142C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev)();
extern void ABISELECT(_ZThn8_N8S21142C9D0Ev,_ZThn4_N8S21142C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev)();
extern void ABISELECT(_ZThn40_N8S21142C9D1Ev,_ZThn32_N8S21142C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev)();
extern void ABISELECT(_ZThn40_N8S21142C9D0Ev,_ZThn32_N8S21142C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21142C9[] = {
  ABISELECT(40,32),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&_ZN8S21142C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21142C9D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S21142C9[];
static  VTT_ENTRY vtt_S21142C9[] = {
  {&(_ZTV8S21142C9[4]),  4,16},
  {&(_ZTV8S21142C9[9]),  9,16},
  {&(_ZTV8S21142C9[14]),  14,16},
};
extern VTBL_ENTRY _ZTI8S21142C9[];
extern  VTBL_ENTRY _ZTV8S21142C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21142C9[];
static VTBL_ENTRY alt_thunk_names55[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21142C9D0Ev,_ZThn32_N8S21142C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21142C9D0Ev,_ZThn4_N8S21142C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21142C9D1Ev,_ZThn32_N8S21142C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21142C9D1Ev,_ZThn4_N8S21142C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21142C9 = {  "S21142C9", // class name
  bases_S21142C9, 3,
  &(vtc_S21142C9[0]), // expected_vtbl_contents
  &(vtt_S21142C9[0]), // expected_vtt_contents
  ABISELECT(56,44), // object size
  NSPAIRA(_ZTI8S21142C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21142C9),16, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21142C9),3, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names55,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21142C8  : virtual S21142C9 , S3589C3 , S3589C9_nt , S21142C10 {
  int s21142c8f0;
  void *s21142c8f1;
  ~S21142C8(); // tgen
  S21142C8(); // tgen
};
//SIG(-1 S21142C8) C1{ VBC2{ VBC3{ BC4{ vd m Fc FU5{ m Fc[6]}} vd FL FU5} VBC4 vd} BC4 BC6{ vd m Fi Fc Fi} BC3 Fi Fp}


S21142C8 ::~S21142C8(){ note_dtor("S21142C8", this);} // tgen
S21142C8 ::S21142C8(){ note_ctor("S21142C8", this);} // tgen

static void Test_S21142C8()
{
  extern Class_Descriptor cd_S21142C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,28)];
    init_test(&cd_S21142C8, buf);
    S21142C8 *dp, &lv = *(dp=new (buf) S21142C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,108), "sizeof(S21142C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21142C8)");
    /*is_ambiguous_... S21142C8::S21142C10 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C10*), ABISELECT(96,68), "S21142C8");
    check_base_class_offset(lv, (S21142C10*)(S21142C9*), ABISELECT(96,68), "S21142C8");
    /*is_ambiguous_... S21142C9::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C9*), ABISELECT(128,96), "S21142C8");
    check_base_class_offset(lv, (S21142C9*), ABISELECT(88,64), "S21142C8");
    /*is_ambiguous_... S21142C8::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*), 0, "S21142C8");
    check_base_class_offset(lv, (S3589C9_nt*), ABISELECT(16,12), "S21142C8");
    /*is_ambiguous_... S21142C8::S21142C10 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C10*), ABISELECT(40,28), "S21142C8");
    /*is_ambiguous_... S21142C8::S21142C10 */ AMB_check_base_class_offset(lv, (S21142C10*), ABISELECT(40,28), "S21142C8");
    check_field_offset(lv, s21142c8f0, ABISELECT(72,56), "S21142C8.s21142c8f0");
    check_field_offset(lv, s21142c8f1, ABISELECT(80,60), "S21142C8.s21142c8f1");
    test_class_info(&lv, &cd_S21142C8);
    dp->~S21142C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21142C8(Test_S21142C8, "S21142C8", ABISELECT(144,108));

#else // __cplusplus

extern void _ZN8S21142C8C1Ev();
extern void _ZN8S21142C8D1Ev();
Name_Map name_map_S21142C8[] = {
  NSPAIR(_ZN8S21142C8C1Ev),
  NSPAIR(_ZN8S21142C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S21142C10;
extern VTBL_ENTRY _ZTI9S21142C10[];
extern  VTBL_ENTRY _ZTV9S21142C10[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S21142C9;
extern VTBL_ENTRY _ZTI8S21142C9[];
extern  VTBL_ENTRY _ZTV8S21142C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21142C9[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S3589C9_nt;
extern VTBL_ENTRY _ZTI10S3589C9_nt[];
extern  VTBL_ENTRY _ZTV10S3589C9_nt[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S21142C10;
extern VTBL_ENTRY _ZTI9S21142C10[];
extern  VTBL_ENTRY _ZTV9S21142C10[];
static Base_Class bases_S21142C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3589C3,    ABISELECT(96,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S21142C10,    ABISELECT(96,68), //bcp->offset
    22, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3589C3,    ABISELECT(128,96), //bcp->offset
    27, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21142C9,    ABISELECT(88,64), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3589C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3589C9_nt,    ABISELECT(16,12), //bcp->offset
    7, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3589C3,    ABISELECT(40,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21142C10,    ABISELECT(40,28), //bcp->offset
    11, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21142C8[];
extern void _ZN8S21142C8D1Ev();
extern void _ZN8S21142C8D0Ev();
extern void ABISELECT(_ZThn16_N8S21142C8D1Ev,_ZThn12_N8S21142C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S21142C8D0Ev,_ZThn12_N8S21142C8D0Ev)();
extern void ABISELECT(_ZThn40_N8S21142C8D1Ev,_ZThn28_N8S21142C8D1Ev)();
extern void ABISELECT(_ZThn40_N8S21142C8D0Ev,_ZThn28_N8S21142C8D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21142C8D1Ev,_ZTv0_n20_N8S21142C8D1Ev)();
extern void ABISELECT(_ZThn88_N8S21142C8D1Ev,_ZThn64_N8S21142C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21142C8D0Ev,_ZTv0_n20_N8S21142C8D0Ev)();
extern void ABISELECT(_ZThn88_N8S21142C8D0Ev,_ZThn64_N8S21142C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C8D1Ev,_ZTv0_n12_N8S21142C8D1Ev)();
extern void ABISELECT(_ZThn96_N8S21142C8D1Ev,_ZThn68_N8S21142C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C8D0Ev,_ZTv0_n12_N8S21142C8D0Ev)();
extern void ABISELECT(_ZThn96_N8S21142C8D0Ev,_ZThn68_N8S21142C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C8D1Ev,_ZTv0_n12_N8S21142C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S21142C8D1Ev,_ZThn96_N8S21142C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C8D0Ev,_ZTv0_n12_N8S21142C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S21142C8D0Ev,_ZThn96_N8S21142C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21142C8[] = {
  ABISELECT(128,96),
  ABISELECT(96,68),
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S21142C8[0]),
  (VTBL_ENTRY)&_ZN8S21142C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21142C8D0Ev,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21142C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21142C8D1Ev,_ZThn12_N8S21142C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21142C8D0Ev,_ZThn12_N8S21142C8D0Ev),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S21142C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S21142C8D1Ev,_ZThn28_N8S21142C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S21142C8D0Ev,_ZThn28_N8S21142C8D0Ev),
  ABISELECT(-88,-64),
  ABISELECT(40,32),
  ABISELECT(8,4),
  ABISELECT(-88,-64),
  (VTBL_ENTRY)&(_ZTI8S21142C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21142C8D1Ev,_ZTv0_n20_N8S21142C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21142C8D0Ev,_ZTv0_n20_N8S21142C8D0Ev),
  ABISELECT(-96,-68),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI8S21142C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C8D1Ev,_ZTv0_n12_N8S21142C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C8D0Ev,_ZTv0_n12_N8S21142C8D0Ev),
  ABISELECT(-128,-96),
  ABISELECT(-128,-96),
  (VTBL_ENTRY)&(_ZTI8S21142C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C8D1Ev,_ZTv0_n12_N8S21142C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C8D0Ev,_ZTv0_n12_N8S21142C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S21142C8[];
extern void _ZN8S21142C9D1Ev();
extern void _ZN8S21142C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21142C9__8S21142C8[] = {
  ABISELECT(40,32),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&_ZN8S21142C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21142C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev)();
extern void ABISELECT(_ZThn8_N8S21142C9D1Ev,_ZThn4_N8S21142C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev)();
extern void ABISELECT(_ZThn8_N8S21142C9D0Ev,_ZThn4_N8S21142C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C10__8S21142C9__8S21142C8[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev)();
extern void ABISELECT(_ZThn40_N8S21142C9D1Ev,_ZThn32_N8S21142C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev)();
extern void ABISELECT(_ZThn40_N8S21142C9D0Ev,_ZThn32_N8S21142C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__8S21142C9__8S21142C8[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev),
};
static  VTT_ENTRY vtt_S21142C8[] = {
  {&(_ZTV8S21142C8[5]),  5,32},
  {&(_ZTV8S21142C8[20]),  20,32},
  {&(_ZTV8S21142C8[25]),  25,32},
  {&(_ZTV8S21142C8[30]),  30,32},
  {&(_tg__ZTV8S21142C9__8S21142C8[4]),  4,6},
  {&(_tg__ZTV9S21142C10__8S21142C9__8S21142C8[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__8S21142C9__8S21142C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21142C8[];
extern  VTBL_ENTRY _ZTV8S21142C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21142C8[];
static VTBL_ENTRY alt_thunk_names56[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21142C9D0Ev,_ZThn32_N8S21142C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21142C9D0Ev,_ZThn4_N8S21142C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21142C9D1Ev,_ZThn32_N8S21142C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21142C9D1Ev,_ZThn4_N8S21142C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C8D0Ev,_ZTv0_n12_N8S21142C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21142C8D0Ev,_ZThn96_N8S21142C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21142C8D0Ev,_ZThn68_N8S21142C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C8D1Ev,_ZTv0_n12_N8S21142C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21142C8D1Ev,_ZThn96_N8S21142C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21142C8D1Ev,_ZThn68_N8S21142C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21142C8D0Ev,_ZTv0_n20_N8S21142C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S21142C8D0Ev,_ZThn64_N8S21142C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21142C8D1Ev,_ZTv0_n20_N8S21142C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S21142C8D1Ev,_ZThn64_N8S21142C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21142C8 = {  "S21142C8", // class name
  bases_S21142C8, 8,
  &(vtc_S21142C8[0]), // expected_vtbl_contents
  &(vtt_S21142C8[0]), // expected_vtt_contents
  ABISELECT(144,108), // object size
  NSPAIRA(_ZTI8S21142C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S21142C8),32, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21142C8),7, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names56,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21142C7  : S21142C8 , S21142C9 , virtual S3589C9_nt {
  ~S21142C7(); // tgen
  S21142C7(); // tgen
};
//SIG(-1 S21142C7) C1{ BC2{ VBC3{ VBC4{ BC5{ vd m Fc FU6{ m Fc[6]}} vd FL FU6} VBC5 vd} BC5 BC7{ vd m Fi Fc Fi} BC4 Fi Fp} BC3 VBC7}


S21142C7 ::~S21142C7(){ note_dtor("S21142C7", this);} // tgen
S21142C7 ::S21142C7(){ note_ctor("S21142C7", this);} // tgen

static void Test_S21142C7()
{
  extern Class_Descriptor cd_S21142C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,33)];
    init_test(&cd_S21142C7, buf);
    S21142C7 *dp, &lv = *(dp=new (buf) S21142C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,128), "sizeof(S21142C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21142C7)");
    /*is_ambiguous_... S21142C7::S21142C10 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C10*), ABISELECT(104,72), "S21142C7");
    /*is_ambiguous_... S21142C7::S21142C9 */ AMB_check_base_class_offset(lv, (S21142C10*)(S21142C9*), ABISELECT(104,72), "S21142C7");
    /*is_ambiguous_... S21142C7::S21142C9 */ AMB_check_base_class_offset(lv, (S21142C10*)(S21142C9*), ABISELECT(104,72), "S21142C7");
    /*is_ambiguous_... S21142C7::S21142C9 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C9*), ABISELECT(136,100), "S21142C7");
    /*is_ambiguous_... S21142C7::S21142C9 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C9*), ABISELECT(136,100), "S21142C7");
    check_base_class_offset(lv, (S21142C9*)(S21142C8*), ABISELECT(96,68), "S21142C7");
    /*is_ambiguous_... S21142C8::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C8*), 0, "S21142C7");
    check_base_class_offset(lv, (S3589C9_nt*)(S21142C8*), ABISELECT(16,12), "S21142C7");
    /*is_ambiguous_... S21142C8::S21142C10 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C10*)(S21142C8*), ABISELECT(40,28), "S21142C7");
    /*is_ambiguous_... S21142C8::S21142C10 */ AMB_check_base_class_offset(lv, (S21142C10*)(S21142C8*), ABISELECT(40,28), "S21142C7");
    check_base_class_offset(lv, (S21142C8*), 0, "S21142C7");
    /*is_ambiguous_... S21142C7::S21142C9 */ AMB_check_base_class_offset(lv, (S21142C9*), ABISELECT(88,64), "S21142C7");
    /*is_ambiguous_... S21142C7::S3589C9_nt */ AMB_check_base_class_offset(lv, (S3589C9_nt*), ABISELECT(152,112), "S21142C7");
    test_class_info(&lv, &cd_S21142C7);
    dp->~S21142C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21142C7(Test_S21142C7, "S21142C7", ABISELECT(176,128));

#else // __cplusplus

extern void _ZN8S21142C7C1Ev();
extern void _ZN8S21142C7D1Ev();
Name_Map name_map_S21142C7[] = {
  NSPAIR(_ZN8S21142C7C1Ev),
  NSPAIR(_ZN8S21142C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S21142C10;
extern VTBL_ENTRY _ZTI9S21142C10[];
extern  VTBL_ENTRY _ZTV9S21142C10[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S21142C9;
extern VTBL_ENTRY _ZTI8S21142C9[];
extern  VTBL_ENTRY _ZTV8S21142C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21142C9[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S3589C9_nt;
extern VTBL_ENTRY _ZTI10S3589C9_nt[];
extern  VTBL_ENTRY _ZTV10S3589C9_nt[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S21142C10;
extern VTBL_ENTRY _ZTI9S21142C10[];
extern  VTBL_ENTRY _ZTV9S21142C10[];
extern Class_Descriptor cd_S21142C8;
extern VTBL_ENTRY _ZTI8S21142C8[];
extern  VTBL_ENTRY _ZTV8S21142C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21142C8[];
extern Class_Descriptor cd_S21142C9;
extern VTBL_ENTRY _ZTI8S21142C9[];
extern  VTBL_ENTRY _ZTV8S21142C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21142C9[];
extern Class_Descriptor cd_S3589C9_nt;
extern VTBL_ENTRY _ZTI10S3589C9_nt[];
extern  VTBL_ENTRY _ZTV10S3589C9_nt[];
static Base_Class bases_S21142C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3589C3,    ABISELECT(104,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S21142C10,    ABISELECT(104,72), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3589C3,    ABISELECT(136,100), //bcp->offset
    34, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21142C9,    ABISELECT(96,68), //bcp->offset
    22, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S3589C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3589C9_nt,    ABISELECT(16,12), //bcp->offset
    8, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3589C3,    ABISELECT(40,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21142C10,    ABISELECT(40,28), //bcp->offset
    12, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21142C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21142C9,    ABISELECT(88,64), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3589C9_nt,    ABISELECT(152,112), //bcp->offset
    39, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21142C7[];
extern void _ZN8S21142C7D1Ev();
extern void _ZN8S21142C7D0Ev();
extern void ABISELECT(_ZThn16_N8S21142C7D1Ev,_ZThn12_N8S21142C7D1Ev)();
extern void ABISELECT(_ZThn16_N8S21142C7D0Ev,_ZThn12_N8S21142C7D0Ev)();
extern void ABISELECT(_ZThn40_N8S21142C7D1Ev,_ZThn28_N8S21142C7D1Ev)();
extern void ABISELECT(_ZThn40_N8S21142C7D0Ev,_ZThn28_N8S21142C7D0Ev)();
extern void ABISELECT(_ZThn88_N8S21142C7D1Ev,_ZThn64_N8S21142C7D1Ev)();
extern void ABISELECT(_ZThn88_N8S21142C7D0Ev,_ZThn64_N8S21142C7D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21142C7D1Ev,_ZTv0_n20_N8S21142C7D1Ev)();
extern void ABISELECT(_ZThn96_N8S21142C7D1Ev,_ZThn68_N8S21142C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21142C7D0Ev,_ZTv0_n20_N8S21142C7D0Ev)();
extern void ABISELECT(_ZThn96_N8S21142C7D0Ev,_ZThn68_N8S21142C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C7D1Ev,_ZTv0_n12_N8S21142C7D1Ev)();
extern void ABISELECT(_ZThn104_N8S21142C7D1Ev,_ZThn72_N8S21142C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C7D0Ev,_ZTv0_n12_N8S21142C7D0Ev)();
extern void ABISELECT(_ZThn104_N8S21142C7D0Ev,_ZThn72_N8S21142C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C7D1Ev,_ZTv0_n12_N8S21142C7D1Ev)();
extern void ABISELECT(_ZThn136_N8S21142C7D1Ev,_ZThn100_N8S21142C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C7D0Ev,_ZTv0_n12_N8S21142C7D0Ev)();
extern void ABISELECT(_ZThn136_N8S21142C7D0Ev,_ZThn100_N8S21142C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C7D1Ev,_ZTv0_n12_N8S21142C7D1Ev)();
extern void ABISELECT(_ZThn152_N8S21142C7D1Ev,_ZThn112_N8S21142C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C7D0Ev,_ZTv0_n12_N8S21142C7D0Ev)();
extern void ABISELECT(_ZThn152_N8S21142C7D0Ev,_ZThn112_N8S21142C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21142C7[] = {
  ABISELECT(152,112),
  ABISELECT(136,100),
  ABISELECT(104,72),
  ABISELECT(96,68),
  0,
  (VTBL_ENTRY)&(_ZTI8S21142C7[0]),
  (VTBL_ENTRY)&_ZN8S21142C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21142C7D0Ev,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21142C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21142C7D1Ev,_ZThn12_N8S21142C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21142C7D0Ev,_ZThn12_N8S21142C7D0Ev),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S21142C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S21142C7D1Ev,_ZThn28_N8S21142C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S21142C7D0Ev,_ZThn28_N8S21142C7D0Ev),
  ABISELECT(48,36),
  ABISELECT(16,8),
  ABISELECT(-88,-64),
  (VTBL_ENTRY)&(_ZTI8S21142C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn88_N8S21142C7D1Ev,_ZThn64_N8S21142C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn88_N8S21142C7D0Ev,_ZThn64_N8S21142C7D0Ev),
  ABISELECT(-96,-68),
  ABISELECT(40,32),
  ABISELECT(8,4),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI8S21142C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21142C7D1Ev,_ZTv0_n20_N8S21142C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21142C7D0Ev,_ZTv0_n20_N8S21142C7D0Ev),
  ABISELECT(-104,-72),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI8S21142C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C7D1Ev,_ZTv0_n12_N8S21142C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C7D0Ev,_ZTv0_n12_N8S21142C7D0Ev),
  ABISELECT(-136,-100),
  ABISELECT(-136,-100),
  (VTBL_ENTRY)&(_ZTI8S21142C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C7D1Ev,_ZTv0_n12_N8S21142C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C7D0Ev,_ZTv0_n12_N8S21142C7D0Ev),
  ABISELECT(-152,-112),
  ABISELECT(-152,-112),
  (VTBL_ENTRY)&(_ZTI8S21142C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C7D1Ev,_ZTv0_n12_N8S21142C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C7D0Ev,_ZTv0_n12_N8S21142C7D0Ev),
};
extern VTBL_ENTRY _ZTV8S21142C7[];
extern void _ZN8S21142C8D1Ev();
extern void _ZN8S21142C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21142C8__8S21142C7[] = {
  ABISELECT(136,100),
  ABISELECT(104,72),
  ABISELECT(96,68),
  0,
  (VTBL_ENTRY)&(_ZTI8S21142C8[0]),
  (VTBL_ENTRY)&_ZN8S21142C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21142C8D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S21142C8D1Ev,_ZTv0_n20_N8S21142C8D1Ev)();
extern void ABISELECT(_ZThn96_N8S21142C8D1Ev,_ZThn68_N8S21142C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21142C8D0Ev,_ZTv0_n20_N8S21142C8D0Ev)();
extern void ABISELECT(_ZThn96_N8S21142C8D0Ev,_ZThn68_N8S21142C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21142C9__8S21142C8__8S21142C7[] = {
  ABISELECT(-96,-68),
  ABISELECT(40,32),
  ABISELECT(8,4),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI8S21142C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21142C8D1Ev,_ZTv0_n20_N8S21142C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21142C8D0Ev,_ZTv0_n20_N8S21142C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21142C8D1Ev,_ZTv0_n12_N8S21142C8D1Ev)();
extern void ABISELECT(_ZThn104_N8S21142C8D1Ev,_ZThn72_N8S21142C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C8D0Ev,_ZTv0_n12_N8S21142C8D0Ev)();
extern void ABISELECT(_ZThn104_N8S21142C8D0Ev,_ZThn72_N8S21142C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C10__8S21142C8__8S21142C7[] = {
  ABISELECT(-104,-72),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI8S21142C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C8D1Ev,_ZTv0_n12_N8S21142C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C8D0Ev,_ZTv0_n12_N8S21142C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21142C8D1Ev,_ZTv0_n12_N8S21142C8D1Ev)();
extern void ABISELECT(_ZThn136_N8S21142C8D1Ev,_ZThn100_N8S21142C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C8D0Ev,_ZTv0_n12_N8S21142C8D0Ev)();
extern void ABISELECT(_ZThn136_N8S21142C8D0Ev,_ZThn100_N8S21142C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__8S21142C8__8S21142C7[] = {
  ABISELECT(-136,-100),
  ABISELECT(-136,-100),
  (VTBL_ENTRY)&(_ZTI8S21142C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C8D1Ev,_ZTv0_n12_N8S21142C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C8D0Ev,_ZTv0_n12_N8S21142C8D0Ev),
};
extern void _ZN8S21142C9D1Ev();
extern void _ZN8S21142C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21142C9__A__8S21142C7[] = {
  ABISELECT(48,36),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&_ZN8S21142C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21142C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S21142C9D1Ev,_ZThn8_N8S21142C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev)();
extern void ABISELECT(_ZThn16_N8S21142C9D0Ev,_ZThn8_N8S21142C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C10__8S21142C9__A__8S21142C7[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev)();
extern void ABISELECT(_ZThn48_N8S21142C9D1Ev,_ZThn36_N8S21142C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev)();
extern void ABISELECT(_ZThn48_N8S21142C9D0Ev,_ZThn36_N8S21142C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__8S21142C9__A__8S21142C7[] = {
  ABISELECT(-48,-36),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev),
};
extern void _ZN8S21142C9D1Ev();
extern void _ZN8S21142C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21142C9__8S21142C7[] = {
  ABISELECT(40,32),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&_ZN8S21142C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21142C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev)();
extern void ABISELECT(_ZThn8_N8S21142C9D1Ev,_ZThn4_N8S21142C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev)();
extern void ABISELECT(_ZThn8_N8S21142C9D0Ev,_ZThn4_N8S21142C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C10__8S21142C9__8S21142C7[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev)();
extern void ABISELECT(_ZThn40_N8S21142C9D1Ev,_ZThn32_N8S21142C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev)();
extern void ABISELECT(_ZThn40_N8S21142C9D0Ev,_ZThn32_N8S21142C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__8S21142C9__8S21142C7[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev),
};
static  VTT_ENTRY vtt_S21142C7[] = {
  {&(_ZTV8S21142C7[6]),  6,44},
  {&(_tg__ZTV8S21142C8__8S21142C7[5]),  5,7},
  {&(_tg__ZTV8S21142C9__8S21142C8__8S21142C7[5]),  5,7},
  {&(_tg__ZTV9S21142C10__8S21142C8__8S21142C7[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__8S21142C8__8S21142C7[3]),  3,5},
  {&(_tg__ZTV8S21142C9__A__8S21142C7[4]),  4,6},
  {&(_tg__ZTV9S21142C10__8S21142C9__A__8S21142C7[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__8S21142C9__A__8S21142C7[3]),  3,5},
  {&(_ZTV8S21142C7[27]),  27,44},
  {&(_ZTV8S21142C7[32]),  32,44},
  {&(_ZTV8S21142C7[37]),  37,44},
  {&(_ZTV8S21142C7[20]),  20,44},
  {&(_ZTV8S21142C7[42]),  42,44},
  {&(_tg__ZTV8S21142C9__8S21142C7[4]),  4,6},
  {&(_tg__ZTV9S21142C10__8S21142C9__8S21142C7[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__8S21142C9__8S21142C7[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21142C7[];
extern  VTBL_ENTRY _ZTV8S21142C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21142C7[];
static VTBL_ENTRY alt_thunk_names57[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21142C9D0Ev,_ZThn32_N8S21142C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21142C9D0Ev,_ZThn4_N8S21142C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21142C9D0Ev,_ZThn36_N8S21142C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21142C9D0Ev,_ZThn8_N8S21142C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21142C9D1Ev,_ZThn32_N8S21142C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21142C9D1Ev,_ZThn4_N8S21142C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21142C9D1Ev,_ZThn36_N8S21142C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21142C9D1Ev,_ZThn8_N8S21142C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C8D0Ev,_ZTv0_n12_N8S21142C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21142C8D0Ev,_ZThn100_N8S21142C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S21142C8D0Ev,_ZThn72_N8S21142C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C8D1Ev,_ZTv0_n12_N8S21142C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21142C8D1Ev,_ZThn100_N8S21142C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S21142C8D1Ev,_ZThn72_N8S21142C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21142C8D0Ev,_ZTv0_n20_N8S21142C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21142C8D0Ev,_ZThn68_N8S21142C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21142C8D1Ev,_ZTv0_n20_N8S21142C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21142C8D1Ev,_ZThn68_N8S21142C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C7D0Ev,_ZTv0_n12_N8S21142C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S21142C7D0Ev,_ZThn112_N8S21142C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21142C7D0Ev,_ZThn100_N8S21142C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S21142C7D0Ev,_ZThn72_N8S21142C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C7D1Ev,_ZTv0_n12_N8S21142C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S21142C7D1Ev,_ZThn112_N8S21142C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21142C7D1Ev,_ZThn100_N8S21142C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S21142C7D1Ev,_ZThn72_N8S21142C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21142C7D0Ev,_ZTv0_n20_N8S21142C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21142C7D0Ev,_ZThn68_N8S21142C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21142C7D1Ev,_ZTv0_n20_N8S21142C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21142C7D1Ev,_ZThn68_N8S21142C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21142C7 = {  "S21142C7", // class name
  bases_S21142C7, 11,
  &(vtc_S21142C7[0]), // expected_vtbl_contents
  &(vtt_S21142C7[0]), // expected_vtt_contents
  ABISELECT(176,128), // object size
  NSPAIRA(_ZTI8S21142C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21142C7),44, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21142C7),16, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names57,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21142C15  : virtual S3589C9_nt {
  void *s21142c15f0[2];
  ~S21142C15(); // tgen
  S21142C15(); // tgen
};
//SIG(-1 S21142C15) C1{ VBC2{ vd m Fi Fc Fi} Fp[2]}


S21142C15 ::~S21142C15(){ note_dtor("S21142C15", this);} // tgen
S21142C15 ::S21142C15(){ note_ctor("S21142C15", this);} // tgen

static void Test_S21142C15()
{
  extern Class_Descriptor cd_S21142C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S21142C15, buf);
    S21142C15 *dp, &lv = *(dp=new (buf) S21142C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S21142C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21142C15)");
    check_base_class_offset(lv, (S3589C9_nt*), ABISELECT(24,12), "S21142C15");
    check_field_offset(lv, s21142c15f0, ABISELECT(8,4), "S21142C15.s21142c15f0");
    test_class_info(&lv, &cd_S21142C15);
    dp->~S21142C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21142C15(Test_S21142C15, "S21142C15", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN9S21142C15C1Ev();
extern void _ZN9S21142C15D1Ev();
Name_Map name_map_S21142C15[] = {
  NSPAIR(_ZN9S21142C15C1Ev),
  NSPAIR(_ZN9S21142C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3589C9_nt;
extern VTBL_ENTRY _ZTI10S3589C9_nt[];
extern  VTBL_ENTRY _ZTV10S3589C9_nt[];
static Base_Class bases_S21142C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3589C9_nt,    ABISELECT(24,12), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21142C15[];
extern void _ZN9S21142C15D1Ev();
extern void _ZN9S21142C15D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S21142C15D1Ev,_ZTv0_n12_N9S21142C15D1Ev)();
extern void ABISELECT(_ZThn24_N9S21142C15D1Ev,_ZThn12_N9S21142C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21142C15D0Ev,_ZTv0_n12_N9S21142C15D0Ev)();
extern void ABISELECT(_ZThn24_N9S21142C15D0Ev,_ZThn12_N9S21142C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21142C15[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S21142C15[0]),
  (VTBL_ENTRY)&_ZN9S21142C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21142C15D0Ev,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S21142C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C15D1Ev,_ZTv0_n12_N9S21142C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C15D0Ev,_ZTv0_n12_N9S21142C15D0Ev),
};
extern VTBL_ENTRY _ZTV9S21142C15[];
static  VTT_ENTRY vtt_S21142C15[] = {
  {&(_ZTV9S21142C15[3]),  3,10},
  {&(_ZTV9S21142C15[8]),  8,10},
};
extern VTBL_ENTRY _ZTI9S21142C15[];
extern  VTBL_ENTRY _ZTV9S21142C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21142C15[];
static VTBL_ENTRY alt_thunk_names58[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21142C15D0Ev,_ZTv0_n12_N9S21142C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S21142C15D0Ev,_ZThn12_N9S21142C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21142C15D1Ev,_ZTv0_n12_N9S21142C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S21142C15D1Ev,_ZThn12_N9S21142C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21142C15 = {  "S21142C15", // class name
  bases_S21142C15, 1,
  &(vtc_S21142C15[0]), // expected_vtbl_contents
  &(vtt_S21142C15[0]), // expected_vtt_contents
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI9S21142C15),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S21142C15),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21142C15),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names58,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21142C13  : S3589C13_nt , virtual S21142C15 , virtual S21142C9 , S3589C3 , virtual S21142C3 {
  char s21142c13f0;
  int s21142c13f1;
  ~S21142C13(); // tgen
  S21142C13(); // tgen
};
//SIG(-1 S21142C13) C1{ BC2{ m FD} VBC3{ VBC4{ vd m Fi Fc Fi} Fp[2]} VBC5{ VBC6{ BC7{ vd m Fc FU8{ m Fc[6]}} vd FL FU8} VBC7 vd} BC7 VBC9{ VBC7} Fc Fi}


S21142C13 ::~S21142C13(){ note_dtor("S21142C13", this);} // tgen
S21142C13 ::S21142C13(){ note_ctor("S21142C13", this);} // tgen

static void Test_S21142C13()
{
  extern Class_Descriptor cd_S21142C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,28)];
    init_test(&cd_S21142C13, buf);
    S21142C13 *dp, &lv = *(dp=new (buf) S21142C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,108), "sizeof(S21142C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21142C13)");
    check_base_class_offset(lv, (S3589C13_nt*), ABISELECT(16,12), "S21142C13");
    check_base_class_offset(lv, (S3589C9_nt*)(S21142C15*), ABISELECT(64,44), "S21142C13");
    check_base_class_offset(lv, (S21142C15*), ABISELECT(40,32), "S21142C13");
    check_base_class_offset(lv, (S3589C3*)(S21142C10*), ABISELECT(96,64), "S21142C13");
    check_base_class_offset(lv, (S21142C10*)(S21142C9*), ABISELECT(96,64), "S21142C13");
    /*is_ambiguous_... S21142C9::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C9*), ABISELECT(128,92), "S21142C13");
    check_base_class_offset(lv, (S3589C3*)(S21142C3*), ABISELECT(128,92), "S21142C13");
    check_base_class_offset(lv, (S21142C9*), ABISELECT(88,60), "S21142C13");
    /*is_ambiguous_... S21142C13::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*), 0, "S21142C13");
    check_base_class_offset(lv, (S21142C3*), ABISELECT(144,104), "S21142C13");
    check_field_offset(lv, s21142c13f0, ABISELECT(32,24), "S21142C13.s21142c13f0");
    check_field_offset(lv, s21142c13f1, ABISELECT(36,28), "S21142C13.s21142c13f1");
    test_class_info(&lv, &cd_S21142C13);
    dp->~S21142C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21142C13(Test_S21142C13, "S21142C13", ABISELECT(160,108));

#else // __cplusplus

extern void _ZN9S21142C13C1Ev();
extern void _ZN9S21142C13D1Ev();
Name_Map name_map_S21142C13[] = {
  NSPAIR(_ZN9S21142C13C1Ev),
  NSPAIR(_ZN9S21142C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3589C13_nt;
extern VTBL_ENTRY _ZTI11S3589C13_nt[];
extern Class_Descriptor cd_S3589C9_nt;
extern VTBL_ENTRY _ZTI10S3589C9_nt[];
extern  VTBL_ENTRY _ZTV10S3589C9_nt[];
extern Class_Descriptor cd_S21142C15;
extern VTBL_ENTRY _ZTI9S21142C15[];
extern  VTBL_ENTRY _ZTV9S21142C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21142C15[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S21142C10;
extern VTBL_ENTRY _ZTI9S21142C10[];
extern  VTBL_ENTRY _ZTV9S21142C10[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S21142C9;
extern VTBL_ENTRY _ZTI8S21142C9[];
extern  VTBL_ENTRY _ZTV8S21142C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21142C9[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S21142C3;
extern VTBL_ENTRY _ZTI8S21142C3[];
extern  VTBL_ENTRY _ZTV8S21142C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21142C3[];
static Base_Class bases_S21142C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3589C13_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3589C9_nt,    ABISELECT(64,44), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21142C15,    ABISELECT(40,32), //bcp->offset
    10, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3589C3,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21142C10,    ABISELECT(96,64), //bcp->offset
    28, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3589C3,    ABISELECT(128,92), //bcp->offset
    33, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21142C9,    ABISELECT(88,60), //bcp->offset
    21, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3589C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21142C3,    ABISELECT(144,104), //bcp->offset
    38, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21142C13[];
extern void _ZN9S21142C13D1Ev();
extern void _ZN9S21142C13D0Ev();
extern void ABISELECT(_ZTv0_n32_N9S21142C13D1Ev,_ZTv0_n16_N9S21142C13D1Ev)();
extern void ABISELECT(_ZThn40_N9S21142C13D1Ev,_ZThn32_N9S21142C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21142C13D0Ev,_ZTv0_n16_N9S21142C13D0Ev)();
extern void ABISELECT(_ZThn40_N9S21142C13D0Ev,_ZThn32_N9S21142C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S21142C13D1Ev,_ZThn44_N9S21142C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev)();
extern void ABISELECT(_ZThn64_N9S21142C13D0Ev,_ZThn44_N9S21142C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21142C13D1Ev,_ZTv0_n20_N9S21142C13D1Ev)();
extern void ABISELECT(_ZThn88_N9S21142C13D1Ev,_ZThn60_N9S21142C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21142C13D0Ev,_ZTv0_n20_N9S21142C13D0Ev)();
extern void ABISELECT(_ZThn88_N9S21142C13D0Ev,_ZThn60_N9S21142C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev)();
extern void ABISELECT(_ZThn96_N9S21142C13D1Ev,_ZThn64_N9S21142C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev)();
extern void ABISELECT(_ZThn96_N9S21142C13D0Ev,_ZThn64_N9S21142C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev)();
extern void ABISELECT(_ZThn128_N9S21142C13D1Ev,_ZThn92_N9S21142C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev)();
extern void ABISELECT(_ZThn128_N9S21142C13D0Ev,_ZThn92_N9S21142C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21142C13D1Ev,_ZTv0_n16_N9S21142C13D1Ev)();
extern void ABISELECT(_ZThn144_N9S21142C13D1Ev,_ZThn104_N9S21142C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21142C13D0Ev,_ZTv0_n16_N9S21142C13D0Ev)();
extern void ABISELECT(_ZThn144_N9S21142C13D0Ev,_ZThn104_N9S21142C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21142C13[] = {
  ABISELECT(144,104),
  ABISELECT(128,92),
  ABISELECT(96,64),
  ABISELECT(88,60),
  ABISELECT(64,44),
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&_ZN9S21142C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21142C13D0Ev,
  ABISELECT(-40,-32),
  ABISELECT(24,12),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C13D1Ev,_ZTv0_n16_N9S21142C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C13D0Ev,_ZTv0_n16_N9S21142C13D0Ev),
  ABISELECT(-64,-44),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev),
  ABISELECT(-88,-60),
  ABISELECT(40,32),
  ABISELECT(8,4),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21142C13D1Ev,_ZTv0_n20_N9S21142C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21142C13D0Ev,_ZTv0_n20_N9S21142C13D0Ev),
  ABISELECT(-96,-64),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev),
  ABISELECT(-128,-92),
  ABISELECT(-128,-92),
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev),
  ABISELECT(-144,-104),
  ABISELECT(-16,-12),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C13D1Ev,_ZTv0_n16_N9S21142C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C13D0Ev,_ZTv0_n16_N9S21142C13D0Ev),
};
extern VTBL_ENTRY _ZTV9S21142C13[];
extern void _ZN9S21142C15D1Ev();
extern void _ZN9S21142C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21142C15__9S21142C13[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S21142C15[0]),
  (VTBL_ENTRY)&_ZN9S21142C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21142C15D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21142C15D1Ev,_ZTv0_n12_N9S21142C15D1Ev)();
extern void ABISELECT(_ZThn24_N9S21142C15D1Ev,_ZThn12_N9S21142C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21142C15D0Ev,_ZTv0_n12_N9S21142C15D0Ev)();
extern void ABISELECT(_ZThn24_N9S21142C15D0Ev,_ZThn12_N9S21142C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt__9S21142C15__9S21142C13[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S21142C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C15D1Ev,_ZTv0_n12_N9S21142C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C15D0Ev,_ZTv0_n12_N9S21142C15D0Ev),
};
extern void _ZN8S21142C9D1Ev();
extern void _ZN8S21142C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21142C9__9S21142C13[] = {
  ABISELECT(40,32),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&_ZN8S21142C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21142C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev)();
extern void ABISELECT(_ZThn8_N8S21142C9D1Ev,_ZThn4_N8S21142C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev)();
extern void ABISELECT(_ZThn8_N8S21142C9D0Ev,_ZThn4_N8S21142C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C10__8S21142C9__9S21142C13[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev)();
extern void ABISELECT(_ZThn40_N8S21142C9D1Ev,_ZThn32_N8S21142C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev)();
extern void ABISELECT(_ZThn40_N8S21142C9D0Ev,_ZThn32_N8S21142C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__8S21142C9__9S21142C13[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev),
};
extern void _ZN8S21142C3D1Ev();
extern void _ZN8S21142C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21142C3__9S21142C13[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21142C3[0]),
  (VTBL_ENTRY)&_ZN8S21142C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21142C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21142C3D1Ev,_ZTv0_n12_N8S21142C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21142C3D0Ev,_ZTv0_n12_N8S21142C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__8S21142C3__9S21142C13[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S21142C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C3D1Ev,_ZTv0_n12_N8S21142C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C3D0Ev,_ZTv0_n12_N8S21142C3D0Ev),
};
static  VTT_ENTRY vtt_S21142C13[] = {
  {&(_ZTV9S21142C13[8]),  8,44},
  {&(_ZTV9S21142C13[14]),  14,44},
  {&(_ZTV9S21142C13[19]),  19,44},
  {&(_ZTV9S21142C13[26]),  26,44},
  {&(_ZTV9S21142C13[31]),  31,44},
  {&(_ZTV9S21142C13[36]),  36,44},
  {&(_ZTV9S21142C13[42]),  42,44},
  {&(_tg__ZTV9S21142C15__9S21142C13[3]),  3,5},
  {&(_tg__ZTV10S3589C9_nt__9S21142C15__9S21142C13[3]),  3,5},
  {&(_tg__ZTV8S21142C9__9S21142C13[4]),  4,6},
  {&(_tg__ZTV9S21142C10__8S21142C9__9S21142C13[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__8S21142C9__9S21142C13[3]),  3,5},
  {&(_tg__ZTV8S21142C3__9S21142C13[3]),  3,5},
  {&(_tg__ZTV7S3589C3__8S21142C3__9S21142C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21142C13[];
extern  VTBL_ENTRY _ZTV9S21142C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21142C13[];
static VTBL_ENTRY alt_thunk_names59[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21142C9D0Ev,_ZThn32_N8S21142C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21142C9D0Ev,_ZThn4_N8S21142C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21142C9D1Ev,_ZThn32_N8S21142C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21142C9D1Ev,_ZThn4_N8S21142C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21142C15D0Ev,_ZTv0_n12_N9S21142C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S21142C15D0Ev,_ZThn12_N9S21142C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21142C15D1Ev,_ZTv0_n12_N9S21142C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S21142C15D1Ev,_ZThn12_N9S21142C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21142C13D0Ev,_ZTv0_n20_N9S21142C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S21142C13D0Ev,_ZThn60_N9S21142C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21142C13D1Ev,_ZTv0_n20_N9S21142C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S21142C13D1Ev,_ZThn60_N9S21142C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21142C13D0Ev,_ZThn92_N9S21142C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21142C13D0Ev,_ZThn64_N9S21142C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21142C13D0Ev,_ZThn44_N9S21142C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21142C13D1Ev,_ZThn92_N9S21142C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21142C13D1Ev,_ZThn64_N9S21142C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21142C13D1Ev,_ZThn44_N9S21142C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21142C13D0Ev,_ZTv0_n16_N9S21142C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S21142C13D0Ev,_ZThn104_N9S21142C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21142C13D0Ev,_ZThn32_N9S21142C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21142C13D1Ev,_ZTv0_n16_N9S21142C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S21142C13D1Ev,_ZThn104_N9S21142C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21142C13D1Ev,_ZThn32_N9S21142C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21142C13 = {  "S21142C13", // class name
  bases_S21142C13, 9,
  &(vtc_S21142C13[0]), // expected_vtbl_contents
  &(vtt_S21142C13[0]), // expected_vtt_contents
  ABISELECT(160,108), // object size
  NSPAIRA(_ZTI9S21142C13),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S21142C13),44, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21142C13),14, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names59,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21142C12  : virtual S21142C9 , S21142C3 , virtual S21142C13 {
  virtual  ~S21142C12(); // _ZN9S21142C12D2Ev
  S21142C12(); // tgen
};
//SIG(-1 S21142C12) C1{ VBC2{ VBC3{ BC4{ vd m Fc FU5{ m Fc[6]}} vd FL FU5} VBC4 vd} BC6{ VBC4} VBC7{ BC8{ m FD} VBC9{ VBC10{ vd m Fi Fc Fi} Fp[2]} VBC2 BC4 VBC6 Fc Fi} vd}


 S21142C12 ::~S21142C12(){ note_dtor("S21142C12", this);}
S21142C12 ::S21142C12(){ note_ctor("S21142C12", this);} // tgen

static void Test_S21142C12()
{
  extern Class_Descriptor cd_S21142C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,29)];
    init_test(&cd_S21142C12, buf);
    S21142C12 *dp, &lv = *(dp=new (buf) S21142C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,112), "sizeof(S21142C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21142C12)");
    check_base_class_offset(lv, (S3589C3*)(S21142C10*), ABISELECT(16,8), "S21142C12");
    check_base_class_offset(lv, (S21142C10*)(S21142C9*), ABISELECT(16,8), "S21142C12");
    /*is_ambiguous_... S21142C9::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C9*), ABISELECT(48,36), "S21142C12");
    /*is_ambiguous_... S21142C12::S21142C3 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C3*), ABISELECT(48,36), "S21142C12");
    /*is_ambiguous_... S21142C12::S21142C3 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C3*), ABISELECT(48,36), "S21142C12");
    check_base_class_offset(lv, (S21142C9*), ABISELECT(8,4), "S21142C12");
    check_base_class_offset(lv, (S21142C9*)(S21142C13*), ABISELECT(8,4), "S21142C12");
    /*is_ambiguous_... S21142C12::S21142C3 */ AMB_check_base_class_offset(lv, (S21142C3*), 0, "S21142C12");
    check_base_class_offset(lv, (S3589C13_nt*)(S21142C13*), ABISELECT(80,60), "S21142C12");
    check_base_class_offset(lv, (S3589C9_nt*)(S21142C15*), ABISELECT(128,92), "S21142C12");
    check_base_class_offset(lv, (S21142C15*)(S21142C13*), ABISELECT(104,80), "S21142C12");
    /*is_ambiguous_... S21142C13::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C13*), ABISELECT(64,48), "S21142C12");
    check_base_class_offset(lv, (S21142C3*)(S21142C13*), ABISELECT(152,108), "S21142C12");
    check_base_class_offset(lv, (S21142C13*), ABISELECT(64,48), "S21142C12");
    test_class_info(&lv, &cd_S21142C12);
    dp->~S21142C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21142C12(Test_S21142C12, "S21142C12", ABISELECT(160,112));

#else // __cplusplus

extern void _ZN9S21142C12C1Ev();
extern void _ZN9S21142C12D2Ev();
Name_Map name_map_S21142C12[] = {
  NSPAIR(_ZN9S21142C12C1Ev),
  NSPAIR(_ZN9S21142C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S21142C10;
extern VTBL_ENTRY _ZTI9S21142C10[];
extern  VTBL_ENTRY _ZTV9S21142C10[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S21142C9;
extern VTBL_ENTRY _ZTI8S21142C9[];
extern  VTBL_ENTRY _ZTV8S21142C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21142C9[];
extern Class_Descriptor cd_S21142C3;
extern VTBL_ENTRY _ZTI8S21142C3[];
extern  VTBL_ENTRY _ZTV8S21142C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21142C3[];
extern Class_Descriptor cd_S3589C13_nt;
extern VTBL_ENTRY _ZTI11S3589C13_nt[];
extern Class_Descriptor cd_S3589C9_nt;
extern VTBL_ENTRY _ZTI10S3589C9_nt[];
extern  VTBL_ENTRY _ZTV10S3589C9_nt[];
extern Class_Descriptor cd_S21142C15;
extern VTBL_ENTRY _ZTI9S21142C15[];
extern  VTBL_ENTRY _ZTV9S21142C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21142C15[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S21142C3;
extern VTBL_ENTRY _ZTI8S21142C3[];
extern  VTBL_ENTRY _ZTV8S21142C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21142C3[];
extern Class_Descriptor cd_S21142C13;
extern VTBL_ENTRY _ZTI9S21142C13[];
extern  VTBL_ENTRY _ZTV9S21142C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21142C13[];
static Base_Class bases_S21142C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3589C3,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S21142C10,    ABISELECT(16,8), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3589C3,    ABISELECT(48,36), //bcp->offset
    23, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21142C9,    ABISELECT(8,4), //bcp->offset
    11, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21142C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3589C13_nt,    ABISELECT(80,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S3589C9_nt,    ABISELECT(128,92), //bcp->offset
    45, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S21142C15,    ABISELECT(104,80), //bcp->offset
    39, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S3589C3,    ABISELECT(64,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21142C3,    ABISELECT(152,108), //bcp->offset
    50, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S21142C13,    ABISELECT(64,48), //bcp->offset
    28, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21142C12[];
extern void _ZN9S21142C12D1Ev();
extern void _ZN9S21142C12D0Ev();
extern void ABISELECT(_ZTv0_n40_N9S21142C12D1Ev,_ZTv0_n20_N9S21142C12D1Ev)();
extern void ABISELECT(_ZThn8_N9S21142C12D1Ev,_ZThn4_N9S21142C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21142C12D0Ev,_ZTv0_n20_N9S21142C12D0Ev)();
extern void ABISELECT(_ZThn8_N9S21142C12D0Ev,_ZThn4_N9S21142C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21142C12D1Ev,_ZTv0_n12_N9S21142C12D1Ev)();
extern void ABISELECT(_ZThn16_N9S21142C12D1Ev,_ZThn8_N9S21142C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21142C12D0Ev,_ZTv0_n12_N9S21142C12D0Ev)();
extern void ABISELECT(_ZThn16_N9S21142C12D0Ev,_ZThn8_N9S21142C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21142C12D1Ev,_ZTv0_n12_N9S21142C12D1Ev)();
extern void ABISELECT(_ZThn48_N9S21142C12D1Ev,_ZThn36_N9S21142C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21142C12D0Ev,_ZTv0_n12_N9S21142C12D0Ev)();
extern void ABISELECT(_ZThn48_N9S21142C12D0Ev,_ZThn36_N9S21142C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S21142C12D1Ev,_ZTv0_n36_N9S21142C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S21142C12D1Ev,_ZThn48_N9S21142C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S21142C12D0Ev,_ZTv0_n36_N9S21142C12D0Ev)();
extern void ABISELECT(_ZThn64_N9S21142C12D0Ev,_ZThn48_N9S21142C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21142C12D1Ev,_ZTv0_n16_N9S21142C12D1Ev)();
extern void ABISELECT(_ZThn104_N9S21142C12D1Ev,_ZThn80_N9S21142C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21142C12D0Ev,_ZTv0_n16_N9S21142C12D0Ev)();
extern void ABISELECT(_ZThn104_N9S21142C12D0Ev,_ZThn80_N9S21142C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21142C12D1Ev,_ZTv0_n12_N9S21142C12D1Ev)();
extern void ABISELECT(_ZThn128_N9S21142C12D1Ev,_ZThn92_N9S21142C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21142C12D0Ev,_ZTv0_n12_N9S21142C12D0Ev)();
extern void ABISELECT(_ZThn128_N9S21142C12D0Ev,_ZThn92_N9S21142C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21142C12D1Ev,_ZTv0_n16_N9S21142C12D1Ev)();
extern void ABISELECT(_ZThn152_N9S21142C12D1Ev,_ZThn108_N9S21142C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21142C12D0Ev,_ZTv0_n16_N9S21142C12D0Ev)();
extern void ABISELECT(_ZThn152_N9S21142C12D0Ev,_ZThn108_N9S21142C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21142C12[] = {
  ABISELECT(152,108),
  ABISELECT(128,92),
  ABISELECT(104,80),
  ABISELECT(64,48),
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(48,36),
  0,
  (VTBL_ENTRY)&(_ZTI9S21142C12[0]),
  (VTBL_ENTRY)&_ZN9S21142C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21142C12D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(40,32),
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21142C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21142C12D1Ev,_ZTv0_n20_N9S21142C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21142C12D0Ev,_ZTv0_n20_N9S21142C12D0Ev),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21142C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C12D1Ev,_ZTv0_n12_N9S21142C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C12D0Ev,_ZTv0_n12_N9S21142C12D0Ev),
  ABISELECT(-48,-36),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI9S21142C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C12D1Ev,_ZTv0_n12_N9S21142C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C12D0Ev,_ZTv0_n12_N9S21142C12D0Ev),
  ABISELECT(-64,-48),
  ABISELECT(88,60),
  ABISELECT(-16,-12),
  ABISELECT(-48,-40),
  ABISELECT(-56,-44),
  ABISELECT(64,44),
  ABISELECT(40,32),
  ABISELECT(-64,-48),
  (VTBL_ENTRY)&(_ZTI9S21142C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21142C12D1Ev,_ZTv0_n36_N9S21142C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21142C12D0Ev,_ZTv0_n36_N9S21142C12D0Ev),
  ABISELECT(-104,-80),
  ABISELECT(24,12),
  ABISELECT(-104,-80),
  (VTBL_ENTRY)&(_ZTI9S21142C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C12D1Ev,_ZTv0_n16_N9S21142C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C12D0Ev,_ZTv0_n16_N9S21142C12D0Ev),
  ABISELECT(-128,-92),
  ABISELECT(-128,-92),
  (VTBL_ENTRY)&(_ZTI9S21142C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C12D1Ev,_ZTv0_n12_N9S21142C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C12D0Ev,_ZTv0_n12_N9S21142C12D0Ev),
  ABISELECT(-152,-108),
  ABISELECT(-104,-72),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI9S21142C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C12D1Ev,_ZTv0_n16_N9S21142C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C12D0Ev,_ZTv0_n16_N9S21142C12D0Ev),
};
extern VTBL_ENTRY _ZTV9S21142C12[];
extern void _ZN8S21142C3D1Ev();
extern void _ZN8S21142C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21142C3__A__9S21142C12[] = {
  ABISELECT(48,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S21142C3[0]),
  (VTBL_ENTRY)&_ZN8S21142C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21142C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21142C3D1Ev,_ZTv0_n12_N8S21142C3D1Ev)();
extern void ABISELECT(_ZThn48_N8S21142C3D1Ev,_ZThn36_N8S21142C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C3D0Ev,_ZTv0_n12_N8S21142C3D0Ev)();
extern void ABISELECT(_ZThn48_N8S21142C3D0Ev,_ZThn36_N8S21142C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__8S21142C3__A__9S21142C12[] = {
  ABISELECT(-48,-36),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S21142C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C3D1Ev,_ZTv0_n12_N8S21142C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C3D0Ev,_ZTv0_n12_N8S21142C3D0Ev),
};
extern void _ZN8S21142C9D1Ev();
extern void _ZN8S21142C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21142C9__9S21142C12[] = {
  ABISELECT(40,32),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&_ZN8S21142C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21142C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev)();
extern void ABISELECT(_ZThn8_N8S21142C9D1Ev,_ZThn4_N8S21142C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev)();
extern void ABISELECT(_ZThn8_N8S21142C9D0Ev,_ZThn4_N8S21142C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C10__8S21142C9__9S21142C12[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev)();
extern void ABISELECT(_ZThn40_N8S21142C9D1Ev,_ZThn32_N8S21142C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev)();
extern void ABISELECT(_ZThn40_N8S21142C9D0Ev,_ZThn32_N8S21142C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__8S21142C9__9S21142C12[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev),
};
extern void _ZN9S21142C13D1Ev();
extern void _ZN9S21142C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21142C13__9S21142C12[] = {
  ABISELECT(88,60),
  ABISELECT(-16,-12),
  ABISELECT(-48,-40),
  ABISELECT(-56,-44),
  ABISELECT(64,44),
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&_ZN9S21142C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21142C13D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S21142C13D1Ev,_ZTv0_n16_N9S21142C13D1Ev)();
extern void ABISELECT(_ZThn40_N9S21142C13D1Ev,_ZThn32_N9S21142C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21142C13D0Ev,_ZTv0_n16_N9S21142C13D0Ev)();
extern void ABISELECT(_ZThn40_N9S21142C13D0Ev,_ZThn32_N9S21142C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C15__9S21142C13__9S21142C12[] = {
  ABISELECT(-40,-32),
  ABISELECT(24,12),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C13D1Ev,_ZTv0_n16_N9S21142C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C13D0Ev,_ZTv0_n16_N9S21142C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S21142C13D1Ev,_ZThn44_N9S21142C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev)();
extern void ABISELECT(_ZThn64_N9S21142C13D0Ev,_ZThn44_N9S21142C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt__9S21142C13__9S21142C12[] = {
  ABISELECT(-64,-44),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21142C13D1Ev,_ZTv0_n20_N9S21142C13D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21142C13D0Ev,_ZTv0_n20_N9S21142C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21142C9__9S21142C13__9S21142C12[] = {
  ABISELECT(56,44),
  ABISELECT(40,32),
  ABISELECT(8,4),
  ABISELECT(56,44),
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21142C13D1Ev,_ZTv0_n20_N9S21142C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21142C13D0Ev,_ZTv0_n20_N9S21142C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21142C10__9S21142C13__9S21142C12[] = {
  ABISELECT(48,40),
  ABISELECT(48,40),
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__9S21142C13__9S21142C12[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21142C13D1Ev,_ZTv0_n16_N9S21142C13D1Ev)();
extern void ABISELECT(_ZThn88_N9S21142C13D1Ev,_ZThn60_N9S21142C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21142C13D0Ev,_ZTv0_n16_N9S21142C13D0Ev)();
extern void ABISELECT(_ZThn88_N9S21142C13D0Ev,_ZThn60_N9S21142C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21142C3__9S21142C13__9S21142C12[] = {
  ABISELECT(-88,-60),
  ABISELECT(-104,-72),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C13D1Ev,_ZTv0_n16_N9S21142C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C13D0Ev,_ZTv0_n16_N9S21142C13D0Ev),
};
extern void _ZN9S21142C15D1Ev();
extern void _ZN9S21142C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21142C15__9S21142C12[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S21142C15[0]),
  (VTBL_ENTRY)&_ZN9S21142C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21142C15D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21142C15D1Ev,_ZTv0_n12_N9S21142C15D1Ev)();
extern void ABISELECT(_ZThn24_N9S21142C15D1Ev,_ZThn12_N9S21142C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21142C15D0Ev,_ZTv0_n12_N9S21142C15D0Ev)();
extern void ABISELECT(_ZThn24_N9S21142C15D0Ev,_ZThn12_N9S21142C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt__9S21142C15__9S21142C12[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S21142C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C15D1Ev,_ZTv0_n12_N9S21142C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C15D0Ev,_ZTv0_n12_N9S21142C15D0Ev),
};
extern void _ZN8S21142C3D1Ev();
extern void _ZN8S21142C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21142C3__A1__9S21142C12[] = {
  ABISELECT(-104,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S21142C3[0]),
  (VTBL_ENTRY)&_ZN8S21142C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21142C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21142C3D1Ev,_ZTv0_n12_N8S21142C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21142C3D0Ev,_ZTv0_n12_N8S21142C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__8S21142C3__A1__9S21142C12[] = {
  ABISELECT(104,72),
  ABISELECT(104,72),
  (VTBL_ENTRY)&(_ZTI8S21142C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C3D1Ev,_ZTv0_n12_N8S21142C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C3D0Ev,_ZTv0_n12_N8S21142C3D0Ev),
};
static  VTT_ENTRY vtt_S21142C12[] = {
  {&(_ZTV9S21142C12[9]),  9,56},
  {&(_tg__ZTV8S21142C3__A__9S21142C12[3]),  3,5},
  {&(_tg__ZTV7S3589C3__8S21142C3__A__9S21142C12[3]),  3,5},
  {&(_ZTV9S21142C12[16]),  16,56},
  {&(_ZTV9S21142C12[21]),  21,56},
  {&(_ZTV9S21142C12[26]),  26,56},
  {&(_ZTV9S21142C12[37]),  37,56},
  {&(_ZTV9S21142C12[43]),  43,56},
  {&(_ZTV9S21142C12[48]),  48,56},
  {&(_ZTV9S21142C12[54]),  54,56},
  {&(_tg__ZTV8S21142C9__9S21142C12[4]),  4,6},
  {&(_tg__ZTV9S21142C10__8S21142C9__9S21142C12[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__8S21142C9__9S21142C12[3]),  3,5},
  {&(_tg__ZTV9S21142C13__9S21142C12[8]),  8,10},
  {&(_tg__ZTV9S21142C15__9S21142C13__9S21142C12[4]),  4,6},
  {&(_tg__ZTV10S3589C9_nt__9S21142C13__9S21142C12[3]),  3,5},
  {&(_tg__ZTV8S21142C9__9S21142C13__9S21142C12[5]),  5,7},
  {&(_tg__ZTV9S21142C10__9S21142C13__9S21142C12[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__9S21142C13__9S21142C12[3]),  3,5},
  {&(_tg__ZTV8S21142C3__9S21142C13__9S21142C12[4]),  4,6},
  {&(_tg__ZTV9S21142C15__9S21142C12[3]),  3,5},
  {&(_tg__ZTV10S3589C9_nt__9S21142C15__9S21142C12[3]),  3,5},
  {&(_tg__ZTV8S21142C3__A1__9S21142C12[3]),  3,5},
  {&(_tg__ZTV7S3589C3__8S21142C3__A1__9S21142C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21142C12[];
extern  VTBL_ENTRY _ZTV9S21142C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21142C12[];
static VTBL_ENTRY alt_thunk_names60[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21142C15D0Ev,_ZTv0_n12_N9S21142C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S21142C15D0Ev,_ZThn12_N9S21142C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21142C15D1Ev,_ZTv0_n12_N9S21142C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S21142C15D1Ev,_ZThn12_N9S21142C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21142C13D0Ev,_ZThn44_N9S21142C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21142C13D1Ev,_ZThn44_N9S21142C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21142C13D0Ev,_ZTv0_n16_N9S21142C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S21142C13D0Ev,_ZThn60_N9S21142C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21142C13D0Ev,_ZThn32_N9S21142C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21142C13D1Ev,_ZTv0_n16_N9S21142C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S21142C13D1Ev,_ZThn60_N9S21142C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21142C13D1Ev,_ZThn32_N9S21142C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21142C9D0Ev,_ZThn32_N8S21142C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21142C9D0Ev,_ZThn4_N8S21142C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21142C9D1Ev,_ZThn32_N8S21142C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21142C9D1Ev,_ZThn4_N8S21142C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C3D0Ev,_ZTv0_n12_N8S21142C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21142C3D0Ev,_ZThn36_N8S21142C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C3D1Ev,_ZTv0_n12_N8S21142C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21142C3D1Ev,_ZThn36_N8S21142C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21142C12D0Ev,_ZTv0_n16_N9S21142C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21142C12D0Ev,_ZThn108_N9S21142C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S21142C12D0Ev,_ZThn80_N9S21142C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21142C12D1Ev,_ZTv0_n16_N9S21142C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21142C12D1Ev,_ZThn108_N9S21142C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S21142C12D1Ev,_ZThn80_N9S21142C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21142C12D0Ev,_ZTv0_n36_N9S21142C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21142C12D0Ev,_ZThn48_N9S21142C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21142C12D1Ev,_ZTv0_n36_N9S21142C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21142C12D1Ev,_ZThn48_N9S21142C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21142C12D0Ev,_ZTv0_n12_N9S21142C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21142C12D0Ev,_ZThn92_N9S21142C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21142C12D0Ev,_ZThn36_N9S21142C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21142C12D0Ev,_ZThn8_N9S21142C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21142C12D1Ev,_ZTv0_n12_N9S21142C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21142C12D1Ev,_ZThn92_N9S21142C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21142C12D1Ev,_ZThn36_N9S21142C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21142C12D1Ev,_ZThn8_N9S21142C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21142C12D0Ev,_ZTv0_n20_N9S21142C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S21142C12D0Ev,_ZThn4_N9S21142C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21142C12D1Ev,_ZTv0_n20_N9S21142C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S21142C12D1Ev,_ZThn4_N9S21142C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21142C12 = {  "S21142C12", // class name
  bases_S21142C12, 11,
  &(vtc_S21142C12[0]), // expected_vtbl_contents
  &(vtt_S21142C12[0]), // expected_vtt_contents
  ABISELECT(160,112), // object size
  NSPAIRA(_ZTI9S21142C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21142C12),56, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21142C12),24, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names60,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21142C17  : virtual S3589C3 {
  int s21142c17f0;
  ::S19905C17_nt s21142c17f1;
  ~S21142C17(); // tgen
  S21142C17(); // tgen
};
//SIG(-1 S21142C17) C1{ VBC2{ vd m Fc FU3{ m Fc[6]}} Fi FC4{}}


S21142C17 ::~S21142C17(){ note_dtor("S21142C17", this);} // tgen
S21142C17 ::S21142C17(){ note_ctor("S21142C17", this);} // tgen

static void Test_S21142C17()
{
  extern Class_Descriptor cd_S21142C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S21142C17, buf);
    S21142C17 *dp, &lv = *(dp=new (buf) S21142C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S21142C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21142C17)");
    check_base_class_offset(lv, (S3589C3*), ABISELECT(16,12), "S21142C17");
    check_field_offset(lv, s21142c17f0, ABISELECT(8,4), "S21142C17.s21142c17f0");
    check_field_offset(lv, s21142c17f1, ABISELECT(12,8), "S21142C17.s21142c17f1");
    test_class_info(&lv, &cd_S21142C17);
    dp->~S21142C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21142C17(Test_S21142C17, "S21142C17", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN9S21142C17C1Ev();
extern void _ZN9S21142C17D1Ev();
Name_Map name_map_S21142C17[] = {
  NSPAIR(_ZN9S21142C17C1Ev),
  NSPAIR(_ZN9S21142C17D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
static Base_Class bases_S21142C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3589C3,    ABISELECT(16,12), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21142C17[];
extern void _ZN9S21142C17D1Ev();
extern void _ZN9S21142C17D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S21142C17D1Ev,_ZTv0_n12_N9S21142C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S21142C17D1Ev,_ZThn12_N9S21142C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21142C17D0Ev,_ZTv0_n12_N9S21142C17D0Ev)();
extern void ABISELECT(_ZThn16_N9S21142C17D0Ev,_ZThn12_N9S21142C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21142C17[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S21142C17[0]),
  (VTBL_ENTRY)&_ZN9S21142C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21142C17D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21142C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C17D1Ev,_ZTv0_n12_N9S21142C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C17D0Ev,_ZTv0_n12_N9S21142C17D0Ev),
};
extern VTBL_ENTRY _ZTV9S21142C17[];
static  VTT_ENTRY vtt_S21142C17[] = {
  {&(_ZTV9S21142C17[3]),  3,10},
  {&(_ZTV9S21142C17[8]),  8,10},
};
extern VTBL_ENTRY _ZTI9S21142C17[];
extern  VTBL_ENTRY _ZTV9S21142C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21142C17[];
static VTBL_ENTRY alt_thunk_names61[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21142C17D0Ev,_ZTv0_n12_N9S21142C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21142C17D0Ev,_ZThn12_N9S21142C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21142C17D1Ev,_ZTv0_n12_N9S21142C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21142C17D1Ev,_ZThn12_N9S21142C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21142C17 = {  "S21142C17", // class name
  bases_S21142C17, 1,
  &(vtc_S21142C17[0]), // expected_vtbl_contents
  &(vtt_S21142C17[0]), // expected_vtt_contents
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI9S21142C17),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S21142C17),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21142C17),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names61,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21142C16  : S21142C9 , virtual S21142C17 {
  long double s21142c16f0;
  virtual  ~S21142C16(); // _ZN9S21142C16D2Ev
  S21142C16(); // tgen
};
//SIG(-1 S21142C16) C1{ BC2{ VBC3{ BC4{ vd m Fc FU5{ m Fc[6]}} vd FL FU5} VBC4 vd} VBC6{ VBC4 Fi FC7{}} vd FD}


 S21142C16 ::~S21142C16(){ note_dtor("S21142C16", this);}
S21142C16 ::S21142C16(){ note_ctor("S21142C16", this);} // tgen

static void Test_S21142C16()
{
  extern Class_Descriptor cd_S21142C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,18)];
    init_test(&cd_S21142C16, buf);
    S21142C16 *dp, &lv = *(dp=new (buf) S21142C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,68), "sizeof(S21142C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21142C16)");
    check_base_class_offset(lv, (S3589C3*)(S21142C10*), ABISELECT(32,16), "S21142C16");
    check_base_class_offset(lv, (S21142C10*)(S21142C9*), ABISELECT(32,16), "S21142C16");
    /*is_ambiguous_... S21142C9::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C9*), ABISELECT(64,44), "S21142C16");
    check_base_class_offset(lv, (S3589C3*)(S21142C17*), ABISELECT(64,44), "S21142C16");
    check_base_class_offset(lv, (S21142C9*), 0, "S21142C16");
    check_base_class_offset(lv, (S21142C17*), ABISELECT(80,56), "S21142C16");
    check_field_offset(lv, s21142c16f0, ABISELECT(16,4), "S21142C16.s21142c16f0");
    test_class_info(&lv, &cd_S21142C16);
    dp->~S21142C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21142C16(Test_S21142C16, "S21142C16", ABISELECT(96,68));

#else // __cplusplus

extern void _ZN9S21142C16C1Ev();
extern void _ZN9S21142C16D2Ev();
Name_Map name_map_S21142C16[] = {
  NSPAIR(_ZN9S21142C16C1Ev),
  NSPAIR(_ZN9S21142C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S21142C10;
extern VTBL_ENTRY _ZTI9S21142C10[];
extern  VTBL_ENTRY _ZTV9S21142C10[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S21142C9;
extern VTBL_ENTRY _ZTI8S21142C9[];
extern  VTBL_ENTRY _ZTV8S21142C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21142C9[];
extern Class_Descriptor cd_S21142C17;
extern VTBL_ENTRY _ZTI9S21142C17[];
extern  VTBL_ENTRY _ZTV9S21142C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21142C17[];
static Base_Class bases_S21142C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3589C3,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S21142C10,    ABISELECT(32,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3589C3,    ABISELECT(64,44), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21142C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21142C17,    ABISELECT(80,56), //bcp->offset
    17, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21142C16[];
extern void _ZN9S21142C16D1Ev();
extern void _ZN9S21142C16D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S21142C16D1Ev,_ZTv0_n12_N9S21142C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S21142C16D1Ev,_ZThn16_N9S21142C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21142C16D0Ev,_ZTv0_n12_N9S21142C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S21142C16D0Ev,_ZThn16_N9S21142C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21142C16D1Ev,_ZTv0_n12_N9S21142C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S21142C16D1Ev,_ZThn44_N9S21142C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21142C16D0Ev,_ZTv0_n12_N9S21142C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S21142C16D0Ev,_ZThn44_N9S21142C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21142C16D1Ev,_ZTv0_n16_N9S21142C16D1Ev)();
extern void ABISELECT(_ZThn80_N9S21142C16D1Ev,_ZThn56_N9S21142C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21142C16D0Ev,_ZTv0_n16_N9S21142C16D0Ev)();
extern void ABISELECT(_ZThn80_N9S21142C16D0Ev,_ZThn56_N9S21142C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21142C16[] = {
  ABISELECT(80,56),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S21142C16[0]),
  (VTBL_ENTRY)&_ZN9S21142C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21142C16D0Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S21142C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C16D1Ev,_ZTv0_n12_N9S21142C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C16D0Ev,_ZTv0_n12_N9S21142C16D0Ev),
  ABISELECT(-64,-44),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S21142C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C16D1Ev,_ZTv0_n12_N9S21142C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C16D0Ev,_ZTv0_n12_N9S21142C16D0Ev),
  ABISELECT(-80,-56),
  ABISELECT(-16,-12),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S21142C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C16D1Ev,_ZTv0_n16_N9S21142C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C16D0Ev,_ZTv0_n16_N9S21142C16D0Ev),
};
extern VTBL_ENTRY _ZTV9S21142C16[];
extern void _ZN8S21142C9D1Ev();
extern void _ZN8S21142C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21142C9__9S21142C16[] = {
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&_ZN8S21142C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21142C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev)();
extern void ABISELECT(_ZThn32_N8S21142C9D1Ev,_ZThn16_N8S21142C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev)();
extern void ABISELECT(_ZThn32_N8S21142C9D0Ev,_ZThn16_N8S21142C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C10__8S21142C9__9S21142C16[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev)();
extern void ABISELECT(_ZThn64_N8S21142C9D1Ev,_ZThn44_N8S21142C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev)();
extern void ABISELECT(_ZThn64_N8S21142C9D0Ev,_ZThn44_N8S21142C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__8S21142C9__9S21142C16[] = {
  ABISELECT(-64,-44),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev),
};
extern void _ZN9S21142C17D1Ev();
extern void _ZN9S21142C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21142C17__9S21142C16[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S21142C17[0]),
  (VTBL_ENTRY)&_ZN9S21142C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21142C17D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21142C17D1Ev,_ZTv0_n12_N9S21142C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21142C17D0Ev,_ZTv0_n12_N9S21142C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__9S21142C17__9S21142C16[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S21142C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C17D1Ev,_ZTv0_n12_N9S21142C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C17D0Ev,_ZTv0_n12_N9S21142C17D0Ev),
};
static  VTT_ENTRY vtt_S21142C16[] = {
  {&(_ZTV9S21142C16[5]),  5,23},
  {&(_tg__ZTV8S21142C9__9S21142C16[4]),  4,6},
  {&(_tg__ZTV9S21142C10__8S21142C9__9S21142C16[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__8S21142C9__9S21142C16[3]),  3,5},
  {&(_ZTV9S21142C16[10]),  10,23},
  {&(_ZTV9S21142C16[15]),  15,23},
  {&(_ZTV9S21142C16[21]),  21,23},
  {&(_tg__ZTV9S21142C17__9S21142C16[3]),  3,5},
  {&(_tg__ZTV7S3589C3__9S21142C17__9S21142C16[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21142C16[];
extern  VTBL_ENTRY _ZTV9S21142C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21142C16[];
static VTBL_ENTRY alt_thunk_names62[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21142C9D0Ev,_ZThn44_N8S21142C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S21142C9D0Ev,_ZThn16_N8S21142C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21142C9D1Ev,_ZThn44_N8S21142C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S21142C9D1Ev,_ZThn16_N8S21142C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21142C16D0Ev,_ZTv0_n16_N9S21142C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21142C16D0Ev,_ZThn56_N9S21142C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21142C16D1Ev,_ZTv0_n16_N9S21142C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21142C16D1Ev,_ZThn56_N9S21142C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21142C16D0Ev,_ZTv0_n12_N9S21142C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21142C16D0Ev,_ZThn44_N9S21142C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21142C16D0Ev,_ZThn16_N9S21142C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21142C16D1Ev,_ZTv0_n12_N9S21142C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21142C16D1Ev,_ZThn44_N9S21142C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21142C16D1Ev,_ZThn16_N9S21142C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21142C16 = {  "S21142C16", // class name
  bases_S21142C16, 5,
  &(vtc_S21142C16[0]), // expected_vtbl_contents
  &(vtt_S21142C16[0]), // expected_vtt_contents
  ABISELECT(96,68), // object size
  NSPAIRA(_ZTI9S21142C16),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S21142C16),23, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21142C16),9, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names62,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21142C6  : virtual S21142C7 , virtual S21142C12 , S21142C16 {
  int s21142c6f0[10];
  void *s21142c6f1;
  ::S21142C16 s21142c6f2;
  virtual  ~S21142C6(); // _ZN8S21142C6D2Ev
  S21142C6(); // tgen
};
//SIG(-1 S21142C6) C1{ VBC2{ BC3{ VBC4{ VBC5{ BC6{ vd m Fc FU7{ m Fc[6]}} vd FL FU7} VBC6 vd} BC6 BC8{ vd m Fi Fc Fi} BC5 Fi Fp} BC4 VBC8} VBC9{ VBC4 BC10{ VBC6} VBC11{ BC12{ m FD} VBC13{ VBC8 Fp[2]} VBC4 BC6 VBC10 Fc Fi} vd} BC14{ BC4 VBC15{ VBC6 Fi FC16{}} vd FD} vd Fi[10] Fp FC14}


 S21142C6 ::~S21142C6(){ note_dtor("S21142C6", this);}
S21142C6 ::S21142C6(){ note_ctor("S21142C6", this);} // tgen

static void Test_S21142C6()
{
  extern Class_Descriptor cd_S21142C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(30,81)];
    init_test(&cd_S21142C6, buf);
    S21142C6 *dp, &lv = *(dp=new (buf) S21142C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,320), "sizeof(S21142C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21142C6)");
    /*is_ambiguous_... S21142C6::S21142C10 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C10*), ABISELECT(280,200), "S21142C6");
    /*is_ambiguous_... S21142C6::S21142C9 */ AMB_check_base_class_offset(lv, (S21142C10*)(S21142C9*), ABISELECT(280,200), "S21142C6");
    /*is_ambiguous_... S21142C7::S21142C9 */ AMB_check_base_class_offset(lv, (S21142C10*)(S21142C9*)(S21142C7*), ABISELECT(280,200), "S21142C6");
    check_base_class_offset(lv, (S21142C10*)(S21142C9*)(S21142C16*), ABISELECT(280,200), "S21142C6");
    /*is_ambiguous_... S21142C6::S21142C9 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C9*), ABISELECT(312,228), "S21142C6");
    /*is_ambiguous_... S21142C7::S21142C9 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C9*)(S21142C7*), ABISELECT(312,228), "S21142C6");
    /*is_ambiguous_... S21142C12::S21142C3 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C3*)(S21142C12*), ABISELECT(312,228), "S21142C6");
    /*is_ambiguous_... S21142C6::S21142C3 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C3*), ABISELECT(312,228), "S21142C6");
    /*is_ambiguous_... S21142C9::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C9*)(S21142C16*), ABISELECT(312,228), "S21142C6");
    check_base_class_offset(lv, (S3589C3*)(S21142C17*), ABISELECT(312,228), "S21142C6");
    check_base_class_offset(lv, (S21142C9*)(S21142C8*)(S21142C7*), ABISELECT(272,196), "S21142C6");
    check_base_class_offset(lv, (S21142C9*)(S21142C12*), ABISELECT(272,196), "S21142C6");
    check_base_class_offset(lv, (S21142C9*)(S21142C13*), ABISELECT(272,196), "S21142C6");
    /*is_ambiguous_... S21142C8::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C8*)(S21142C7*), ABISELECT(176,128), "S21142C6");
    check_base_class_offset(lv, (S3589C9_nt*)(S21142C8*)(S21142C7*), ABISELECT(192,140), "S21142C6");
    /*is_ambiguous_... S21142C8::S21142C10 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C10*)(S21142C8*)(S21142C7*), ABISELECT(216,156), "S21142C6");
    /*is_ambiguous_... S21142C8::S21142C10 */ AMB_check_base_class_offset(lv, (S21142C10*)(S21142C8*)(S21142C7*), ABISELECT(216,156), "S21142C6");
    check_base_class_offset(lv, (S21142C8*)(S21142C7*), ABISELECT(176,128), "S21142C6");
    /*is_ambiguous_... S21142C7::S21142C9 */ AMB_check_base_class_offset(lv, (S21142C9*)(S21142C7*), ABISELECT(264,192), "S21142C6");
    /*is_ambiguous_... S21142C7::S3589C9_nt */ AMB_check_base_class_offset(lv, (S3589C9_nt*)(S21142C7*), ABISELECT(328,240), "S21142C6");
    check_base_class_offset(lv, (S3589C9_nt*)(S21142C15*), ABISELECT(328,240), "S21142C6");
    check_base_class_offset(lv, (S21142C7*), ABISELECT(176,128), "S21142C6");
    /*is_ambiguous_... S21142C12::S21142C3 */ AMB_check_base_class_offset(lv, (S21142C3*)(S21142C12*), ABISELECT(352,256), "S21142C6");
    check_base_class_offset(lv, (S3589C13_nt*)(S21142C13*), ABISELECT(384,272), "S21142C6");
    check_base_class_offset(lv, (S21142C15*)(S21142C13*), ABISELECT(408,292), "S21142C6");
    /*is_ambiguous_... S21142C13::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C13*), ABISELECT(368,260), "S21142C6");
    check_base_class_offset(lv, (S21142C3*)(S21142C13*), ABISELECT(432,304), "S21142C6");
    check_base_class_offset(lv, (S21142C13*)(S21142C12*), ABISELECT(368,260), "S21142C6");
    check_base_class_offset(lv, (S21142C12*), ABISELECT(352,256), "S21142C6");
    check_base_class_offset(lv, (S21142C9*)(S21142C16*), 0, "S21142C6");
    check_base_class_offset(lv, (S21142C17*)(S21142C16*), ABISELECT(440,308), "S21142C6");
    check_base_class_offset(lv, (S21142C16*), 0, "S21142C6");
    check_field_offset(lv, s21142c6f0, ABISELECT(32,16), "S21142C6.s21142c6f0");
    check_field_offset(lv, s21142c6f1, ABISELECT(72,56), "S21142C6.s21142c6f1");
    check_field_offset(lv, s21142c6f2, ABISELECT(80,60), "S21142C6.s21142c6f2");
    test_class_info(&lv, &cd_S21142C6);
    dp->~S21142C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21142C6(Test_S21142C6, "S21142C6", ABISELECT(464,320));

#else // __cplusplus

extern void _ZN8S21142C6C1Ev();
extern void _ZN8S21142C6D2Ev();
Name_Map name_map_S21142C6[] = {
  NSPAIR(_ZN8S21142C6C1Ev),
  NSPAIR(_ZN8S21142C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S21142C10;
extern VTBL_ENTRY _ZTI9S21142C10[];
extern  VTBL_ENTRY _ZTV9S21142C10[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S21142C9;
extern VTBL_ENTRY _ZTI8S21142C9[];
extern  VTBL_ENTRY _ZTV8S21142C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21142C9[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S3589C9_nt;
extern VTBL_ENTRY _ZTI10S3589C9_nt[];
extern  VTBL_ENTRY _ZTV10S3589C9_nt[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S21142C10;
extern VTBL_ENTRY _ZTI9S21142C10[];
extern  VTBL_ENTRY _ZTV9S21142C10[];
extern Class_Descriptor cd_S21142C8;
extern VTBL_ENTRY _ZTI8S21142C8[];
extern  VTBL_ENTRY _ZTV8S21142C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21142C8[];
extern Class_Descriptor cd_S21142C9;
extern VTBL_ENTRY _ZTI8S21142C9[];
extern  VTBL_ENTRY _ZTV8S21142C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21142C9[];
extern Class_Descriptor cd_S3589C9_nt;
extern VTBL_ENTRY _ZTI10S3589C9_nt[];
extern  VTBL_ENTRY _ZTV10S3589C9_nt[];
extern Class_Descriptor cd_S21142C7;
extern VTBL_ENTRY _ZTI8S21142C7[];
extern  VTBL_ENTRY _ZTV8S21142C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21142C7[];
extern Class_Descriptor cd_S21142C3;
extern VTBL_ENTRY _ZTI8S21142C3[];
extern  VTBL_ENTRY _ZTV8S21142C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21142C3[];
extern Class_Descriptor cd_S3589C13_nt;
extern VTBL_ENTRY _ZTI11S3589C13_nt[];
extern Class_Descriptor cd_S21142C15;
extern VTBL_ENTRY _ZTI9S21142C15[];
extern  VTBL_ENTRY _ZTV9S21142C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21142C15[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S21142C3;
extern VTBL_ENTRY _ZTI8S21142C3[];
extern  VTBL_ENTRY _ZTV8S21142C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21142C3[];
extern Class_Descriptor cd_S21142C13;
extern VTBL_ENTRY _ZTI9S21142C13[];
extern  VTBL_ENTRY _ZTV9S21142C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21142C13[];
extern Class_Descriptor cd_S21142C12;
extern VTBL_ENTRY _ZTI9S21142C12[];
extern  VTBL_ENTRY _ZTV9S21142C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21142C12[];
extern Class_Descriptor cd_S21142C9;
extern VTBL_ENTRY _ZTI8S21142C9[];
extern  VTBL_ENTRY _ZTV8S21142C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21142C9[];
extern Class_Descriptor cd_S21142C17;
extern VTBL_ENTRY _ZTI9S21142C17[];
extern  VTBL_ENTRY _ZTV9S21142C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21142C17[];
extern Class_Descriptor cd_S21142C16;
extern VTBL_ENTRY _ZTI9S21142C16[];
extern  VTBL_ENTRY _ZTV9S21142C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21142C16[];
static Base_Class bases_S21142C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3589C3,    ABISELECT(280,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S21142C10,    ABISELECT(280,200), //bcp->offset
    44, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3589C3,    ABISELECT(312,228), //bcp->offset
    49, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21142C9,    ABISELECT(272,196), //bcp->offset
    37, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S3589C3,    ABISELECT(176,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3589C9_nt,    ABISELECT(192,140), //bcp->offset
    23, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3589C3,    ABISELECT(216,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21142C10,    ABISELECT(216,156), //bcp->offset
    27, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21142C8,    ABISELECT(176,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21142C9,    ABISELECT(264,192), //bcp->offset
    31, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3589C9_nt,    ABISELECT(328,240), //bcp->offset
    54, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S21142C7,    ABISELECT(176,128), //bcp->offset
    14, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21142C3,    ABISELECT(352,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S3589C13_nt,    ABISELECT(384,272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21142C15,    ABISELECT(408,292), //bcp->offset
    82, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S3589C3,    ABISELECT(368,260), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21142C3,    ABISELECT(432,304), //bcp->offset
    88, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S21142C13,    ABISELECT(368,260), //bcp->offset
    71, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S21142C12,    ABISELECT(352,256), //bcp->offset
    59, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21142C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S21142C17,    ABISELECT(440,308), //bcp->offset
    94, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S21142C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21142C6[];
extern void _ZN8S21142C6D1Ev();
extern void _ZN8S21142C6D0Ev();
extern void ABISELECT(_ZTv0_n56_N8S21142C6D1Ev,_ZTv0_n28_N8S21142C6D1Ev)();
extern void ABISELECT(_ZThn176_N8S21142C6D1Ev,_ZThn128_N8S21142C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21142C6D0Ev,_ZTv0_n28_N8S21142C6D0Ev)();
extern void ABISELECT(_ZThn176_N8S21142C6D0Ev,_ZThn128_N8S21142C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n56_N8S21142C6D1Ev,_ZTvn12_n28_N8S21142C6D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S21142C6D0Ev,_ZTvn12_n28_N8S21142C6D0Ev)();
extern void ABISELECT(_ZTvn40_n56_N8S21142C6D1Ev,_ZTvn28_n28_N8S21142C6D1Ev)();
extern void ABISELECT(_ZTvn40_n56_N8S21142C6D0Ev,_ZTvn28_n28_N8S21142C6D0Ev)();
extern void ABISELECT(_ZTvn88_n56_N8S21142C6D1Ev,_ZTvn64_n28_N8S21142C6D1Ev)();
extern void ABISELECT(_ZTvn88_n56_N8S21142C6D0Ev,_ZTvn64_n28_N8S21142C6D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21142C6D1Ev,_ZTv0_n20_N8S21142C6D1Ev)();
extern void ABISELECT(_ZThn272_N8S21142C6D1Ev,_ZThn196_N8S21142C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21142C6D0Ev,_ZTv0_n20_N8S21142C6D0Ev)();
extern void ABISELECT(_ZThn272_N8S21142C6D0Ev,_ZThn196_N8S21142C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C6D1Ev,_ZTv0_n12_N8S21142C6D1Ev)();
extern void ABISELECT(_ZThn280_N8S21142C6D1Ev,_ZThn200_N8S21142C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C6D0Ev,_ZTv0_n12_N8S21142C6D0Ev)();
extern void ABISELECT(_ZThn280_N8S21142C6D0Ev,_ZThn200_N8S21142C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C6D1Ev,_ZTv0_n12_N8S21142C6D1Ev)();
extern void ABISELECT(_ZThn312_N8S21142C6D1Ev,_ZThn228_N8S21142C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C6D0Ev,_ZTv0_n12_N8S21142C6D0Ev)();
extern void ABISELECT(_ZThn312_N8S21142C6D0Ev,_ZThn228_N8S21142C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C6D1Ev,_ZTv0_n12_N8S21142C6D1Ev)();
extern void ABISELECT(_ZThn328_N8S21142C6D1Ev,_ZThn240_N8S21142C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C6D0Ev,_ZTv0_n12_N8S21142C6D0Ev)();
extern void ABISELECT(_ZThn328_N8S21142C6D0Ev,_ZThn240_N8S21142C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21142C6D1Ev,_ZTv0_n40_N8S21142C6D1Ev)();
extern void ABISELECT(_ZThn352_N8S21142C6D1Ev,_ZThn256_N8S21142C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21142C6D0Ev,_ZTv0_n40_N8S21142C6D0Ev)();
extern void ABISELECT(_ZThn352_N8S21142C6D0Ev,_ZThn256_N8S21142C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S21142C6D1Ev,_ZTv0_n36_N8S21142C6D1Ev)();
extern void ABISELECT(_ZThn368_N8S21142C6D1Ev,_ZThn260_N8S21142C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S21142C6D0Ev,_ZTv0_n36_N8S21142C6D0Ev)();
extern void ABISELECT(_ZThn368_N8S21142C6D0Ev,_ZThn260_N8S21142C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21142C6D1Ev,_ZTv0_n16_N8S21142C6D1Ev)();
extern void ABISELECT(_ZThn408_N8S21142C6D1Ev,_ZThn292_N8S21142C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21142C6D0Ev,_ZTv0_n16_N8S21142C6D0Ev)();
extern void ABISELECT(_ZThn408_N8S21142C6D0Ev,_ZThn292_N8S21142C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21142C6D1Ev,_ZTv0_n16_N8S21142C6D1Ev)();
extern void ABISELECT(_ZThn432_N8S21142C6D1Ev,_ZThn304_N8S21142C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21142C6D0Ev,_ZTv0_n16_N8S21142C6D0Ev)();
extern void ABISELECT(_ZThn432_N8S21142C6D0Ev,_ZThn304_N8S21142C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21142C6D1Ev,_ZTv0_n16_N8S21142C6D1Ev)();
extern void ABISELECT(_ZThn440_N8S21142C6D1Ev,_ZThn308_N8S21142C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21142C6D0Ev,_ZTv0_n16_N8S21142C6D0Ev)();
extern void ABISELECT(_ZThn440_N8S21142C6D0Ev,_ZThn308_N8S21142C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21142C6[] = {
  ABISELECT(432,304),
  ABISELECT(408,292),
  ABISELECT(368,260),
  ABISELECT(352,256),
  ABISELECT(328,240),
  ABISELECT(272,196),
  ABISELECT(176,128),
  ABISELECT(440,308),
  ABISELECT(312,228),
  ABISELECT(280,200),
  0,
  (VTBL_ENTRY)&(_ZTI8S21142C6[0]),
  (VTBL_ENTRY)&_ZN8S21142C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21142C6D0Ev,
  ABISELECT(-176,-128),
  ABISELECT(152,112),
  ABISELECT(136,100),
  ABISELECT(104,72),
  ABISELECT(96,68),
  ABISELECT(-176,-128),
  (VTBL_ENTRY)&(_ZTI8S21142C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21142C6D1Ev,_ZTv0_n28_N8S21142C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21142C6D0Ev,_ZTv0_n28_N8S21142C6D0Ev),
  ABISELECT(-192,-140),
  (VTBL_ENTRY)&(_ZTI8S21142C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S21142C6D1Ev,_ZTvn12_n28_N8S21142C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S21142C6D0Ev,_ZTvn12_n28_N8S21142C6D0Ev),
  ABISELECT(-216,-156),
  (VTBL_ENTRY)&(_ZTI8S21142C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n56_N8S21142C6D1Ev,_ZTvn28_n28_N8S21142C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n56_N8S21142C6D0Ev,_ZTvn28_n28_N8S21142C6D0Ev),
  ABISELECT(48,36),
  ABISELECT(16,8),
  ABISELECT(-264,-192),
  (VTBL_ENTRY)&(_ZTI8S21142C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn88_n56_N8S21142C6D1Ev,_ZTvn64_n28_N8S21142C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn88_n56_N8S21142C6D0Ev,_ZTvn64_n28_N8S21142C6D0Ev),
  ABISELECT(-272,-196),
  ABISELECT(40,32),
  ABISELECT(8,4),
  ABISELECT(-272,-196),
  (VTBL_ENTRY)&(_ZTI8S21142C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21142C6D1Ev,_ZTv0_n20_N8S21142C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21142C6D0Ev,_ZTv0_n20_N8S21142C6D0Ev),
  ABISELECT(-280,-200),
  ABISELECT(-280,-200),
  (VTBL_ENTRY)&(_ZTI8S21142C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C6D1Ev,_ZTv0_n12_N8S21142C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C6D0Ev,_ZTv0_n12_N8S21142C6D0Ev),
  ABISELECT(-312,-228),
  ABISELECT(-312,-228),
  (VTBL_ENTRY)&(_ZTI8S21142C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C6D1Ev,_ZTv0_n12_N8S21142C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C6D0Ev,_ZTv0_n12_N8S21142C6D0Ev),
  ABISELECT(-328,-240),
  ABISELECT(-328,-240),
  (VTBL_ENTRY)&(_ZTI8S21142C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C6D1Ev,_ZTv0_n12_N8S21142C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C6D0Ev,_ZTv0_n12_N8S21142C6D0Ev),
  ABISELECT(-352,-256),
  ABISELECT(80,48),
  ABISELECT(-24,-16),
  ABISELECT(56,36),
  ABISELECT(16,4),
  ABISELECT(-72,-56),
  ABISELECT(-80,-60),
  ABISELECT(-40,-28),
  ABISELECT(-352,-256),
  (VTBL_ENTRY)&(_ZTI8S21142C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21142C6D1Ev,_ZTv0_n40_N8S21142C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21142C6D0Ev,_ZTv0_n40_N8S21142C6D0Ev),
  ABISELECT(-368,-260),
  ABISELECT(64,44),
  ABISELECT(-56,-32),
  ABISELECT(-88,-60),
  ABISELECT(-96,-64),
  ABISELECT(-40,-20),
  ABISELECT(40,32),
  ABISELECT(-368,-260),
  (VTBL_ENTRY)&(_ZTI8S21142C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21142C6D1Ev,_ZTv0_n36_N8S21142C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21142C6D0Ev,_ZTv0_n36_N8S21142C6D0Ev),
  ABISELECT(-408,-292),
  ABISELECT(-80,-52),
  ABISELECT(-408,-292),
  (VTBL_ENTRY)&(_ZTI8S21142C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21142C6D1Ev,_ZTv0_n16_N8S21142C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21142C6D0Ev,_ZTv0_n16_N8S21142C6D0Ev),
  ABISELECT(-432,-304),
  ABISELECT(-120,-76),
  ABISELECT(-432,-304),
  (VTBL_ENTRY)&(_ZTI8S21142C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21142C6D1Ev,_ZTv0_n16_N8S21142C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21142C6D0Ev,_ZTv0_n16_N8S21142C6D0Ev),
  ABISELECT(-440,-308),
  ABISELECT(-128,-80),
  ABISELECT(-440,-308),
  (VTBL_ENTRY)&(_ZTI8S21142C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21142C6D1Ev,_ZTv0_n16_N8S21142C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21142C6D0Ev,_ZTv0_n16_N8S21142C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S21142C6[];
extern void _ZN9S21142C16D1Ev();
extern void _ZN9S21142C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21142C16__8S21142C6[] = {
  ABISELECT(440,308),
  ABISELECT(312,228),
  ABISELECT(280,200),
  0,
  (VTBL_ENTRY)&(_ZTI9S21142C16[0]),
  (VTBL_ENTRY)&_ZN9S21142C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21142C16D0Ev,
};
extern void _ZN8S21142C9D1Ev();
extern void _ZN8S21142C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21142C99S21142C16__A2__8S21142C6[] = {
  ABISELECT(312,228),
  ABISELECT(280,200),
  0,
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&_ZN8S21142C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21142C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev)();
extern void ABISELECT(_ZThn280_N8S21142C9D1Ev,_ZThn200_N8S21142C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev)();
extern void ABISELECT(_ZThn280_N8S21142C9D0Ev,_ZThn200_N8S21142C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C10__8S21142C99S21142C16__A2__8S21142C6[] = {
  ABISELECT(-280,-200),
  ABISELECT(-280,-200),
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev)();
extern void ABISELECT(_ZThn312_N8S21142C9D1Ev,_ZThn228_N8S21142C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev)();
extern void ABISELECT(_ZThn312_N8S21142C9D0Ev,_ZThn228_N8S21142C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__8S21142C99S21142C16__A2__8S21142C6[] = {
  ABISELECT(-312,-228),
  ABISELECT(-312,-228),
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21142C16D1Ev,_ZTv0_n12_N9S21142C16D1Ev)();
extern void ABISELECT(_ZThn280_N9S21142C16D1Ev,_ZThn200_N9S21142C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21142C16D0Ev,_ZTv0_n12_N9S21142C16D0Ev)();
extern void ABISELECT(_ZThn280_N9S21142C16D0Ev,_ZThn200_N9S21142C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C10__9S21142C16__8S21142C6[] = {
  ABISELECT(-280,-200),
  ABISELECT(-280,-200),
  (VTBL_ENTRY)&(_ZTI9S21142C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C16D1Ev,_ZTv0_n12_N9S21142C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C16D0Ev,_ZTv0_n12_N9S21142C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21142C16D1Ev,_ZTv0_n12_N9S21142C16D1Ev)();
extern void ABISELECT(_ZThn312_N9S21142C16D1Ev,_ZThn228_N9S21142C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21142C16D0Ev,_ZTv0_n12_N9S21142C16D0Ev)();
extern void ABISELECT(_ZThn312_N9S21142C16D0Ev,_ZThn228_N9S21142C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__9S21142C16__8S21142C6[] = {
  ABISELECT(-312,-228),
  ABISELECT(-312,-228),
  (VTBL_ENTRY)&(_ZTI9S21142C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C16D1Ev,_ZTv0_n12_N9S21142C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C16D0Ev,_ZTv0_n12_N9S21142C16D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21142C16D1Ev,_ZTv0_n16_N9S21142C16D1Ev)();
extern void ABISELECT(_ZThn440_N9S21142C16D1Ev,_ZThn308_N9S21142C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21142C16D0Ev,_ZTv0_n16_N9S21142C16D0Ev)();
extern void ABISELECT(_ZThn440_N9S21142C16D0Ev,_ZThn308_N9S21142C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C17__9S21142C16__8S21142C6[] = {
  ABISELECT(-440,-308),
  ABISELECT(-128,-80),
  ABISELECT(-440,-308),
  (VTBL_ENTRY)&(_ZTI9S21142C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C16D1Ev,_ZTv0_n16_N9S21142C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C16D0Ev,_ZTv0_n16_N9S21142C16D0Ev),
};
extern void _ZN8S21142C7D1Ev();
extern void _ZN8S21142C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21142C7__8S21142C6[] = {
  ABISELECT(152,112),
  ABISELECT(136,100),
  ABISELECT(104,72),
  ABISELECT(96,68),
  0,
  (VTBL_ENTRY)&(_ZTI8S21142C7[0]),
  (VTBL_ENTRY)&_ZN8S21142C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21142C7D0Ev,
};
extern void _ZN8S21142C8D1Ev();
extern void _ZN8S21142C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21142C88S21142C7__8S21142C6[] = {
  ABISELECT(136,100),
  ABISELECT(104,72),
  ABISELECT(96,68),
  0,
  (VTBL_ENTRY)&(_ZTI8S21142C8[0]),
  (VTBL_ENTRY)&_ZN8S21142C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21142C8D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S21142C8D1Ev,_ZTv0_n20_N8S21142C8D1Ev)();
extern void ABISELECT(_ZThn96_N8S21142C8D1Ev,_ZThn68_N8S21142C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21142C8D0Ev,_ZTv0_n20_N8S21142C8D0Ev)();
extern void ABISELECT(_ZThn96_N8S21142C8D0Ev,_ZThn68_N8S21142C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21142C9__8S21142C88S21142C7__8S21142C6[] = {
  ABISELECT(-96,-68),
  ABISELECT(40,32),
  ABISELECT(8,4),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI8S21142C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21142C8D1Ev,_ZTv0_n20_N8S21142C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21142C8D0Ev,_ZTv0_n20_N8S21142C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21142C8D1Ev,_ZTv0_n12_N8S21142C8D1Ev)();
extern void ABISELECT(_ZThn104_N8S21142C8D1Ev,_ZThn72_N8S21142C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C8D0Ev,_ZTv0_n12_N8S21142C8D0Ev)();
extern void ABISELECT(_ZThn104_N8S21142C8D0Ev,_ZThn72_N8S21142C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C10__8S21142C88S21142C7__8S21142C6[] = {
  ABISELECT(-104,-72),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI8S21142C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C8D1Ev,_ZTv0_n12_N8S21142C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C8D0Ev,_ZTv0_n12_N8S21142C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21142C8D1Ev,_ZTv0_n12_N8S21142C8D1Ev)();
extern void ABISELECT(_ZThn136_N8S21142C8D1Ev,_ZThn100_N8S21142C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C8D0Ev,_ZTv0_n12_N8S21142C8D0Ev)();
extern void ABISELECT(_ZThn136_N8S21142C8D0Ev,_ZThn100_N8S21142C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__8S21142C88S21142C7__8S21142C6[] = {
  ABISELECT(-136,-100),
  ABISELECT(-136,-100),
  (VTBL_ENTRY)&(_ZTI8S21142C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C8D1Ev,_ZTv0_n12_N8S21142C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C8D0Ev,_ZTv0_n12_N8S21142C8D0Ev),
};
extern void _ZN8S21142C9D1Ev();
extern void _ZN8S21142C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21142C98S21142C7__A1__8S21142C6[] = {
  ABISELECT(48,36),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&_ZN8S21142C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21142C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S21142C9D1Ev,_ZThn8_N8S21142C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev)();
extern void ABISELECT(_ZThn16_N8S21142C9D0Ev,_ZThn8_N8S21142C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C10__8S21142C98S21142C7__A1__8S21142C6[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev)();
extern void ABISELECT(_ZThn48_N8S21142C9D1Ev,_ZThn36_N8S21142C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev)();
extern void ABISELECT(_ZThn48_N8S21142C9D0Ev,_ZThn36_N8S21142C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__8S21142C98S21142C7__A1__8S21142C6[] = {
  ABISELECT(-48,-36),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21142C7D1Ev,_ZTv0_n20_N8S21142C7D1Ev)();
extern void ABISELECT(_ZThn96_N8S21142C7D1Ev,_ZThn68_N8S21142C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21142C7D0Ev,_ZTv0_n20_N8S21142C7D0Ev)();
extern void ABISELECT(_ZThn96_N8S21142C7D0Ev,_ZThn68_N8S21142C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21142C9__8S21142C7__8S21142C6[] = {
  ABISELECT(-96,-68),
  ABISELECT(40,32),
  ABISELECT(8,4),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI8S21142C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21142C7D1Ev,_ZTv0_n20_N8S21142C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21142C7D0Ev,_ZTv0_n20_N8S21142C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21142C7D1Ev,_ZTv0_n12_N8S21142C7D1Ev)();
extern void ABISELECT(_ZThn104_N8S21142C7D1Ev,_ZThn72_N8S21142C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C7D0Ev,_ZTv0_n12_N8S21142C7D0Ev)();
extern void ABISELECT(_ZThn104_N8S21142C7D0Ev,_ZThn72_N8S21142C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C10__8S21142C7__8S21142C6[] = {
  ABISELECT(-104,-72),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI8S21142C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C7D1Ev,_ZTv0_n12_N8S21142C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C7D0Ev,_ZTv0_n12_N8S21142C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21142C7D1Ev,_ZTv0_n12_N8S21142C7D1Ev)();
extern void ABISELECT(_ZThn136_N8S21142C7D1Ev,_ZThn100_N8S21142C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C7D0Ev,_ZTv0_n12_N8S21142C7D0Ev)();
extern void ABISELECT(_ZThn136_N8S21142C7D0Ev,_ZThn100_N8S21142C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__8S21142C7__8S21142C6[] = {
  ABISELECT(-136,-100),
  ABISELECT(-136,-100),
  (VTBL_ENTRY)&(_ZTI8S21142C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C7D1Ev,_ZTv0_n12_N8S21142C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C7D0Ev,_ZTv0_n12_N8S21142C7D0Ev),
};
extern void ABISELECT(_ZThn88_N8S21142C7D1Ev,_ZThn64_N8S21142C7D1Ev)();
extern void ABISELECT(_ZThn88_N8S21142C7D0Ev,_ZThn64_N8S21142C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21142C9__A__8S21142C7__8S21142C6[] = {
  ABISELECT(48,36),
  ABISELECT(16,8),
  ABISELECT(-88,-64),
  (VTBL_ENTRY)&(_ZTI8S21142C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn88_N8S21142C7D1Ev,_ZThn64_N8S21142C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn88_N8S21142C7D0Ev,_ZThn64_N8S21142C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21142C7D1Ev,_ZTv0_n12_N8S21142C7D1Ev)();
extern void ABISELECT(_ZThn152_N8S21142C7D1Ev,_ZThn112_N8S21142C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C7D0Ev,_ZTv0_n12_N8S21142C7D0Ev)();
extern void ABISELECT(_ZThn152_N8S21142C7D0Ev,_ZThn112_N8S21142C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt__A1__8S21142C7__8S21142C6[] = {
  ABISELECT(-152,-112),
  ABISELECT(-152,-112),
  (VTBL_ENTRY)&(_ZTI8S21142C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C7D1Ev,_ZTv0_n12_N8S21142C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C7D0Ev,_ZTv0_n12_N8S21142C7D0Ev),
};
extern void _ZN8S21142C9D1Ev();
extern void _ZN8S21142C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21142C9__8S21142C6[] = {
  ABISELECT(40,32),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&_ZN8S21142C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21142C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev)();
extern void ABISELECT(_ZThn8_N8S21142C9D1Ev,_ZThn4_N8S21142C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev)();
extern void ABISELECT(_ZThn8_N8S21142C9D0Ev,_ZThn4_N8S21142C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C10__8S21142C9__8S21142C6[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev)();
extern void ABISELECT(_ZThn40_N8S21142C9D1Ev,_ZThn32_N8S21142C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev)();
extern void ABISELECT(_ZThn40_N8S21142C9D0Ev,_ZThn32_N8S21142C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__8S21142C9__8S21142C6[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev),
};
extern void _ZN9S21142C12D1Ev();
extern void _ZN9S21142C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21142C12__8S21142C6[] = {
  ABISELECT(80,48),
  ABISELECT(-24,-16),
  ABISELECT(56,36),
  ABISELECT(16,4),
  ABISELECT(-72,-56),
  ABISELECT(-80,-60),
  ABISELECT(-40,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S21142C12[0]),
  (VTBL_ENTRY)&_ZN9S21142C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21142C12D0Ev,
};
extern void _ZN8S21142C3D1Ev();
extern void _ZN8S21142C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21142C39S21142C12__8S21142C6[] = {
  ABISELECT(-40,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21142C3[0]),
  (VTBL_ENTRY)&_ZN8S21142C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21142C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21142C3D1Ev,_ZTv0_n12_N8S21142C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21142C3D0Ev,_ZTv0_n12_N8S21142C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__8S21142C39S21142C12__8S21142C6[] = {
  ABISELECT(40,28),
  ABISELECT(40,28),
  (VTBL_ENTRY)&(_ZTI8S21142C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C3D1Ev,_ZTv0_n12_N8S21142C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C3D0Ev,_ZTv0_n12_N8S21142C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21142C12D1Ev,_ZTv0_n20_N9S21142C12D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21142C12D0Ev,_ZTv0_n20_N9S21142C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21142C9__9S21142C12__8S21142C6[] = {
  ABISELECT(80,60),
  ABISELECT(40,32),
  ABISELECT(8,4),
  ABISELECT(80,60),
  (VTBL_ENTRY)&(_ZTI9S21142C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21142C12D1Ev,_ZTv0_n20_N9S21142C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21142C12D0Ev,_ZTv0_n20_N9S21142C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21142C12D1Ev,_ZTv0_n12_N9S21142C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21142C12D0Ev,_ZTv0_n12_N9S21142C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21142C10__9S21142C12__8S21142C6[] = {
  ABISELECT(72,56),
  ABISELECT(72,56),
  (VTBL_ENTRY)&(_ZTI9S21142C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C12D1Ev,_ZTv0_n12_N9S21142C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C12D0Ev,_ZTv0_n12_N9S21142C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21142C12D1Ev,_ZTv0_n12_N9S21142C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21142C12D0Ev,_ZTv0_n12_N9S21142C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__9S21142C12__8S21142C6[] = {
  ABISELECT(40,28),
  ABISELECT(40,28),
  (VTBL_ENTRY)&(_ZTI9S21142C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C12D1Ev,_ZTv0_n12_N9S21142C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C12D0Ev,_ZTv0_n12_N9S21142C12D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N9S21142C12D1Ev,_ZTv0_n36_N9S21142C12D1Ev)();
extern void ABISELECT(_ZThn16_N9S21142C12D1Ev,_ZThn4_N9S21142C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S21142C12D0Ev,_ZTv0_n36_N9S21142C12D0Ev)();
extern void ABISELECT(_ZThn16_N9S21142C12D0Ev,_ZThn4_N9S21142C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C13__9S21142C12__8S21142C6[] = {
  ABISELECT(-16,-4),
  ABISELECT(64,44),
  ABISELECT(-56,-32),
  ABISELECT(-88,-60),
  ABISELECT(-96,-64),
  ABISELECT(-40,-20),
  ABISELECT(40,32),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI9S21142C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21142C12D1Ev,_ZTv0_n36_N9S21142C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21142C12D0Ev,_ZTv0_n36_N9S21142C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21142C12D1Ev,_ZTv0_n16_N9S21142C12D1Ev)();
extern void ABISELECT(_ZThn56_N9S21142C12D1Ev,_ZThn36_N9S21142C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21142C12D0Ev,_ZTv0_n16_N9S21142C12D0Ev)();
extern void ABISELECT(_ZThn56_N9S21142C12D0Ev,_ZThn36_N9S21142C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C15__9S21142C12__8S21142C6[] = {
  ABISELECT(-56,-36),
  ABISELECT(-80,-52),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI9S21142C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C12D1Ev,_ZTv0_n16_N9S21142C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C12D0Ev,_ZTv0_n16_N9S21142C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21142C12D1Ev,_ZTv0_n12_N9S21142C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21142C12D0Ev,_ZTv0_n12_N9S21142C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt__9S21142C12__8S21142C6[] = {
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI9S21142C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C12D1Ev,_ZTv0_n12_N9S21142C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C12D0Ev,_ZTv0_n12_N9S21142C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21142C12D1Ev,_ZTv0_n16_N9S21142C12D1Ev)();
extern void ABISELECT(_ZThn80_N9S21142C12D1Ev,_ZThn48_N9S21142C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21142C12D0Ev,_ZTv0_n16_N9S21142C12D0Ev)();
extern void ABISELECT(_ZThn80_N9S21142C12D0Ev,_ZThn48_N9S21142C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21142C3__A1__9S21142C12__8S21142C6[] = {
  ABISELECT(-80,-48),
  ABISELECT(-120,-76),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S21142C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C12D1Ev,_ZTv0_n16_N9S21142C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C12D0Ev,_ZTv0_n16_N9S21142C12D0Ev),
};
extern void _ZN9S21142C13D1Ev();
extern void _ZN9S21142C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21142C13__8S21142C6[] = {
  ABISELECT(64,44),
  ABISELECT(-56,-32),
  ABISELECT(-88,-60),
  ABISELECT(-96,-64),
  ABISELECT(-40,-20),
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&_ZN9S21142C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21142C13D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S21142C13D1Ev,_ZTv0_n16_N9S21142C13D1Ev)();
extern void ABISELECT(_ZThn40_N9S21142C13D1Ev,_ZThn32_N9S21142C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21142C13D0Ev,_ZTv0_n16_N9S21142C13D0Ev)();
extern void ABISELECT(_ZThn40_N9S21142C13D0Ev,_ZThn32_N9S21142C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C15__9S21142C13__8S21142C6[] = {
  ABISELECT(-40,-32),
  ABISELECT(-80,-52),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C13D1Ev,_ZTv0_n16_N9S21142C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C13D0Ev,_ZTv0_n16_N9S21142C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt__9S21142C13__8S21142C6[] = {
  ABISELECT(40,20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21142C13D1Ev,_ZTv0_n20_N9S21142C13D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21142C13D0Ev,_ZTv0_n20_N9S21142C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21142C9__9S21142C13__8S21142C6[] = {
  ABISELECT(96,64),
  ABISELECT(40,32),
  ABISELECT(8,4),
  ABISELECT(96,64),
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21142C13D1Ev,_ZTv0_n20_N9S21142C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21142C13D0Ev,_ZTv0_n20_N9S21142C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21142C10__9S21142C13__8S21142C6[] = {
  ABISELECT(88,60),
  ABISELECT(88,60),
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__9S21142C13__8S21142C6[] = {
  ABISELECT(56,32),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21142C13D1Ev,_ZTv0_n16_N9S21142C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S21142C13D1Ev,_ZThn44_N9S21142C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21142C13D0Ev,_ZTv0_n16_N9S21142C13D0Ev)();
extern void ABISELECT(_ZThn64_N9S21142C13D0Ev,_ZThn44_N9S21142C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21142C3__9S21142C13__8S21142C6[] = {
  ABISELECT(-64,-44),
  ABISELECT(-120,-76),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C13D1Ev,_ZTv0_n16_N9S21142C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C13D0Ev,_ZTv0_n16_N9S21142C13D0Ev),
};
extern void _ZN9S21142C15D1Ev();
extern void _ZN9S21142C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21142C15__8S21142C6[] = {
  ABISELECT(-80,-52),
  0,
  (VTBL_ENTRY)&(_ZTI9S21142C15[0]),
  (VTBL_ENTRY)&_ZN9S21142C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21142C15D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21142C15D1Ev,_ZTv0_n12_N9S21142C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21142C15D0Ev,_ZTv0_n12_N9S21142C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt__9S21142C15__8S21142C6[] = {
  ABISELECT(80,52),
  ABISELECT(80,52),
  (VTBL_ENTRY)&(_ZTI9S21142C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C15D1Ev,_ZTv0_n12_N9S21142C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C15D0Ev,_ZTv0_n12_N9S21142C15D0Ev),
};
extern void _ZN8S21142C3D1Ev();
extern void _ZN8S21142C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21142C3__A1__8S21142C6[] = {
  ABISELECT(-120,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S21142C3[0]),
  (VTBL_ENTRY)&_ZN8S21142C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21142C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21142C3D1Ev,_ZTv0_n12_N8S21142C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21142C3D0Ev,_ZTv0_n12_N8S21142C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__8S21142C3__A1__8S21142C6[] = {
  ABISELECT(120,76),
  ABISELECT(120,76),
  (VTBL_ENTRY)&(_ZTI8S21142C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C3D1Ev,_ZTv0_n12_N8S21142C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C3D0Ev,_ZTv0_n12_N8S21142C3D0Ev),
};
extern void _ZN9S21142C17D1Ev();
extern void _ZN9S21142C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21142C17__8S21142C6[] = {
  ABISELECT(-128,-80),
  0,
  (VTBL_ENTRY)&(_ZTI9S21142C17[0]),
  (VTBL_ENTRY)&_ZN9S21142C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21142C17D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21142C17D1Ev,_ZTv0_n12_N9S21142C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21142C17D0Ev,_ZTv0_n12_N9S21142C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__9S21142C17__8S21142C6[] = {
  ABISELECT(128,80),
  ABISELECT(128,80),
  (VTBL_ENTRY)&(_ZTI9S21142C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C17D1Ev,_ZTv0_n12_N9S21142C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C17D0Ev,_ZTv0_n12_N9S21142C17D0Ev),
};
static  VTT_ENTRY vtt_S21142C6[] = {
  {&(_ZTV8S21142C6[12]),  12,100},
  {&(_tg__ZTV9S21142C16__8S21142C6[5]),  5,7},
  {&(_tg__ZTV8S21142C99S21142C16__A2__8S21142C6[4]),  4,6},
  {&(_tg__ZTV9S21142C10__8S21142C99S21142C16__A2__8S21142C6[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__8S21142C99S21142C16__A2__8S21142C6[3]),  3,5},
  {&(_tg__ZTV9S21142C10__9S21142C16__8S21142C6[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__9S21142C16__8S21142C6[3]),  3,5},
  {&(_tg__ZTV9S21142C17__9S21142C16__8S21142C6[4]),  4,6},
  {&(_ZTV8S21142C6[21]),  21,100},
  {&(_ZTV8S21142C6[42]),  42,100},
  {&(_ZTV8S21142C6[47]),  47,100},
  {&(_ZTV8S21142C6[52]),  52,100},
  {&(_ZTV8S21142C6[25]),  25,100},
  {&(_ZTV8S21142C6[29]),  29,100},
  {&(_ZTV8S21142C6[35]),  35,100},
  {&(_ZTV8S21142C6[57]),  57,100},
  {&(_ZTV8S21142C6[69]),  69,100},
  {&(_ZTV8S21142C6[80]),  80,100},
  {&(_ZTV8S21142C6[86]),  86,100},
  {&(_ZTV8S21142C6[92]),  92,100},
  {&(_ZTV8S21142C6[98]),  98,100},
  {&(_tg__ZTV8S21142C7__8S21142C6[6]),  6,8},
  {&(_tg__ZTV8S21142C88S21142C7__8S21142C6[5]),  5,7},
  {&(_tg__ZTV8S21142C9__8S21142C88S21142C7__8S21142C6[5]),  5,7},
  {&(_tg__ZTV9S21142C10__8S21142C88S21142C7__8S21142C6[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__8S21142C88S21142C7__8S21142C6[3]),  3,5},
  {&(_tg__ZTV8S21142C98S21142C7__A1__8S21142C6[4]),  4,6},
  {&(_tg__ZTV9S21142C10__8S21142C98S21142C7__A1__8S21142C6[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__8S21142C98S21142C7__A1__8S21142C6[3]),  3,5},
  {&(_tg__ZTV8S21142C9__8S21142C7__8S21142C6[5]),  5,7},
  {&(_tg__ZTV9S21142C10__8S21142C7__8S21142C6[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__8S21142C7__8S21142C6[3]),  3,5},
  {&(_tg__ZTV8S21142C9__A__8S21142C7__8S21142C6[4]),  4,6},
  {&(_tg__ZTV10S3589C9_nt__A1__8S21142C7__8S21142C6[3]),  3,5},
  {&(_tg__ZTV8S21142C9__8S21142C6[4]),  4,6},
  {&(_tg__ZTV9S21142C10__8S21142C9__8S21142C6[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__8S21142C9__8S21142C6[3]),  3,5},
  {&(_tg__ZTV9S21142C12__8S21142C6[9]),  9,11},
  {&(_tg__ZTV8S21142C39S21142C12__8S21142C6[3]),  3,5},
  {&(_tg__ZTV7S3589C3__8S21142C39S21142C12__8S21142C6[3]),  3,5},
  {&(_tg__ZTV8S21142C9__9S21142C12__8S21142C6[5]),  5,7},
  {&(_tg__ZTV9S21142C10__9S21142C12__8S21142C6[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__9S21142C12__8S21142C6[3]),  3,5},
  {&(_tg__ZTV9S21142C13__9S21142C12__8S21142C6[9]),  9,11},
  {&(_tg__ZTV9S21142C15__9S21142C12__8S21142C6[4]),  4,6},
  {&(_tg__ZTV10S3589C9_nt__9S21142C12__8S21142C6[3]),  3,5},
  {&(_tg__ZTV8S21142C3__A1__9S21142C12__8S21142C6[4]),  4,6},
  {&(_tg__ZTV9S21142C13__8S21142C6[8]),  8,10},
  {&(_tg__ZTV9S21142C15__9S21142C13__8S21142C6[4]),  4,6},
  {&(_tg__ZTV10S3589C9_nt__9S21142C13__8S21142C6[3]),  3,5},
  {&(_tg__ZTV8S21142C9__9S21142C13__8S21142C6[5]),  5,7},
  {&(_tg__ZTV9S21142C10__9S21142C13__8S21142C6[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__9S21142C13__8S21142C6[3]),  3,5},
  {&(_tg__ZTV8S21142C3__9S21142C13__8S21142C6[4]),  4,6},
  {&(_tg__ZTV9S21142C15__8S21142C6[3]),  3,5},
  {&(_tg__ZTV10S3589C9_nt__9S21142C15__8S21142C6[3]),  3,5},
  {&(_tg__ZTV8S21142C3__A1__8S21142C6[3]),  3,5},
  {&(_tg__ZTV7S3589C3__8S21142C3__A1__8S21142C6[3]),  3,5},
  {&(_tg__ZTV9S21142C17__8S21142C6[3]),  3,5},
  {&(_tg__ZTV7S3589C3__9S21142C17__8S21142C6[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21142C6[];
extern  VTBL_ENTRY _ZTV8S21142C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21142C6[];
static VTBL_ENTRY alt_thunk_names63[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21142C13D0Ev,_ZTv0_n16_N9S21142C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21142C13D0Ev,_ZThn44_N9S21142C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21142C13D0Ev,_ZThn32_N9S21142C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21142C13D1Ev,_ZTv0_n16_N9S21142C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21142C13D1Ev,_ZThn44_N9S21142C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21142C13D1Ev,_ZThn32_N9S21142C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21142C12D0Ev,_ZTv0_n16_N9S21142C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21142C12D0Ev,_ZThn48_N9S21142C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21142C12D0Ev,_ZThn36_N9S21142C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21142C12D1Ev,_ZTv0_n16_N9S21142C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21142C12D1Ev,_ZThn48_N9S21142C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21142C12D1Ev,_ZThn36_N9S21142C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21142C12D0Ev,_ZTv0_n36_N9S21142C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21142C12D0Ev,_ZThn4_N9S21142C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21142C12D1Ev,_ZTv0_n36_N9S21142C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21142C12D1Ev,_ZThn4_N9S21142C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C7D0Ev,_ZTv0_n12_N8S21142C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S21142C7D0Ev,_ZThn112_N8S21142C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21142C7D0Ev,_ZThn100_N8S21142C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S21142C7D0Ev,_ZThn72_N8S21142C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C7D1Ev,_ZTv0_n12_N8S21142C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S21142C7D1Ev,_ZThn112_N8S21142C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21142C7D1Ev,_ZThn100_N8S21142C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S21142C7D1Ev,_ZThn72_N8S21142C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21142C7D0Ev,_ZTv0_n20_N8S21142C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21142C7D0Ev,_ZThn68_N8S21142C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21142C7D1Ev,_ZTv0_n20_N8S21142C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21142C7D1Ev,_ZThn68_N8S21142C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C8D0Ev,_ZTv0_n12_N8S21142C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21142C8D0Ev,_ZThn100_N8S21142C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S21142C8D0Ev,_ZThn72_N8S21142C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C8D1Ev,_ZTv0_n12_N8S21142C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21142C8D1Ev,_ZThn100_N8S21142C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S21142C8D1Ev,_ZThn72_N8S21142C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21142C8D0Ev,_ZTv0_n20_N8S21142C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21142C8D0Ev,_ZThn68_N8S21142C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21142C8D1Ev,_ZTv0_n20_N8S21142C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21142C8D1Ev,_ZThn68_N8S21142C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21142C16D0Ev,_ZTv0_n16_N9S21142C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn440_N9S21142C16D0Ev,_ZThn308_N9S21142C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21142C16D1Ev,_ZTv0_n16_N9S21142C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn440_N9S21142C16D1Ev,_ZThn308_N9S21142C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21142C16D0Ev,_ZTv0_n12_N9S21142C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N9S21142C16D0Ev,_ZThn228_N9S21142C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N9S21142C16D0Ev,_ZThn200_N9S21142C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21142C16D1Ev,_ZTv0_n12_N9S21142C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N9S21142C16D1Ev,_ZThn228_N9S21142C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N9S21142C16D1Ev,_ZThn200_N9S21142C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21142C9D0Ev,_ZThn32_N8S21142C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21142C9D0Ev,_ZThn4_N8S21142C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21142C9D0Ev,_ZThn36_N8S21142C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21142C9D0Ev,_ZThn8_N8S21142C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S21142C9D0Ev,_ZThn228_N8S21142C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S21142C9D0Ev,_ZThn200_N8S21142C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21142C9D1Ev,_ZThn32_N8S21142C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21142C9D1Ev,_ZThn4_N8S21142C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21142C9D1Ev,_ZThn36_N8S21142C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21142C9D1Ev,_ZThn8_N8S21142C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S21142C9D1Ev,_ZThn228_N8S21142C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S21142C9D1Ev,_ZThn200_N8S21142C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21142C6D0Ev,_ZTv0_n16_N8S21142C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn440_N8S21142C6D0Ev,_ZThn308_N8S21142C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn432_N8S21142C6D0Ev,_ZThn304_N8S21142C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn408_N8S21142C6D0Ev,_ZThn292_N8S21142C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21142C6D1Ev,_ZTv0_n16_N8S21142C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn440_N8S21142C6D1Ev,_ZThn308_N8S21142C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn432_N8S21142C6D1Ev,_ZThn304_N8S21142C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn408_N8S21142C6D1Ev,_ZThn292_N8S21142C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21142C6D0Ev,_ZTv0_n36_N8S21142C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S21142C6D0Ev,_ZThn260_N8S21142C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21142C6D1Ev,_ZTv0_n36_N8S21142C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S21142C6D1Ev,_ZThn260_N8S21142C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21142C6D0Ev,_ZTv0_n40_N8S21142C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S21142C6D0Ev,_ZThn256_N8S21142C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21142C6D1Ev,_ZTv0_n40_N8S21142C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S21142C6D1Ev,_ZThn256_N8S21142C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C6D0Ev,_ZTv0_n12_N8S21142C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N8S21142C6D0Ev,_ZThn240_N8S21142C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S21142C6D0Ev,_ZThn228_N8S21142C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S21142C6D0Ev,_ZThn200_N8S21142C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C6D1Ev,_ZTv0_n12_N8S21142C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N8S21142C6D1Ev,_ZThn240_N8S21142C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S21142C6D1Ev,_ZThn228_N8S21142C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S21142C6D1Ev,_ZThn200_N8S21142C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21142C6D0Ev,_ZTv0_n20_N8S21142C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21142C6D0Ev,_ZThn196_N8S21142C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21142C6D1Ev,_ZTv0_n20_N8S21142C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21142C6D1Ev,_ZThn196_N8S21142C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21142C6D0Ev,_ZTv0_n28_N8S21142C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S21142C6D0Ev,_ZThn128_N8S21142C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21142C6D1Ev,_ZTv0_n28_N8S21142C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S21142C6D1Ev,_ZThn128_N8S21142C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21142C6 = {  "S21142C6", // class name
  bases_S21142C6, 22,
  &(vtc_S21142C6[0]), // expected_vtbl_contents
  &(vtt_S21142C6[0]), // expected_vtt_contents
  ABISELECT(464,320), // object size
  NSPAIRA(_ZTI8S21142C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21142C6),100, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21142C6),60, //virtual table table var
  21, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names63,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21142C19  : S21142C13 {
  short s21142c19f0;
  ::S21142C3 s21142c19f1;
  int s21142c19f2;
  ~S21142C19(); // tgen
  S21142C19(); // tgen
};
//SIG(-1 S21142C19) C1{ BC2{ BC3{ m FD} VBC4{ VBC5{ vd m Fi Fc Fi} Fp[2]} VBC6{ VBC7{ BC8{ vd m Fc FU9{ m Fc[6]}} vd FL FU9} VBC8 vd} BC8 VBC10{ VBC8} Fc Fi} Fs FC10 Fi}


S21142C19 ::~S21142C19(){ note_dtor("S21142C19", this);} // tgen
S21142C19 ::S21142C19(){ note_ctor("S21142C19", this);} // tgen

static void Test_S21142C19()
{
  extern Class_Descriptor cd_S21142C19;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,34)];
    init_test(&cd_S21142C19, buf);
    S21142C19 *dp, &lv = *(dp=new (buf) S21142C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,132), "sizeof(S21142C19)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21142C19)");
    check_base_class_offset(lv, (S3589C13_nt*)(S21142C13*), ABISELECT(16,12), "S21142C19");
    check_base_class_offset(lv, (S3589C9_nt*)(S21142C15*), ABISELECT(104,68), "S21142C19");
    check_base_class_offset(lv, (S21142C15*)(S21142C13*), ABISELECT(80,56), "S21142C19");
    check_base_class_offset(lv, (S3589C3*)(S21142C10*), ABISELECT(136,88), "S21142C19");
    check_base_class_offset(lv, (S21142C10*)(S21142C9*), ABISELECT(136,88), "S21142C19");
    /*is_ambiguous_... S21142C9::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C9*), ABISELECT(168,116), "S21142C19");
    check_base_class_offset(lv, (S3589C3*)(S21142C3*), ABISELECT(168,116), "S21142C19");
    check_base_class_offset(lv, (S21142C9*)(S21142C13*), ABISELECT(128,84), "S21142C19");
    /*is_ambiguous_... S21142C13::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C13*), 0, "S21142C19");
    check_base_class_offset(lv, (S21142C3*)(S21142C13*), ABISELECT(184,128), "S21142C19");
    check_base_class_offset(lv, (S21142C13*), 0, "S21142C19");
    check_field_offset(lv, s21142c19f0, ABISELECT(40,32), "S21142C19.s21142c19f0");
    check_field_offset(lv, s21142c19f1, ABISELECT(48,36), "S21142C19.s21142c19f1");
    check_field_offset(lv, s21142c19f2, ABISELECT(72,52), "S21142C19.s21142c19f2");
    test_class_info(&lv, &cd_S21142C19);
    dp->~S21142C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21142C19(Test_S21142C19, "S21142C19", ABISELECT(192,132));

#else // __cplusplus

extern void _ZN9S21142C19C1Ev();
extern void _ZN9S21142C19D1Ev();
Name_Map name_map_S21142C19[] = {
  NSPAIR(_ZN9S21142C19C1Ev),
  NSPAIR(_ZN9S21142C19D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3589C13_nt;
extern VTBL_ENTRY _ZTI11S3589C13_nt[];
extern Class_Descriptor cd_S3589C9_nt;
extern VTBL_ENTRY _ZTI10S3589C9_nt[];
extern  VTBL_ENTRY _ZTV10S3589C9_nt[];
extern Class_Descriptor cd_S21142C15;
extern VTBL_ENTRY _ZTI9S21142C15[];
extern  VTBL_ENTRY _ZTV9S21142C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21142C15[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S21142C10;
extern VTBL_ENTRY _ZTI9S21142C10[];
extern  VTBL_ENTRY _ZTV9S21142C10[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S21142C9;
extern VTBL_ENTRY _ZTI8S21142C9[];
extern  VTBL_ENTRY _ZTV8S21142C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21142C9[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S21142C3;
extern VTBL_ENTRY _ZTI8S21142C3[];
extern  VTBL_ENTRY _ZTV8S21142C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21142C3[];
extern Class_Descriptor cd_S21142C13;
extern VTBL_ENTRY _ZTI9S21142C13[];
extern  VTBL_ENTRY _ZTV9S21142C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21142C13[];
static Base_Class bases_S21142C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3589C13_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3589C9_nt,    ABISELECT(104,68), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21142C15,    ABISELECT(80,56), //bcp->offset
    10, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S3589C3,    ABISELECT(136,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21142C10,    ABISELECT(136,88), //bcp->offset
    28, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3589C3,    ABISELECT(168,116), //bcp->offset
    33, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21142C9,    ABISELECT(128,84), //bcp->offset
    21, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S3589C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21142C3,    ABISELECT(184,128), //bcp->offset
    38, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S21142C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21142C19[];
extern void _ZN9S21142C19D1Ev();
extern void _ZN9S21142C19D0Ev();
extern void ABISELECT(_ZTv0_n32_N9S21142C19D1Ev,_ZTv0_n16_N9S21142C19D1Ev)();
extern void ABISELECT(_ZThn80_N9S21142C19D1Ev,_ZThn56_N9S21142C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21142C19D0Ev,_ZTv0_n16_N9S21142C19D0Ev)();
extern void ABISELECT(_ZThn80_N9S21142C19D0Ev,_ZThn56_N9S21142C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21142C19D1Ev,_ZTv0_n12_N9S21142C19D1Ev)();
extern void ABISELECT(_ZThn104_N9S21142C19D1Ev,_ZThn68_N9S21142C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21142C19D0Ev,_ZTv0_n12_N9S21142C19D0Ev)();
extern void ABISELECT(_ZThn104_N9S21142C19D0Ev,_ZThn68_N9S21142C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21142C19D1Ev,_ZTv0_n20_N9S21142C19D1Ev)();
extern void ABISELECT(_ZThn128_N9S21142C19D1Ev,_ZThn84_N9S21142C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21142C19D0Ev,_ZTv0_n20_N9S21142C19D0Ev)();
extern void ABISELECT(_ZThn128_N9S21142C19D0Ev,_ZThn84_N9S21142C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21142C19D1Ev,_ZTv0_n12_N9S21142C19D1Ev)();
extern void ABISELECT(_ZThn136_N9S21142C19D1Ev,_ZThn88_N9S21142C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21142C19D0Ev,_ZTv0_n12_N9S21142C19D0Ev)();
extern void ABISELECT(_ZThn136_N9S21142C19D0Ev,_ZThn88_N9S21142C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21142C19D1Ev,_ZTv0_n12_N9S21142C19D1Ev)();
extern void ABISELECT(_ZThn168_N9S21142C19D1Ev,_ZThn116_N9S21142C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21142C19D0Ev,_ZTv0_n12_N9S21142C19D0Ev)();
extern void ABISELECT(_ZThn168_N9S21142C19D0Ev,_ZThn116_N9S21142C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21142C19D1Ev,_ZTv0_n16_N9S21142C19D1Ev)();
extern void ABISELECT(_ZThn184_N9S21142C19D1Ev,_ZThn128_N9S21142C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21142C19D0Ev,_ZTv0_n16_N9S21142C19D0Ev)();
extern void ABISELECT(_ZThn184_N9S21142C19D0Ev,_ZThn128_N9S21142C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21142C19[] = {
  ABISELECT(184,128),
  ABISELECT(168,116),
  ABISELECT(136,88),
  ABISELECT(128,84),
  ABISELECT(104,68),
  ABISELECT(80,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S21142C19[0]),
  (VTBL_ENTRY)&_ZN9S21142C19D1Ev,
  (VTBL_ENTRY)&_ZN9S21142C19D0Ev,
  ABISELECT(-80,-56),
  ABISELECT(24,12),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S21142C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C19D1Ev,_ZTv0_n16_N9S21142C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C19D0Ev,_ZTv0_n16_N9S21142C19D0Ev),
  ABISELECT(-104,-68),
  ABISELECT(-104,-68),
  (VTBL_ENTRY)&(_ZTI9S21142C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C19D1Ev,_ZTv0_n12_N9S21142C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C19D0Ev,_ZTv0_n12_N9S21142C19D0Ev),
  ABISELECT(-128,-84),
  ABISELECT(40,32),
  ABISELECT(8,4),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI9S21142C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21142C19D1Ev,_ZTv0_n20_N9S21142C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21142C19D0Ev,_ZTv0_n20_N9S21142C19D0Ev),
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI9S21142C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C19D1Ev,_ZTv0_n12_N9S21142C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C19D0Ev,_ZTv0_n12_N9S21142C19D0Ev),
  ABISELECT(-168,-116),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI9S21142C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C19D1Ev,_ZTv0_n12_N9S21142C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C19D0Ev,_ZTv0_n12_N9S21142C19D0Ev),
  ABISELECT(-184,-128),
  ABISELECT(-16,-12),
  ABISELECT(-184,-128),
  (VTBL_ENTRY)&(_ZTI9S21142C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C19D1Ev,_ZTv0_n16_N9S21142C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C19D0Ev,_ZTv0_n16_N9S21142C19D0Ev),
};
extern VTBL_ENTRY _ZTV9S21142C19[];
extern void _ZN9S21142C13D1Ev();
extern void _ZN9S21142C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21142C13__9S21142C19[] = {
  ABISELECT(184,128),
  ABISELECT(168,116),
  ABISELECT(136,88),
  ABISELECT(128,84),
  ABISELECT(104,68),
  ABISELECT(80,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&_ZN9S21142C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21142C13D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S21142C13D1Ev,_ZTv0_n16_N9S21142C13D1Ev)();
extern void ABISELECT(_ZThn80_N9S21142C13D1Ev,_ZThn56_N9S21142C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21142C13D0Ev,_ZTv0_n16_N9S21142C13D0Ev)();
extern void ABISELECT(_ZThn80_N9S21142C13D0Ev,_ZThn56_N9S21142C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C15__9S21142C13__9S21142C19[] = {
  ABISELECT(-80,-56),
  ABISELECT(24,12),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C13D1Ev,_ZTv0_n16_N9S21142C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C13D0Ev,_ZTv0_n16_N9S21142C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev)();
extern void ABISELECT(_ZThn104_N9S21142C13D1Ev,_ZThn68_N9S21142C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev)();
extern void ABISELECT(_ZThn104_N9S21142C13D0Ev,_ZThn68_N9S21142C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt__9S21142C13__9S21142C19[] = {
  ABISELECT(-104,-68),
  ABISELECT(-104,-68),
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21142C13D1Ev,_ZTv0_n20_N9S21142C13D1Ev)();
extern void ABISELECT(_ZThn128_N9S21142C13D1Ev,_ZThn84_N9S21142C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21142C13D0Ev,_ZTv0_n20_N9S21142C13D0Ev)();
extern void ABISELECT(_ZThn128_N9S21142C13D0Ev,_ZThn84_N9S21142C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21142C9__9S21142C13__9S21142C19[] = {
  ABISELECT(-128,-84),
  ABISELECT(40,32),
  ABISELECT(8,4),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21142C13D1Ev,_ZTv0_n20_N9S21142C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21142C13D0Ev,_ZTv0_n20_N9S21142C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev)();
extern void ABISELECT(_ZThn136_N9S21142C13D1Ev,_ZThn88_N9S21142C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev)();
extern void ABISELECT(_ZThn136_N9S21142C13D0Ev,_ZThn88_N9S21142C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C10__9S21142C13__9S21142C19[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev)();
extern void ABISELECT(_ZThn168_N9S21142C13D1Ev,_ZThn116_N9S21142C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev)();
extern void ABISELECT(_ZThn168_N9S21142C13D0Ev,_ZThn116_N9S21142C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__9S21142C13__9S21142C19[] = {
  ABISELECT(-168,-116),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21142C13D1Ev,_ZTv0_n16_N9S21142C13D1Ev)();
extern void ABISELECT(_ZThn184_N9S21142C13D1Ev,_ZThn128_N9S21142C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21142C13D0Ev,_ZTv0_n16_N9S21142C13D0Ev)();
extern void ABISELECT(_ZThn184_N9S21142C13D0Ev,_ZThn128_N9S21142C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21142C3__9S21142C13__9S21142C19[] = {
  ABISELECT(-184,-128),
  ABISELECT(-16,-12),
  ABISELECT(-184,-128),
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C13D1Ev,_ZTv0_n16_N9S21142C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C13D0Ev,_ZTv0_n16_N9S21142C13D0Ev),
};
extern void _ZN9S21142C15D1Ev();
extern void _ZN9S21142C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21142C15__9S21142C19[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S21142C15[0]),
  (VTBL_ENTRY)&_ZN9S21142C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21142C15D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21142C15D1Ev,_ZTv0_n12_N9S21142C15D1Ev)();
extern void ABISELECT(_ZThn24_N9S21142C15D1Ev,_ZThn12_N9S21142C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21142C15D0Ev,_ZTv0_n12_N9S21142C15D0Ev)();
extern void ABISELECT(_ZThn24_N9S21142C15D0Ev,_ZThn12_N9S21142C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt__9S21142C15__9S21142C19[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S21142C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C15D1Ev,_ZTv0_n12_N9S21142C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C15D0Ev,_ZTv0_n12_N9S21142C15D0Ev),
};
extern void _ZN8S21142C9D1Ev();
extern void _ZN8S21142C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21142C9__9S21142C19[] = {
  ABISELECT(40,32),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&_ZN8S21142C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21142C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev)();
extern void ABISELECT(_ZThn8_N8S21142C9D1Ev,_ZThn4_N8S21142C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev)();
extern void ABISELECT(_ZThn8_N8S21142C9D0Ev,_ZThn4_N8S21142C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C10__8S21142C9__9S21142C19[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev)();
extern void ABISELECT(_ZThn40_N8S21142C9D1Ev,_ZThn32_N8S21142C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev)();
extern void ABISELECT(_ZThn40_N8S21142C9D0Ev,_ZThn32_N8S21142C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__8S21142C9__9S21142C19[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev),
};
extern void _ZN8S21142C3D1Ev();
extern void _ZN8S21142C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21142C3__9S21142C19[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21142C3[0]),
  (VTBL_ENTRY)&_ZN8S21142C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21142C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21142C3D1Ev,_ZTv0_n12_N8S21142C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21142C3D0Ev,_ZTv0_n12_N8S21142C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__8S21142C3__9S21142C19[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S21142C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C3D1Ev,_ZTv0_n12_N8S21142C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C3D0Ev,_ZTv0_n12_N8S21142C3D0Ev),
};
static  VTT_ENTRY vtt_S21142C19[] = {
  {&(_ZTV9S21142C19[8]),  8,44},
  {&(_tg__ZTV9S21142C13__9S21142C19[8]),  8,10},
  {&(_tg__ZTV9S21142C15__9S21142C13__9S21142C19[4]),  4,6},
  {&(_tg__ZTV10S3589C9_nt__9S21142C13__9S21142C19[3]),  3,5},
  {&(_tg__ZTV8S21142C9__9S21142C13__9S21142C19[5]),  5,7},
  {&(_tg__ZTV9S21142C10__9S21142C13__9S21142C19[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__9S21142C13__9S21142C19[3]),  3,5},
  {&(_tg__ZTV8S21142C3__9S21142C13__9S21142C19[4]),  4,6},
  {&(_ZTV9S21142C19[14]),  14,44},
  {&(_ZTV9S21142C19[19]),  19,44},
  {&(_ZTV9S21142C19[26]),  26,44},
  {&(_ZTV9S21142C19[31]),  31,44},
  {&(_ZTV9S21142C19[36]),  36,44},
  {&(_ZTV9S21142C19[42]),  42,44},
  {&(_tg__ZTV9S21142C15__9S21142C19[3]),  3,5},
  {&(_tg__ZTV10S3589C9_nt__9S21142C15__9S21142C19[3]),  3,5},
  {&(_tg__ZTV8S21142C9__9S21142C19[4]),  4,6},
  {&(_tg__ZTV9S21142C10__8S21142C9__9S21142C19[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__8S21142C9__9S21142C19[3]),  3,5},
  {&(_tg__ZTV8S21142C3__9S21142C19[3]),  3,5},
  {&(_tg__ZTV7S3589C3__8S21142C3__9S21142C19[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21142C19[];
extern  VTBL_ENTRY _ZTV9S21142C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21142C19[];
static VTBL_ENTRY alt_thunk_names64[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21142C9D0Ev,_ZThn32_N8S21142C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21142C9D0Ev,_ZThn4_N8S21142C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21142C9D1Ev,_ZThn32_N8S21142C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21142C9D1Ev,_ZThn4_N8S21142C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21142C15D0Ev,_ZTv0_n12_N9S21142C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S21142C15D0Ev,_ZThn12_N9S21142C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21142C15D1Ev,_ZTv0_n12_N9S21142C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S21142C15D1Ev,_ZThn12_N9S21142C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21142C13D0Ev,_ZTv0_n20_N9S21142C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21142C13D0Ev,_ZThn84_N9S21142C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21142C13D1Ev,_ZTv0_n20_N9S21142C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21142C13D1Ev,_ZThn84_N9S21142C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S21142C13D0Ev,_ZThn116_N9S21142C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21142C13D0Ev,_ZThn88_N9S21142C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S21142C13D0Ev,_ZThn68_N9S21142C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S21142C13D1Ev,_ZThn116_N9S21142C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21142C13D1Ev,_ZThn88_N9S21142C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S21142C13D1Ev,_ZThn68_N9S21142C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21142C13D0Ev,_ZTv0_n16_N9S21142C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S21142C13D0Ev,_ZThn128_N9S21142C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21142C13D0Ev,_ZThn56_N9S21142C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21142C13D1Ev,_ZTv0_n16_N9S21142C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S21142C13D1Ev,_ZThn128_N9S21142C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21142C13D1Ev,_ZThn56_N9S21142C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21142C19D0Ev,_ZTv0_n20_N9S21142C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21142C19D0Ev,_ZThn84_N9S21142C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21142C19D1Ev,_ZTv0_n20_N9S21142C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21142C19D1Ev,_ZThn84_N9S21142C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21142C19D0Ev,_ZTv0_n12_N9S21142C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S21142C19D0Ev,_ZThn116_N9S21142C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21142C19D0Ev,_ZThn88_N9S21142C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S21142C19D0Ev,_ZThn68_N9S21142C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21142C19D1Ev,_ZTv0_n12_N9S21142C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S21142C19D1Ev,_ZThn116_N9S21142C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21142C19D1Ev,_ZThn88_N9S21142C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S21142C19D1Ev,_ZThn68_N9S21142C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21142C19D0Ev,_ZTv0_n16_N9S21142C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S21142C19D0Ev,_ZThn128_N9S21142C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21142C19D0Ev,_ZThn56_N9S21142C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21142C19D1Ev,_ZTv0_n16_N9S21142C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S21142C19D1Ev,_ZThn128_N9S21142C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21142C19D1Ev,_ZThn56_N9S21142C19D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21142C19 = {  "S21142C19", // class name
  bases_S21142C19, 10,
  &(vtc_S21142C19[0]), // expected_vtbl_contents
  &(vtt_S21142C19[0]), // expected_vtt_contents
  ABISELECT(192,132), // object size
  NSPAIRA(_ZTI9S21142C19),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S21142C19),44, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21142C19),21, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names64,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21142C2  : virtual S21142C3 , virtual S21142C6 , S3589C13_nt , S21142C19 , virtual S21142C8 {
  int s21142c2f0;
  virtual  ~S21142C2(); // _ZN8S21142C2D2Ev
  S21142C2(); // tgen
};
//SIG(-1 S21142C2) C1{ VBC2{ VBC3{ vd m Fc FU4{ m Fc[6]}}} VBC5{ VBC6{ BC7{ VBC8{ VBC9{ BC3 vd FL FU4} VBC3 vd} BC3 BC10{ vd m Fi Fc Fi} BC9 Fi Fp} BC8 VBC10} VBC11{ VBC8 BC2 VBC12{ BC13{ m FD} VBC14{ VBC10 Fp[2]} VBC8 BC3 VBC2 Fc Fi} vd} BC15{ BC8 VBC16{ VBC3 Fi FC17{}} vd FD} vd Fi[10] Fp FC15} BC13 BC18{ BC12 Fs FC2 Fi} VBC7 vd Fi}


 S21142C2 ::~S21142C2(){ note_dtor("S21142C2", this);}
S21142C2 ::S21142C2(){ note_ctor("S21142C2", this);} // tgen

static void Test_S21142C2()
{
  extern Class_Descriptor cd_S21142C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(42,115)];
    init_test(&cd_S21142C2, buf);
    S21142C2 *dp, &lv = *(dp=new (buf) S21142C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(656,456), "sizeof(S21142C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21142C2)");
    /*is_ambiguous_... S21142C2::S21142C3 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C3*), ABISELECT(112,76), "S21142C2");
    /*is_ambiguous_... S21142C2::S21142C9 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C9*), ABISELECT(112,76), "S21142C2");
    /*is_ambiguous_... S21142C7::S21142C9 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C9*)(S21142C7*), ABISELECT(112,76), "S21142C2");
    /*is_ambiguous_... S21142C12::S21142C3 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C3*)(S21142C12*), ABISELECT(112,76), "S21142C2");
    /*is_ambiguous_... S21142C9::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C9*)(S21142C16*)(S21142C6*), ABISELECT(112,76), "S21142C2");
    check_base_class_offset(lv, (S3589C3*)(S21142C17*), ABISELECT(112,76), "S21142C2");
    /*is_ambiguous_... S21142C2::S21142C3 */ AMB_check_base_class_offset(lv, (S21142C3*), ABISELECT(104,72), "S21142C2");
    /*is_ambiguous_... S21142C2::S21142C13 */ AMB_check_base_class_offset(lv, (S21142C3*)(S21142C13*), ABISELECT(104,72), "S21142C2");
    check_base_class_offset(lv, (S21142C3*)(S21142C13*)(S21142C19*), ABISELECT(104,72), "S21142C2");
    /*is_ambiguous_... S21142C2::S21142C10 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C10*), ABISELECT(408,288), "S21142C2");
    /*is_ambiguous_... S21142C2::S21142C9 */ AMB_check_base_class_offset(lv, (S21142C10*)(S21142C9*), ABISELECT(408,288), "S21142C2");
    /*is_ambiguous_... S21142C7::S21142C9 */ AMB_check_base_class_offset(lv, (S21142C10*)(S21142C9*)(S21142C7*), ABISELECT(408,288), "S21142C2");
    check_base_class_offset(lv, (S21142C10*)(S21142C9*)(S21142C16*)(S21142C6*), ABISELECT(408,288), "S21142C2");
    check_base_class_offset(lv, (S21142C9*)(S21142C8*)(S21142C7*), ABISELECT(400,284), "S21142C2");
    check_base_class_offset(lv, (S21142C9*)(S21142C12*), ABISELECT(400,284), "S21142C2");
    /*is_ambiguous_... S21142C2::S21142C13 */ AMB_check_base_class_offset(lv, (S21142C9*)(S21142C13*), ABISELECT(400,284), "S21142C2");
    check_base_class_offset(lv, (S21142C9*)(S21142C13*)(S21142C19*), ABISELECT(400,284), "S21142C2");
    /*is_ambiguous_... S21142C2::S21142C8 */ AMB_check_base_class_offset(lv, (S21142C9*)(S21142C8*), ABISELECT(400,284), "S21142C2");
    /*is_ambiguous_... S21142C8::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C8*)(S21142C7*), ABISELECT(304,216), "S21142C2");
    check_base_class_offset(lv, (S3589C9_nt*)(S21142C8*)(S21142C7*), ABISELECT(320,228), "S21142C2");
    /*is_ambiguous_... S21142C8::S21142C10 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C10*)(S21142C8*)(S21142C7*), ABISELECT(344,244), "S21142C2");
    /*is_ambiguous_... S21142C8::S21142C10 */ AMB_check_base_class_offset(lv, (S21142C10*)(S21142C8*)(S21142C7*), ABISELECT(344,244), "S21142C2");
    check_base_class_offset(lv, (S21142C8*)(S21142C7*), ABISELECT(304,216), "S21142C2");
    /*is_ambiguous_... S21142C7::S21142C9 */ AMB_check_base_class_offset(lv, (S21142C9*)(S21142C7*), ABISELECT(392,280), "S21142C2");
    /*is_ambiguous_... S21142C7::S3589C9_nt */ AMB_check_base_class_offset(lv, (S3589C9_nt*)(S21142C7*), ABISELECT(440,316), "S21142C2");
    check_base_class_offset(lv, (S3589C9_nt*)(S21142C15*), ABISELECT(440,316), "S21142C2");
    check_base_class_offset(lv, (S21142C7*)(S21142C6*), ABISELECT(304,216), "S21142C2");
    /*is_ambiguous_... S21142C12::S21142C3 */ AMB_check_base_class_offset(lv, (S21142C3*)(S21142C12*), ABISELECT(464,332), "S21142C2");
    /*is_ambiguous_... S21142C2::S21142C13 */ AMB_check_base_class_offset(lv, (S3589C13_nt*)(S21142C13*), ABISELECT(496,348), "S21142C2");
    /*is_ambiguous_... S21142C2::S21142C13 */ AMB_check_base_class_offset(lv, (S21142C15*)(S21142C13*), ABISELECT(520,368), "S21142C2");
    check_base_class_offset(lv, (S21142C15*)(S21142C13*)(S21142C19*), ABISELECT(520,368), "S21142C2");
    /*is_ambiguous_... S21142C2::S21142C13 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C13*), ABISELECT(480,336), "S21142C2");
    check_base_class_offset(lv, (S21142C13*)(S21142C12*), ABISELECT(480,336), "S21142C2");
    check_base_class_offset(lv, (S21142C12*)(S21142C6*), ABISELECT(464,332), "S21142C2");
    check_base_class_offset(lv, (S21142C9*)(S21142C16*)(S21142C6*), ABISELECT(128,88), "S21142C2");
    check_base_class_offset(lv, (S21142C17*)(S21142C16*)(S21142C6*), ABISELECT(544,380), "S21142C2");
    check_base_class_offset(lv, (S21142C16*)(S21142C6*), ABISELECT(128,88), "S21142C2");
    check_base_class_offset(lv, (S21142C6*), ABISELECT(128,88), "S21142C2");
    /*is_ambiguous_... S21142C2::S3589C13_nt */ AMB_check_base_class_offset(lv, (S3589C13_nt*), ABISELECT(80,56), "S21142C2");
    check_base_class_offset(lv, (S3589C13_nt*)(S21142C13*)(S21142C19*), ABISELECT(16,12), "S21142C2");
    /*is_ambiguous_... S21142C13::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C13*)(S21142C19*), 0, "S21142C2");
    check_base_class_offset(lv, (S21142C13*)(S21142C19*), 0, "S21142C2");
    check_base_class_offset(lv, (S21142C19*), 0, "S21142C2");
    /*is_ambiguous_... S21142C2::S21142C8 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C8*), ABISELECT(560,392), "S21142C2");
    /*is_ambiguous_... S21142C2::S21142C8 */ AMB_check_base_class_offset(lv, (S3589C9_nt*)(S21142C8*), ABISELECT(576,404), "S21142C2");
    /*is_ambiguous_... S21142C2::S21142C8 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C10*)(S21142C8*), ABISELECT(600,420), "S21142C2");
    /*is_ambiguous_... S21142C2::S21142C8 */ AMB_check_base_class_offset(lv, (S21142C10*)(S21142C8*), ABISELECT(600,420), "S21142C2");
    /*is_ambiguous_... S21142C2::S21142C8 */ AMB_check_base_class_offset(lv, (S21142C8*), ABISELECT(560,392), "S21142C2");
    check_field_offset(lv, s21142c2f0, ABISELECT(96,68), "S21142C2.s21142c2f0");
    test_class_info(&lv, &cd_S21142C2);
    dp->~S21142C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21142C2(Test_S21142C2, "S21142C2", ABISELECT(656,456));

#else // __cplusplus

extern void _ZN8S21142C2C1Ev();
extern void _ZN8S21142C2D2Ev();
Name_Map name_map_S21142C2[] = {
  NSPAIR(_ZN8S21142C2C1Ev),
  NSPAIR(_ZN8S21142C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S21142C3;
extern VTBL_ENTRY _ZTI8S21142C3[];
extern  VTBL_ENTRY _ZTV8S21142C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21142C3[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S21142C10;
extern VTBL_ENTRY _ZTI9S21142C10[];
extern  VTBL_ENTRY _ZTV9S21142C10[];
extern Class_Descriptor cd_S21142C9;
extern VTBL_ENTRY _ZTI8S21142C9[];
extern  VTBL_ENTRY _ZTV8S21142C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21142C9[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S3589C9_nt;
extern VTBL_ENTRY _ZTI10S3589C9_nt[];
extern  VTBL_ENTRY _ZTV10S3589C9_nt[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S21142C10;
extern VTBL_ENTRY _ZTI9S21142C10[];
extern  VTBL_ENTRY _ZTV9S21142C10[];
extern Class_Descriptor cd_S21142C8;
extern VTBL_ENTRY _ZTI8S21142C8[];
extern  VTBL_ENTRY _ZTV8S21142C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21142C8[];
extern Class_Descriptor cd_S21142C9;
extern VTBL_ENTRY _ZTI8S21142C9[];
extern  VTBL_ENTRY _ZTV8S21142C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21142C9[];
extern Class_Descriptor cd_S3589C9_nt;
extern VTBL_ENTRY _ZTI10S3589C9_nt[];
extern  VTBL_ENTRY _ZTV10S3589C9_nt[];
extern Class_Descriptor cd_S21142C7;
extern VTBL_ENTRY _ZTI8S21142C7[];
extern  VTBL_ENTRY _ZTV8S21142C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21142C7[];
extern Class_Descriptor cd_S21142C3;
extern VTBL_ENTRY _ZTI8S21142C3[];
extern  VTBL_ENTRY _ZTV8S21142C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21142C3[];
extern Class_Descriptor cd_S3589C13_nt;
extern VTBL_ENTRY _ZTI11S3589C13_nt[];
extern Class_Descriptor cd_S21142C15;
extern VTBL_ENTRY _ZTI9S21142C15[];
extern  VTBL_ENTRY _ZTV9S21142C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21142C15[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S21142C13;
extern VTBL_ENTRY _ZTI9S21142C13[];
extern  VTBL_ENTRY _ZTV9S21142C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21142C13[];
extern Class_Descriptor cd_S21142C12;
extern VTBL_ENTRY _ZTI9S21142C12[];
extern  VTBL_ENTRY _ZTV9S21142C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21142C12[];
extern Class_Descriptor cd_S21142C9;
extern VTBL_ENTRY _ZTI8S21142C9[];
extern  VTBL_ENTRY _ZTV8S21142C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21142C9[];
extern Class_Descriptor cd_S21142C17;
extern VTBL_ENTRY _ZTI9S21142C17[];
extern  VTBL_ENTRY _ZTV9S21142C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21142C17[];
extern Class_Descriptor cd_S21142C16;
extern VTBL_ENTRY _ZTI9S21142C16[];
extern  VTBL_ENTRY _ZTV9S21142C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21142C16[];
extern Class_Descriptor cd_S21142C6;
extern VTBL_ENTRY _ZTI8S21142C6[];
extern  VTBL_ENTRY _ZTV8S21142C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21142C6[];
extern Class_Descriptor cd_S3589C13_nt;
extern VTBL_ENTRY _ZTI11S3589C13_nt[];
extern Class_Descriptor cd_S3589C13_nt;
extern VTBL_ENTRY _ZTI11S3589C13_nt[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S21142C13;
extern VTBL_ENTRY _ZTI9S21142C13[];
extern  VTBL_ENTRY _ZTV9S21142C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21142C13[];
extern Class_Descriptor cd_S21142C19;
extern VTBL_ENTRY _ZTI9S21142C19[];
extern  VTBL_ENTRY _ZTV9S21142C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21142C19[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S3589C9_nt;
extern VTBL_ENTRY _ZTI10S3589C9_nt[];
extern  VTBL_ENTRY _ZTV10S3589C9_nt[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S21142C10;
extern VTBL_ENTRY _ZTI9S21142C10[];
extern  VTBL_ENTRY _ZTV9S21142C10[];
extern Class_Descriptor cd_S21142C8;
extern VTBL_ENTRY _ZTI8S21142C8[];
extern  VTBL_ENTRY _ZTV8S21142C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21142C8[];
static Base_Class bases_S21142C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3589C3,    ABISELECT(112,76), //bcp->offset
    22, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S21142C3,    ABISELECT(104,72), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3589C3,    ABISELECT(408,288), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S21142C10,    ABISELECT(408,288), //bcp->offset
    72, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S21142C9,    ABISELECT(400,284), //bcp->offset
    65, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S3589C3,    ABISELECT(304,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3589C9_nt,    ABISELECT(320,228), //bcp->offset
    51, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3589C3,    ABISELECT(344,244), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21142C10,    ABISELECT(344,244), //bcp->offset
    55, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21142C8,    ABISELECT(304,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21142C9,    ABISELECT(392,280), //bcp->offset
    59, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3589C9_nt,    ABISELECT(440,316), //bcp->offset
    77, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S21142C7,    ABISELECT(304,216), //bcp->offset
    42, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S21142C3,    ABISELECT(464,332), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S3589C13_nt,    ABISELECT(496,348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21142C15,    ABISELECT(520,368), //bcp->offset
    105, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S3589C3,    ABISELECT(480,336), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21142C13,    ABISELECT(480,336), //bcp->offset
    94, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S21142C12,    ABISELECT(464,332), //bcp->offset
    82, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S21142C9,    ABISELECT(128,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S21142C17,    ABISELECT(544,380), //bcp->offset
    111, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S21142C16,    ABISELECT(128,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S21142C6,    ABISELECT(128,88), //bcp->offset
    27, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3589C13_nt,    ABISELECT(80,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3589C13_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S3589C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S21142C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S21142C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3589C3,    ABISELECT(560,392), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S3589C9_nt,    ABISELECT(576,404), //bcp->offset
    125, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S3589C3,    ABISELECT(600,420), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S21142C10,    ABISELECT(600,420), //bcp->offset
    129, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S21142C8,    ABISELECT(560,392), //bcp->offset
    117, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    93, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21142C2[];
extern void _ZN8S21142C2D1Ev();
extern void _ZN8S21142C2D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S21142C2D1Ev,_ZTv0_n16_N8S21142C2D1Ev)();
extern void ABISELECT(_ZThn104_N8S21142C2D1Ev,_ZThn72_N8S21142C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21142C2D0Ev,_ZTv0_n16_N8S21142C2D0Ev)();
extern void ABISELECT(_ZThn104_N8S21142C2D0Ev,_ZThn72_N8S21142C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C2D1Ev,_ZTv0_n12_N8S21142C2D1Ev)();
extern void ABISELECT(_ZThn112_N8S21142C2D1Ev,_ZThn76_N8S21142C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C2D0Ev,_ZTv0_n12_N8S21142C2D0Ev)();
extern void ABISELECT(_ZThn112_N8S21142C2D0Ev,_ZThn76_N8S21142C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N8S21142C2D1Ev,_ZTv0_n52_N8S21142C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S21142C2D1Ev,_ZThn88_N8S21142C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N8S21142C2D0Ev,_ZTv0_n52_N8S21142C2D0Ev)();
extern void ABISELECT(_ZThn128_N8S21142C2D0Ev,_ZThn88_N8S21142C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21142C2D1Ev,_ZTv0_n28_N8S21142C2D1Ev)();
extern void ABISELECT(_ZThn304_N8S21142C2D1Ev,_ZThn216_N8S21142C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21142C2D0Ev,_ZTv0_n28_N8S21142C2D0Ev)();
extern void ABISELECT(_ZThn304_N8S21142C2D0Ev,_ZThn216_N8S21142C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n56_N8S21142C2D1Ev,_ZTvn12_n28_N8S21142C2D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S21142C2D0Ev,_ZTvn12_n28_N8S21142C2D0Ev)();
extern void ABISELECT(_ZTvn40_n56_N8S21142C2D1Ev,_ZTvn28_n28_N8S21142C2D1Ev)();
extern void ABISELECT(_ZTvn40_n56_N8S21142C2D0Ev,_ZTvn28_n28_N8S21142C2D0Ev)();
extern void ABISELECT(_ZTvn88_n56_N8S21142C2D1Ev,_ZTvn64_n28_N8S21142C2D1Ev)();
extern void ABISELECT(_ZTvn88_n56_N8S21142C2D0Ev,_ZTvn64_n28_N8S21142C2D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21142C2D1Ev,_ZTv0_n20_N8S21142C2D1Ev)();
extern void ABISELECT(_ZThn400_N8S21142C2D1Ev,_ZThn284_N8S21142C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21142C2D0Ev,_ZTv0_n20_N8S21142C2D0Ev)();
extern void ABISELECT(_ZThn400_N8S21142C2D0Ev,_ZThn284_N8S21142C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C2D1Ev,_ZTv0_n12_N8S21142C2D1Ev)();
extern void ABISELECT(_ZThn408_N8S21142C2D1Ev,_ZThn288_N8S21142C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C2D0Ev,_ZTv0_n12_N8S21142C2D0Ev)();
extern void ABISELECT(_ZThn408_N8S21142C2D0Ev,_ZThn288_N8S21142C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C2D1Ev,_ZTv0_n12_N8S21142C2D1Ev)();
extern void ABISELECT(_ZThn440_N8S21142C2D1Ev,_ZThn316_N8S21142C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C2D0Ev,_ZTv0_n12_N8S21142C2D0Ev)();
extern void ABISELECT(_ZThn440_N8S21142C2D0Ev,_ZThn316_N8S21142C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21142C2D1Ev,_ZTv0_n40_N8S21142C2D1Ev)();
extern void ABISELECT(_ZThn464_N8S21142C2D1Ev,_ZThn332_N8S21142C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21142C2D0Ev,_ZTv0_n40_N8S21142C2D0Ev)();
extern void ABISELECT(_ZThn464_N8S21142C2D0Ev,_ZThn332_N8S21142C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S21142C2D1Ev,_ZTv0_n36_N8S21142C2D1Ev)();
extern void ABISELECT(_ZThn480_N8S21142C2D1Ev,_ZThn336_N8S21142C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S21142C2D0Ev,_ZTv0_n36_N8S21142C2D0Ev)();
extern void ABISELECT(_ZThn480_N8S21142C2D0Ev,_ZThn336_N8S21142C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21142C2D1Ev,_ZTv0_n16_N8S21142C2D1Ev)();
extern void ABISELECT(_ZThn520_N8S21142C2D1Ev,_ZThn368_N8S21142C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21142C2D0Ev,_ZTv0_n16_N8S21142C2D0Ev)();
extern void ABISELECT(_ZThn520_N8S21142C2D0Ev,_ZThn368_N8S21142C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21142C2D1Ev,_ZTv0_n16_N8S21142C2D1Ev)();
extern void ABISELECT(_ZThn544_N8S21142C2D1Ev,_ZThn380_N8S21142C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21142C2D0Ev,_ZTv0_n16_N8S21142C2D0Ev)();
extern void ABISELECT(_ZThn544_N8S21142C2D0Ev,_ZThn380_N8S21142C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21142C2D1Ev,_ZTv0_n24_N8S21142C2D1Ev)();
extern void ABISELECT(_ZThn560_N8S21142C2D1Ev,_ZThn392_N8S21142C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21142C2D0Ev,_ZTv0_n24_N8S21142C2D0Ev)();
extern void ABISELECT(_ZThn560_N8S21142C2D0Ev,_ZThn392_N8S21142C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N8S21142C2D1Ev,_ZTvn12_n24_N8S21142C2D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N8S21142C2D0Ev,_ZTvn12_n24_N8S21142C2D0Ev)();
extern void ABISELECT(_ZTvn40_n48_N8S21142C2D1Ev,_ZTvn28_n24_N8S21142C2D1Ev)();
extern void ABISELECT(_ZTvn40_n48_N8S21142C2D0Ev,_ZTvn28_n24_N8S21142C2D0Ev)();
static  VTBL_ENTRY vtc_S21142C2[] = {
  ABISELECT(560,392),
  ABISELECT(544,380),
  ABISELECT(480,336),
  ABISELECT(464,332),
  ABISELECT(304,216),
  ABISELECT(128,88),
  ABISELECT(104,72),
  ABISELECT(112,76),
  ABISELECT(408,288),
  ABISELECT(400,284),
  ABISELECT(440,316),
  ABISELECT(520,368),
  0,
  (VTBL_ENTRY)&(_ZTI8S21142C2[0]),
  (VTBL_ENTRY)&_ZN8S21142C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21142C2D0Ev,
  ABISELECT(-104,-72),
  ABISELECT(8,4),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI8S21142C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21142C2D1Ev,_ZTv0_n16_N8S21142C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21142C2D0Ev,_ZTv0_n16_N8S21142C2D0Ev),
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI8S21142C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C2D1Ev,_ZTv0_n12_N8S21142C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C2D0Ev,_ZTv0_n12_N8S21142C2D0Ev),
  ABISELECT(-128,-88),
  ABISELECT(-24,-16),
  ABISELECT(392,280),
  ABISELECT(352,248),
  ABISELECT(336,244),
  ABISELECT(312,228),
  ABISELECT(272,196),
  ABISELECT(176,128),
  ABISELECT(416,292),
  ABISELECT(-16,-12),
  ABISELECT(280,200),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S21142C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S21142C2D1Ev,_ZTv0_n52_N8S21142C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S21142C2D0Ev,_ZTv0_n52_N8S21142C2D0Ev),
  ABISELECT(-304,-216),
  ABISELECT(136,100),
  ABISELECT(-192,-140),
  ABISELECT(104,72),
  ABISELECT(96,68),
  ABISELECT(-304,-216),
  (VTBL_ENTRY)&(_ZTI8S21142C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21142C2D1Ev,_ZTv0_n28_N8S21142C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21142C2D0Ev,_ZTv0_n28_N8S21142C2D0Ev),
  ABISELECT(-320,-228),
  (VTBL_ENTRY)&(_ZTI8S21142C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S21142C2D1Ev,_ZTvn12_n28_N8S21142C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S21142C2D0Ev,_ZTvn12_n28_N8S21142C2D0Ev),
  ABISELECT(-344,-244),
  (VTBL_ENTRY)&(_ZTI8S21142C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n56_N8S21142C2D1Ev,_ZTvn28_n28_N8S21142C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n56_N8S21142C2D0Ev,_ZTvn28_n28_N8S21142C2D0Ev),
  ABISELECT(-280,-204),
  ABISELECT(16,8),
  ABISELECT(-392,-280),
  (VTBL_ENTRY)&(_ZTI8S21142C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn88_n56_N8S21142C2D1Ev,_ZTvn64_n28_N8S21142C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn88_n56_N8S21142C2D0Ev,_ZTvn64_n28_N8S21142C2D0Ev),
  ABISELECT(-400,-284),
  ABISELECT(-288,-208),
  ABISELECT(8,4),
  ABISELECT(-400,-284),
  (VTBL_ENTRY)&(_ZTI8S21142C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21142C2D1Ev,_ZTv0_n20_N8S21142C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21142C2D0Ev,_ZTv0_n20_N8S21142C2D0Ev),
  ABISELECT(-408,-288),
  ABISELECT(-408,-288),
  (VTBL_ENTRY)&(_ZTI8S21142C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C2D1Ev,_ZTv0_n12_N8S21142C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C2D0Ev,_ZTv0_n12_N8S21142C2D0Ev),
  ABISELECT(-440,-316),
  ABISELECT(-440,-316),
  (VTBL_ENTRY)&(_ZTI8S21142C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C2D1Ev,_ZTv0_n12_N8S21142C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C2D0Ev,_ZTv0_n12_N8S21142C2D0Ev),
  ABISELECT(-464,-332),
  ABISELECT(-360,-260),
  ABISELECT(-24,-16),
  ABISELECT(56,36),
  ABISELECT(16,4),
  ABISELECT(-56,-44),
  ABISELECT(-64,-48),
  ABISELECT(-352,-256),
  ABISELECT(-464,-332),
  (VTBL_ENTRY)&(_ZTI8S21142C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21142C2D1Ev,_ZTv0_n40_N8S21142C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21142C2D0Ev,_ZTv0_n40_N8S21142C2D0Ev),
  ABISELECT(-480,-336),
  ABISELECT(-376,-264),
  ABISELECT(-368,-260),
  ABISELECT(-72,-48),
  ABISELECT(-80,-52),
  ABISELECT(-40,-20),
  ABISELECT(40,32),
  ABISELECT(-480,-336),
  (VTBL_ENTRY)&(_ZTI8S21142C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21142C2D1Ev,_ZTv0_n36_N8S21142C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21142C2D0Ev,_ZTv0_n36_N8S21142C2D0Ev),
  ABISELECT(-520,-368),
  ABISELECT(-80,-52),
  ABISELECT(-520,-368),
  (VTBL_ENTRY)&(_ZTI8S21142C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21142C2D1Ev,_ZTv0_n16_N8S21142C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21142C2D0Ev,_ZTv0_n16_N8S21142C2D0Ev),
  ABISELECT(-544,-380),
  ABISELECT(-432,-304),
  ABISELECT(-544,-380),
  (VTBL_ENTRY)&(_ZTI8S21142C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21142C2D1Ev,_ZTv0_n16_N8S21142C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21142C2D0Ev,_ZTv0_n16_N8S21142C2D0Ev),
  ABISELECT(-560,-392),
  ABISELECT(-448,-316),
  ABISELECT(-152,-104),
  ABISELECT(-160,-108),
  ABISELECT(-560,-392),
  (VTBL_ENTRY)&(_ZTI8S21142C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21142C2D1Ev,_ZTv0_n24_N8S21142C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21142C2D0Ev,_ZTv0_n24_N8S21142C2D0Ev),
  ABISELECT(-576,-404),
  (VTBL_ENTRY)&(_ZTI8S21142C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S21142C2D1Ev,_ZTvn12_n24_N8S21142C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S21142C2D0Ev,_ZTvn12_n24_N8S21142C2D0Ev),
  ABISELECT(-600,-420),
  (VTBL_ENTRY)&(_ZTI8S21142C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n48_N8S21142C2D1Ev,_ZTvn28_n24_N8S21142C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n48_N8S21142C2D0Ev,_ZTvn28_n24_N8S21142C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S21142C2[];
extern void _ZN9S21142C19D1Ev();
extern void _ZN9S21142C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21142C19__8S21142C2[] = {
  ABISELECT(104,72),
  ABISELECT(112,76),
  ABISELECT(408,288),
  ABISELECT(400,284),
  ABISELECT(440,316),
  ABISELECT(520,368),
  0,
  (VTBL_ENTRY)&(_ZTI9S21142C19[0]),
  (VTBL_ENTRY)&_ZN9S21142C19D1Ev,
  (VTBL_ENTRY)&_ZN9S21142C19D0Ev,
};
extern void _ZN9S21142C13D1Ev();
extern void _ZN9S21142C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21142C139S21142C19__A1__8S21142C2[] = {
  ABISELECT(104,72),
  ABISELECT(112,76),
  ABISELECT(408,288),
  ABISELECT(400,284),
  ABISELECT(440,316),
  ABISELECT(520,368),
  0,
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&_ZN9S21142C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21142C13D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S21142C13D1Ev,_ZTv0_n16_N9S21142C13D1Ev)();
extern void ABISELECT(_ZThn520_N9S21142C13D1Ev,_ZThn368_N9S21142C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21142C13D0Ev,_ZTv0_n16_N9S21142C13D0Ev)();
extern void ABISELECT(_ZThn520_N9S21142C13D0Ev,_ZThn368_N9S21142C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C15__9S21142C139S21142C19__A1__8S21142C2[] = {
  ABISELECT(-520,-368),
  ABISELECT(-80,-52),
  ABISELECT(-520,-368),
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C13D1Ev,_ZTv0_n16_N9S21142C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C13D0Ev,_ZTv0_n16_N9S21142C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev)();
extern void ABISELECT(_ZThn440_N9S21142C13D1Ev,_ZThn316_N9S21142C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev)();
extern void ABISELECT(_ZThn440_N9S21142C13D0Ev,_ZThn316_N9S21142C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt__9S21142C139S21142C19__A1__8S21142C2[] = {
  ABISELECT(-440,-316),
  ABISELECT(-440,-316),
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21142C13D1Ev,_ZTv0_n20_N9S21142C13D1Ev)();
extern void ABISELECT(_ZThn400_N9S21142C13D1Ev,_ZThn284_N9S21142C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21142C13D0Ev,_ZTv0_n20_N9S21142C13D0Ev)();
extern void ABISELECT(_ZThn400_N9S21142C13D0Ev,_ZThn284_N9S21142C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21142C9__9S21142C139S21142C19__A1__8S21142C2[] = {
  ABISELECT(-400,-284),
  ABISELECT(-288,-208),
  ABISELECT(8,4),
  ABISELECT(-400,-284),
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21142C13D1Ev,_ZTv0_n20_N9S21142C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21142C13D0Ev,_ZTv0_n20_N9S21142C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev)();
extern void ABISELECT(_ZThn408_N9S21142C13D1Ev,_ZThn288_N9S21142C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev)();
extern void ABISELECT(_ZThn408_N9S21142C13D0Ev,_ZThn288_N9S21142C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C10__9S21142C139S21142C19__A1__8S21142C2[] = {
  ABISELECT(-408,-288),
  ABISELECT(-408,-288),
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev)();
extern void ABISELECT(_ZThn112_N9S21142C13D1Ev,_ZThn76_N9S21142C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev)();
extern void ABISELECT(_ZThn112_N9S21142C13D0Ev,_ZThn76_N9S21142C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__9S21142C139S21142C19__A1__8S21142C2[] = {
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21142C13D1Ev,_ZTv0_n16_N9S21142C13D1Ev)();
extern void ABISELECT(_ZThn104_N9S21142C13D1Ev,_ZThn72_N9S21142C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21142C13D0Ev,_ZTv0_n16_N9S21142C13D0Ev)();
extern void ABISELECT(_ZThn104_N9S21142C13D0Ev,_ZThn72_N9S21142C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21142C3__9S21142C139S21142C19__A1__8S21142C2[] = {
  ABISELECT(-104,-72),
  ABISELECT(8,4),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C13D1Ev,_ZTv0_n16_N9S21142C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C13D0Ev,_ZTv0_n16_N9S21142C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21142C19D1Ev,_ZTv0_n16_N9S21142C19D1Ev)();
extern void ABISELECT(_ZThn520_N9S21142C19D1Ev,_ZThn368_N9S21142C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21142C19D0Ev,_ZTv0_n16_N9S21142C19D0Ev)();
extern void ABISELECT(_ZThn520_N9S21142C19D0Ev,_ZThn368_N9S21142C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C15__9S21142C19__8S21142C2[] = {
  ABISELECT(-520,-368),
  ABISELECT(-80,-52),
  ABISELECT(-520,-368),
  (VTBL_ENTRY)&(_ZTI9S21142C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C19D1Ev,_ZTv0_n16_N9S21142C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C19D0Ev,_ZTv0_n16_N9S21142C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21142C19D1Ev,_ZTv0_n12_N9S21142C19D1Ev)();
extern void ABISELECT(_ZThn440_N9S21142C19D1Ev,_ZThn316_N9S21142C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21142C19D0Ev,_ZTv0_n12_N9S21142C19D0Ev)();
extern void ABISELECT(_ZThn440_N9S21142C19D0Ev,_ZThn316_N9S21142C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt__9S21142C19__8S21142C2[] = {
  ABISELECT(-440,-316),
  ABISELECT(-440,-316),
  (VTBL_ENTRY)&(_ZTI9S21142C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C19D1Ev,_ZTv0_n12_N9S21142C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C19D0Ev,_ZTv0_n12_N9S21142C19D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21142C19D1Ev,_ZTv0_n20_N9S21142C19D1Ev)();
extern void ABISELECT(_ZThn400_N9S21142C19D1Ev,_ZThn284_N9S21142C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21142C19D0Ev,_ZTv0_n20_N9S21142C19D0Ev)();
extern void ABISELECT(_ZThn400_N9S21142C19D0Ev,_ZThn284_N9S21142C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21142C9__9S21142C19__8S21142C2[] = {
  ABISELECT(-400,-284),
  ABISELECT(-288,-208),
  ABISELECT(8,4),
  ABISELECT(-400,-284),
  (VTBL_ENTRY)&(_ZTI9S21142C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21142C19D1Ev,_ZTv0_n20_N9S21142C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21142C19D0Ev,_ZTv0_n20_N9S21142C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21142C19D1Ev,_ZTv0_n12_N9S21142C19D1Ev)();
extern void ABISELECT(_ZThn408_N9S21142C19D1Ev,_ZThn288_N9S21142C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21142C19D0Ev,_ZTv0_n12_N9S21142C19D0Ev)();
extern void ABISELECT(_ZThn408_N9S21142C19D0Ev,_ZThn288_N9S21142C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C10__9S21142C19__8S21142C2[] = {
  ABISELECT(-408,-288),
  ABISELECT(-408,-288),
  (VTBL_ENTRY)&(_ZTI9S21142C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C19D1Ev,_ZTv0_n12_N9S21142C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C19D0Ev,_ZTv0_n12_N9S21142C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21142C19D1Ev,_ZTv0_n12_N9S21142C19D1Ev)();
extern void ABISELECT(_ZThn112_N9S21142C19D1Ev,_ZThn76_N9S21142C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21142C19D0Ev,_ZTv0_n12_N9S21142C19D0Ev)();
extern void ABISELECT(_ZThn112_N9S21142C19D0Ev,_ZThn76_N9S21142C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__9S21142C19__8S21142C2[] = {
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI9S21142C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C19D1Ev,_ZTv0_n12_N9S21142C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C19D0Ev,_ZTv0_n12_N9S21142C19D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21142C19D1Ev,_ZTv0_n16_N9S21142C19D1Ev)();
extern void ABISELECT(_ZThn104_N9S21142C19D1Ev,_ZThn72_N9S21142C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21142C19D0Ev,_ZTv0_n16_N9S21142C19D0Ev)();
extern void ABISELECT(_ZThn104_N9S21142C19D0Ev,_ZThn72_N9S21142C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21142C3__9S21142C19__8S21142C2[] = {
  ABISELECT(-104,-72),
  ABISELECT(8,4),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI9S21142C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C19D1Ev,_ZTv0_n16_N9S21142C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C19D0Ev,_ZTv0_n16_N9S21142C19D0Ev),
};
extern void _ZN8S21142C3D1Ev();
extern void _ZN8S21142C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21142C3__8S21142C2[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21142C3[0]),
  (VTBL_ENTRY)&_ZN8S21142C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21142C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21142C3D1Ev,_ZTv0_n12_N8S21142C3D1Ev)();
extern void ABISELECT(_ZThn8_N8S21142C3D1Ev,_ZThn4_N8S21142C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C3D0Ev,_ZTv0_n12_N8S21142C3D0Ev)();
extern void ABISELECT(_ZThn8_N8S21142C3D0Ev,_ZThn4_N8S21142C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__8S21142C3__8S21142C2[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21142C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C3D1Ev,_ZTv0_n12_N8S21142C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C3D0Ev,_ZTv0_n12_N8S21142C3D0Ev),
};
extern void _ZN8S21142C6D1Ev();
extern void _ZN8S21142C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21142C6__8S21142C2[] = {
  ABISELECT(-24,-16),
  ABISELECT(392,280),
  ABISELECT(352,248),
  ABISELECT(336,244),
  ABISELECT(312,228),
  ABISELECT(272,196),
  ABISELECT(176,128),
  ABISELECT(416,292),
  ABISELECT(-16,-12),
  ABISELECT(280,200),
  0,
  (VTBL_ENTRY)&(_ZTI8S21142C6[0]),
  (VTBL_ENTRY)&_ZN8S21142C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21142C6D0Ev,
};
extern void _ZN9S21142C16D1Ev();
extern void _ZN9S21142C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21142C168S21142C6__8S21142C2[] = {
  ABISELECT(416,292),
  ABISELECT(-16,-12),
  ABISELECT(280,200),
  0,
  (VTBL_ENTRY)&(_ZTI9S21142C16[0]),
  (VTBL_ENTRY)&_ZN9S21142C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21142C16D0Ev,
};
extern void _ZN8S21142C9D1Ev();
extern void _ZN8S21142C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21142C99S21142C168S21142C6__A2__8S21142C2[] = {
  ABISELECT(-16,-12),
  ABISELECT(280,200),
  0,
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&_ZN8S21142C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21142C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev)();
extern void ABISELECT(_ZThn280_N8S21142C9D1Ev,_ZThn200_N8S21142C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev)();
extern void ABISELECT(_ZThn280_N8S21142C9D0Ev,_ZThn200_N8S21142C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C10__8S21142C99S21142C168S21142C6__A2__8S21142C2[] = {
  ABISELECT(-280,-200),
  ABISELECT(-280,-200),
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__8S21142C99S21142C168S21142C6__A2__8S21142C2[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21142C16D1Ev,_ZTv0_n12_N9S21142C16D1Ev)();
extern void ABISELECT(_ZThn280_N9S21142C16D1Ev,_ZThn200_N9S21142C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21142C16D0Ev,_ZTv0_n12_N9S21142C16D0Ev)();
extern void ABISELECT(_ZThn280_N9S21142C16D0Ev,_ZThn200_N9S21142C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C10__9S21142C168S21142C6__8S21142C2[] = {
  ABISELECT(-280,-200),
  ABISELECT(-280,-200),
  (VTBL_ENTRY)&(_ZTI9S21142C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C16D1Ev,_ZTv0_n12_N9S21142C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C16D0Ev,_ZTv0_n12_N9S21142C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21142C16D1Ev,_ZTv0_n12_N9S21142C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21142C16D0Ev,_ZTv0_n12_N9S21142C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__9S21142C168S21142C6__8S21142C2[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S21142C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C16D1Ev,_ZTv0_n12_N9S21142C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C16D0Ev,_ZTv0_n12_N9S21142C16D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21142C16D1Ev,_ZTv0_n16_N9S21142C16D1Ev)();
extern void ABISELECT(_ZThn416_N9S21142C16D1Ev,_ZThn292_N9S21142C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21142C16D0Ev,_ZTv0_n16_N9S21142C16D0Ev)();
extern void ABISELECT(_ZThn416_N9S21142C16D0Ev,_ZThn292_N9S21142C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C17__9S21142C168S21142C6__8S21142C2[] = {
  ABISELECT(-416,-292),
  ABISELECT(-432,-304),
  ABISELECT(-416,-292),
  (VTBL_ENTRY)&(_ZTI9S21142C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C16D1Ev,_ZTv0_n16_N9S21142C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C16D0Ev,_ZTv0_n16_N9S21142C16D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N8S21142C6D1Ev,_ZTv0_n28_N8S21142C6D1Ev)();
extern void ABISELECT(_ZThn176_N8S21142C6D1Ev,_ZThn128_N8S21142C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21142C6D0Ev,_ZTv0_n28_N8S21142C6D0Ev)();
extern void ABISELECT(_ZThn176_N8S21142C6D0Ev,_ZThn128_N8S21142C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21142C7__8S21142C6__8S21142C2[] = {
  ABISELECT(-176,-128),
  ABISELECT(136,100),
  ABISELECT(-192,-140),
  ABISELECT(104,72),
  ABISELECT(96,68),
  ABISELECT(-176,-128),
  (VTBL_ENTRY)&(_ZTI8S21142C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21142C6D1Ev,_ZTv0_n28_N8S21142C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21142C6D0Ev,_ZTv0_n28_N8S21142C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21142C6D1Ev,_ZTv0_n20_N8S21142C6D1Ev)();
extern void ABISELECT(_ZThn272_N8S21142C6D1Ev,_ZThn196_N8S21142C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21142C6D0Ev,_ZTv0_n20_N8S21142C6D0Ev)();
extern void ABISELECT(_ZThn272_N8S21142C6D0Ev,_ZThn196_N8S21142C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21142C9__8S21142C6__8S21142C2[] = {
  ABISELECT(-272,-196),
  ABISELECT(-288,-208),
  ABISELECT(8,4),
  ABISELECT(-272,-196),
  (VTBL_ENTRY)&(_ZTI8S21142C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21142C6D1Ev,_ZTv0_n20_N8S21142C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21142C6D0Ev,_ZTv0_n20_N8S21142C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21142C6D1Ev,_ZTv0_n12_N8S21142C6D1Ev)();
extern void ABISELECT(_ZThn280_N8S21142C6D1Ev,_ZThn200_N8S21142C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C6D0Ev,_ZTv0_n12_N8S21142C6D0Ev)();
extern void ABISELECT(_ZThn280_N8S21142C6D0Ev,_ZThn200_N8S21142C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C10__8S21142C6__8S21142C2[] = {
  ABISELECT(-280,-200),
  ABISELECT(-280,-200),
  (VTBL_ENTRY)&(_ZTI8S21142C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C6D1Ev,_ZTv0_n12_N8S21142C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C6D0Ev,_ZTv0_n12_N8S21142C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21142C6D1Ev,_ZTv0_n12_N8S21142C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21142C6D0Ev,_ZTv0_n12_N8S21142C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__8S21142C6__8S21142C2[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S21142C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C6D1Ev,_ZTv0_n12_N8S21142C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C6D0Ev,_ZTv0_n12_N8S21142C6D0Ev),
};
extern void ABISELECT(_ZTvn16_n56_N8S21142C6D1Ev,_ZTvn12_n28_N8S21142C6D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S21142C6D0Ev,_ZTvn12_n28_N8S21142C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt8S21142C88S21142C7__8S21142C6__8S21142C2[] = {
  ABISELECT(-192,-140),
  (VTBL_ENTRY)&(_ZTI8S21142C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S21142C6D1Ev,_ZTvn12_n28_N8S21142C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S21142C6D0Ev,_ZTvn12_n28_N8S21142C6D0Ev),
};
extern void ABISELECT(_ZTvn40_n56_N8S21142C6D1Ev,_ZTvn28_n28_N8S21142C6D1Ev)();
extern void ABISELECT(_ZTvn40_n56_N8S21142C6D0Ev,_ZTvn28_n28_N8S21142C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21142C108S21142C88S21142C7__A1__8S21142C6__8S21142C2[] = {
  ABISELECT(-216,-156),
  (VTBL_ENTRY)&(_ZTI8S21142C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n56_N8S21142C6D1Ev,_ZTvn28_n28_N8S21142C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n56_N8S21142C6D0Ev,_ZTvn28_n28_N8S21142C6D0Ev),
};
extern void ABISELECT(_ZTvn88_n56_N8S21142C6D1Ev,_ZTvn64_n28_N8S21142C6D1Ev)();
extern void ABISELECT(_ZTvn88_n56_N8S21142C6D0Ev,_ZTvn64_n28_N8S21142C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21142C98S21142C7__A1__8S21142C6__8S21142C2[] = {
  ABISELECT(-280,-204),
  ABISELECT(16,8),
  ABISELECT(-264,-192),
  (VTBL_ENTRY)&(_ZTI8S21142C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn88_n56_N8S21142C6D1Ev,_ZTvn64_n28_N8S21142C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn88_n56_N8S21142C6D0Ev,_ZTvn64_n28_N8S21142C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21142C6D1Ev,_ZTv0_n12_N8S21142C6D1Ev)();
extern void ABISELECT(_ZThn312_N8S21142C6D1Ev,_ZThn228_N8S21142C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C6D0Ev,_ZTv0_n12_N8S21142C6D0Ev)();
extern void ABISELECT(_ZThn312_N8S21142C6D0Ev,_ZThn228_N8S21142C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt__A1__8S21142C6__8S21142C2[] = {
  ABISELECT(-312,-228),
  ABISELECT(-312,-228),
  (VTBL_ENTRY)&(_ZTI8S21142C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C6D1Ev,_ZTv0_n12_N8S21142C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C6D0Ev,_ZTv0_n12_N8S21142C6D0Ev),
};
extern void ABISELECT(_ZTv0_n80_N8S21142C6D1Ev,_ZTv0_n40_N8S21142C6D1Ev)();
extern void ABISELECT(_ZThn336_N8S21142C6D1Ev,_ZThn244_N8S21142C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21142C6D0Ev,_ZTv0_n40_N8S21142C6D0Ev)();
extern void ABISELECT(_ZThn336_N8S21142C6D0Ev,_ZThn244_N8S21142C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C12__8S21142C6__8S21142C2[] = {
  ABISELECT(-336,-244),
  ABISELECT(-360,-260),
  ABISELECT(-24,-16),
  ABISELECT(56,36),
  ABISELECT(16,4),
  ABISELECT(-56,-44),
  ABISELECT(-64,-48),
  ABISELECT(-352,-256),
  ABISELECT(-336,-244),
  (VTBL_ENTRY)&(_ZTI8S21142C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21142C6D1Ev,_ZTv0_n40_N8S21142C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21142C6D0Ev,_ZTv0_n40_N8S21142C6D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S21142C6D1Ev,_ZTv0_n36_N8S21142C6D1Ev)();
extern void ABISELECT(_ZThn352_N8S21142C6D1Ev,_ZThn248_N8S21142C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S21142C6D0Ev,_ZTv0_n36_N8S21142C6D0Ev)();
extern void ABISELECT(_ZThn352_N8S21142C6D0Ev,_ZThn248_N8S21142C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C13__8S21142C6__8S21142C2[] = {
  ABISELECT(-352,-248),
  ABISELECT(-376,-264),
  ABISELECT(-368,-260),
  ABISELECT(-72,-48),
  ABISELECT(-80,-52),
  ABISELECT(-40,-20),
  ABISELECT(40,32),
  ABISELECT(-352,-248),
  (VTBL_ENTRY)&(_ZTI8S21142C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21142C6D1Ev,_ZTv0_n36_N8S21142C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21142C6D0Ev,_ZTv0_n36_N8S21142C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21142C6D1Ev,_ZTv0_n16_N8S21142C6D1Ev)();
extern void ABISELECT(_ZThn392_N8S21142C6D1Ev,_ZThn280_N8S21142C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21142C6D0Ev,_ZTv0_n16_N8S21142C6D0Ev)();
extern void ABISELECT(_ZThn392_N8S21142C6D0Ev,_ZThn280_N8S21142C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C15__8S21142C6__8S21142C2[] = {
  ABISELECT(-392,-280),
  ABISELECT(-80,-52),
  ABISELECT(-392,-280),
  (VTBL_ENTRY)&(_ZTI8S21142C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21142C6D1Ev,_ZTv0_n16_N8S21142C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21142C6D0Ev,_ZTv0_n16_N8S21142C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21142C6D1Ev,_ZTv0_n16_N8S21142C6D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21142C6D0Ev,_ZTv0_n16_N8S21142C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21142C3__A1__8S21142C6__8S21142C2[] = {
  ABISELECT(24,16),
  ABISELECT(8,4),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S21142C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21142C6D1Ev,_ZTv0_n16_N8S21142C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21142C6D0Ev,_ZTv0_n16_N8S21142C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21142C6D1Ev,_ZTv0_n16_N8S21142C6D1Ev)();
extern void ABISELECT(_ZThn416_N8S21142C6D1Ev,_ZThn292_N8S21142C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21142C6D0Ev,_ZTv0_n16_N8S21142C6D0Ev)();
extern void ABISELECT(_ZThn416_N8S21142C6D0Ev,_ZThn292_N8S21142C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C17__8S21142C6__8S21142C2[] = {
  ABISELECT(-416,-292),
  ABISELECT(-432,-304),
  ABISELECT(-416,-292),
  (VTBL_ENTRY)&(_ZTI8S21142C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21142C6D1Ev,_ZTv0_n16_N8S21142C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21142C6D0Ev,_ZTv0_n16_N8S21142C6D0Ev),
};
extern void _ZN8S21142C7D1Ev();
extern void _ZN8S21142C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21142C7__8S21142C2[] = {
  ABISELECT(136,100),
  ABISELECT(-192,-140),
  ABISELECT(104,72),
  ABISELECT(96,68),
  0,
  (VTBL_ENTRY)&(_ZTI8S21142C7[0]),
  (VTBL_ENTRY)&_ZN8S21142C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21142C7D0Ev,
};
extern void _ZN8S21142C8D1Ev();
extern void _ZN8S21142C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21142C88S21142C7__8S21142C2[] = {
  ABISELECT(-192,-140),
  ABISELECT(104,72),
  ABISELECT(96,68),
  0,
  (VTBL_ENTRY)&(_ZTI8S21142C8[0]),
  (VTBL_ENTRY)&_ZN8S21142C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21142C8D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S21142C8D1Ev,_ZTv0_n20_N8S21142C8D1Ev)();
extern void ABISELECT(_ZThn96_N8S21142C8D1Ev,_ZThn68_N8S21142C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21142C8D0Ev,_ZTv0_n20_N8S21142C8D0Ev)();
extern void ABISELECT(_ZThn96_N8S21142C8D0Ev,_ZThn68_N8S21142C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21142C9__8S21142C88S21142C7__8S21142C2[] = {
  ABISELECT(-96,-68),
  ABISELECT(-288,-208),
  ABISELECT(8,4),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI8S21142C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21142C8D1Ev,_ZTv0_n20_N8S21142C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21142C8D0Ev,_ZTv0_n20_N8S21142C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21142C8D1Ev,_ZTv0_n12_N8S21142C8D1Ev)();
extern void ABISELECT(_ZThn104_N8S21142C8D1Ev,_ZThn72_N8S21142C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C8D0Ev,_ZTv0_n12_N8S21142C8D0Ev)();
extern void ABISELECT(_ZThn104_N8S21142C8D0Ev,_ZThn72_N8S21142C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C10__8S21142C88S21142C7__8S21142C2[] = {
  ABISELECT(-104,-72),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI8S21142C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C8D1Ev,_ZTv0_n12_N8S21142C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C8D0Ev,_ZTv0_n12_N8S21142C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21142C8D1Ev,_ZTv0_n12_N8S21142C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21142C8D0Ev,_ZTv0_n12_N8S21142C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__8S21142C88S21142C7__8S21142C2[] = {
  ABISELECT(192,140),
  ABISELECT(192,140),
  (VTBL_ENTRY)&(_ZTI8S21142C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C8D1Ev,_ZTv0_n12_N8S21142C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C8D0Ev,_ZTv0_n12_N8S21142C8D0Ev),
};
extern void _ZN8S21142C9D1Ev();
extern void _ZN8S21142C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21142C98S21142C7__A1__8S21142C2[] = {
  ABISELECT(-280,-204),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&_ZN8S21142C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21142C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S21142C9D1Ev,_ZThn8_N8S21142C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev)();
extern void ABISELECT(_ZThn16_N8S21142C9D0Ev,_ZThn8_N8S21142C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C10__8S21142C98S21142C7__A1__8S21142C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__8S21142C98S21142C7__A1__8S21142C2[] = {
  ABISELECT(280,204),
  ABISELECT(280,204),
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21142C7D1Ev,_ZTv0_n20_N8S21142C7D1Ev)();
extern void ABISELECT(_ZThn96_N8S21142C7D1Ev,_ZThn68_N8S21142C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21142C7D0Ev,_ZTv0_n20_N8S21142C7D0Ev)();
extern void ABISELECT(_ZThn96_N8S21142C7D0Ev,_ZThn68_N8S21142C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21142C9__8S21142C7__8S21142C2[] = {
  ABISELECT(-96,-68),
  ABISELECT(-288,-208),
  ABISELECT(8,4),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI8S21142C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21142C7D1Ev,_ZTv0_n20_N8S21142C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21142C7D0Ev,_ZTv0_n20_N8S21142C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21142C7D1Ev,_ZTv0_n12_N8S21142C7D1Ev)();
extern void ABISELECT(_ZThn104_N8S21142C7D1Ev,_ZThn72_N8S21142C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C7D0Ev,_ZTv0_n12_N8S21142C7D0Ev)();
extern void ABISELECT(_ZThn104_N8S21142C7D0Ev,_ZThn72_N8S21142C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C10__8S21142C7__8S21142C2[] = {
  ABISELECT(-104,-72),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI8S21142C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C7D1Ev,_ZTv0_n12_N8S21142C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C7D0Ev,_ZTv0_n12_N8S21142C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21142C7D1Ev,_ZTv0_n12_N8S21142C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21142C7D0Ev,_ZTv0_n12_N8S21142C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__8S21142C7__8S21142C2[] = {
  ABISELECT(192,140),
  ABISELECT(192,140),
  (VTBL_ENTRY)&(_ZTI8S21142C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C7D1Ev,_ZTv0_n12_N8S21142C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C7D0Ev,_ZTv0_n12_N8S21142C7D0Ev),
};
extern void ABISELECT(_ZThn88_N8S21142C7D1Ev,_ZThn64_N8S21142C7D1Ev)();
extern void ABISELECT(_ZThn88_N8S21142C7D0Ev,_ZThn64_N8S21142C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21142C9__A__8S21142C7__8S21142C2[] = {
  ABISELECT(-280,-204),
  ABISELECT(16,8),
  ABISELECT(-88,-64),
  (VTBL_ENTRY)&(_ZTI8S21142C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn88_N8S21142C7D1Ev,_ZThn64_N8S21142C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn88_N8S21142C7D0Ev,_ZThn64_N8S21142C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21142C7D1Ev,_ZTv0_n12_N8S21142C7D1Ev)();
extern void ABISELECT(_ZThn136_N8S21142C7D1Ev,_ZThn100_N8S21142C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C7D0Ev,_ZTv0_n12_N8S21142C7D0Ev)();
extern void ABISELECT(_ZThn136_N8S21142C7D0Ev,_ZThn100_N8S21142C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt__A1__8S21142C7__8S21142C2[] = {
  ABISELECT(-136,-100),
  ABISELECT(-136,-100),
  (VTBL_ENTRY)&(_ZTI8S21142C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C7D1Ev,_ZTv0_n12_N8S21142C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C7D0Ev,_ZTv0_n12_N8S21142C7D0Ev),
};
extern void _ZN8S21142C9D1Ev();
extern void _ZN8S21142C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21142C9__8S21142C2[] = {
  ABISELECT(-288,-208),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&_ZN8S21142C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21142C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev)();
extern void ABISELECT(_ZThn8_N8S21142C9D1Ev,_ZThn4_N8S21142C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev)();
extern void ABISELECT(_ZThn8_N8S21142C9D0Ev,_ZThn4_N8S21142C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C10__8S21142C9__8S21142C2[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__8S21142C9__8S21142C2[] = {
  ABISELECT(288,208),
  ABISELECT(288,208),
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev),
};
extern void _ZN9S21142C12D1Ev();
extern void _ZN9S21142C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21142C12__8S21142C2[] = {
  ABISELECT(-360,-260),
  ABISELECT(-24,-16),
  ABISELECT(56,36),
  ABISELECT(16,4),
  ABISELECT(-56,-44),
  ABISELECT(-64,-48),
  ABISELECT(-352,-256),
  0,
  (VTBL_ENTRY)&(_ZTI9S21142C12[0]),
  (VTBL_ENTRY)&_ZN9S21142C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21142C12D0Ev,
};
extern void _ZN8S21142C3D1Ev();
extern void _ZN8S21142C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21142C39S21142C12__A1__8S21142C2[] = {
  ABISELECT(-352,-256),
  0,
  (VTBL_ENTRY)&(_ZTI8S21142C3[0]),
  (VTBL_ENTRY)&_ZN8S21142C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21142C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21142C3D1Ev,_ZTv0_n12_N8S21142C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21142C3D0Ev,_ZTv0_n12_N8S21142C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__8S21142C39S21142C12__A1__8S21142C2[] = {
  ABISELECT(352,256),
  ABISELECT(352,256),
  (VTBL_ENTRY)&(_ZTI8S21142C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C3D1Ev,_ZTv0_n12_N8S21142C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C3D0Ev,_ZTv0_n12_N8S21142C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21142C12D1Ev,_ZTv0_n20_N9S21142C12D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21142C12D0Ev,_ZTv0_n20_N9S21142C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21142C9__9S21142C12__8S21142C2[] = {
  ABISELECT(64,48),
  ABISELECT(-288,-208),
  ABISELECT(8,4),
  ABISELECT(64,48),
  (VTBL_ENTRY)&(_ZTI9S21142C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21142C12D1Ev,_ZTv0_n20_N9S21142C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21142C12D0Ev,_ZTv0_n20_N9S21142C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21142C12D1Ev,_ZTv0_n12_N9S21142C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21142C12D0Ev,_ZTv0_n12_N9S21142C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21142C10__9S21142C12__8S21142C2[] = {
  ABISELECT(56,44),
  ABISELECT(56,44),
  (VTBL_ENTRY)&(_ZTI9S21142C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C12D1Ev,_ZTv0_n12_N9S21142C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C12D0Ev,_ZTv0_n12_N9S21142C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21142C12D1Ev,_ZTv0_n12_N9S21142C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21142C12D0Ev,_ZTv0_n12_N9S21142C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__9S21142C12__8S21142C2[] = {
  ABISELECT(352,256),
  ABISELECT(352,256),
  (VTBL_ENTRY)&(_ZTI9S21142C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C12D1Ev,_ZTv0_n12_N9S21142C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C12D0Ev,_ZTv0_n12_N9S21142C12D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N9S21142C12D1Ev,_ZTv0_n36_N9S21142C12D1Ev)();
extern void ABISELECT(_ZThn16_N9S21142C12D1Ev,_ZThn4_N9S21142C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S21142C12D0Ev,_ZTv0_n36_N9S21142C12D0Ev)();
extern void ABISELECT(_ZThn16_N9S21142C12D0Ev,_ZThn4_N9S21142C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C13__9S21142C12__8S21142C2[] = {
  ABISELECT(-16,-4),
  ABISELECT(-376,-264),
  ABISELECT(-368,-260),
  ABISELECT(-72,-48),
  ABISELECT(-80,-52),
  ABISELECT(-40,-20),
  ABISELECT(40,32),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI9S21142C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21142C12D1Ev,_ZTv0_n36_N9S21142C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21142C12D0Ev,_ZTv0_n36_N9S21142C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21142C12D1Ev,_ZTv0_n16_N9S21142C12D1Ev)();
extern void ABISELECT(_ZThn56_N9S21142C12D1Ev,_ZThn36_N9S21142C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21142C12D0Ev,_ZTv0_n16_N9S21142C12D0Ev)();
extern void ABISELECT(_ZThn56_N9S21142C12D0Ev,_ZThn36_N9S21142C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C15__9S21142C12__8S21142C2[] = {
  ABISELECT(-56,-36),
  ABISELECT(-80,-52),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI9S21142C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C12D1Ev,_ZTv0_n16_N9S21142C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C12D0Ev,_ZTv0_n16_N9S21142C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21142C12D1Ev,_ZTv0_n12_N9S21142C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21142C12D0Ev,_ZTv0_n12_N9S21142C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt__9S21142C12__8S21142C2[] = {
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI9S21142C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C12D1Ev,_ZTv0_n12_N9S21142C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C12D0Ev,_ZTv0_n12_N9S21142C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21142C12D1Ev,_ZTv0_n16_N9S21142C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21142C12D0Ev,_ZTv0_n16_N9S21142C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21142C3__A1__9S21142C12__8S21142C2[] = {
  ABISELECT(360,260),
  ABISELECT(8,4),
  ABISELECT(360,260),
  (VTBL_ENTRY)&(_ZTI9S21142C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C12D1Ev,_ZTv0_n16_N9S21142C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C12D0Ev,_ZTv0_n16_N9S21142C12D0Ev),
};
extern void _ZN9S21142C13D1Ev();
extern void _ZN9S21142C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21142C13__8S21142C2[] = {
  ABISELECT(-376,-264),
  ABISELECT(-368,-260),
  ABISELECT(-72,-48),
  ABISELECT(-80,-52),
  ABISELECT(-40,-20),
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&_ZN9S21142C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21142C13D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S21142C13D1Ev,_ZTv0_n16_N9S21142C13D1Ev)();
extern void ABISELECT(_ZThn40_N9S21142C13D1Ev,_ZThn32_N9S21142C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21142C13D0Ev,_ZTv0_n16_N9S21142C13D0Ev)();
extern void ABISELECT(_ZThn40_N9S21142C13D0Ev,_ZThn32_N9S21142C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C15__9S21142C13__8S21142C2[] = {
  ABISELECT(-40,-32),
  ABISELECT(-80,-52),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C13D1Ev,_ZTv0_n16_N9S21142C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C13D0Ev,_ZTv0_n16_N9S21142C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt__9S21142C13__8S21142C2[] = {
  ABISELECT(40,20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21142C13D1Ev,_ZTv0_n20_N9S21142C13D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21142C13D0Ev,_ZTv0_n20_N9S21142C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21142C9__9S21142C13__8S21142C2[] = {
  ABISELECT(80,52),
  ABISELECT(-288,-208),
  ABISELECT(8,4),
  ABISELECT(80,52),
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21142C13D1Ev,_ZTv0_n20_N9S21142C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21142C13D0Ev,_ZTv0_n20_N9S21142C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21142C10__9S21142C13__8S21142C2[] = {
  ABISELECT(72,48),
  ABISELECT(72,48),
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__9S21142C13__8S21142C2[] = {
  ABISELECT(368,260),
  ABISELECT(368,260),
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21142C13D1Ev,_ZTv0_n16_N9S21142C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21142C13D0Ev,_ZTv0_n16_N9S21142C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21142C3__9S21142C13__8S21142C2[] = {
  ABISELECT(376,264),
  ABISELECT(8,4),
  ABISELECT(376,264),
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C13D1Ev,_ZTv0_n16_N9S21142C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C13D0Ev,_ZTv0_n16_N9S21142C13D0Ev),
};
extern void _ZN9S21142C15D1Ev();
extern void _ZN9S21142C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21142C15__8S21142C2[] = {
  ABISELECT(-80,-52),
  0,
  (VTBL_ENTRY)&(_ZTI9S21142C15[0]),
  (VTBL_ENTRY)&_ZN9S21142C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21142C15D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21142C15D1Ev,_ZTv0_n12_N9S21142C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21142C15D0Ev,_ZTv0_n12_N9S21142C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt__9S21142C15__8S21142C2[] = {
  ABISELECT(80,52),
  ABISELECT(80,52),
  (VTBL_ENTRY)&(_ZTI9S21142C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C15D1Ev,_ZTv0_n12_N9S21142C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C15D0Ev,_ZTv0_n12_N9S21142C15D0Ev),
};
extern void _ZN9S21142C17D1Ev();
extern void _ZN9S21142C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21142C17__8S21142C2[] = {
  ABISELECT(-432,-304),
  0,
  (VTBL_ENTRY)&(_ZTI9S21142C17[0]),
  (VTBL_ENTRY)&_ZN9S21142C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21142C17D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21142C17D1Ev,_ZTv0_n12_N9S21142C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21142C17D0Ev,_ZTv0_n12_N9S21142C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__9S21142C17__8S21142C2[] = {
  ABISELECT(432,304),
  ABISELECT(432,304),
  (VTBL_ENTRY)&(_ZTI9S21142C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C17D1Ev,_ZTv0_n12_N9S21142C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C17D0Ev,_ZTv0_n12_N9S21142C17D0Ev),
};
extern void _ZN8S21142C8D1Ev();
extern void _ZN8S21142C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21142C8__A1__8S21142C2[] = {
  ABISELECT(-448,-316),
  ABISELECT(-152,-104),
  ABISELECT(-160,-108),
  0,
  (VTBL_ENTRY)&(_ZTI8S21142C8[0]),
  (VTBL_ENTRY)&_ZN8S21142C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21142C8D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S21142C8D1Ev,_ZTv0_n20_N8S21142C8D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21142C8D0Ev,_ZTv0_n20_N8S21142C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21142C9__8S21142C8__A1__8S21142C2[] = {
  ABISELECT(160,108),
  ABISELECT(-288,-208),
  ABISELECT(8,4),
  ABISELECT(160,108),
  (VTBL_ENTRY)&(_ZTI8S21142C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21142C8D1Ev,_ZTv0_n20_N8S21142C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21142C8D0Ev,_ZTv0_n20_N8S21142C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21142C8D1Ev,_ZTv0_n12_N8S21142C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21142C8D0Ev,_ZTv0_n12_N8S21142C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21142C10__8S21142C8__A1__8S21142C2[] = {
  ABISELECT(152,104),
  ABISELECT(152,104),
  (VTBL_ENTRY)&(_ZTI8S21142C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C8D1Ev,_ZTv0_n12_N8S21142C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C8D0Ev,_ZTv0_n12_N8S21142C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21142C8D1Ev,_ZTv0_n12_N8S21142C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21142C8D0Ev,_ZTv0_n12_N8S21142C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__8S21142C8__A1__8S21142C2[] = {
  ABISELECT(448,316),
  ABISELECT(448,316),
  (VTBL_ENTRY)&(_ZTI8S21142C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C8D1Ev,_ZTv0_n12_N8S21142C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C8D0Ev,_ZTv0_n12_N8S21142C8D0Ev),
};
static  VTT_ENTRY vtt_S21142C2[] = {
  {&(_ZTV8S21142C2[14]),  14,133},
  {&(_tg__ZTV9S21142C19__8S21142C2[8]),  8,10},
  {&(_tg__ZTV9S21142C139S21142C19__A1__8S21142C2[8]),  8,10},
  {&(_tg__ZTV9S21142C15__9S21142C139S21142C19__A1__8S21142C2[4]),  4,6},
  {&(_tg__ZTV10S3589C9_nt__9S21142C139S21142C19__A1__8S21142C2[3]),  3,5},
  {&(_tg__ZTV8S21142C9__9S21142C139S21142C19__A1__8S21142C2[5]),  5,7},
  {&(_tg__ZTV9S21142C10__9S21142C139S21142C19__A1__8S21142C2[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__9S21142C139S21142C19__A1__8S21142C2[3]),  3,5},
  {&(_tg__ZTV8S21142C3__9S21142C139S21142C19__A1__8S21142C2[4]),  4,6},
  {&(_tg__ZTV9S21142C15__9S21142C19__8S21142C2[4]),  4,6},
  {&(_tg__ZTV10S3589C9_nt__9S21142C19__8S21142C2[3]),  3,5},
  {&(_tg__ZTV8S21142C9__9S21142C19__8S21142C2[5]),  5,7},
  {&(_tg__ZTV9S21142C10__9S21142C19__8S21142C2[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__9S21142C19__8S21142C2[3]),  3,5},
  {&(_tg__ZTV8S21142C3__9S21142C19__8S21142C2[4]),  4,6},
  {&(_ZTV8S21142C2[20]),  20,133},
  {&(_ZTV8S21142C2[25]),  25,133},
  {&(_ZTV8S21142C2[40]),  40,133},
  {&(_ZTV8S21142C2[49]),  49,133},
  {&(_ZTV8S21142C2[70]),  70,133},
  {&(_ZTV8S21142C2[75]),  75,133},
  {&(_ZTV8S21142C2[53]),  53,133},
  {&(_ZTV8S21142C2[57]),  57,133},
  {&(_ZTV8S21142C2[63]),  63,133},
  {&(_ZTV8S21142C2[80]),  80,133},
  {&(_ZTV8S21142C2[92]),  92,133},
  {&(_ZTV8S21142C2[103]),  103,133},
  {&(_ZTV8S21142C2[109]),  109,133},
  {&(_ZTV8S21142C2[115]),  115,133},
  {&(_ZTV8S21142C2[123]),  123,133},
  {&(_ZTV8S21142C2[127]),  127,133},
  {&(_ZTV8S21142C2[131]),  131,133},
  {&(_tg__ZTV8S21142C3__8S21142C2[3]),  3,5},
  {&(_tg__ZTV7S3589C3__8S21142C3__8S21142C2[3]),  3,5},
  {&(_tg__ZTV8S21142C6__8S21142C2[12]),  12,14},
  {&(_tg__ZTV9S21142C168S21142C6__8S21142C2[5]),  5,7},
  {&(_tg__ZTV8S21142C99S21142C168S21142C6__A2__8S21142C2[4]),  4,6},
  {&(_tg__ZTV9S21142C10__8S21142C99S21142C168S21142C6__A2__8S21142C2[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__8S21142C99S21142C168S21142C6__A2__8S21142C2[3]),  3,5},
  {&(_tg__ZTV9S21142C10__9S21142C168S21142C6__8S21142C2[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__9S21142C168S21142C6__8S21142C2[3]),  3,5},
  {&(_tg__ZTV9S21142C17__9S21142C168S21142C6__8S21142C2[4]),  4,6},
  {&(_tg__ZTV8S21142C7__8S21142C6__8S21142C2[7]),  7,9},
  {&(_tg__ZTV8S21142C9__8S21142C6__8S21142C2[5]),  5,7},
  {&(_tg__ZTV9S21142C10__8S21142C6__8S21142C2[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__8S21142C6__8S21142C2[3]),  3,5},
  {&(_tg__ZTV10S3589C9_nt8S21142C88S21142C7__8S21142C6__8S21142C2[2]),  2,4},
  {&(_tg__ZTV9S21142C108S21142C88S21142C7__A1__8S21142C6__8S21142C2[2]),  2,4},
  {&(_tg__ZTV8S21142C98S21142C7__A1__8S21142C6__8S21142C2[4]),  4,6},
  {&(_tg__ZTV10S3589C9_nt__A1__8S21142C6__8S21142C2[3]),  3,5},
  {&(_tg__ZTV9S21142C12__8S21142C6__8S21142C2[10]),  10,12},
  {&(_tg__ZTV9S21142C13__8S21142C6__8S21142C2[9]),  9,11},
  {&(_tg__ZTV9S21142C15__8S21142C6__8S21142C2[4]),  4,6},
  {&(_tg__ZTV8S21142C3__A1__8S21142C6__8S21142C2[4]),  4,6},
  {&(_tg__ZTV9S21142C17__8S21142C6__8S21142C2[4]),  4,6},
  {&(_tg__ZTV8S21142C7__8S21142C2[6]),  6,8},
  {&(_tg__ZTV8S21142C88S21142C7__8S21142C2[5]),  5,7},
  {&(_tg__ZTV8S21142C9__8S21142C88S21142C7__8S21142C2[5]),  5,7},
  {&(_tg__ZTV9S21142C10__8S21142C88S21142C7__8S21142C2[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__8S21142C88S21142C7__8S21142C2[3]),  3,5},
  {&(_tg__ZTV8S21142C98S21142C7__A1__8S21142C2[4]),  4,6},
  {&(_tg__ZTV9S21142C10__8S21142C98S21142C7__A1__8S21142C2[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__8S21142C98S21142C7__A1__8S21142C2[3]),  3,5},
  {&(_tg__ZTV8S21142C9__8S21142C7__8S21142C2[5]),  5,7},
  {&(_tg__ZTV9S21142C10__8S21142C7__8S21142C2[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__8S21142C7__8S21142C2[3]),  3,5},
  {&(_tg__ZTV8S21142C9__A__8S21142C7__8S21142C2[4]),  4,6},
  {&(_tg__ZTV10S3589C9_nt__A1__8S21142C7__8S21142C2[3]),  3,5},
  {&(_tg__ZTV8S21142C9__8S21142C2[4]),  4,6},
  {&(_tg__ZTV9S21142C10__8S21142C9__8S21142C2[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__8S21142C9__8S21142C2[3]),  3,5},
  {&(_tg__ZTV9S21142C12__8S21142C2[9]),  9,11},
  {&(_tg__ZTV8S21142C39S21142C12__A1__8S21142C2[3]),  3,5},
  {&(_tg__ZTV7S3589C3__8S21142C39S21142C12__A1__8S21142C2[3]),  3,5},
  {&(_tg__ZTV8S21142C9__9S21142C12__8S21142C2[5]),  5,7},
  {&(_tg__ZTV9S21142C10__9S21142C12__8S21142C2[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__9S21142C12__8S21142C2[3]),  3,5},
  {&(_tg__ZTV9S21142C13__9S21142C12__8S21142C2[9]),  9,11},
  {&(_tg__ZTV9S21142C15__9S21142C12__8S21142C2[4]),  4,6},
  {&(_tg__ZTV10S3589C9_nt__9S21142C12__8S21142C2[3]),  3,5},
  {&(_tg__ZTV8S21142C3__A1__9S21142C12__8S21142C2[4]),  4,6},
  {&(_tg__ZTV9S21142C13__8S21142C2[8]),  8,10},
  {&(_tg__ZTV9S21142C15__9S21142C13__8S21142C2[4]),  4,6},
  {&(_tg__ZTV10S3589C9_nt__9S21142C13__8S21142C2[3]),  3,5},
  {&(_tg__ZTV8S21142C9__9S21142C13__8S21142C2[5]),  5,7},
  {&(_tg__ZTV9S21142C10__9S21142C13__8S21142C2[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__9S21142C13__8S21142C2[3]),  3,5},
  {&(_tg__ZTV8S21142C3__9S21142C13__8S21142C2[4]),  4,6},
  {&(_tg__ZTV9S21142C15__8S21142C2[3]),  3,5},
  {&(_tg__ZTV10S3589C9_nt__9S21142C15__8S21142C2[3]),  3,5},
  {&(_tg__ZTV9S21142C17__8S21142C2[3]),  3,5},
  {&(_tg__ZTV7S3589C3__9S21142C17__8S21142C2[3]),  3,5},
  {&(_tg__ZTV8S21142C8__A1__8S21142C2[5]),  5,7},
  {&(_tg__ZTV8S21142C9__8S21142C8__A1__8S21142C2[5]),  5,7},
  {&(_tg__ZTV9S21142C10__8S21142C8__A1__8S21142C2[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__8S21142C8__A1__8S21142C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21142C2[];
extern  VTBL_ENTRY _ZTV8S21142C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21142C2[];
static VTBL_ENTRY alt_thunk_names65[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21142C12D0Ev,_ZTv0_n16_N9S21142C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21142C12D0Ev,_ZThn36_N9S21142C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21142C12D1Ev,_ZTv0_n16_N9S21142C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21142C12D1Ev,_ZThn36_N9S21142C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21142C12D0Ev,_ZTv0_n36_N9S21142C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21142C12D0Ev,_ZThn4_N9S21142C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21142C12D1Ev,_ZTv0_n36_N9S21142C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21142C12D1Ev,_ZThn4_N9S21142C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C7D0Ev,_ZTv0_n12_N8S21142C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21142C7D0Ev,_ZThn100_N8S21142C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S21142C7D0Ev,_ZThn72_N8S21142C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C7D1Ev,_ZTv0_n12_N8S21142C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21142C7D1Ev,_ZThn100_N8S21142C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S21142C7D1Ev,_ZThn72_N8S21142C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21142C7D0Ev,_ZTv0_n20_N8S21142C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21142C7D0Ev,_ZThn68_N8S21142C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21142C7D1Ev,_ZTv0_n20_N8S21142C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21142C7D1Ev,_ZThn68_N8S21142C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C8D0Ev,_ZTv0_n12_N8S21142C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S21142C8D0Ev,_ZThn72_N8S21142C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C8D1Ev,_ZTv0_n12_N8S21142C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S21142C8D1Ev,_ZThn72_N8S21142C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21142C8D0Ev,_ZTv0_n20_N8S21142C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21142C8D0Ev,_ZThn68_N8S21142C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21142C8D1Ev,_ZTv0_n20_N8S21142C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21142C8D1Ev,_ZThn68_N8S21142C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21142C6D0Ev,_ZTv0_n16_N8S21142C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S21142C6D0Ev,_ZThn292_N8S21142C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn392_N8S21142C6D0Ev,_ZThn280_N8S21142C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21142C6D1Ev,_ZTv0_n16_N8S21142C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S21142C6D1Ev,_ZThn292_N8S21142C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn392_N8S21142C6D1Ev,_ZThn280_N8S21142C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21142C6D0Ev,_ZTv0_n36_N8S21142C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S21142C6D0Ev,_ZThn248_N8S21142C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21142C6D1Ev,_ZTv0_n36_N8S21142C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S21142C6D1Ev,_ZThn248_N8S21142C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21142C6D0Ev,_ZTv0_n40_N8S21142C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S21142C6D0Ev,_ZThn244_N8S21142C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21142C6D1Ev,_ZTv0_n40_N8S21142C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S21142C6D1Ev,_ZThn244_N8S21142C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C6D0Ev,_ZTv0_n12_N8S21142C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S21142C6D0Ev,_ZThn228_N8S21142C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S21142C6D0Ev,_ZThn200_N8S21142C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C6D1Ev,_ZTv0_n12_N8S21142C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S21142C6D1Ev,_ZThn228_N8S21142C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S21142C6D1Ev,_ZThn200_N8S21142C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21142C6D0Ev,_ZTv0_n20_N8S21142C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21142C6D0Ev,_ZThn196_N8S21142C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21142C6D1Ev,_ZTv0_n20_N8S21142C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21142C6D1Ev,_ZThn196_N8S21142C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21142C6D0Ev,_ZTv0_n28_N8S21142C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S21142C6D0Ev,_ZThn128_N8S21142C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21142C6D1Ev,_ZTv0_n28_N8S21142C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S21142C6D1Ev,_ZThn128_N8S21142C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21142C16D0Ev,_ZTv0_n16_N9S21142C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N9S21142C16D0Ev,_ZThn292_N9S21142C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21142C16D1Ev,_ZTv0_n16_N9S21142C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N9S21142C16D1Ev,_ZThn292_N9S21142C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21142C16D0Ev,_ZTv0_n12_N9S21142C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N9S21142C16D0Ev,_ZThn200_N9S21142C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21142C16D1Ev,_ZTv0_n12_N9S21142C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N9S21142C16D1Ev,_ZThn200_N9S21142C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21142C9D0Ev,_ZThn4_N8S21142C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21142C9D0Ev,_ZThn8_N8S21142C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S21142C9D0Ev,_ZThn200_N8S21142C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21142C9D1Ev,_ZThn4_N8S21142C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21142C9D1Ev,_ZThn8_N8S21142C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S21142C9D1Ev,_ZThn200_N8S21142C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C3D0Ev,_ZTv0_n12_N8S21142C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21142C3D0Ev,_ZThn4_N8S21142C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C3D1Ev,_ZTv0_n12_N8S21142C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21142C3D1Ev,_ZThn4_N8S21142C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21142C19D0Ev,_ZTv0_n20_N9S21142C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N9S21142C19D0Ev,_ZThn284_N9S21142C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21142C19D1Ev,_ZTv0_n20_N9S21142C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N9S21142C19D1Ev,_ZThn284_N9S21142C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21142C19D0Ev,_ZTv0_n12_N9S21142C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S21142C19D0Ev,_ZThn76_N9S21142C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn408_N9S21142C19D0Ev,_ZThn288_N9S21142C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn440_N9S21142C19D0Ev,_ZThn316_N9S21142C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21142C19D1Ev,_ZTv0_n12_N9S21142C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S21142C19D1Ev,_ZThn76_N9S21142C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn408_N9S21142C19D1Ev,_ZThn288_N9S21142C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn440_N9S21142C19D1Ev,_ZThn316_N9S21142C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21142C19D0Ev,_ZTv0_n16_N9S21142C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S21142C19D0Ev,_ZThn72_N9S21142C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn520_N9S21142C19D0Ev,_ZThn368_N9S21142C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21142C19D1Ev,_ZTv0_n16_N9S21142C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S21142C19D1Ev,_ZThn72_N9S21142C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn520_N9S21142C19D1Ev,_ZThn368_N9S21142C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21142C13D0Ev,_ZTv0_n20_N9S21142C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N9S21142C13D0Ev,_ZThn284_N9S21142C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21142C13D1Ev,_ZTv0_n20_N9S21142C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N9S21142C13D1Ev,_ZThn284_N9S21142C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S21142C13D0Ev,_ZThn76_N9S21142C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn408_N9S21142C13D0Ev,_ZThn288_N9S21142C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn440_N9S21142C13D0Ev,_ZThn316_N9S21142C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S21142C13D1Ev,_ZThn76_N9S21142C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn408_N9S21142C13D1Ev,_ZThn288_N9S21142C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn440_N9S21142C13D1Ev,_ZThn316_N9S21142C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21142C13D0Ev,_ZTv0_n16_N9S21142C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21142C13D0Ev,_ZThn32_N9S21142C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S21142C13D0Ev,_ZThn72_N9S21142C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn520_N9S21142C13D0Ev,_ZThn368_N9S21142C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21142C13D1Ev,_ZTv0_n16_N9S21142C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21142C13D1Ev,_ZThn32_N9S21142C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S21142C13D1Ev,_ZThn72_N9S21142C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn520_N9S21142C13D1Ev,_ZThn368_N9S21142C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21142C2D0Ev,_ZTv0_n24_N8S21142C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn560_N8S21142C2D0Ev,_ZThn392_N8S21142C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21142C2D1Ev,_ZTv0_n24_N8S21142C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn560_N8S21142C2D1Ev,_ZThn392_N8S21142C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21142C2D0Ev,_ZTv0_n36_N8S21142C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N8S21142C2D0Ev,_ZThn336_N8S21142C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21142C2D1Ev,_ZTv0_n36_N8S21142C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N8S21142C2D1Ev,_ZThn336_N8S21142C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21142C2D0Ev,_ZTv0_n40_N8S21142C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S21142C2D0Ev,_ZThn332_N8S21142C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21142C2D1Ev,_ZTv0_n40_N8S21142C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S21142C2D1Ev,_ZThn332_N8S21142C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21142C2D0Ev,_ZTv0_n20_N8S21142C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S21142C2D0Ev,_ZThn284_N8S21142C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21142C2D1Ev,_ZTv0_n20_N8S21142C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S21142C2D1Ev,_ZThn284_N8S21142C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21142C2D0Ev,_ZTv0_n28_N8S21142C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S21142C2D0Ev,_ZThn216_N8S21142C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21142C2D1Ev,_ZTv0_n28_N8S21142C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S21142C2D1Ev,_ZThn216_N8S21142C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S21142C2D0Ev,_ZTv0_n52_N8S21142C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21142C2D0Ev,_ZThn88_N8S21142C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S21142C2D1Ev,_ZTv0_n52_N8S21142C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21142C2D1Ev,_ZThn88_N8S21142C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C2D0Ev,_ZTv0_n12_N8S21142C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn440_N8S21142C2D0Ev,_ZThn316_N8S21142C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn408_N8S21142C2D0Ev,_ZThn288_N8S21142C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21142C2D0Ev,_ZThn76_N8S21142C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C2D1Ev,_ZTv0_n12_N8S21142C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn440_N8S21142C2D1Ev,_ZThn316_N8S21142C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn408_N8S21142C2D1Ev,_ZThn288_N8S21142C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21142C2D1Ev,_ZThn76_N8S21142C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21142C2D0Ev,_ZTv0_n16_N8S21142C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N8S21142C2D0Ev,_ZThn380_N8S21142C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S21142C2D0Ev,_ZThn368_N8S21142C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S21142C2D0Ev,_ZThn72_N8S21142C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21142C2D1Ev,_ZTv0_n16_N8S21142C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N8S21142C2D1Ev,_ZThn380_N8S21142C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S21142C2D1Ev,_ZThn368_N8S21142C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S21142C2D1Ev,_ZThn72_N8S21142C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21142C2 = {  "S21142C2", // class name
  bases_S21142C2, 33,
  &(vtc_S21142C2[0]), // expected_vtbl_contents
  &(vtt_S21142C2[0]), // expected_vtt_contents
  ABISELECT(656,456), // object size
  NSPAIRA(_ZTI8S21142C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S21142C2),133, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21142C2),96, //virtual table table var
  30, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names65,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21142C1  : virtual S21142C2 {
  virtual  ~S21142C1(); // _ZN8S21142C1D2Ev
  S21142C1(); // tgen
};
//SIG(1 S21142C1) C1{ VBC2{ VBC3{ VBC4{ vd m Fc FU5{ m Fc[6]}}} VBC6{ VBC7{ BC8{ VBC9{ VBC10{ BC4 vd FL FU5} VBC4 vd} BC4 BC11{ vd m Fi Fc Fi} BC10 Fi Fp} BC9 VBC11} VBC12{ VBC9 BC3 VBC13{ BC14{ m FD} VBC15{ VBC11 Fp[2]} VBC9 BC4 VBC3 Fc Fi} vd} BC16{ BC9 VBC17{ VBC4 Fi FC18{}} vd FD} vd Fi[10] Fp FC16} BC14 BC19{ BC13 Fs FC3 Fi} VBC8 vd Fi} vd}


 S21142C1 ::~S21142C1(){ note_dtor("S21142C1", this);}
S21142C1 ::S21142C1(){ note_ctor("S21142C1", this);} // tgen

static void Test_S21142C1()
{
  extern Class_Descriptor cd_S21142C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(43,115)];
    init_test(&cd_S21142C1, buf);
    S21142C1 *dp, &lv = *(dp=new (buf) S21142C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(672,456), "sizeof(S21142C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21142C1)");
    /*is_ambiguous_... S21142C1::S21142C3 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C3*), ABISELECT(120,76), "S21142C1");
    /*is_ambiguous_... S21142C1::S21142C9 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C9*), ABISELECT(120,76), "S21142C1");
    /*is_ambiguous_... S21142C7::S21142C9 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C9*)(S21142C7*), ABISELECT(120,76), "S21142C1");
    /*is_ambiguous_... S21142C12::S21142C3 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C3*)(S21142C12*), ABISELECT(120,76), "S21142C1");
    /*is_ambiguous_... S21142C9::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C9*)(S21142C16*)(S21142C6*), ABISELECT(120,76), "S21142C1");
    check_base_class_offset(lv, (S3589C3*)(S21142C17*), ABISELECT(120,76), "S21142C1");
    /*is_ambiguous_... S21142C2::S21142C3 */ AMB_check_base_class_offset(lv, (S21142C3*)(S21142C2*), 0, "S21142C1");
    /*is_ambiguous_... S21142C1::S21142C13 */ AMB_check_base_class_offset(lv, (S21142C3*)(S21142C13*), 0, "S21142C1");
    check_base_class_offset(lv, (S21142C3*)(S21142C13*)(S21142C19*)(S21142C2*), 0, "S21142C1");
    /*is_ambiguous_... S21142C1::S21142C10 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C10*), ABISELECT(424,288), "S21142C1");
    /*is_ambiguous_... S21142C1::S21142C9 */ AMB_check_base_class_offset(lv, (S21142C10*)(S21142C9*), ABISELECT(424,288), "S21142C1");
    /*is_ambiguous_... S21142C7::S21142C9 */ AMB_check_base_class_offset(lv, (S21142C10*)(S21142C9*)(S21142C7*), ABISELECT(424,288), "S21142C1");
    check_base_class_offset(lv, (S21142C10*)(S21142C9*)(S21142C16*)(S21142C6*), ABISELECT(424,288), "S21142C1");
    check_base_class_offset(lv, (S21142C9*)(S21142C8*)(S21142C7*), ABISELECT(416,284), "S21142C1");
    check_base_class_offset(lv, (S21142C9*)(S21142C12*), ABISELECT(416,284), "S21142C1");
    /*is_ambiguous_... S21142C1::S21142C13 */ AMB_check_base_class_offset(lv, (S21142C9*)(S21142C13*), ABISELECT(416,284), "S21142C1");
    check_base_class_offset(lv, (S21142C9*)(S21142C13*)(S21142C19*)(S21142C2*), ABISELECT(416,284), "S21142C1");
    /*is_ambiguous_... S21142C1::S21142C8 */ AMB_check_base_class_offset(lv, (S21142C9*)(S21142C8*), ABISELECT(416,284), "S21142C1");
    /*is_ambiguous_... S21142C8::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C8*)(S21142C7*), ABISELECT(320,216), "S21142C1");
    check_base_class_offset(lv, (S3589C9_nt*)(S21142C8*)(S21142C7*), ABISELECT(336,228), "S21142C1");
    /*is_ambiguous_... S21142C8::S21142C10 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C10*)(S21142C8*)(S21142C7*), ABISELECT(360,244), "S21142C1");
    /*is_ambiguous_... S21142C8::S21142C10 */ AMB_check_base_class_offset(lv, (S21142C10*)(S21142C8*)(S21142C7*), ABISELECT(360,244), "S21142C1");
    check_base_class_offset(lv, (S21142C8*)(S21142C7*), ABISELECT(320,216), "S21142C1");
    /*is_ambiguous_... S21142C7::S21142C9 */ AMB_check_base_class_offset(lv, (S21142C9*)(S21142C7*), ABISELECT(408,280), "S21142C1");
    /*is_ambiguous_... S21142C7::S3589C9_nt */ AMB_check_base_class_offset(lv, (S3589C9_nt*)(S21142C7*), ABISELECT(456,316), "S21142C1");
    check_base_class_offset(lv, (S3589C9_nt*)(S21142C15*), ABISELECT(456,316), "S21142C1");
    check_base_class_offset(lv, (S21142C7*)(S21142C6*), ABISELECT(320,216), "S21142C1");
    /*is_ambiguous_... S21142C12::S21142C3 */ AMB_check_base_class_offset(lv, (S21142C3*)(S21142C12*), ABISELECT(480,332), "S21142C1");
    /*is_ambiguous_... S21142C1::S21142C13 */ AMB_check_base_class_offset(lv, (S3589C13_nt*)(S21142C13*), ABISELECT(512,348), "S21142C1");
    /*is_ambiguous_... S21142C1::S21142C13 */ AMB_check_base_class_offset(lv, (S21142C15*)(S21142C13*), ABISELECT(536,368), "S21142C1");
    check_base_class_offset(lv, (S21142C15*)(S21142C13*)(S21142C19*)(S21142C2*), ABISELECT(536,368), "S21142C1");
    /*is_ambiguous_... S21142C1::S21142C13 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C13*), ABISELECT(496,336), "S21142C1");
    check_base_class_offset(lv, (S21142C13*)(S21142C12*), ABISELECT(496,336), "S21142C1");
    check_base_class_offset(lv, (S21142C12*)(S21142C6*), ABISELECT(480,332), "S21142C1");
    check_base_class_offset(lv, (S21142C9*)(S21142C16*)(S21142C6*), ABISELECT(144,88), "S21142C1");
    check_base_class_offset(lv, (S21142C17*)(S21142C16*)(S21142C6*), ABISELECT(560,380), "S21142C1");
    check_base_class_offset(lv, (S21142C16*)(S21142C6*), ABISELECT(144,88), "S21142C1");
    check_base_class_offset(lv, (S21142C6*)(S21142C2*), ABISELECT(144,88), "S21142C1");
    /*is_ambiguous_... S21142C2::S3589C13_nt */ AMB_check_base_class_offset(lv, (S3589C13_nt*)(S21142C2*), ABISELECT(96,60), "S21142C1");
    check_base_class_offset(lv, (S3589C13_nt*)(S21142C13*)(S21142C19*)(S21142C2*), ABISELECT(32,16), "S21142C1");
    /*is_ambiguous_... S21142C13::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C13*)(S21142C19*)(S21142C2*), ABISELECT(16,4), "S21142C1");
    check_base_class_offset(lv, (S21142C13*)(S21142C19*)(S21142C2*), ABISELECT(16,4), "S21142C1");
    check_base_class_offset(lv, (S21142C19*)(S21142C2*), ABISELECT(16,4), "S21142C1");
    /*is_ambiguous_... S21142C1::S21142C8 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C8*), ABISELECT(576,392), "S21142C1");
    /*is_ambiguous_... S21142C1::S21142C8 */ AMB_check_base_class_offset(lv, (S3589C9_nt*)(S21142C8*), ABISELECT(592,404), "S21142C1");
    /*is_ambiguous_... S21142C1::S21142C8 */ AMB_check_base_class_offset(lv, (S3589C3*)(S21142C10*)(S21142C8*), ABISELECT(616,420), "S21142C1");
    /*is_ambiguous_... S21142C1::S21142C8 */ AMB_check_base_class_offset(lv, (S21142C10*)(S21142C8*), ABISELECT(616,420), "S21142C1");
    /*is_ambiguous_... S21142C2::S21142C8 */ AMB_check_base_class_offset(lv, (S21142C8*)(S21142C2*), ABISELECT(576,392), "S21142C1");
    check_base_class_offset(lv, (S21142C2*), ABISELECT(16,4), "S21142C1");
    test_class_info(&lv, &cd_S21142C1);
    dp->~S21142C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21142C1(Test_S21142C1, "S21142C1", ABISELECT(672,456));

#else // __cplusplus

extern void _ZN8S21142C1C1Ev();
extern void _ZN8S21142C1D2Ev();
Name_Map name_map_S21142C1[] = {
  NSPAIR(_ZN8S21142C1C1Ev),
  NSPAIR(_ZN8S21142C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S21142C3;
extern VTBL_ENTRY _ZTI8S21142C3[];
extern  VTBL_ENTRY _ZTV8S21142C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21142C3[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S21142C10;
extern VTBL_ENTRY _ZTI9S21142C10[];
extern  VTBL_ENTRY _ZTV9S21142C10[];
extern Class_Descriptor cd_S21142C9;
extern VTBL_ENTRY _ZTI8S21142C9[];
extern  VTBL_ENTRY _ZTV8S21142C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21142C9[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S3589C9_nt;
extern VTBL_ENTRY _ZTI10S3589C9_nt[];
extern  VTBL_ENTRY _ZTV10S3589C9_nt[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S21142C10;
extern VTBL_ENTRY _ZTI9S21142C10[];
extern  VTBL_ENTRY _ZTV9S21142C10[];
extern Class_Descriptor cd_S21142C8;
extern VTBL_ENTRY _ZTI8S21142C8[];
extern  VTBL_ENTRY _ZTV8S21142C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21142C8[];
extern Class_Descriptor cd_S21142C9;
extern VTBL_ENTRY _ZTI8S21142C9[];
extern  VTBL_ENTRY _ZTV8S21142C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21142C9[];
extern Class_Descriptor cd_S3589C9_nt;
extern VTBL_ENTRY _ZTI10S3589C9_nt[];
extern  VTBL_ENTRY _ZTV10S3589C9_nt[];
extern Class_Descriptor cd_S21142C7;
extern VTBL_ENTRY _ZTI8S21142C7[];
extern  VTBL_ENTRY _ZTV8S21142C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21142C7[];
extern Class_Descriptor cd_S21142C3;
extern VTBL_ENTRY _ZTI8S21142C3[];
extern  VTBL_ENTRY _ZTV8S21142C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21142C3[];
extern Class_Descriptor cd_S3589C13_nt;
extern VTBL_ENTRY _ZTI11S3589C13_nt[];
extern Class_Descriptor cd_S21142C15;
extern VTBL_ENTRY _ZTI9S21142C15[];
extern  VTBL_ENTRY _ZTV9S21142C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21142C15[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S21142C13;
extern VTBL_ENTRY _ZTI9S21142C13[];
extern  VTBL_ENTRY _ZTV9S21142C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21142C13[];
extern Class_Descriptor cd_S21142C12;
extern VTBL_ENTRY _ZTI9S21142C12[];
extern  VTBL_ENTRY _ZTV9S21142C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21142C12[];
extern Class_Descriptor cd_S21142C9;
extern VTBL_ENTRY _ZTI8S21142C9[];
extern  VTBL_ENTRY _ZTV8S21142C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21142C9[];
extern Class_Descriptor cd_S21142C17;
extern VTBL_ENTRY _ZTI9S21142C17[];
extern  VTBL_ENTRY _ZTV9S21142C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21142C17[];
extern Class_Descriptor cd_S21142C16;
extern VTBL_ENTRY _ZTI9S21142C16[];
extern  VTBL_ENTRY _ZTV9S21142C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21142C16[];
extern Class_Descriptor cd_S21142C6;
extern VTBL_ENTRY _ZTI8S21142C6[];
extern  VTBL_ENTRY _ZTV8S21142C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21142C6[];
extern Class_Descriptor cd_S3589C13_nt;
extern VTBL_ENTRY _ZTI11S3589C13_nt[];
extern Class_Descriptor cd_S3589C13_nt;
extern VTBL_ENTRY _ZTI11S3589C13_nt[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S21142C13;
extern VTBL_ENTRY _ZTI9S21142C13[];
extern  VTBL_ENTRY _ZTV9S21142C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21142C13[];
extern Class_Descriptor cd_S21142C19;
extern VTBL_ENTRY _ZTI9S21142C19[];
extern  VTBL_ENTRY _ZTV9S21142C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21142C19[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S3589C9_nt;
extern VTBL_ENTRY _ZTI10S3589C9_nt[];
extern  VTBL_ENTRY _ZTV10S3589C9_nt[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S21142C10;
extern VTBL_ENTRY _ZTI9S21142C10[];
extern  VTBL_ENTRY _ZTV9S21142C10[];
extern Class_Descriptor cd_S21142C8;
extern VTBL_ENTRY _ZTI8S21142C8[];
extern  VTBL_ENTRY _ZTV8S21142C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21142C8[];
extern Class_Descriptor cd_S21142C2;
extern VTBL_ENTRY _ZTI8S21142C2[];
extern  VTBL_ENTRY _ZTV8S21142C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21142C2[];
static Base_Class bases_S21142C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3589C3,    ABISELECT(120,76), //bcp->offset
    35, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S21142C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S3589C3,    ABISELECT(424,288), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S21142C10,    ABISELECT(424,288), //bcp->offset
    85, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S21142C9,    ABISELECT(416,284), //bcp->offset
    78, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S3589C3,    ABISELECT(320,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3589C9_nt,    ABISELECT(336,228), //bcp->offset
    64, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3589C3,    ABISELECT(360,244), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21142C10,    ABISELECT(360,244), //bcp->offset
    68, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21142C8,    ABISELECT(320,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21142C9,    ABISELECT(408,280), //bcp->offset
    72, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3589C9_nt,    ABISELECT(456,316), //bcp->offset
    90, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S21142C7,    ABISELECT(320,216), //bcp->offset
    55, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S21142C3,    ABISELECT(480,332), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S3589C13_nt,    ABISELECT(512,348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21142C15,    ABISELECT(536,368), //bcp->offset
    118, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    108, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S3589C3,    ABISELECT(496,336), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21142C13,    ABISELECT(496,336), //bcp->offset
    107, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    101, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S21142C12,    ABISELECT(480,332), //bcp->offset
    95, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S21142C9,    ABISELECT(144,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S21142C17,    ABISELECT(560,380), //bcp->offset
    124, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    110, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S21142C16,    ABISELECT(144,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S21142C6,    ABISELECT(144,88), //bcp->offset
    40, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S3589C13_nt,    ABISELECT(96,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S3589C13_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S3589C3,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S21142C13,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S21142C19,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S3589C3,    ABISELECT(576,392), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S3589C9_nt,    ABISELECT(592,404), //bcp->offset
    138, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S3589C3,    ABISELECT(616,420), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S21142C10,    ABISELECT(616,420), //bcp->offset
    142, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S21142C8,    ABISELECT(576,392), //bcp->offset
    130, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    112, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S21142C2,    ABISELECT(16,4), //bcp->offset
    18, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21142C1[];
extern void ABISELECT(_ZTv0_n32_N8S21142C1D1Ev,_ZTv0_n16_N8S21142C1D1Ev)();
extern void _ZN8S21142C1D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21142C1D0Ev,_ZTv0_n16_N8S21142C1D0Ev)();
extern void _ZN8S21142C1D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S21142C1D1Ev,_ZTv0_n60_N8S21142C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S21142C1D1Ev,_ZThn4_N8S21142C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S21142C1D0Ev,_ZTv0_n60_N8S21142C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S21142C1D0Ev,_ZThn4_N8S21142C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C1D1Ev,_ZTv0_n12_N8S21142C1D1Ev)();
extern void ABISELECT(_ZThn120_N8S21142C1D1Ev,_ZThn76_N8S21142C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C1D0Ev,_ZTv0_n12_N8S21142C1D0Ev)();
extern void ABISELECT(_ZThn120_N8S21142C1D0Ev,_ZThn76_N8S21142C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N8S21142C1D1Ev,_ZTv0_n52_N8S21142C1D1Ev)();
extern void ABISELECT(_ZThn144_N8S21142C1D1Ev,_ZThn88_N8S21142C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N8S21142C1D0Ev,_ZTv0_n52_N8S21142C1D0Ev)();
extern void ABISELECT(_ZThn144_N8S21142C1D0Ev,_ZThn88_N8S21142C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21142C1D1Ev,_ZTv0_n28_N8S21142C1D1Ev)();
extern void ABISELECT(_ZThn320_N8S21142C1D1Ev,_ZThn216_N8S21142C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21142C1D0Ev,_ZTv0_n28_N8S21142C1D0Ev)();
extern void ABISELECT(_ZThn320_N8S21142C1D0Ev,_ZThn216_N8S21142C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n56_N8S21142C1D1Ev,_ZTvn12_n28_N8S21142C1D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S21142C1D0Ev,_ZTvn12_n28_N8S21142C1D0Ev)();
extern void ABISELECT(_ZTvn40_n56_N8S21142C1D1Ev,_ZTvn28_n28_N8S21142C1D1Ev)();
extern void ABISELECT(_ZTvn40_n56_N8S21142C1D0Ev,_ZTvn28_n28_N8S21142C1D0Ev)();
extern void ABISELECT(_ZTvn88_n56_N8S21142C1D1Ev,_ZTvn64_n28_N8S21142C1D1Ev)();
extern void ABISELECT(_ZTvn88_n56_N8S21142C1D0Ev,_ZTvn64_n28_N8S21142C1D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21142C1D1Ev,_ZTv0_n20_N8S21142C1D1Ev)();
extern void ABISELECT(_ZThn416_N8S21142C1D1Ev,_ZThn284_N8S21142C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21142C1D0Ev,_ZTv0_n20_N8S21142C1D0Ev)();
extern void ABISELECT(_ZThn416_N8S21142C1D0Ev,_ZThn284_N8S21142C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C1D1Ev,_ZTv0_n12_N8S21142C1D1Ev)();
extern void ABISELECT(_ZThn424_N8S21142C1D1Ev,_ZThn288_N8S21142C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C1D0Ev,_ZTv0_n12_N8S21142C1D0Ev)();
extern void ABISELECT(_ZThn424_N8S21142C1D0Ev,_ZThn288_N8S21142C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C1D1Ev,_ZTv0_n12_N8S21142C1D1Ev)();
extern void ABISELECT(_ZThn456_N8S21142C1D1Ev,_ZThn316_N8S21142C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C1D0Ev,_ZTv0_n12_N8S21142C1D0Ev)();
extern void ABISELECT(_ZThn456_N8S21142C1D0Ev,_ZThn316_N8S21142C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21142C1D1Ev,_ZTv0_n40_N8S21142C1D1Ev)();
extern void ABISELECT(_ZThn480_N8S21142C1D1Ev,_ZThn332_N8S21142C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21142C1D0Ev,_ZTv0_n40_N8S21142C1D0Ev)();
extern void ABISELECT(_ZThn480_N8S21142C1D0Ev,_ZThn332_N8S21142C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S21142C1D1Ev,_ZTv0_n36_N8S21142C1D1Ev)();
extern void ABISELECT(_ZThn496_N8S21142C1D1Ev,_ZThn336_N8S21142C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S21142C1D0Ev,_ZTv0_n36_N8S21142C1D0Ev)();
extern void ABISELECT(_ZThn496_N8S21142C1D0Ev,_ZThn336_N8S21142C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21142C1D1Ev,_ZTv0_n16_N8S21142C1D1Ev)();
extern void ABISELECT(_ZThn536_N8S21142C1D1Ev,_ZThn368_N8S21142C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21142C1D0Ev,_ZTv0_n16_N8S21142C1D0Ev)();
extern void ABISELECT(_ZThn536_N8S21142C1D0Ev,_ZThn368_N8S21142C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21142C1D1Ev,_ZTv0_n16_N8S21142C1D1Ev)();
extern void ABISELECT(_ZThn560_N8S21142C1D1Ev,_ZThn380_N8S21142C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21142C1D0Ev,_ZTv0_n16_N8S21142C1D0Ev)();
extern void ABISELECT(_ZThn560_N8S21142C1D0Ev,_ZThn380_N8S21142C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21142C1D1Ev,_ZTv0_n24_N8S21142C1D1Ev)();
extern void ABISELECT(_ZThn576_N8S21142C1D1Ev,_ZThn392_N8S21142C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21142C1D0Ev,_ZTv0_n24_N8S21142C1D0Ev)();
extern void ABISELECT(_ZThn576_N8S21142C1D0Ev,_ZThn392_N8S21142C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N8S21142C1D1Ev,_ZTvn12_n24_N8S21142C1D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N8S21142C1D0Ev,_ZTvn12_n24_N8S21142C1D0Ev)();
extern void ABISELECT(_ZTvn40_n48_N8S21142C1D1Ev,_ZTvn28_n24_N8S21142C1D1Ev)();
extern void ABISELECT(_ZTvn40_n48_N8S21142C1D0Ev,_ZTvn28_n24_N8S21142C1D0Ev)();
static  VTBL_ENTRY vtc_S21142C1[] = {
  ABISELECT(576,392),
  ABISELECT(560,380),
  ABISELECT(536,368),
  ABISELECT(496,336),
  ABISELECT(480,332),
  ABISELECT(456,316),
  ABISELECT(424,288),
  ABISELECT(416,284),
  ABISELECT(320,216),
  ABISELECT(144,88),
  0,
  ABISELECT(16,4),
  0,
  ABISELECT(120,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S21142C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21142C1D1Ev,_ZTv0_n16_N8S21142C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21142C1D0Ev,_ZTv0_n16_N8S21142C1D0Ev),
  ABISELECT(-16,-4),
  ABISELECT(560,388),
  ABISELECT(544,376),
  ABISELECT(480,332),
  ABISELECT(464,328),
  ABISELECT(304,212),
  ABISELECT(128,84),
  ABISELECT(-16,-4),
  ABISELECT(104,72),
  ABISELECT(408,284),
  ABISELECT(400,280),
  ABISELECT(440,312),
  ABISELECT(520,364),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S21142C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S21142C1D1Ev,_ZTv0_n60_N8S21142C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S21142C1D0Ev,_ZTv0_n60_N8S21142C1D0Ev),
  ABISELECT(-120,-76),
  ABISELECT(-120,-76),
  (VTBL_ENTRY)&(_ZTI8S21142C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C1D1Ev,_ZTv0_n12_N8S21142C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C1D0Ev,_ZTv0_n12_N8S21142C1D0Ev),
  ABISELECT(-144,-88),
  ABISELECT(-144,-88),
  ABISELECT(392,280),
  ABISELECT(352,248),
  ABISELECT(336,244),
  ABISELECT(312,228),
  ABISELECT(272,196),
  ABISELECT(176,128),
  ABISELECT(416,292),
  ABISELECT(-24,-12),
  ABISELECT(280,200),
  ABISELECT(-144,-88),
  (VTBL_ENTRY)&(_ZTI8S21142C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S21142C1D1Ev,_ZTv0_n52_N8S21142C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S21142C1D0Ev,_ZTv0_n52_N8S21142C1D0Ev),
  ABISELECT(-320,-216),
  ABISELECT(136,100),
  ABISELECT(-200,-140),
  ABISELECT(104,72),
  ABISELECT(96,68),
  ABISELECT(-320,-216),
  (VTBL_ENTRY)&(_ZTI8S21142C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21142C1D1Ev,_ZTv0_n28_N8S21142C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21142C1D0Ev,_ZTv0_n28_N8S21142C1D0Ev),
  ABISELECT(-336,-228),
  (VTBL_ENTRY)&(_ZTI8S21142C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S21142C1D1Ev,_ZTvn12_n28_N8S21142C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S21142C1D0Ev,_ZTvn12_n28_N8S21142C1D0Ev),
  ABISELECT(-360,-244),
  (VTBL_ENTRY)&(_ZTI8S21142C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n56_N8S21142C1D1Ev,_ZTvn28_n28_N8S21142C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n56_N8S21142C1D0Ev,_ZTvn28_n28_N8S21142C1D0Ev),
  ABISELECT(-288,-204),
  ABISELECT(16,8),
  ABISELECT(-408,-280),
  (VTBL_ENTRY)&(_ZTI8S21142C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn88_n56_N8S21142C1D1Ev,_ZTvn64_n28_N8S21142C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn88_n56_N8S21142C1D0Ev,_ZTvn64_n28_N8S21142C1D0Ev),
  ABISELECT(-416,-284),
  ABISELECT(-296,-208),
  ABISELECT(8,4),
  ABISELECT(-416,-284),
  (VTBL_ENTRY)&(_ZTI8S21142C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21142C1D1Ev,_ZTv0_n20_N8S21142C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21142C1D0Ev,_ZTv0_n20_N8S21142C1D0Ev),
  ABISELECT(-424,-288),
  ABISELECT(-424,-288),
  (VTBL_ENTRY)&(_ZTI8S21142C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C1D1Ev,_ZTv0_n12_N8S21142C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C1D0Ev,_ZTv0_n12_N8S21142C1D0Ev),
  ABISELECT(-456,-316),
  ABISELECT(-456,-316),
  (VTBL_ENTRY)&(_ZTI8S21142C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C1D1Ev,_ZTv0_n12_N8S21142C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C1D0Ev,_ZTv0_n12_N8S21142C1D0Ev),
  ABISELECT(-480,-332),
  ABISELECT(-480,-332),
  ABISELECT(-24,-16),
  ABISELECT(56,36),
  ABISELECT(16,4),
  ABISELECT(-56,-44),
  ABISELECT(-64,-48),
  ABISELECT(-360,-256),
  ABISELECT(-480,-332),
  (VTBL_ENTRY)&(_ZTI8S21142C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21142C1D1Ev,_ZTv0_n40_N8S21142C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21142C1D0Ev,_ZTv0_n40_N8S21142C1D0Ev),
  ABISELECT(-496,-336),
  ABISELECT(-496,-336),
  ABISELECT(-376,-260),
  ABISELECT(-72,-48),
  ABISELECT(-80,-52),
  ABISELECT(-40,-20),
  ABISELECT(40,32),
  ABISELECT(-496,-336),
  (VTBL_ENTRY)&(_ZTI8S21142C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21142C1D1Ev,_ZTv0_n36_N8S21142C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21142C1D0Ev,_ZTv0_n36_N8S21142C1D0Ev),
  ABISELECT(-536,-368),
  ABISELECT(-80,-52),
  ABISELECT(-536,-368),
  (VTBL_ENTRY)&(_ZTI8S21142C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21142C1D1Ev,_ZTv0_n16_N8S21142C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21142C1D0Ev,_ZTv0_n16_N8S21142C1D0Ev),
  ABISELECT(-560,-380),
  ABISELECT(-440,-304),
  ABISELECT(-560,-380),
  (VTBL_ENTRY)&(_ZTI8S21142C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21142C1D1Ev,_ZTv0_n16_N8S21142C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21142C1D0Ev,_ZTv0_n16_N8S21142C1D0Ev),
  ABISELECT(-576,-392),
  ABISELECT(-456,-316),
  ABISELECT(-152,-104),
  ABISELECT(-160,-108),
  ABISELECT(-576,-392),
  (VTBL_ENTRY)&(_ZTI8S21142C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21142C1D1Ev,_ZTv0_n24_N8S21142C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21142C1D0Ev,_ZTv0_n24_N8S21142C1D0Ev),
  ABISELECT(-592,-404),
  (VTBL_ENTRY)&(_ZTI8S21142C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S21142C1D1Ev,_ZTvn12_n24_N8S21142C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S21142C1D0Ev,_ZTvn12_n24_N8S21142C1D0Ev),
  ABISELECT(-616,-420),
  (VTBL_ENTRY)&(_ZTI8S21142C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n48_N8S21142C1D1Ev,_ZTvn28_n24_N8S21142C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n48_N8S21142C1D0Ev,_ZTvn28_n24_N8S21142C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S21142C1[];
extern void _ZN8S21142C2D1Ev();
extern void _ZN8S21142C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21142C2__8S21142C1[] = {
  ABISELECT(560,388),
  ABISELECT(544,376),
  ABISELECT(480,332),
  ABISELECT(464,328),
  ABISELECT(304,212),
  ABISELECT(128,84),
  ABISELECT(-16,-4),
  ABISELECT(104,72),
  ABISELECT(408,284),
  ABISELECT(400,280),
  ABISELECT(440,312),
  ABISELECT(520,364),
  0,
  (VTBL_ENTRY)&(_ZTI8S21142C2[0]),
  (VTBL_ENTRY)&_ZN8S21142C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21142C2D0Ev,
};
extern void _ZN9S21142C19D1Ev();
extern void _ZN9S21142C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21142C198S21142C2__8S21142C1[] = {
  ABISELECT(-16,-4),
  ABISELECT(104,72),
  ABISELECT(408,284),
  ABISELECT(400,280),
  ABISELECT(440,312),
  ABISELECT(520,364),
  0,
  (VTBL_ENTRY)&(_ZTI9S21142C19[0]),
  (VTBL_ENTRY)&_ZN9S21142C19D1Ev,
  (VTBL_ENTRY)&_ZN9S21142C19D0Ev,
};
extern void _ZN9S21142C13D1Ev();
extern void _ZN9S21142C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21142C139S21142C198S21142C2__A1__8S21142C1[] = {
  ABISELECT(-16,-4),
  ABISELECT(104,72),
  ABISELECT(408,284),
  ABISELECT(400,280),
  ABISELECT(440,312),
  ABISELECT(520,364),
  0,
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&_ZN9S21142C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21142C13D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S21142C13D1Ev,_ZTv0_n16_N9S21142C13D1Ev)();
extern void ABISELECT(_ZThn520_N9S21142C13D1Ev,_ZThn364_N9S21142C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21142C13D0Ev,_ZTv0_n16_N9S21142C13D0Ev)();
extern void ABISELECT(_ZThn520_N9S21142C13D0Ev,_ZThn364_N9S21142C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C15__9S21142C139S21142C198S21142C2__A1__8S21142C1[] = {
  ABISELECT(-520,-364),
  ABISELECT(-80,-52),
  ABISELECT(-520,-364),
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C13D1Ev,_ZTv0_n16_N9S21142C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C13D0Ev,_ZTv0_n16_N9S21142C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev)();
extern void ABISELECT(_ZThn440_N9S21142C13D1Ev,_ZThn312_N9S21142C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev)();
extern void ABISELECT(_ZThn440_N9S21142C13D0Ev,_ZThn312_N9S21142C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt__9S21142C139S21142C198S21142C2__A1__8S21142C1[] = {
  ABISELECT(-440,-312),
  ABISELECT(-440,-312),
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21142C13D1Ev,_ZTv0_n20_N9S21142C13D1Ev)();
extern void ABISELECT(_ZThn400_N9S21142C13D1Ev,_ZThn280_N9S21142C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21142C13D0Ev,_ZTv0_n20_N9S21142C13D0Ev)();
extern void ABISELECT(_ZThn400_N9S21142C13D0Ev,_ZThn280_N9S21142C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21142C9__9S21142C139S21142C198S21142C2__A1__8S21142C1[] = {
  ABISELECT(-400,-280),
  ABISELECT(-296,-208),
  ABISELECT(8,4),
  ABISELECT(-400,-280),
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21142C13D1Ev,_ZTv0_n20_N9S21142C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21142C13D0Ev,_ZTv0_n20_N9S21142C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev)();
extern void ABISELECT(_ZThn408_N9S21142C13D1Ev,_ZThn284_N9S21142C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev)();
extern void ABISELECT(_ZThn408_N9S21142C13D0Ev,_ZThn284_N9S21142C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C10__9S21142C139S21142C198S21142C2__A1__8S21142C1[] = {
  ABISELECT(-408,-284),
  ABISELECT(-408,-284),
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev)();
extern void ABISELECT(_ZThn104_N9S21142C13D1Ev,_ZThn72_N9S21142C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev)();
extern void ABISELECT(_ZThn104_N9S21142C13D0Ev,_ZThn72_N9S21142C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__9S21142C139S21142C198S21142C2__A1__8S21142C1[] = {
  ABISELECT(-104,-72),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21142C13D1Ev,_ZTv0_n16_N9S21142C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21142C13D0Ev,_ZTv0_n16_N9S21142C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21142C3__9S21142C139S21142C198S21142C2__A1__8S21142C1[] = {
  ABISELECT(16,4),
  ABISELECT(120,76),
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C13D1Ev,_ZTv0_n16_N9S21142C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C13D0Ev,_ZTv0_n16_N9S21142C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21142C19D1Ev,_ZTv0_n16_N9S21142C19D1Ev)();
extern void ABISELECT(_ZThn520_N9S21142C19D1Ev,_ZThn364_N9S21142C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21142C19D0Ev,_ZTv0_n16_N9S21142C19D0Ev)();
extern void ABISELECT(_ZThn520_N9S21142C19D0Ev,_ZThn364_N9S21142C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C15__9S21142C198S21142C2__8S21142C1[] = {
  ABISELECT(-520,-364),
  ABISELECT(-80,-52),
  ABISELECT(-520,-364),
  (VTBL_ENTRY)&(_ZTI9S21142C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C19D1Ev,_ZTv0_n16_N9S21142C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C19D0Ev,_ZTv0_n16_N9S21142C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21142C19D1Ev,_ZTv0_n12_N9S21142C19D1Ev)();
extern void ABISELECT(_ZThn440_N9S21142C19D1Ev,_ZThn312_N9S21142C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21142C19D0Ev,_ZTv0_n12_N9S21142C19D0Ev)();
extern void ABISELECT(_ZThn440_N9S21142C19D0Ev,_ZThn312_N9S21142C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt__9S21142C198S21142C2__8S21142C1[] = {
  ABISELECT(-440,-312),
  ABISELECT(-440,-312),
  (VTBL_ENTRY)&(_ZTI9S21142C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C19D1Ev,_ZTv0_n12_N9S21142C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C19D0Ev,_ZTv0_n12_N9S21142C19D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21142C19D1Ev,_ZTv0_n20_N9S21142C19D1Ev)();
extern void ABISELECT(_ZThn400_N9S21142C19D1Ev,_ZThn280_N9S21142C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21142C19D0Ev,_ZTv0_n20_N9S21142C19D0Ev)();
extern void ABISELECT(_ZThn400_N9S21142C19D0Ev,_ZThn280_N9S21142C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21142C9__9S21142C198S21142C2__8S21142C1[] = {
  ABISELECT(-400,-280),
  ABISELECT(-296,-208),
  ABISELECT(8,4),
  ABISELECT(-400,-280),
  (VTBL_ENTRY)&(_ZTI9S21142C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21142C19D1Ev,_ZTv0_n20_N9S21142C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21142C19D0Ev,_ZTv0_n20_N9S21142C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21142C19D1Ev,_ZTv0_n12_N9S21142C19D1Ev)();
extern void ABISELECT(_ZThn408_N9S21142C19D1Ev,_ZThn284_N9S21142C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21142C19D0Ev,_ZTv0_n12_N9S21142C19D0Ev)();
extern void ABISELECT(_ZThn408_N9S21142C19D0Ev,_ZThn284_N9S21142C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C10__9S21142C198S21142C2__8S21142C1[] = {
  ABISELECT(-408,-284),
  ABISELECT(-408,-284),
  (VTBL_ENTRY)&(_ZTI9S21142C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C19D1Ev,_ZTv0_n12_N9S21142C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C19D0Ev,_ZTv0_n12_N9S21142C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21142C19D1Ev,_ZTv0_n12_N9S21142C19D1Ev)();
extern void ABISELECT(_ZThn104_N9S21142C19D1Ev,_ZThn72_N9S21142C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21142C19D0Ev,_ZTv0_n12_N9S21142C19D0Ev)();
extern void ABISELECT(_ZThn104_N9S21142C19D0Ev,_ZThn72_N9S21142C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__9S21142C198S21142C2__8S21142C1[] = {
  ABISELECT(-104,-72),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI9S21142C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C19D1Ev,_ZTv0_n12_N9S21142C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C19D0Ev,_ZTv0_n12_N9S21142C19D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21142C19D1Ev,_ZTv0_n16_N9S21142C19D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21142C19D0Ev,_ZTv0_n16_N9S21142C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21142C3__9S21142C198S21142C2__8S21142C1[] = {
  ABISELECT(16,4),
  ABISELECT(120,76),
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI9S21142C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C19D1Ev,_ZTv0_n16_N9S21142C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C19D0Ev,_ZTv0_n16_N9S21142C19D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21142C2D1Ev,_ZTv0_n16_N8S21142C2D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21142C2D0Ev,_ZTv0_n16_N8S21142C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21142C3__8S21142C2__8S21142C1[] = {
  ABISELECT(16,4),
  ABISELECT(120,76),
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI8S21142C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21142C2D1Ev,_ZTv0_n16_N8S21142C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21142C2D0Ev,_ZTv0_n16_N8S21142C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21142C2D1Ev,_ZTv0_n12_N8S21142C2D1Ev)();
extern void ABISELECT(_ZThn104_N8S21142C2D1Ev,_ZThn72_N8S21142C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C2D0Ev,_ZTv0_n12_N8S21142C2D0Ev)();
extern void ABISELECT(_ZThn104_N8S21142C2D0Ev,_ZThn72_N8S21142C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__8S21142C2__8S21142C1[] = {
  ABISELECT(-104,-72),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI8S21142C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C2D1Ev,_ZTv0_n12_N8S21142C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C2D0Ev,_ZTv0_n12_N8S21142C2D0Ev),
};
extern void ABISELECT(_ZTv0_n104_N8S21142C2D1Ev,_ZTv0_n52_N8S21142C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S21142C2D1Ev,_ZThn84_N8S21142C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N8S21142C2D0Ev,_ZTv0_n52_N8S21142C2D0Ev)();
extern void ABISELECT(_ZThn128_N8S21142C2D0Ev,_ZThn84_N8S21142C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21142C6__8S21142C2__8S21142C1[] = {
  ABISELECT(-128,-84),
  ABISELECT(-144,-88),
  ABISELECT(392,280),
  ABISELECT(352,248),
  ABISELECT(336,244),
  ABISELECT(312,228),
  ABISELECT(272,196),
  ABISELECT(176,128),
  ABISELECT(416,292),
  ABISELECT(-24,-12),
  ABISELECT(280,200),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S21142C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S21142C2D1Ev,_ZTv0_n52_N8S21142C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S21142C2D0Ev,_ZTv0_n52_N8S21142C2D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N8S21142C2D1Ev,_ZTv0_n28_N8S21142C2D1Ev)();
extern void ABISELECT(_ZThn304_N8S21142C2D1Ev,_ZThn212_N8S21142C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21142C2D0Ev,_ZTv0_n28_N8S21142C2D0Ev)();
extern void ABISELECT(_ZThn304_N8S21142C2D0Ev,_ZThn212_N8S21142C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21142C7__8S21142C2__8S21142C1[] = {
  ABISELECT(-304,-212),
  ABISELECT(136,100),
  ABISELECT(-200,-140),
  ABISELECT(104,72),
  ABISELECT(96,68),
  ABISELECT(-304,-212),
  (VTBL_ENTRY)&(_ZTI8S21142C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21142C2D1Ev,_ZTv0_n28_N8S21142C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21142C2D0Ev,_ZTv0_n28_N8S21142C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21142C2D1Ev,_ZTv0_n20_N8S21142C2D1Ev)();
extern void ABISELECT(_ZThn400_N8S21142C2D1Ev,_ZThn280_N8S21142C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21142C2D0Ev,_ZTv0_n20_N8S21142C2D0Ev)();
extern void ABISELECT(_ZThn400_N8S21142C2D0Ev,_ZThn280_N8S21142C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21142C9__8S21142C2__8S21142C1[] = {
  ABISELECT(-400,-280),
  ABISELECT(-296,-208),
  ABISELECT(8,4),
  ABISELECT(-400,-280),
  (VTBL_ENTRY)&(_ZTI8S21142C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21142C2D1Ev,_ZTv0_n20_N8S21142C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21142C2D0Ev,_ZTv0_n20_N8S21142C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21142C2D1Ev,_ZTv0_n12_N8S21142C2D1Ev)();
extern void ABISELECT(_ZThn408_N8S21142C2D1Ev,_ZThn284_N8S21142C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C2D0Ev,_ZTv0_n12_N8S21142C2D0Ev)();
extern void ABISELECT(_ZThn408_N8S21142C2D0Ev,_ZThn284_N8S21142C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C10__8S21142C2__8S21142C1[] = {
  ABISELECT(-408,-284),
  ABISELECT(-408,-284),
  (VTBL_ENTRY)&(_ZTI8S21142C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C2D1Ev,_ZTv0_n12_N8S21142C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C2D0Ev,_ZTv0_n12_N8S21142C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n56_N8S21142C2D1Ev,_ZTvn12_n28_N8S21142C2D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S21142C2D0Ev,_ZTvn12_n28_N8S21142C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt8S21142C88S21142C7__8S21142C2__8S21142C1[] = {
  ABISELECT(-320,-224),
  (VTBL_ENTRY)&(_ZTI8S21142C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S21142C2D1Ev,_ZTvn12_n28_N8S21142C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S21142C2D0Ev,_ZTvn12_n28_N8S21142C2D0Ev),
};
extern void ABISELECT(_ZTvn40_n56_N8S21142C2D1Ev,_ZTvn28_n28_N8S21142C2D1Ev)();
extern void ABISELECT(_ZTvn40_n56_N8S21142C2D0Ev,_ZTvn28_n28_N8S21142C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21142C108S21142C88S21142C7__A1__8S21142C2__8S21142C1[] = {
  ABISELECT(-344,-240),
  (VTBL_ENTRY)&(_ZTI8S21142C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n56_N8S21142C2D1Ev,_ZTvn28_n28_N8S21142C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n56_N8S21142C2D0Ev,_ZTvn28_n28_N8S21142C2D0Ev),
};
extern void ABISELECT(_ZTvn88_n56_N8S21142C2D1Ev,_ZTvn64_n28_N8S21142C2D1Ev)();
extern void ABISELECT(_ZTvn88_n56_N8S21142C2D0Ev,_ZTvn64_n28_N8S21142C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21142C98S21142C7__A1__8S21142C2__8S21142C1[] = {
  ABISELECT(-288,-204),
  ABISELECT(16,8),
  ABISELECT(-392,-276),
  (VTBL_ENTRY)&(_ZTI8S21142C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn88_n56_N8S21142C2D1Ev,_ZTvn64_n28_N8S21142C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn88_n56_N8S21142C2D0Ev,_ZTvn64_n28_N8S21142C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21142C2D1Ev,_ZTv0_n12_N8S21142C2D1Ev)();
extern void ABISELECT(_ZThn440_N8S21142C2D1Ev,_ZThn312_N8S21142C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C2D0Ev,_ZTv0_n12_N8S21142C2D0Ev)();
extern void ABISELECT(_ZThn440_N8S21142C2D0Ev,_ZThn312_N8S21142C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt__A1__8S21142C2__8S21142C1[] = {
  ABISELECT(-440,-312),
  ABISELECT(-440,-312),
  (VTBL_ENTRY)&(_ZTI8S21142C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C2D1Ev,_ZTv0_n12_N8S21142C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C2D0Ev,_ZTv0_n12_N8S21142C2D0Ev),
};
extern void ABISELECT(_ZTv0_n80_N8S21142C2D1Ev,_ZTv0_n40_N8S21142C2D1Ev)();
extern void ABISELECT(_ZThn464_N8S21142C2D1Ev,_ZThn328_N8S21142C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21142C2D0Ev,_ZTv0_n40_N8S21142C2D0Ev)();
extern void ABISELECT(_ZThn464_N8S21142C2D0Ev,_ZThn328_N8S21142C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C12__8S21142C2__8S21142C1[] = {
  ABISELECT(-464,-328),
  ABISELECT(-480,-332),
  ABISELECT(-24,-16),
  ABISELECT(56,36),
  ABISELECT(16,4),
  ABISELECT(-56,-44),
  ABISELECT(-64,-48),
  ABISELECT(-360,-256),
  ABISELECT(-464,-328),
  (VTBL_ENTRY)&(_ZTI8S21142C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21142C2D1Ev,_ZTv0_n40_N8S21142C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21142C2D0Ev,_ZTv0_n40_N8S21142C2D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S21142C2D1Ev,_ZTv0_n36_N8S21142C2D1Ev)();
extern void ABISELECT(_ZThn480_N8S21142C2D1Ev,_ZThn332_N8S21142C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S21142C2D0Ev,_ZTv0_n36_N8S21142C2D0Ev)();
extern void ABISELECT(_ZThn480_N8S21142C2D0Ev,_ZThn332_N8S21142C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C13__8S21142C2__8S21142C1[] = {
  ABISELECT(-480,-332),
  ABISELECT(-496,-336),
  ABISELECT(-376,-260),
  ABISELECT(-72,-48),
  ABISELECT(-80,-52),
  ABISELECT(-40,-20),
  ABISELECT(40,32),
  ABISELECT(-480,-332),
  (VTBL_ENTRY)&(_ZTI8S21142C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21142C2D1Ev,_ZTv0_n36_N8S21142C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21142C2D0Ev,_ZTv0_n36_N8S21142C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21142C2D1Ev,_ZTv0_n16_N8S21142C2D1Ev)();
extern void ABISELECT(_ZThn520_N8S21142C2D1Ev,_ZThn364_N8S21142C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21142C2D0Ev,_ZTv0_n16_N8S21142C2D0Ev)();
extern void ABISELECT(_ZThn520_N8S21142C2D0Ev,_ZThn364_N8S21142C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C15__8S21142C2__8S21142C1[] = {
  ABISELECT(-520,-364),
  ABISELECT(-80,-52),
  ABISELECT(-520,-364),
  (VTBL_ENTRY)&(_ZTI8S21142C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21142C2D1Ev,_ZTv0_n16_N8S21142C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21142C2D0Ev,_ZTv0_n16_N8S21142C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21142C2D1Ev,_ZTv0_n16_N8S21142C2D1Ev)();
extern void ABISELECT(_ZThn544_N8S21142C2D1Ev,_ZThn376_N8S21142C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21142C2D0Ev,_ZTv0_n16_N8S21142C2D0Ev)();
extern void ABISELECT(_ZThn544_N8S21142C2D0Ev,_ZThn376_N8S21142C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C17__8S21142C2__8S21142C1[] = {
  ABISELECT(-544,-376),
  ABISELECT(-440,-304),
  ABISELECT(-544,-376),
  (VTBL_ENTRY)&(_ZTI8S21142C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21142C2D1Ev,_ZTv0_n16_N8S21142C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21142C2D0Ev,_ZTv0_n16_N8S21142C2D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S21142C2D1Ev,_ZTv0_n24_N8S21142C2D1Ev)();
extern void ABISELECT(_ZThn560_N8S21142C2D1Ev,_ZThn388_N8S21142C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21142C2D0Ev,_ZTv0_n24_N8S21142C2D0Ev)();
extern void ABISELECT(_ZThn560_N8S21142C2D0Ev,_ZThn388_N8S21142C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21142C8__A1__8S21142C2__8S21142C1[] = {
  ABISELECT(-560,-388),
  ABISELECT(-456,-316),
  ABISELECT(-152,-104),
  ABISELECT(-160,-108),
  ABISELECT(-560,-388),
  (VTBL_ENTRY)&(_ZTI8S21142C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21142C2D1Ev,_ZTv0_n24_N8S21142C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21142C2D0Ev,_ZTv0_n24_N8S21142C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n48_N8S21142C2D1Ev,_ZTvn12_n24_N8S21142C2D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N8S21142C2D0Ev,_ZTvn12_n24_N8S21142C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt8S21142C8__A2__8S21142C2__8S21142C1[] = {
  ABISELECT(-576,-400),
  (VTBL_ENTRY)&(_ZTI8S21142C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S21142C2D1Ev,_ZTvn12_n24_N8S21142C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S21142C2D0Ev,_ZTvn12_n24_N8S21142C2D0Ev),
};
extern void ABISELECT(_ZTvn40_n48_N8S21142C2D1Ev,_ZTvn28_n24_N8S21142C2D1Ev)();
extern void ABISELECT(_ZTvn40_n48_N8S21142C2D0Ev,_ZTvn28_n24_N8S21142C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21142C108S21142C8__A2__8S21142C2__8S21142C1[] = {
  ABISELECT(-600,-416),
  (VTBL_ENTRY)&(_ZTI8S21142C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n48_N8S21142C2D1Ev,_ZTvn28_n24_N8S21142C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n48_N8S21142C2D0Ev,_ZTvn28_n24_N8S21142C2D0Ev),
};
extern void _ZN8S21142C3D1Ev();
extern void _ZN8S21142C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21142C3__8S21142C1[] = {
  ABISELECT(120,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S21142C3[0]),
  (VTBL_ENTRY)&_ZN8S21142C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21142C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21142C3D1Ev,_ZTv0_n12_N8S21142C3D1Ev)();
extern void ABISELECT(_ZThn120_N8S21142C3D1Ev,_ZThn76_N8S21142C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C3D0Ev,_ZTv0_n12_N8S21142C3D0Ev)();
extern void ABISELECT(_ZThn120_N8S21142C3D0Ev,_ZThn76_N8S21142C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__8S21142C3__8S21142C1[] = {
  ABISELECT(-120,-76),
  ABISELECT(-120,-76),
  (VTBL_ENTRY)&(_ZTI8S21142C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C3D1Ev,_ZTv0_n12_N8S21142C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C3D0Ev,_ZTv0_n12_N8S21142C3D0Ev),
};
extern void _ZN8S21142C6D1Ev();
extern void _ZN8S21142C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21142C6__8S21142C1[] = {
  ABISELECT(-144,-88),
  ABISELECT(392,280),
  ABISELECT(352,248),
  ABISELECT(336,244),
  ABISELECT(312,228),
  ABISELECT(272,196),
  ABISELECT(176,128),
  ABISELECT(416,292),
  ABISELECT(-24,-12),
  ABISELECT(280,200),
  0,
  (VTBL_ENTRY)&(_ZTI8S21142C6[0]),
  (VTBL_ENTRY)&_ZN8S21142C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21142C6D0Ev,
};
extern void _ZN9S21142C16D1Ev();
extern void _ZN9S21142C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21142C168S21142C6__8S21142C1[] = {
  ABISELECT(416,292),
  ABISELECT(-24,-12),
  ABISELECT(280,200),
  0,
  (VTBL_ENTRY)&(_ZTI9S21142C16[0]),
  (VTBL_ENTRY)&_ZN9S21142C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21142C16D0Ev,
};
extern void _ZN8S21142C9D1Ev();
extern void _ZN8S21142C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21142C99S21142C168S21142C6__A2__8S21142C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(280,200),
  0,
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&_ZN8S21142C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21142C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev)();
extern void ABISELECT(_ZThn280_N8S21142C9D1Ev,_ZThn200_N8S21142C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev)();
extern void ABISELECT(_ZThn280_N8S21142C9D0Ev,_ZThn200_N8S21142C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C10__8S21142C99S21142C168S21142C6__A2__8S21142C1[] = {
  ABISELECT(-280,-200),
  ABISELECT(-280,-200),
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__8S21142C99S21142C168S21142C6__A2__8S21142C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21142C16D1Ev,_ZTv0_n12_N9S21142C16D1Ev)();
extern void ABISELECT(_ZThn280_N9S21142C16D1Ev,_ZThn200_N9S21142C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21142C16D0Ev,_ZTv0_n12_N9S21142C16D0Ev)();
extern void ABISELECT(_ZThn280_N9S21142C16D0Ev,_ZThn200_N9S21142C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C10__9S21142C168S21142C6__8S21142C1[] = {
  ABISELECT(-280,-200),
  ABISELECT(-280,-200),
  (VTBL_ENTRY)&(_ZTI9S21142C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C16D1Ev,_ZTv0_n12_N9S21142C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C16D0Ev,_ZTv0_n12_N9S21142C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21142C16D1Ev,_ZTv0_n12_N9S21142C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21142C16D0Ev,_ZTv0_n12_N9S21142C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__9S21142C168S21142C6__8S21142C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S21142C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C16D1Ev,_ZTv0_n12_N9S21142C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C16D0Ev,_ZTv0_n12_N9S21142C16D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21142C16D1Ev,_ZTv0_n16_N9S21142C16D1Ev)();
extern void ABISELECT(_ZThn416_N9S21142C16D1Ev,_ZThn292_N9S21142C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21142C16D0Ev,_ZTv0_n16_N9S21142C16D0Ev)();
extern void ABISELECT(_ZThn416_N9S21142C16D0Ev,_ZThn292_N9S21142C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C17__9S21142C168S21142C6__8S21142C1[] = {
  ABISELECT(-416,-292),
  ABISELECT(-440,-304),
  ABISELECT(-416,-292),
  (VTBL_ENTRY)&(_ZTI9S21142C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C16D1Ev,_ZTv0_n16_N9S21142C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C16D0Ev,_ZTv0_n16_N9S21142C16D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N8S21142C6D1Ev,_ZTv0_n28_N8S21142C6D1Ev)();
extern void ABISELECT(_ZThn176_N8S21142C6D1Ev,_ZThn128_N8S21142C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21142C6D0Ev,_ZTv0_n28_N8S21142C6D0Ev)();
extern void ABISELECT(_ZThn176_N8S21142C6D0Ev,_ZThn128_N8S21142C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21142C7__8S21142C6__8S21142C1[] = {
  ABISELECT(-176,-128),
  ABISELECT(136,100),
  ABISELECT(-200,-140),
  ABISELECT(104,72),
  ABISELECT(96,68),
  ABISELECT(-176,-128),
  (VTBL_ENTRY)&(_ZTI8S21142C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21142C6D1Ev,_ZTv0_n28_N8S21142C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21142C6D0Ev,_ZTv0_n28_N8S21142C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21142C6D1Ev,_ZTv0_n20_N8S21142C6D1Ev)();
extern void ABISELECT(_ZThn272_N8S21142C6D1Ev,_ZThn196_N8S21142C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21142C6D0Ev,_ZTv0_n20_N8S21142C6D0Ev)();
extern void ABISELECT(_ZThn272_N8S21142C6D0Ev,_ZThn196_N8S21142C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21142C9__8S21142C6__8S21142C1[] = {
  ABISELECT(-272,-196),
  ABISELECT(-296,-208),
  ABISELECT(8,4),
  ABISELECT(-272,-196),
  (VTBL_ENTRY)&(_ZTI8S21142C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21142C6D1Ev,_ZTv0_n20_N8S21142C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21142C6D0Ev,_ZTv0_n20_N8S21142C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21142C6D1Ev,_ZTv0_n12_N8S21142C6D1Ev)();
extern void ABISELECT(_ZThn280_N8S21142C6D1Ev,_ZThn200_N8S21142C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C6D0Ev,_ZTv0_n12_N8S21142C6D0Ev)();
extern void ABISELECT(_ZThn280_N8S21142C6D0Ev,_ZThn200_N8S21142C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C10__8S21142C6__8S21142C1[] = {
  ABISELECT(-280,-200),
  ABISELECT(-280,-200),
  (VTBL_ENTRY)&(_ZTI8S21142C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C6D1Ev,_ZTv0_n12_N8S21142C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C6D0Ev,_ZTv0_n12_N8S21142C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21142C6D1Ev,_ZTv0_n12_N8S21142C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21142C6D0Ev,_ZTv0_n12_N8S21142C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__8S21142C6__8S21142C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S21142C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C6D1Ev,_ZTv0_n12_N8S21142C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C6D0Ev,_ZTv0_n12_N8S21142C6D0Ev),
};
extern void ABISELECT(_ZTvn16_n56_N8S21142C6D1Ev,_ZTvn12_n28_N8S21142C6D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S21142C6D0Ev,_ZTvn12_n28_N8S21142C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt8S21142C88S21142C7__8S21142C6__8S21142C1[] = {
  ABISELECT(-192,-140),
  (VTBL_ENTRY)&(_ZTI8S21142C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S21142C6D1Ev,_ZTvn12_n28_N8S21142C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S21142C6D0Ev,_ZTvn12_n28_N8S21142C6D0Ev),
};
extern void ABISELECT(_ZTvn40_n56_N8S21142C6D1Ev,_ZTvn28_n28_N8S21142C6D1Ev)();
extern void ABISELECT(_ZTvn40_n56_N8S21142C6D0Ev,_ZTvn28_n28_N8S21142C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21142C108S21142C88S21142C7__A1__8S21142C6__8S21142C1[] = {
  ABISELECT(-216,-156),
  (VTBL_ENTRY)&(_ZTI8S21142C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n56_N8S21142C6D1Ev,_ZTvn28_n28_N8S21142C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n56_N8S21142C6D0Ev,_ZTvn28_n28_N8S21142C6D0Ev),
};
extern void ABISELECT(_ZTvn88_n56_N8S21142C6D1Ev,_ZTvn64_n28_N8S21142C6D1Ev)();
extern void ABISELECT(_ZTvn88_n56_N8S21142C6D0Ev,_ZTvn64_n28_N8S21142C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21142C98S21142C7__A1__8S21142C6__8S21142C1[] = {
  ABISELECT(-288,-204),
  ABISELECT(16,8),
  ABISELECT(-264,-192),
  (VTBL_ENTRY)&(_ZTI8S21142C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn88_n56_N8S21142C6D1Ev,_ZTvn64_n28_N8S21142C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn88_n56_N8S21142C6D0Ev,_ZTvn64_n28_N8S21142C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21142C6D1Ev,_ZTv0_n12_N8S21142C6D1Ev)();
extern void ABISELECT(_ZThn312_N8S21142C6D1Ev,_ZThn228_N8S21142C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C6D0Ev,_ZTv0_n12_N8S21142C6D0Ev)();
extern void ABISELECT(_ZThn312_N8S21142C6D0Ev,_ZThn228_N8S21142C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt__A1__8S21142C6__8S21142C1[] = {
  ABISELECT(-312,-228),
  ABISELECT(-312,-228),
  (VTBL_ENTRY)&(_ZTI8S21142C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C6D1Ev,_ZTv0_n12_N8S21142C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C6D0Ev,_ZTv0_n12_N8S21142C6D0Ev),
};
extern void ABISELECT(_ZTv0_n80_N8S21142C6D1Ev,_ZTv0_n40_N8S21142C6D1Ev)();
extern void ABISELECT(_ZThn336_N8S21142C6D1Ev,_ZThn244_N8S21142C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21142C6D0Ev,_ZTv0_n40_N8S21142C6D0Ev)();
extern void ABISELECT(_ZThn336_N8S21142C6D0Ev,_ZThn244_N8S21142C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C12__8S21142C6__8S21142C1[] = {
  ABISELECT(-336,-244),
  ABISELECT(-480,-332),
  ABISELECT(-24,-16),
  ABISELECT(56,36),
  ABISELECT(16,4),
  ABISELECT(-56,-44),
  ABISELECT(-64,-48),
  ABISELECT(-360,-256),
  ABISELECT(-336,-244),
  (VTBL_ENTRY)&(_ZTI8S21142C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21142C6D1Ev,_ZTv0_n40_N8S21142C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21142C6D0Ev,_ZTv0_n40_N8S21142C6D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N8S21142C6D1Ev,_ZTv0_n36_N8S21142C6D1Ev)();
extern void ABISELECT(_ZThn352_N8S21142C6D1Ev,_ZThn248_N8S21142C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S21142C6D0Ev,_ZTv0_n36_N8S21142C6D0Ev)();
extern void ABISELECT(_ZThn352_N8S21142C6D0Ev,_ZThn248_N8S21142C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C13__8S21142C6__8S21142C1[] = {
  ABISELECT(-352,-248),
  ABISELECT(-496,-336),
  ABISELECT(-376,-260),
  ABISELECT(-72,-48),
  ABISELECT(-80,-52),
  ABISELECT(-40,-20),
  ABISELECT(40,32),
  ABISELECT(-352,-248),
  (VTBL_ENTRY)&(_ZTI8S21142C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21142C6D1Ev,_ZTv0_n36_N8S21142C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21142C6D0Ev,_ZTv0_n36_N8S21142C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21142C6D1Ev,_ZTv0_n16_N8S21142C6D1Ev)();
extern void ABISELECT(_ZThn392_N8S21142C6D1Ev,_ZThn280_N8S21142C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21142C6D0Ev,_ZTv0_n16_N8S21142C6D0Ev)();
extern void ABISELECT(_ZThn392_N8S21142C6D0Ev,_ZThn280_N8S21142C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C15__8S21142C6__8S21142C1[] = {
  ABISELECT(-392,-280),
  ABISELECT(-80,-52),
  ABISELECT(-392,-280),
  (VTBL_ENTRY)&(_ZTI8S21142C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21142C6D1Ev,_ZTv0_n16_N8S21142C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21142C6D0Ev,_ZTv0_n16_N8S21142C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21142C6D1Ev,_ZTv0_n16_N8S21142C6D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21142C6D0Ev,_ZTv0_n16_N8S21142C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21142C3__A1__8S21142C6__8S21142C1[] = {
  ABISELECT(144,88),
  ABISELECT(120,76),
  ABISELECT(144,88),
  (VTBL_ENTRY)&(_ZTI8S21142C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21142C6D1Ev,_ZTv0_n16_N8S21142C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21142C6D0Ev,_ZTv0_n16_N8S21142C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21142C6D1Ev,_ZTv0_n16_N8S21142C6D1Ev)();
extern void ABISELECT(_ZThn416_N8S21142C6D1Ev,_ZThn292_N8S21142C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21142C6D0Ev,_ZTv0_n16_N8S21142C6D0Ev)();
extern void ABISELECT(_ZThn416_N8S21142C6D0Ev,_ZThn292_N8S21142C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C17__8S21142C6__8S21142C1[] = {
  ABISELECT(-416,-292),
  ABISELECT(-440,-304),
  ABISELECT(-416,-292),
  (VTBL_ENTRY)&(_ZTI8S21142C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21142C6D1Ev,_ZTv0_n16_N8S21142C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21142C6D0Ev,_ZTv0_n16_N8S21142C6D0Ev),
};
extern void _ZN8S21142C7D1Ev();
extern void _ZN8S21142C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21142C7__8S21142C1[] = {
  ABISELECT(136,100),
  ABISELECT(-200,-140),
  ABISELECT(104,72),
  ABISELECT(96,68),
  0,
  (VTBL_ENTRY)&(_ZTI8S21142C7[0]),
  (VTBL_ENTRY)&_ZN8S21142C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21142C7D0Ev,
};
extern void _ZN8S21142C8D1Ev();
extern void _ZN8S21142C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21142C88S21142C7__8S21142C1[] = {
  ABISELECT(-200,-140),
  ABISELECT(104,72),
  ABISELECT(96,68),
  0,
  (VTBL_ENTRY)&(_ZTI8S21142C8[0]),
  (VTBL_ENTRY)&_ZN8S21142C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21142C8D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S21142C8D1Ev,_ZTv0_n20_N8S21142C8D1Ev)();
extern void ABISELECT(_ZThn96_N8S21142C8D1Ev,_ZThn68_N8S21142C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21142C8D0Ev,_ZTv0_n20_N8S21142C8D0Ev)();
extern void ABISELECT(_ZThn96_N8S21142C8D0Ev,_ZThn68_N8S21142C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21142C9__8S21142C88S21142C7__8S21142C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(-296,-208),
  ABISELECT(8,4),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI8S21142C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21142C8D1Ev,_ZTv0_n20_N8S21142C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21142C8D0Ev,_ZTv0_n20_N8S21142C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21142C8D1Ev,_ZTv0_n12_N8S21142C8D1Ev)();
extern void ABISELECT(_ZThn104_N8S21142C8D1Ev,_ZThn72_N8S21142C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C8D0Ev,_ZTv0_n12_N8S21142C8D0Ev)();
extern void ABISELECT(_ZThn104_N8S21142C8D0Ev,_ZThn72_N8S21142C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C10__8S21142C88S21142C7__8S21142C1[] = {
  ABISELECT(-104,-72),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI8S21142C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C8D1Ev,_ZTv0_n12_N8S21142C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C8D0Ev,_ZTv0_n12_N8S21142C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21142C8D1Ev,_ZTv0_n12_N8S21142C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21142C8D0Ev,_ZTv0_n12_N8S21142C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__8S21142C88S21142C7__8S21142C1[] = {
  ABISELECT(200,140),
  ABISELECT(200,140),
  (VTBL_ENTRY)&(_ZTI8S21142C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C8D1Ev,_ZTv0_n12_N8S21142C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C8D0Ev,_ZTv0_n12_N8S21142C8D0Ev),
};
extern void _ZN8S21142C9D1Ev();
extern void _ZN8S21142C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21142C98S21142C7__A1__8S21142C1[] = {
  ABISELECT(-288,-204),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&_ZN8S21142C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21142C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S21142C9D1Ev,_ZThn8_N8S21142C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev)();
extern void ABISELECT(_ZThn16_N8S21142C9D0Ev,_ZThn8_N8S21142C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C10__8S21142C98S21142C7__A1__8S21142C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__8S21142C98S21142C7__A1__8S21142C1[] = {
  ABISELECT(288,204),
  ABISELECT(288,204),
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21142C7D1Ev,_ZTv0_n20_N8S21142C7D1Ev)();
extern void ABISELECT(_ZThn96_N8S21142C7D1Ev,_ZThn68_N8S21142C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21142C7D0Ev,_ZTv0_n20_N8S21142C7D0Ev)();
extern void ABISELECT(_ZThn96_N8S21142C7D0Ev,_ZThn68_N8S21142C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21142C9__8S21142C7__8S21142C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(-296,-208),
  ABISELECT(8,4),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI8S21142C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21142C7D1Ev,_ZTv0_n20_N8S21142C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21142C7D0Ev,_ZTv0_n20_N8S21142C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21142C7D1Ev,_ZTv0_n12_N8S21142C7D1Ev)();
extern void ABISELECT(_ZThn104_N8S21142C7D1Ev,_ZThn72_N8S21142C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C7D0Ev,_ZTv0_n12_N8S21142C7D0Ev)();
extern void ABISELECT(_ZThn104_N8S21142C7D0Ev,_ZThn72_N8S21142C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C10__8S21142C7__8S21142C1[] = {
  ABISELECT(-104,-72),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI8S21142C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C7D1Ev,_ZTv0_n12_N8S21142C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C7D0Ev,_ZTv0_n12_N8S21142C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21142C7D1Ev,_ZTv0_n12_N8S21142C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21142C7D0Ev,_ZTv0_n12_N8S21142C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__8S21142C7__8S21142C1[] = {
  ABISELECT(200,140),
  ABISELECT(200,140),
  (VTBL_ENTRY)&(_ZTI8S21142C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C7D1Ev,_ZTv0_n12_N8S21142C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C7D0Ev,_ZTv0_n12_N8S21142C7D0Ev),
};
extern void ABISELECT(_ZThn88_N8S21142C7D1Ev,_ZThn64_N8S21142C7D1Ev)();
extern void ABISELECT(_ZThn88_N8S21142C7D0Ev,_ZThn64_N8S21142C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21142C9__A__8S21142C7__8S21142C1[] = {
  ABISELECT(-288,-204),
  ABISELECT(16,8),
  ABISELECT(-88,-64),
  (VTBL_ENTRY)&(_ZTI8S21142C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn88_N8S21142C7D1Ev,_ZThn64_N8S21142C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn88_N8S21142C7D0Ev,_ZThn64_N8S21142C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21142C7D1Ev,_ZTv0_n12_N8S21142C7D1Ev)();
extern void ABISELECT(_ZThn136_N8S21142C7D1Ev,_ZThn100_N8S21142C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C7D0Ev,_ZTv0_n12_N8S21142C7D0Ev)();
extern void ABISELECT(_ZThn136_N8S21142C7D0Ev,_ZThn100_N8S21142C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt__A1__8S21142C7__8S21142C1[] = {
  ABISELECT(-136,-100),
  ABISELECT(-136,-100),
  (VTBL_ENTRY)&(_ZTI8S21142C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C7D1Ev,_ZTv0_n12_N8S21142C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C7D0Ev,_ZTv0_n12_N8S21142C7D0Ev),
};
extern void _ZN8S21142C9D1Ev();
extern void _ZN8S21142C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21142C9__8S21142C1[] = {
  ABISELECT(-296,-208),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&_ZN8S21142C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21142C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev)();
extern void ABISELECT(_ZThn8_N8S21142C9D1Ev,_ZThn4_N8S21142C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev)();
extern void ABISELECT(_ZThn8_N8S21142C9D0Ev,_ZThn4_N8S21142C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C10__8S21142C9__8S21142C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__8S21142C9__8S21142C1[] = {
  ABISELECT(296,208),
  ABISELECT(296,208),
  (VTBL_ENTRY)&(_ZTI8S21142C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev),
};
extern void _ZN9S21142C12D1Ev();
extern void _ZN9S21142C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21142C12__8S21142C1[] = {
  ABISELECT(-480,-332),
  ABISELECT(-24,-16),
  ABISELECT(56,36),
  ABISELECT(16,4),
  ABISELECT(-56,-44),
  ABISELECT(-64,-48),
  ABISELECT(-360,-256),
  0,
  (VTBL_ENTRY)&(_ZTI9S21142C12[0]),
  (VTBL_ENTRY)&_ZN9S21142C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21142C12D0Ev,
};
extern void _ZN8S21142C3D1Ev();
extern void _ZN8S21142C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21142C39S21142C12__A1__8S21142C1[] = {
  ABISELECT(-360,-256),
  0,
  (VTBL_ENTRY)&(_ZTI8S21142C3[0]),
  (VTBL_ENTRY)&_ZN8S21142C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21142C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21142C3D1Ev,_ZTv0_n12_N8S21142C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21142C3D0Ev,_ZTv0_n12_N8S21142C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__8S21142C39S21142C12__A1__8S21142C1[] = {
  ABISELECT(360,256),
  ABISELECT(360,256),
  (VTBL_ENTRY)&(_ZTI8S21142C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C3D1Ev,_ZTv0_n12_N8S21142C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C3D0Ev,_ZTv0_n12_N8S21142C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21142C12D1Ev,_ZTv0_n20_N9S21142C12D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21142C12D0Ev,_ZTv0_n20_N9S21142C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21142C9__9S21142C12__8S21142C1[] = {
  ABISELECT(64,48),
  ABISELECT(-296,-208),
  ABISELECT(8,4),
  ABISELECT(64,48),
  (VTBL_ENTRY)&(_ZTI9S21142C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21142C12D1Ev,_ZTv0_n20_N9S21142C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21142C12D0Ev,_ZTv0_n20_N9S21142C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21142C12D1Ev,_ZTv0_n12_N9S21142C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21142C12D0Ev,_ZTv0_n12_N9S21142C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21142C10__9S21142C12__8S21142C1[] = {
  ABISELECT(56,44),
  ABISELECT(56,44),
  (VTBL_ENTRY)&(_ZTI9S21142C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C12D1Ev,_ZTv0_n12_N9S21142C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C12D0Ev,_ZTv0_n12_N9S21142C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21142C12D1Ev,_ZTv0_n12_N9S21142C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21142C12D0Ev,_ZTv0_n12_N9S21142C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__9S21142C12__8S21142C1[] = {
  ABISELECT(360,256),
  ABISELECT(360,256),
  (VTBL_ENTRY)&(_ZTI9S21142C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C12D1Ev,_ZTv0_n12_N9S21142C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C12D0Ev,_ZTv0_n12_N9S21142C12D0Ev),
};
extern void ABISELECT(_ZTv0_n72_N9S21142C12D1Ev,_ZTv0_n36_N9S21142C12D1Ev)();
extern void ABISELECT(_ZThn16_N9S21142C12D1Ev,_ZThn4_N9S21142C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S21142C12D0Ev,_ZTv0_n36_N9S21142C12D0Ev)();
extern void ABISELECT(_ZThn16_N9S21142C12D0Ev,_ZThn4_N9S21142C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C13__9S21142C12__8S21142C1[] = {
  ABISELECT(-16,-4),
  ABISELECT(-496,-336),
  ABISELECT(-376,-260),
  ABISELECT(-72,-48),
  ABISELECT(-80,-52),
  ABISELECT(-40,-20),
  ABISELECT(40,32),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI9S21142C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21142C12D1Ev,_ZTv0_n36_N9S21142C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21142C12D0Ev,_ZTv0_n36_N9S21142C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21142C12D1Ev,_ZTv0_n16_N9S21142C12D1Ev)();
extern void ABISELECT(_ZThn56_N9S21142C12D1Ev,_ZThn36_N9S21142C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21142C12D0Ev,_ZTv0_n16_N9S21142C12D0Ev)();
extern void ABISELECT(_ZThn56_N9S21142C12D0Ev,_ZThn36_N9S21142C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C15__9S21142C12__8S21142C1[] = {
  ABISELECT(-56,-36),
  ABISELECT(-80,-52),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI9S21142C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C12D1Ev,_ZTv0_n16_N9S21142C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C12D0Ev,_ZTv0_n16_N9S21142C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21142C12D1Ev,_ZTv0_n12_N9S21142C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21142C12D0Ev,_ZTv0_n12_N9S21142C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt__9S21142C12__8S21142C1[] = {
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI9S21142C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C12D1Ev,_ZTv0_n12_N9S21142C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C12D0Ev,_ZTv0_n12_N9S21142C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21142C12D1Ev,_ZTv0_n16_N9S21142C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21142C12D0Ev,_ZTv0_n16_N9S21142C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21142C3__A1__9S21142C12__8S21142C1[] = {
  ABISELECT(480,332),
  ABISELECT(120,76),
  ABISELECT(480,332),
  (VTBL_ENTRY)&(_ZTI9S21142C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C12D1Ev,_ZTv0_n16_N9S21142C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C12D0Ev,_ZTv0_n16_N9S21142C12D0Ev),
};
extern void _ZN9S21142C13D1Ev();
extern void _ZN9S21142C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21142C13__8S21142C1[] = {
  ABISELECT(-496,-336),
  ABISELECT(-376,-260),
  ABISELECT(-72,-48),
  ABISELECT(-80,-52),
  ABISELECT(-40,-20),
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&_ZN9S21142C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21142C13D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S21142C13D1Ev,_ZTv0_n16_N9S21142C13D1Ev)();
extern void ABISELECT(_ZThn40_N9S21142C13D1Ev,_ZThn32_N9S21142C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21142C13D0Ev,_ZTv0_n16_N9S21142C13D0Ev)();
extern void ABISELECT(_ZThn40_N9S21142C13D0Ev,_ZThn32_N9S21142C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21142C15__9S21142C13__8S21142C1[] = {
  ABISELECT(-40,-32),
  ABISELECT(-80,-52),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C13D1Ev,_ZTv0_n16_N9S21142C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C13D0Ev,_ZTv0_n16_N9S21142C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt__9S21142C13__8S21142C1[] = {
  ABISELECT(40,20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21142C13D1Ev,_ZTv0_n20_N9S21142C13D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21142C13D0Ev,_ZTv0_n20_N9S21142C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21142C9__9S21142C13__8S21142C1[] = {
  ABISELECT(80,52),
  ABISELECT(-296,-208),
  ABISELECT(8,4),
  ABISELECT(80,52),
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21142C13D1Ev,_ZTv0_n20_N9S21142C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21142C13D0Ev,_ZTv0_n20_N9S21142C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21142C10__9S21142C13__8S21142C1[] = {
  ABISELECT(72,48),
  ABISELECT(72,48),
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__9S21142C13__8S21142C1[] = {
  ABISELECT(376,260),
  ABISELECT(376,260),
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21142C13D1Ev,_ZTv0_n16_N9S21142C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21142C13D0Ev,_ZTv0_n16_N9S21142C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21142C3__9S21142C13__8S21142C1[] = {
  ABISELECT(496,336),
  ABISELECT(120,76),
  ABISELECT(496,336),
  (VTBL_ENTRY)&(_ZTI9S21142C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C13D1Ev,_ZTv0_n16_N9S21142C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21142C13D0Ev,_ZTv0_n16_N9S21142C13D0Ev),
};
extern void _ZN9S21142C15D1Ev();
extern void _ZN9S21142C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21142C15__8S21142C1[] = {
  ABISELECT(-80,-52),
  0,
  (VTBL_ENTRY)&(_ZTI9S21142C15[0]),
  (VTBL_ENTRY)&_ZN9S21142C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21142C15D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21142C15D1Ev,_ZTv0_n12_N9S21142C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21142C15D0Ev,_ZTv0_n12_N9S21142C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt__9S21142C15__8S21142C1[] = {
  ABISELECT(80,52),
  ABISELECT(80,52),
  (VTBL_ENTRY)&(_ZTI9S21142C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C15D1Ev,_ZTv0_n12_N9S21142C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C15D0Ev,_ZTv0_n12_N9S21142C15D0Ev),
};
extern void _ZN9S21142C17D1Ev();
extern void _ZN9S21142C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21142C17__8S21142C1[] = {
  ABISELECT(-440,-304),
  0,
  (VTBL_ENTRY)&(_ZTI9S21142C17[0]),
  (VTBL_ENTRY)&_ZN9S21142C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21142C17D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21142C17D1Ev,_ZTv0_n12_N9S21142C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21142C17D0Ev,_ZTv0_n12_N9S21142C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__9S21142C17__8S21142C1[] = {
  ABISELECT(440,304),
  ABISELECT(440,304),
  (VTBL_ENTRY)&(_ZTI9S21142C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C17D1Ev,_ZTv0_n12_N9S21142C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21142C17D0Ev,_ZTv0_n12_N9S21142C17D0Ev),
};
extern void _ZN8S21142C8D1Ev();
extern void _ZN8S21142C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21142C8__A1__8S21142C1[] = {
  ABISELECT(-456,-316),
  ABISELECT(-152,-104),
  ABISELECT(-160,-108),
  0,
  (VTBL_ENTRY)&(_ZTI8S21142C8[0]),
  (VTBL_ENTRY)&_ZN8S21142C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21142C8D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S21142C8D1Ev,_ZTv0_n20_N8S21142C8D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21142C8D0Ev,_ZTv0_n20_N8S21142C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21142C9__8S21142C8__A1__8S21142C1[] = {
  ABISELECT(160,108),
  ABISELECT(-296,-208),
  ABISELECT(8,4),
  ABISELECT(160,108),
  (VTBL_ENTRY)&(_ZTI8S21142C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21142C8D1Ev,_ZTv0_n20_N8S21142C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21142C8D0Ev,_ZTv0_n20_N8S21142C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21142C8D1Ev,_ZTv0_n12_N8S21142C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21142C8D0Ev,_ZTv0_n12_N8S21142C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21142C10__8S21142C8__A1__8S21142C1[] = {
  ABISELECT(152,104),
  ABISELECT(152,104),
  (VTBL_ENTRY)&(_ZTI8S21142C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C8D1Ev,_ZTv0_n12_N8S21142C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C8D0Ev,_ZTv0_n12_N8S21142C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21142C8D1Ev,_ZTv0_n12_N8S21142C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21142C8D0Ev,_ZTv0_n12_N8S21142C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__8S21142C8__A1__8S21142C1[] = {
  ABISELECT(456,316),
  ABISELECT(456,316),
  (VTBL_ENTRY)&(_ZTI8S21142C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C8D1Ev,_ZTv0_n12_N8S21142C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21142C8D0Ev,_ZTv0_n12_N8S21142C8D0Ev),
};
static  VTT_ENTRY vtt_S21142C1[] = {
  {&(_ZTV8S21142C1[16]),  16,146},
  {&(_ZTV8S21142C1[33]),  33,146},
  {&(_ZTV8S21142C1[16]),  16,146},
  {&(_ZTV8S21142C1[38]),  38,146},
  {&(_ZTV8S21142C1[53]),  53,146},
  {&(_ZTV8S21142C1[62]),  62,146},
  {&(_ZTV8S21142C1[83]),  83,146},
  {&(_ZTV8S21142C1[88]),  88,146},
  {&(_ZTV8S21142C1[66]),  66,146},
  {&(_ZTV8S21142C1[70]),  70,146},
  {&(_ZTV8S21142C1[76]),  76,146},
  {&(_ZTV8S21142C1[93]),  93,146},
  {&(_ZTV8S21142C1[105]),  105,146},
  {&(_ZTV8S21142C1[116]),  116,146},
  {&(_ZTV8S21142C1[122]),  122,146},
  {&(_ZTV8S21142C1[128]),  128,146},
  {&(_ZTV8S21142C1[136]),  136,146},
  {&(_ZTV8S21142C1[140]),  140,146},
  {&(_ZTV8S21142C1[144]),  144,146},
  {&(_tg__ZTV8S21142C2__8S21142C1[14]),  14,16},
  {&(_tg__ZTV9S21142C198S21142C2__8S21142C1[8]),  8,10},
  {&(_tg__ZTV9S21142C139S21142C198S21142C2__A1__8S21142C1[8]),  8,10},
  {&(_tg__ZTV9S21142C15__9S21142C139S21142C198S21142C2__A1__8S21142C1[4]),  4,6},
  {&(_tg__ZTV10S3589C9_nt__9S21142C139S21142C198S21142C2__A1__8S21142C1[3]),  3,5},
  {&(_tg__ZTV8S21142C9__9S21142C139S21142C198S21142C2__A1__8S21142C1[5]),  5,7},
  {&(_tg__ZTV9S21142C10__9S21142C139S21142C198S21142C2__A1__8S21142C1[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__9S21142C139S21142C198S21142C2__A1__8S21142C1[3]),  3,5},
  {&(_tg__ZTV8S21142C3__9S21142C139S21142C198S21142C2__A1__8S21142C1[4]),  4,6},
  {&(_tg__ZTV9S21142C15__9S21142C198S21142C2__8S21142C1[4]),  4,6},
  {&(_tg__ZTV10S3589C9_nt__9S21142C198S21142C2__8S21142C1[3]),  3,5},
  {&(_tg__ZTV8S21142C9__9S21142C198S21142C2__8S21142C1[5]),  5,7},
  {&(_tg__ZTV9S21142C10__9S21142C198S21142C2__8S21142C1[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__9S21142C198S21142C2__8S21142C1[3]),  3,5},
  {&(_tg__ZTV8S21142C3__9S21142C198S21142C2__8S21142C1[4]),  4,6},
  {&(_tg__ZTV8S21142C3__8S21142C2__8S21142C1[4]),  4,6},
  {&(_tg__ZTV7S3589C3__8S21142C2__8S21142C1[3]),  3,5},
  {&(_tg__ZTV8S21142C6__8S21142C2__8S21142C1[13]),  13,15},
  {&(_tg__ZTV8S21142C7__8S21142C2__8S21142C1[7]),  7,9},
  {&(_tg__ZTV8S21142C9__8S21142C2__8S21142C1[5]),  5,7},
  {&(_tg__ZTV9S21142C10__8S21142C2__8S21142C1[3]),  3,5},
  {&(_tg__ZTV10S3589C9_nt8S21142C88S21142C7__8S21142C2__8S21142C1[2]),  2,4},
  {&(_tg__ZTV9S21142C108S21142C88S21142C7__A1__8S21142C2__8S21142C1[2]),  2,4},
  {&(_tg__ZTV8S21142C98S21142C7__A1__8S21142C2__8S21142C1[4]),  4,6},
  {&(_tg__ZTV10S3589C9_nt__A1__8S21142C2__8S21142C1[3]),  3,5},
  {&(_tg__ZTV9S21142C12__8S21142C2__8S21142C1[10]),  10,12},
  {&(_tg__ZTV9S21142C13__8S21142C2__8S21142C1[9]),  9,11},
  {&(_tg__ZTV9S21142C15__8S21142C2__8S21142C1[4]),  4,6},
  {&(_tg__ZTV9S21142C17__8S21142C2__8S21142C1[4]),  4,6},
  {&(_tg__ZTV8S21142C8__A1__8S21142C2__8S21142C1[6]),  6,8},
  {&(_tg__ZTV10S3589C9_nt8S21142C8__A2__8S21142C2__8S21142C1[2]),  2,4},
  {&(_tg__ZTV9S21142C108S21142C8__A2__8S21142C2__8S21142C1[2]),  2,4},
  {&(_tg__ZTV8S21142C3__8S21142C1[3]),  3,5},
  {&(_tg__ZTV7S3589C3__8S21142C3__8S21142C1[3]),  3,5},
  {&(_tg__ZTV8S21142C6__8S21142C1[12]),  12,14},
  {&(_tg__ZTV9S21142C168S21142C6__8S21142C1[5]),  5,7},
  {&(_tg__ZTV8S21142C99S21142C168S21142C6__A2__8S21142C1[4]),  4,6},
  {&(_tg__ZTV9S21142C10__8S21142C99S21142C168S21142C6__A2__8S21142C1[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__8S21142C99S21142C168S21142C6__A2__8S21142C1[3]),  3,5},
  {&(_tg__ZTV9S21142C10__9S21142C168S21142C6__8S21142C1[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__9S21142C168S21142C6__8S21142C1[3]),  3,5},
  {&(_tg__ZTV9S21142C17__9S21142C168S21142C6__8S21142C1[4]),  4,6},
  {&(_tg__ZTV8S21142C7__8S21142C6__8S21142C1[7]),  7,9},
  {&(_tg__ZTV8S21142C9__8S21142C6__8S21142C1[5]),  5,7},
  {&(_tg__ZTV9S21142C10__8S21142C6__8S21142C1[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__8S21142C6__8S21142C1[3]),  3,5},
  {&(_tg__ZTV10S3589C9_nt8S21142C88S21142C7__8S21142C6__8S21142C1[2]),  2,4},
  {&(_tg__ZTV9S21142C108S21142C88S21142C7__A1__8S21142C6__8S21142C1[2]),  2,4},
  {&(_tg__ZTV8S21142C98S21142C7__A1__8S21142C6__8S21142C1[4]),  4,6},
  {&(_tg__ZTV10S3589C9_nt__A1__8S21142C6__8S21142C1[3]),  3,5},
  {&(_tg__ZTV9S21142C12__8S21142C6__8S21142C1[10]),  10,12},
  {&(_tg__ZTV9S21142C13__8S21142C6__8S21142C1[9]),  9,11},
  {&(_tg__ZTV9S21142C15__8S21142C6__8S21142C1[4]),  4,6},
  {&(_tg__ZTV8S21142C3__A1__8S21142C6__8S21142C1[4]),  4,6},
  {&(_tg__ZTV9S21142C17__8S21142C6__8S21142C1[4]),  4,6},
  {&(_tg__ZTV8S21142C7__8S21142C1[6]),  6,8},
  {&(_tg__ZTV8S21142C88S21142C7__8S21142C1[5]),  5,7},
  {&(_tg__ZTV8S21142C9__8S21142C88S21142C7__8S21142C1[5]),  5,7},
  {&(_tg__ZTV9S21142C10__8S21142C88S21142C7__8S21142C1[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__8S21142C88S21142C7__8S21142C1[3]),  3,5},
  {&(_tg__ZTV8S21142C98S21142C7__A1__8S21142C1[4]),  4,6},
  {&(_tg__ZTV9S21142C10__8S21142C98S21142C7__A1__8S21142C1[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__8S21142C98S21142C7__A1__8S21142C1[3]),  3,5},
  {&(_tg__ZTV8S21142C9__8S21142C7__8S21142C1[5]),  5,7},
  {&(_tg__ZTV9S21142C10__8S21142C7__8S21142C1[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__8S21142C7__8S21142C1[3]),  3,5},
  {&(_tg__ZTV8S21142C9__A__8S21142C7__8S21142C1[4]),  4,6},
  {&(_tg__ZTV10S3589C9_nt__A1__8S21142C7__8S21142C1[3]),  3,5},
  {&(_tg__ZTV8S21142C9__8S21142C1[4]),  4,6},
  {&(_tg__ZTV9S21142C10__8S21142C9__8S21142C1[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__8S21142C9__8S21142C1[3]),  3,5},
  {&(_tg__ZTV9S21142C12__8S21142C1[9]),  9,11},
  {&(_tg__ZTV8S21142C39S21142C12__A1__8S21142C1[3]),  3,5},
  {&(_tg__ZTV7S3589C3__8S21142C39S21142C12__A1__8S21142C1[3]),  3,5},
  {&(_tg__ZTV8S21142C9__9S21142C12__8S21142C1[5]),  5,7},
  {&(_tg__ZTV9S21142C10__9S21142C12__8S21142C1[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__9S21142C12__8S21142C1[3]),  3,5},
  {&(_tg__ZTV9S21142C13__9S21142C12__8S21142C1[9]),  9,11},
  {&(_tg__ZTV9S21142C15__9S21142C12__8S21142C1[4]),  4,6},
  {&(_tg__ZTV10S3589C9_nt__9S21142C12__8S21142C1[3]),  3,5},
  {&(_tg__ZTV8S21142C3__A1__9S21142C12__8S21142C1[4]),  4,6},
  {&(_tg__ZTV9S21142C13__8S21142C1[8]),  8,10},
  {&(_tg__ZTV9S21142C15__9S21142C13__8S21142C1[4]),  4,6},
  {&(_tg__ZTV10S3589C9_nt__9S21142C13__8S21142C1[3]),  3,5},
  {&(_tg__ZTV8S21142C9__9S21142C13__8S21142C1[5]),  5,7},
  {&(_tg__ZTV9S21142C10__9S21142C13__8S21142C1[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__9S21142C13__8S21142C1[3]),  3,5},
  {&(_tg__ZTV8S21142C3__9S21142C13__8S21142C1[4]),  4,6},
  {&(_tg__ZTV9S21142C15__8S21142C1[3]),  3,5},
  {&(_tg__ZTV10S3589C9_nt__9S21142C15__8S21142C1[3]),  3,5},
  {&(_tg__ZTV9S21142C17__8S21142C1[3]),  3,5},
  {&(_tg__ZTV7S3589C3__9S21142C17__8S21142C1[3]),  3,5},
  {&(_tg__ZTV8S21142C8__A1__8S21142C1[5]),  5,7},
  {&(_tg__ZTV8S21142C9__8S21142C8__A1__8S21142C1[5]),  5,7},
  {&(_tg__ZTV9S21142C10__8S21142C8__A1__8S21142C1[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__8S21142C8__A1__8S21142C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21142C1[];
extern  VTBL_ENTRY _ZTV8S21142C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21142C1[];
static VTBL_ENTRY alt_thunk_names66[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21142C12D0Ev,_ZTv0_n16_N9S21142C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21142C12D0Ev,_ZThn36_N9S21142C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21142C12D1Ev,_ZTv0_n16_N9S21142C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21142C12D1Ev,_ZThn36_N9S21142C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21142C12D0Ev,_ZTv0_n36_N9S21142C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21142C12D0Ev,_ZThn4_N9S21142C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21142C12D1Ev,_ZTv0_n36_N9S21142C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21142C12D1Ev,_ZThn4_N9S21142C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C7D0Ev,_ZTv0_n12_N8S21142C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21142C7D0Ev,_ZThn100_N8S21142C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S21142C7D0Ev,_ZThn72_N8S21142C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C7D1Ev,_ZTv0_n12_N8S21142C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21142C7D1Ev,_ZThn100_N8S21142C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S21142C7D1Ev,_ZThn72_N8S21142C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21142C7D0Ev,_ZTv0_n20_N8S21142C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21142C7D0Ev,_ZThn68_N8S21142C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21142C7D1Ev,_ZTv0_n20_N8S21142C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21142C7D1Ev,_ZThn68_N8S21142C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C8D0Ev,_ZTv0_n12_N8S21142C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S21142C8D0Ev,_ZThn72_N8S21142C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C8D1Ev,_ZTv0_n12_N8S21142C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S21142C8D1Ev,_ZThn72_N8S21142C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21142C8D0Ev,_ZTv0_n20_N8S21142C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21142C8D0Ev,_ZThn68_N8S21142C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21142C8D1Ev,_ZTv0_n20_N8S21142C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21142C8D1Ev,_ZThn68_N8S21142C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21142C6D0Ev,_ZTv0_n16_N8S21142C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S21142C6D0Ev,_ZThn292_N8S21142C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn392_N8S21142C6D0Ev,_ZThn280_N8S21142C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21142C6D1Ev,_ZTv0_n16_N8S21142C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S21142C6D1Ev,_ZThn292_N8S21142C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn392_N8S21142C6D1Ev,_ZThn280_N8S21142C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21142C6D0Ev,_ZTv0_n36_N8S21142C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S21142C6D0Ev,_ZThn248_N8S21142C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21142C6D1Ev,_ZTv0_n36_N8S21142C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S21142C6D1Ev,_ZThn248_N8S21142C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21142C6D0Ev,_ZTv0_n40_N8S21142C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S21142C6D0Ev,_ZThn244_N8S21142C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21142C6D1Ev,_ZTv0_n40_N8S21142C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S21142C6D1Ev,_ZThn244_N8S21142C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C6D0Ev,_ZTv0_n12_N8S21142C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S21142C6D0Ev,_ZThn228_N8S21142C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S21142C6D0Ev,_ZThn200_N8S21142C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C6D1Ev,_ZTv0_n12_N8S21142C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S21142C6D1Ev,_ZThn228_N8S21142C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S21142C6D1Ev,_ZThn200_N8S21142C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21142C6D0Ev,_ZTv0_n20_N8S21142C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21142C6D0Ev,_ZThn196_N8S21142C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21142C6D1Ev,_ZTv0_n20_N8S21142C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21142C6D1Ev,_ZThn196_N8S21142C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21142C6D0Ev,_ZTv0_n28_N8S21142C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S21142C6D0Ev,_ZThn128_N8S21142C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21142C6D1Ev,_ZTv0_n28_N8S21142C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S21142C6D1Ev,_ZThn128_N8S21142C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21142C16D0Ev,_ZTv0_n16_N9S21142C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N9S21142C16D0Ev,_ZThn292_N9S21142C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21142C16D1Ev,_ZTv0_n16_N9S21142C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N9S21142C16D1Ev,_ZThn292_N9S21142C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21142C16D0Ev,_ZTv0_n12_N9S21142C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N9S21142C16D0Ev,_ZThn200_N9S21142C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21142C16D1Ev,_ZTv0_n12_N9S21142C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N9S21142C16D1Ev,_ZThn200_N9S21142C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C9D0Ev,_ZTv0_n12_N8S21142C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21142C9D0Ev,_ZThn4_N8S21142C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21142C9D0Ev,_ZThn8_N8S21142C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S21142C9D0Ev,_ZThn200_N8S21142C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C9D1Ev,_ZTv0_n12_N8S21142C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21142C9D1Ev,_ZThn4_N8S21142C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21142C9D1Ev,_ZThn8_N8S21142C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S21142C9D1Ev,_ZThn200_N8S21142C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C3D0Ev,_ZTv0_n12_N8S21142C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S21142C3D0Ev,_ZThn76_N8S21142C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C3D1Ev,_ZTv0_n12_N8S21142C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S21142C3D1Ev,_ZThn76_N8S21142C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21142C2D0Ev,_ZTv0_n24_N8S21142C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn560_N8S21142C2D0Ev,_ZThn388_N8S21142C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21142C2D1Ev,_ZTv0_n24_N8S21142C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn560_N8S21142C2D1Ev,_ZThn388_N8S21142C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21142C2D0Ev,_ZTv0_n16_N8S21142C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N8S21142C2D0Ev,_ZThn376_N8S21142C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S21142C2D0Ev,_ZThn364_N8S21142C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21142C2D1Ev,_ZTv0_n16_N8S21142C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N8S21142C2D1Ev,_ZThn376_N8S21142C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn520_N8S21142C2D1Ev,_ZThn364_N8S21142C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21142C2D0Ev,_ZTv0_n36_N8S21142C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N8S21142C2D0Ev,_ZThn332_N8S21142C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21142C2D1Ev,_ZTv0_n36_N8S21142C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N8S21142C2D1Ev,_ZThn332_N8S21142C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21142C2D0Ev,_ZTv0_n40_N8S21142C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S21142C2D0Ev,_ZThn328_N8S21142C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21142C2D1Ev,_ZTv0_n40_N8S21142C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S21142C2D1Ev,_ZThn328_N8S21142C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21142C2D0Ev,_ZTv0_n20_N8S21142C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S21142C2D0Ev,_ZThn280_N8S21142C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21142C2D1Ev,_ZTv0_n20_N8S21142C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S21142C2D1Ev,_ZThn280_N8S21142C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21142C2D0Ev,_ZTv0_n28_N8S21142C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S21142C2D0Ev,_ZThn212_N8S21142C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21142C2D1Ev,_ZTv0_n28_N8S21142C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S21142C2D1Ev,_ZThn212_N8S21142C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S21142C2D0Ev,_ZTv0_n52_N8S21142C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21142C2D0Ev,_ZThn84_N8S21142C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S21142C2D1Ev,_ZTv0_n52_N8S21142C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21142C2D1Ev,_ZThn84_N8S21142C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C2D0Ev,_ZTv0_n12_N8S21142C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn440_N8S21142C2D0Ev,_ZThn312_N8S21142C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn408_N8S21142C2D0Ev,_ZThn284_N8S21142C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S21142C2D0Ev,_ZThn72_N8S21142C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C2D1Ev,_ZTv0_n12_N8S21142C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn440_N8S21142C2D1Ev,_ZThn312_N8S21142C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn408_N8S21142C2D1Ev,_ZThn284_N8S21142C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S21142C2D1Ev,_ZThn72_N8S21142C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21142C19D0Ev,_ZTv0_n20_N9S21142C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N9S21142C19D0Ev,_ZThn280_N9S21142C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21142C19D1Ev,_ZTv0_n20_N9S21142C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N9S21142C19D1Ev,_ZThn280_N9S21142C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21142C19D0Ev,_ZTv0_n12_N9S21142C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S21142C19D0Ev,_ZThn72_N9S21142C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn408_N9S21142C19D0Ev,_ZThn284_N9S21142C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn440_N9S21142C19D0Ev,_ZThn312_N9S21142C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21142C19D1Ev,_ZTv0_n12_N9S21142C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S21142C19D1Ev,_ZThn72_N9S21142C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn408_N9S21142C19D1Ev,_ZThn284_N9S21142C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn440_N9S21142C19D1Ev,_ZThn312_N9S21142C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21142C19D0Ev,_ZTv0_n16_N9S21142C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N9S21142C19D0Ev,_ZThn364_N9S21142C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21142C19D1Ev,_ZTv0_n16_N9S21142C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N9S21142C19D1Ev,_ZThn364_N9S21142C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21142C13D0Ev,_ZTv0_n20_N9S21142C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N9S21142C13D0Ev,_ZThn280_N9S21142C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21142C13D1Ev,_ZTv0_n20_N9S21142C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N9S21142C13D1Ev,_ZThn280_N9S21142C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21142C13D0Ev,_ZTv0_n12_N9S21142C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S21142C13D0Ev,_ZThn72_N9S21142C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn408_N9S21142C13D0Ev,_ZThn284_N9S21142C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn440_N9S21142C13D0Ev,_ZThn312_N9S21142C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21142C13D1Ev,_ZTv0_n12_N9S21142C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S21142C13D1Ev,_ZThn72_N9S21142C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn408_N9S21142C13D1Ev,_ZThn284_N9S21142C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn440_N9S21142C13D1Ev,_ZThn312_N9S21142C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21142C13D0Ev,_ZTv0_n16_N9S21142C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21142C13D0Ev,_ZThn32_N9S21142C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn520_N9S21142C13D0Ev,_ZThn364_N9S21142C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21142C13D1Ev,_ZTv0_n16_N9S21142C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21142C13D1Ev,_ZThn32_N9S21142C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn520_N9S21142C13D1Ev,_ZThn364_N9S21142C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21142C1D0Ev,_ZTv0_n24_N8S21142C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N8S21142C1D0Ev,_ZThn392_N8S21142C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21142C1D1Ev,_ZTv0_n24_N8S21142C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N8S21142C1D1Ev,_ZThn392_N8S21142C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21142C1D0Ev,_ZTv0_n36_N8S21142C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S21142C1D0Ev,_ZThn336_N8S21142C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21142C1D1Ev,_ZTv0_n36_N8S21142C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S21142C1D1Ev,_ZThn336_N8S21142C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21142C1D0Ev,_ZTv0_n40_N8S21142C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N8S21142C1D0Ev,_ZThn332_N8S21142C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21142C1D1Ev,_ZTv0_n40_N8S21142C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N8S21142C1D1Ev,_ZThn332_N8S21142C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21142C1D0Ev,_ZTv0_n20_N8S21142C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S21142C1D0Ev,_ZThn284_N8S21142C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21142C1D1Ev,_ZTv0_n20_N8S21142C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S21142C1D1Ev,_ZThn284_N8S21142C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21142C1D0Ev,_ZTv0_n28_N8S21142C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S21142C1D0Ev,_ZThn216_N8S21142C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21142C1D1Ev,_ZTv0_n28_N8S21142C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S21142C1D1Ev,_ZThn216_N8S21142C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S21142C1D0Ev,_ZTv0_n52_N8S21142C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21142C1D0Ev,_ZThn88_N8S21142C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S21142C1D1Ev,_ZTv0_n52_N8S21142C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21142C1D1Ev,_ZThn88_N8S21142C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C1D0Ev,_ZTv0_n12_N8S21142C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N8S21142C1D0Ev,_ZThn316_N8S21142C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn424_N8S21142C1D0Ev,_ZThn288_N8S21142C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S21142C1D0Ev,_ZThn76_N8S21142C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21142C1D1Ev,_ZTv0_n12_N8S21142C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N8S21142C1D1Ev,_ZThn316_N8S21142C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn424_N8S21142C1D1Ev,_ZThn288_N8S21142C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S21142C1D1Ev,_ZThn76_N8S21142C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S21142C1D0Ev,_ZTv0_n60_N8S21142C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21142C1D0Ev,_ZThn4_N8S21142C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S21142C1D1Ev,_ZTv0_n60_N8S21142C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21142C1D1Ev,_ZThn4_N8S21142C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21142C1D0Ev,_ZTv0_n16_N8S21142C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn560_N8S21142C1D0Ev,_ZThn380_N8S21142C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn536_N8S21142C1D0Ev,_ZThn368_N8S21142C1D0Ev),
  (VTBL_ENTRY)_ZN8S21142C1D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21142C1D1Ev,_ZTv0_n16_N8S21142C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn560_N8S21142C1D1Ev,_ZThn380_N8S21142C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn536_N8S21142C1D1Ev,_ZThn368_N8S21142C1D1Ev),
  (VTBL_ENTRY)_ZN8S21142C1D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21142C1 = {  "S21142C1", // class name
  bases_S21142C1, 34,
  &(vtc_S21142C1[0]), // expected_vtbl_contents
  &(vtt_S21142C1[0]), // expected_vtt_contents
  ABISELECT(672,456), // object size
  NSPAIRA(_ZTI8S21142C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21142C1),146, //virtual function table var
  16, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21142C1),115, //virtual table table var
  31, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names66,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7549C3  {
  void *s7549c3f0[2];
  int s7549c3f1;
  short s7549c3f2;
  int s7549c3f3;
  virtual void  v2(); // _ZN7S7549C32v2Ev
  ~S7549C3(); // tgen
  S7549C3(); // tgen
};
//SIG(-1 S7549C3) C1{ v1 Fp[2] Fi Fs Fi}


void  S7549C3 ::v2(){vfunc_called(this, "_ZN7S7549C32v2Ev");}
S7549C3 ::~S7549C3(){ note_dtor("S7549C3", this);} // tgen
S7549C3 ::S7549C3(){ note_ctor("S7549C3", this);} // tgen

static void Test_S7549C3()
{
  extern Class_Descriptor cd_S7549C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S7549C3, buf);
    S7549C3 *dp, &lv = *(dp=new (buf) S7549C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S7549C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7549C3)");
    check_field_offset(lv, s7549c3f0, ABISELECT(8,4), "S7549C3.s7549c3f0");
    check_field_offset(lv, s7549c3f1, ABISELECT(24,12), "S7549C3.s7549c3f1");
    check_field_offset(lv, s7549c3f2, ABISELECT(28,16), "S7549C3.s7549c3f2");
    check_field_offset(lv, s7549c3f3, ABISELECT(32,20), "S7549C3.s7549c3f3");
    test_class_info(&lv, &cd_S7549C3);
    dp->~S7549C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7549C3(Test_S7549C3, "S7549C3", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN7S7549C3C1Ev();
extern void _ZN7S7549C3D1Ev();
Name_Map name_map_S7549C3[] = {
  NSPAIR(_ZN7S7549C3C1Ev),
  NSPAIR(_ZN7S7549C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7549C3[];
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY vtc_S7549C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C3[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern VTBL_ENTRY _ZTI7S7549C3[];
extern  VTBL_ENTRY _ZTV7S7549C3[];
Class_Descriptor cd_S7549C3 = {  "S7549C3", // class name
  0,0,//no base classes
  &(vtc_S7549C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI7S7549C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7549C3),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7549C2  : virtual S7549C3 {
  ::S7549C3 s7549c2f0;
  int s7549c2f1[9];
  virtual void  v3(); // _ZN7S7549C22v3Ev
  ~S7549C2(); // tgen
  S7549C2(); // tgen
};
//SIG(-1 S7549C2) C1{ VBC2{ v2 Fp[2] Fi Fs Fi} v1 FC2 Fi[9]}


void  S7549C2 ::v3(){vfunc_called(this, "_ZN7S7549C22v3Ev");}
S7549C2 ::~S7549C2(){ note_dtor("S7549C2", this);} // tgen
S7549C2 ::S7549C2(){ note_ctor("S7549C2", this);} // tgen

static void Test_S7549C2()
{
  extern Class_Descriptor cd_S7549C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,23)];
    init_test(&cd_S7549C2, buf);
    S7549C2 *dp, &lv = *(dp=new (buf) S7549C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,88), "sizeof(S7549C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7549C2)");
    check_base_class_offset(lv, (S7549C3*), ABISELECT(88,64), "S7549C2");
    check_field_offset(lv, s7549c2f0, ABISELECT(8,4), "S7549C2.s7549c2f0");
    check_field_offset(lv, s7549c2f1, ABISELECT(48,28), "S7549C2.s7549c2f1");
    test_class_info(&lv, &cd_S7549C2);
    dp->~S7549C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7549C2(Test_S7549C2, "S7549C2", ABISELECT(128,88));

#else // __cplusplus

extern void _ZN7S7549C2C1Ev();
extern void _ZN7S7549C2D1Ev();
Name_Map name_map_S7549C2[] = {
  NSPAIR(_ZN7S7549C2C1Ev),
  NSPAIR(_ZN7S7549C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7549C3;
extern VTBL_ENTRY _ZTI7S7549C3[];
extern  VTBL_ENTRY _ZTV7S7549C3[];
static Base_Class bases_S7549C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7549C3,    ABISELECT(88,64), //bcp->offset
    4, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7549C2[];
extern void _ZN7S7549C22v3Ev();
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY vtc_S7549C2[] = {
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
  0,
  ABISELECT(-88,-64),
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern VTBL_ENTRY _ZTV7S7549C2[];
static  VTT_ENTRY vtt_S7549C2[] = {
  {&(_ZTV7S7549C2[3]),  3,8},
  {&(_ZTV7S7549C2[7]),  7,8},
};
extern VTBL_ENTRY _ZTI7S7549C2[];
extern  VTBL_ENTRY _ZTV7S7549C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C2[];
Class_Descriptor cd_S7549C2 = {  "S7549C2", // class name
  bases_S7549C2, 1,
  &(vtc_S7549C2[0]), // expected_vtbl_contents
  &(vtt_S7549C2[0]), // expected_vtt_contents
  ABISELECT(128,88), // object size
  NSPAIRA(_ZTI7S7549C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7549C2),8, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7549C2),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7549C6  : S7549C2 , S7549C3 {
  ~S7549C6(); // tgen
  S7549C6(); // tgen
};
//SIG(-1 S7549C6) C1{ BC2{ VBC3{ v1 Fp[2] Fi Fs Fi} v2 FC3 Fi[9]} BC3}


S7549C6 ::~S7549C6(){ note_dtor("S7549C6", this);} // tgen
S7549C6 ::S7549C6(){ note_ctor("S7549C6", this);} // tgen

static void Test_S7549C6()
{
  extern Class_Descriptor cd_S7549C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,29)];
    init_test(&cd_S7549C6, buf);
    S7549C6 *dp, &lv = *(dp=new (buf) S7549C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,112), "sizeof(S7549C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7549C6)");
    check_base_class_offset(lv, (S7549C3*)(S7549C2*), ABISELECT(128,88), "S7549C6");
    check_base_class_offset(lv, (S7549C2*), 0, "S7549C6");
    /*is_ambiguous_... S7549C6::S7549C3 */ AMB_check_base_class_offset(lv, (S7549C3*), ABISELECT(88,64), "S7549C6");
    test_class_info(&lv, &cd_S7549C6);
    dp->~S7549C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7549C6(Test_S7549C6, "S7549C6", ABISELECT(168,112));

#else // __cplusplus

extern void _ZN7S7549C6C1Ev();
extern void _ZN7S7549C6D1Ev();
Name_Map name_map_S7549C6[] = {
  NSPAIR(_ZN7S7549C6C1Ev),
  NSPAIR(_ZN7S7549C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7549C3;
extern VTBL_ENTRY _ZTI7S7549C3[];
extern  VTBL_ENTRY _ZTV7S7549C3[];
extern Class_Descriptor cd_S7549C2;
extern VTBL_ENTRY _ZTI7S7549C2[];
extern  VTBL_ENTRY _ZTV7S7549C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C2[];
extern Class_Descriptor cd_S7549C3;
extern VTBL_ENTRY _ZTI7S7549C3[];
extern  VTBL_ENTRY _ZTV7S7549C3[];
static Base_Class bases_S7549C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7549C3,    ABISELECT(128,88), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7549C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7549C3,    ABISELECT(88,64), //bcp->offset
    4, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7549C6[];
extern void _ZN7S7549C22v3Ev();
extern void _ZN7S7549C32v2Ev();
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY vtc_S7549C6[] = {
  ABISELECT(128,88),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C6[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
  ABISELECT(-88,-64),
  (VTBL_ENTRY)&(_ZTI7S7549C6[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  0,
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI7S7549C6[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern VTBL_ENTRY _ZTV7S7549C6[];
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C2__7S7549C6[] = {
  ABISELECT(128,88),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__7S7549C2__7S7549C6[] = {
  0,
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
static  VTT_ENTRY vtt_S7549C6[] = {
  {&(_ZTV7S7549C6[3]),  3,11},
  {&(_tg__ZTV7S7549C2__7S7549C6[3]),  3,4},
  {&(_tg__ZTV7S7549C3__7S7549C2__7S7549C6[3]),  3,4},
  {&(_ZTV7S7549C6[10]),  10,11},
};
extern VTBL_ENTRY _ZTI7S7549C6[];
extern  VTBL_ENTRY _ZTV7S7549C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C6[];
Class_Descriptor cd_S7549C6 = {  "S7549C6", // class name
  bases_S7549C6, 3,
  &(vtc_S7549C6[0]), // expected_vtbl_contents
  &(vtt_S7549C6[0]), // expected_vtt_contents
  ABISELECT(168,112), // object size
  NSPAIRA(_ZTI7S7549C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7549C6),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7549C6),4, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7549C8  : S7549C3 , S7549C2 , virtual S7549C6 {
  virtual void  v4(); // _ZN7S7549C82v4Ev
  virtual void  v5(); // _ZN7S7549C82v5Ev
  ~S7549C8(); // tgen
  S7549C8(); // tgen
};
//SIG(-1 S7549C8) C1{ BC2{ v3 Fp[2] Fi Fs Fi} BC3{ VBC2 v4 FC2 Fi[9]} VBC4{ BC3 BC2} v1 v2}


void  S7549C8 ::v4(){vfunc_called(this, "_ZN7S7549C82v4Ev");}
void  S7549C8 ::v5(){vfunc_called(this, "_ZN7S7549C82v5Ev");}
S7549C8 ::~S7549C8(){ note_dtor("S7549C8", this);} // tgen
S7549C8 ::S7549C8(){ note_ctor("S7549C8", this);} // tgen

static void Test_S7549C8()
{
  extern Class_Descriptor cd_S7549C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(38,51)];
    init_test(&cd_S7549C8, buf);
    S7549C8 *dp, &lv = *(dp=new (buf) S7549C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(296,200), "sizeof(S7549C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7549C8)");
    /*is_ambiguous_... S7549C8::S7549C3 */ AMB_check_base_class_offset(lv, (S7549C3*), 0, "S7549C8");
    /*is_ambiguous_... S7549C8::S7549C2 */ AMB_check_base_class_offset(lv, (S7549C3*)(S7549C2*), ABISELECT(128,88), "S7549C8");
    check_base_class_offset(lv, (S7549C3*)(S7549C2*)(S7549C6*), ABISELECT(128,88), "S7549C8");
    /*is_ambiguous_... S7549C8::S7549C2 */ AMB_check_base_class_offset(lv, (S7549C2*), ABISELECT(40,24), "S7549C8");
    check_base_class_offset(lv, (S7549C2*)(S7549C6*), ABISELECT(168,112), "S7549C8");
    /*is_ambiguous_... S7549C6::S7549C3 */ AMB_check_base_class_offset(lv, (S7549C3*)(S7549C6*), ABISELECT(256,176), "S7549C8");
    check_base_class_offset(lv, (S7549C6*), ABISELECT(168,112), "S7549C8");
    test_class_info(&lv, &cd_S7549C8);
    dp->~S7549C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7549C8(Test_S7549C8, "S7549C8", ABISELECT(296,200));

#else // __cplusplus

extern void _ZN7S7549C8C1Ev();
extern void _ZN7S7549C8D1Ev();
Name_Map name_map_S7549C8[] = {
  NSPAIR(_ZN7S7549C8C1Ev),
  NSPAIR(_ZN7S7549C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7549C3;
extern VTBL_ENTRY _ZTI7S7549C3[];
extern  VTBL_ENTRY _ZTV7S7549C3[];
extern Class_Descriptor cd_S7549C3;
extern VTBL_ENTRY _ZTI7S7549C3[];
extern  VTBL_ENTRY _ZTV7S7549C3[];
extern Class_Descriptor cd_S7549C2;
extern VTBL_ENTRY _ZTI7S7549C2[];
extern  VTBL_ENTRY _ZTV7S7549C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C2[];
extern Class_Descriptor cd_S7549C2;
extern VTBL_ENTRY _ZTI7S7549C2[];
extern  VTBL_ENTRY _ZTV7S7549C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C2[];
extern Class_Descriptor cd_S7549C3;
extern VTBL_ENTRY _ZTI7S7549C3[];
extern  VTBL_ENTRY _ZTV7S7549C3[];
extern Class_Descriptor cd_S7549C6;
extern VTBL_ENTRY _ZTI7S7549C6[];
extern  VTBL_ENTRY _ZTV7S7549C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C6[];
static Base_Class bases_S7549C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7549C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7549C3,    ABISELECT(128,88), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7549C2,    ABISELECT(40,24), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7549C2,    ABISELECT(168,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7549C3,    ABISELECT(256,176), //bcp->offset
    21, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7549C6,    ABISELECT(168,112), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7549C8[];
extern void _ZN7S7549C32v2Ev();
extern void _ZN7S7549C82v4Ev();
extern void _ZN7S7549C82v5Ev();
extern void _ZN7S7549C22v3Ev();
extern void _ZN7S7549C32v2Ev();
extern void _ZN7S7549C22v3Ev();
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY vtc_S7549C8[] = {
  ABISELECT(168,112),
  ABISELECT(128,88),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v4Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v5Ev,
  ABISELECT(88,64),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
  0,
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  ABISELECT(88,64),
  0,
  ABISELECT(-40,-24),
  ABISELECT(-168,-112),
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
  ABISELECT(-256,-176),
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern VTBL_ENTRY _ZTV7S7549C8[];
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C2__7S7549C8[] = {
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__7S7549C2__7S7549C8[] = {
  0,
  ABISELECT(-88,-64),
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C6__7S7549C8[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C6[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C27S7549C6__A1__7S7549C8[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__7S7549C27S7549C6__A1__7S7549C8[] = {
  0,
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__7S7549C6__7S7549C8[] = {
  0,
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI7S7549C6[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
static  VTT_ENTRY vtt_S7549C8[] = {
  {&(_ZTV7S7549C8[4]),  4,24},
  {&(_tg__ZTV7S7549C2__7S7549C8[3]),  3,4},
  {&(_tg__ZTV7S7549C3__7S7549C2__7S7549C8[3]),  3,4},
  {&(_ZTV7S7549C8[10]),  10,24},
  {&(_ZTV7S7549C8[14]),  14,24},
  {&(_ZTV7S7549C8[20]),  20,24},
  {&(_ZTV7S7549C8[23]),  23,24},
  {&(_tg__ZTV7S7549C6__7S7549C8[3]),  3,4},
  {&(_tg__ZTV7S7549C27S7549C6__A1__7S7549C8[3]),  3,4},
  {&(_tg__ZTV7S7549C3__7S7549C27S7549C6__A1__7S7549C8[3]),  3,4},
  {&(_tg__ZTV7S7549C3__7S7549C6__7S7549C8[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7549C8[];
extern  VTBL_ENTRY _ZTV7S7549C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C8[];
Class_Descriptor cd_S7549C8 = {  "S7549C8", // class name
  bases_S7549C8, 6,
  &(vtc_S7549C8[0]), // expected_vtbl_contents
  &(vtt_S7549C8[0]), // expected_vtt_contents
  ABISELECT(296,200), // object size
  NSPAIRA(_ZTI7S7549C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7549C8),24, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7549C8),11, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7549C7  : virtual S7549C8 {
  int s7549c7f0;
  int s7549c7f1:25;
  long double s7549c7f2;
  int s7549c7f3[2];
  ~S7549C7(); // tgen
  S7549C7(); // tgen
};
//SIG(-1 S7549C7) C1{ VBC2{ BC3{ v1 Fp[2] Fi Fs Fi} BC4{ VBC3 v2 FC3 Fi[9]} VBC5{ BC4 BC3} v3 v4} Fi Fi:25 FD Fi[2]}


S7549C7 ::~S7549C7(){ note_dtor("S7549C7", this);} // tgen
S7549C7 ::S7549C7(){ note_ctor("S7549C7", this);} // tgen

static void Test_S7549C7()
{
  extern Class_Descriptor cd_S7549C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(22,59)];
    init_test(&cd_S7549C7, buf);
    S7549C7 *dp, &lv = *(dp=new (buf) S7549C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(336,232), "sizeof(S7549C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7549C7)");
    /*is_ambiguous_... S7549C8::S7549C3 */ AMB_check_base_class_offset(lv, (S7549C3*)(S7549C8*), ABISELECT(40,32), "S7549C7");
    /*is_ambiguous_... S7549C8::S7549C2 */ AMB_check_base_class_offset(lv, (S7549C3*)(S7549C2*)(S7549C8*), ABISELECT(168,120), "S7549C7");
    check_base_class_offset(lv, (S7549C3*)(S7549C2*)(S7549C6*), ABISELECT(168,120), "S7549C7");
    /*is_ambiguous_... S7549C8::S7549C2 */ AMB_check_base_class_offset(lv, (S7549C2*)(S7549C8*), ABISELECT(80,56), "S7549C7");
    check_base_class_offset(lv, (S7549C2*)(S7549C6*), ABISELECT(208,144), "S7549C7");
    /*is_ambiguous_... S7549C6::S7549C3 */ AMB_check_base_class_offset(lv, (S7549C3*)(S7549C6*), ABISELECT(296,208), "S7549C7");
    check_base_class_offset(lv, (S7549C6*)(S7549C8*), ABISELECT(208,144), "S7549C7");
    check_base_class_offset(lv, (S7549C8*), ABISELECT(40,32), "S7549C7");
    check_field_offset(lv, s7549c7f0, ABISELECT(8,4), "S7549C7.s7549c7f0");
    set_bf_and_test(lv, s7549c7f1, ABISELECT(12,8), 0, 25, 1, "S7549C7");
    set_bf_and_test(lv, s7549c7f1, ABISELECT(12,8), 0, 25, hide_sll(1LL<<24), "S7549C7");
    check_field_offset(lv, s7549c7f2, ABISELECT(16,12), "S7549C7.s7549c7f2");
    check_field_offset(lv, s7549c7f3, ABISELECT(32,24), "S7549C7.s7549c7f3");
    test_class_info(&lv, &cd_S7549C7);
    dp->~S7549C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7549C7(Test_S7549C7, "S7549C7", ABISELECT(336,232));

#else // __cplusplus

extern void _ZN7S7549C7C1Ev();
extern void _ZN7S7549C7D1Ev();
Name_Map name_map_S7549C7[] = {
  NSPAIR(_ZN7S7549C7C1Ev),
  NSPAIR(_ZN7S7549C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7549C3;
extern VTBL_ENTRY _ZTI7S7549C3[];
extern  VTBL_ENTRY _ZTV7S7549C3[];
extern Class_Descriptor cd_S7549C3;
extern VTBL_ENTRY _ZTI7S7549C3[];
extern  VTBL_ENTRY _ZTV7S7549C3[];
extern Class_Descriptor cd_S7549C2;
extern VTBL_ENTRY _ZTI7S7549C2[];
extern  VTBL_ENTRY _ZTV7S7549C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C2[];
extern Class_Descriptor cd_S7549C2;
extern VTBL_ENTRY _ZTI7S7549C2[];
extern  VTBL_ENTRY _ZTV7S7549C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C2[];
extern Class_Descriptor cd_S7549C3;
extern VTBL_ENTRY _ZTI7S7549C3[];
extern  VTBL_ENTRY _ZTV7S7549C3[];
extern Class_Descriptor cd_S7549C6;
extern VTBL_ENTRY _ZTI7S7549C6[];
extern  VTBL_ENTRY _ZTV7S7549C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C6[];
extern Class_Descriptor cd_S7549C8;
extern VTBL_ENTRY _ZTI7S7549C8[];
extern  VTBL_ENTRY _ZTV7S7549C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C8[];
static Base_Class bases_S7549C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7549C3,    ABISELECT(40,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7549C3,    ABISELECT(168,120), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7549C2,    ABISELECT(80,56), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7549C2,    ABISELECT(208,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7549C3,    ABISELECT(296,208), //bcp->offset
    30, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7549C6,    ABISELECT(208,144), //bcp->offset
    24, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7549C8,    ABISELECT(40,32), //bcp->offset
    5, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7549C7[];
extern void _ZN7S7549C32v2Ev();
extern void _ZN7S7549C82v4Ev();
extern void _ZN7S7549C82v5Ev();
extern void _ZN7S7549C22v3Ev();
extern void _ZN7S7549C32v2Ev();
extern void _ZN7S7549C22v3Ev();
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY vtc_S7549C7[] = {
  ABISELECT(208,144),
  ABISELECT(168,120),
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C7[0]),
  ABISELECT(40,24),
  0,
  0,
  0,
  ABISELECT(168,112),
  ABISELECT(128,88),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI7S7549C7[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v4Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v5Ev,
  ABISELECT(88,64),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI7S7549C7[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
  0,
  ABISELECT(-168,-120),
  (VTBL_ENTRY)&(_ZTI7S7549C7[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  ABISELECT(88,64),
  0,
  ABISELECT(-40,-24),
  ABISELECT(-208,-144),
  (VTBL_ENTRY)&(_ZTI7S7549C7[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
  ABISELECT(-296,-208),
  (VTBL_ENTRY)&(_ZTI7S7549C7[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern VTBL_ENTRY _ZTV7S7549C7[];
extern void _ZN7S7549C32v2Ev();
extern void _ZN7S7549C82v4Ev();
extern void _ZN7S7549C82v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C8__7S7549C7[] = {
  ABISELECT(168,112),
  ABISELECT(128,88),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v4Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v5Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C27S7549C8__7S7549C7[] = {
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__7S7549C27S7549C8__7S7549C7[] = {
  0,
  ABISELECT(-88,-64),
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C2__7S7549C8__7S7549C7[] = {
  ABISELECT(88,64),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__A1__7S7549C8__7S7549C7[] = {
  0,
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C6__7S7549C8__7S7549C7[] = {
  ABISELECT(88,64),
  0,
  ABISELECT(-40,-24),
  ABISELECT(-168,-112),
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C37S7549C6__A2__7S7549C8__7S7549C7[] = {
  ABISELECT(-256,-176),
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C6__7S7549C7[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C6[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C27S7549C6__A1__7S7549C7[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__7S7549C27S7549C6__A1__7S7549C7[] = {
  0,
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__7S7549C6__7S7549C7[] = {
  0,
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI7S7549C6[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
static  VTT_ENTRY vtt_S7549C7[] = {
  {&(_ZTV7S7549C7[5]),  5,33},
  {&(_ZTV7S7549C7[13]),  13,33},
  {&(_ZTV7S7549C7[19]),  19,33},
  {&(_ZTV7S7549C7[23]),  23,33},
  {&(_ZTV7S7549C7[29]),  29,33},
  {&(_ZTV7S7549C7[32]),  32,33},
  {&(_tg__ZTV7S7549C8__7S7549C7[4]),  4,7},
  {&(_tg__ZTV7S7549C27S7549C8__7S7549C7[3]),  3,4},
  {&(_tg__ZTV7S7549C3__7S7549C27S7549C8__7S7549C7[3]),  3,4},
  {&(_tg__ZTV7S7549C2__7S7549C8__7S7549C7[3]),  3,4},
  {&(_tg__ZTV7S7549C3__A1__7S7549C8__7S7549C7[3]),  3,4},
  {&(_tg__ZTV7S7549C6__7S7549C8__7S7549C7[5]),  5,6},
  {&(_tg__ZTV7S7549C37S7549C6__A2__7S7549C8__7S7549C7[2]),  2,3},
  {&(_tg__ZTV7S7549C6__7S7549C7[3]),  3,4},
  {&(_tg__ZTV7S7549C27S7549C6__A1__7S7549C7[3]),  3,4},
  {&(_tg__ZTV7S7549C3__7S7549C27S7549C6__A1__7S7549C7[3]),  3,4},
  {&(_tg__ZTV7S7549C3__7S7549C6__7S7549C7[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7549C7[];
extern  VTBL_ENTRY _ZTV7S7549C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C7[];
Class_Descriptor cd_S7549C7 = {  "S7549C7", // class name
  bases_S7549C7, 7,
  &(vtc_S7549C7[0]), // expected_vtbl_contents
  &(vtt_S7549C7[0]), // expected_vtt_contents
  ABISELECT(336,232), // object size
  NSPAIRA(_ZTI7S7549C7),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7549C7),33, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7549C7),17, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7549C5  {
  ::S7549C6 s7549c5f0;
  void *s7549c5f1;
  ::S7549C3 s7549c5f2;
  ::S7549C7 s7549c5f3;
  void  mf7549c5(); // _ZN7S7549C58mf7549c5Ev
  virtual  ~S7549C5(); // _ZN7S7549C5D1Ev
  S7549C5(); // tgen
};
//SIG(-1 S7549C5) C1{ vd m FC2{ BC3{ VBC4{ v1 Fp[2] Fi Fs Fi} v2 FC4 Fi[9]} BC4} Fp FC4 FC5{ VBC6{ BC4 BC3 VBC2 v3 v4} Fi Fi:25 FD Fi[2]}}


void  S7549C5 ::mf7549c5(){}
 S7549C5 ::~S7549C5(){ note_dtor("S7549C5", this);}
S7549C5 ::S7549C5(){ note_ctor("S7549C5", this);} // tgen

static void Test_S7549C5()
{
  extern Class_Descriptor cd_S7549C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(36,95)];
    init_test(&cd_S7549C5, buf);
    S7549C5 *dp, &lv = *(dp=new (buf) S7549C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(560,376), "sizeof(S7549C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7549C5)");
    check_field_offset(lv, s7549c5f0, ABISELECT(8,4), "S7549C5.s7549c5f0");
    check_field_offset(lv, s7549c5f1, ABISELECT(176,116), "S7549C5.s7549c5f1");
    check_field_offset(lv, s7549c5f2, ABISELECT(184,120), "S7549C5.s7549c5f2");
    check_field_offset(lv, s7549c5f3, ABISELECT(224,144), "S7549C5.s7549c5f3");
    test_class_info(&lv, &cd_S7549C5);
    dp->~S7549C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7549C5(Test_S7549C5, "S7549C5", ABISELECT(560,376));

#else // __cplusplus

extern void _ZN7S7549C5C1Ev();
extern void _ZN7S7549C5D1Ev();
Name_Map name_map_S7549C5[] = {
  NSPAIR(_ZN7S7549C5C1Ev),
  NSPAIR(_ZN7S7549C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7549C5[];
extern void _ZN7S7549C5D1Ev();
extern void _ZN7S7549C5D0Ev();
static  VTBL_ENTRY vtc_S7549C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C5[0]),
  (VTBL_ENTRY)&_ZN7S7549C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7549C5D0Ev,
};
extern VTBL_ENTRY _ZTI7S7549C5[];
extern  VTBL_ENTRY _ZTV7S7549C5[];
Class_Descriptor cd_S7549C5 = {  "S7549C5", // class name
  0,0,//no base classes
  &(vtc_S7549C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(560,376), // object size
  NSPAIRA(_ZTI7S7549C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7549C5),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7549C10  {
  virtual  ~S7549C10(); // _ZN8S7549C10D1Ev
  virtual void  v6(); // _ZN8S7549C102v6Ev
  virtual void  v7(); // _ZN8S7549C102v7Ev
  S7549C10(); // tgen
};
//SIG(-1 S7549C10) C1{ vd v1 v2}


 S7549C10 ::~S7549C10(){ note_dtor("S7549C10", this);}
void  S7549C10 ::v6(){vfunc_called(this, "_ZN8S7549C102v6Ev");}
void  S7549C10 ::v7(){vfunc_called(this, "_ZN8S7549C102v7Ev");}
S7549C10 ::S7549C10(){ note_ctor("S7549C10", this);} // tgen

static void Test_S7549C10()
{
  extern Class_Descriptor cd_S7549C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7549C10, buf);
    S7549C10 *dp, &lv = *(dp=new (buf) S7549C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7549C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7549C10)");
    test_class_info(&lv, &cd_S7549C10);
    dp->~S7549C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7549C10(Test_S7549C10, "S7549C10", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S7549C10C1Ev();
extern void _ZN8S7549C10D1Ev();
Name_Map name_map_S7549C10[] = {
  NSPAIR(_ZN8S7549C10C1Ev),
  NSPAIR(_ZN8S7549C10D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S7549C10[];
extern void _ZN8S7549C10D1Ev();
extern void _ZN8S7549C10D0Ev();
extern void _ZN8S7549C102v6Ev();
extern void _ZN8S7549C102v7Ev();
static  VTBL_ENTRY vtc_S7549C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S7549C10[0]),
  (VTBL_ENTRY)&_ZN8S7549C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7549C10D0Ev,
  (VTBL_ENTRY)&_ZN8S7549C102v6Ev,
  (VTBL_ENTRY)&_ZN8S7549C102v7Ev,
};
extern VTBL_ENTRY _ZTI8S7549C10[];
extern  VTBL_ENTRY _ZTV8S7549C10[];
Class_Descriptor cd_S7549C10 = {  "S7549C10", // class name
  0,0,//no base classes
  &(vtc_S7549C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S7549C10),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S7549C10),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7549C11  : S7549C3 , virtual S7549C8 , virtual S7549C7 , S7549C6 , virtual S7549C5 {
  int s7549c11f0:13;
  void *s7549c11f1[5];
  int s7549c11f2;
  char s7549c11f3;
  int s7549c11f4[2];
  virtual  ~S7549C11(); // _ZN8S7549C11D2Ev
  S7549C11(); // tgen
};
//SIG(-1 S7549C11) C1{ BC2{ v1 Fp[2] Fi Fs Fi} VBC3{ BC2 BC4{ VBC2 v2 FC2 Fi[9]} VBC5{ BC4 BC2} v3 v4} VBC6{ VBC3 Fi Fi:25 FD Fi[2]} BC5 VBC7{ vd m FC5 Fp FC2 FC6} vd Fi:13 Fp[5] Fi Fc Fi[2]}


 S7549C11 ::~S7549C11(){ note_dtor("S7549C11", this);}
S7549C11 ::S7549C11(){ note_ctor("S7549C11", this);} // tgen

static void Test_S7549C11()
{
  extern Class_Descriptor cd_S7549C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(72,191)];
    init_test(&cd_S7549C11, buf);
    S7549C11 *dp, &lv = *(dp=new (buf) S7549C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1136,760), "sizeof(S7549C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7549C11)");
    /*is_ambiguous_... S7549C11::S7549C3 */ AMB_check_base_class_offset(lv, (S7549C3*), 0, "S7549C11");
    /*is_ambiguous_... S7549C8::S7549C3 */ AMB_check_base_class_offset(lv, (S7549C3*)(S7549C8*), ABISELECT(224,152), "S7549C11");
    /*is_ambiguous_... S7549C8::S7549C2 */ AMB_check_base_class_offset(lv, (S7549C3*)(S7549C2*)(S7549C8*), ABISELECT(352,240), "S7549C11");
    /*is_ambiguous_... S7549C11::S7549C6 */ AMB_check_base_class_offset(lv, (S7549C3*)(S7549C2*)(S7549C6*), ABISELECT(352,240), "S7549C11");
    /*is_ambiguous_... S7549C11::S7549C6 */ AMB_check_base_class_offset(lv, (S7549C3*)(S7549C2*)(S7549C6*), ABISELECT(352,240), "S7549C11");
    /*is_ambiguous_... S7549C8::S7549C2 */ AMB_check_base_class_offset(lv, (S7549C2*)(S7549C8*), ABISELECT(264,176), "S7549C11");
    /*is_ambiguous_... S7549C11::S7549C6 */ AMB_check_base_class_offset(lv, (S7549C2*)(S7549C6*), ABISELECT(392,264), "S7549C11");
    /*is_ambiguous_... S7549C11::S7549C6 */ AMB_check_base_class_offset(lv, (S7549C3*)(S7549C6*), ABISELECT(480,328), "S7549C11");
    check_base_class_offset(lv, (S7549C6*)(S7549C8*), ABISELECT(392,264), "S7549C11");
    check_base_class_offset(lv, (S7549C8*), ABISELECT(224,152), "S7549C11");
    check_base_class_offset(lv, (S7549C8*)(S7549C7*), ABISELECT(224,152), "S7549C11");
    check_base_class_offset(lv, (S7549C7*), ABISELECT(528,352), "S7549C11");
    /*is_ambiguous_... S7549C11::S7549C6 */ AMB_check_base_class_offset(lv, (S7549C2*)(S7549C6*), ABISELECT(40,24), "S7549C11");
    /*is_ambiguous_... S7549C11::S7549C6 */ AMB_check_base_class_offset(lv, (S7549C3*)(S7549C6*), ABISELECT(128,88), "S7549C11");
    /*is_ambiguous_... S7549C11::S7549C6 */ AMB_check_base_class_offset(lv, (S7549C6*), ABISELECT(40,24), "S7549C11");
    check_base_class_offset(lv, (S7549C5*), ABISELECT(576,384), "S7549C11");
    set_bf_and_test(lv, s7549c11f0, ABISELECT(164,112), 0, 13, 1, "S7549C11");
    set_bf_and_test(lv, s7549c11f0, ABISELECT(164,112), 0, 13, hide_sll(1LL<<12), "S7549C11");
    check_field_offset(lv, s7549c11f1, ABISELECT(168,116), "S7549C11.s7549c11f1");
    check_field_offset(lv, s7549c11f2, ABISELECT(208,136), "S7549C11.s7549c11f2");
    check_field_offset(lv, s7549c11f3, ABISELECT(212,140), "S7549C11.s7549c11f3");
    check_field_offset(lv, s7549c11f4, ABISELECT(216,144), "S7549C11.s7549c11f4");
    test_class_info(&lv, &cd_S7549C11);
    dp->~S7549C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7549C11(Test_S7549C11, "S7549C11", ABISELECT(1136,760));

#else // __cplusplus

extern void _ZN8S7549C11C1Ev();
extern void _ZN8S7549C11D2Ev();
Name_Map name_map_S7549C11[] = {
  NSPAIR(_ZN8S7549C11C1Ev),
  NSPAIR(_ZN8S7549C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7549C3;
extern VTBL_ENTRY _ZTI7S7549C3[];
extern  VTBL_ENTRY _ZTV7S7549C3[];
extern Class_Descriptor cd_S7549C3;
extern VTBL_ENTRY _ZTI7S7549C3[];
extern  VTBL_ENTRY _ZTV7S7549C3[];
extern Class_Descriptor cd_S7549C3;
extern VTBL_ENTRY _ZTI7S7549C3[];
extern  VTBL_ENTRY _ZTV7S7549C3[];
extern Class_Descriptor cd_S7549C2;
extern VTBL_ENTRY _ZTI7S7549C2[];
extern  VTBL_ENTRY _ZTV7S7549C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C2[];
extern Class_Descriptor cd_S7549C2;
extern VTBL_ENTRY _ZTI7S7549C2[];
extern  VTBL_ENTRY _ZTV7S7549C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C2[];
extern Class_Descriptor cd_S7549C3;
extern VTBL_ENTRY _ZTI7S7549C3[];
extern  VTBL_ENTRY _ZTV7S7549C3[];
extern Class_Descriptor cd_S7549C6;
extern VTBL_ENTRY _ZTI7S7549C6[];
extern  VTBL_ENTRY _ZTV7S7549C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C6[];
extern Class_Descriptor cd_S7549C8;
extern VTBL_ENTRY _ZTI7S7549C8[];
extern  VTBL_ENTRY _ZTV7S7549C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C8[];
extern Class_Descriptor cd_S7549C7;
extern VTBL_ENTRY _ZTI7S7549C7[];
extern  VTBL_ENTRY _ZTV7S7549C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C7[];
extern Class_Descriptor cd_S7549C2;
extern VTBL_ENTRY _ZTI7S7549C2[];
extern  VTBL_ENTRY _ZTV7S7549C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C2[];
extern Class_Descriptor cd_S7549C3;
extern VTBL_ENTRY _ZTI7S7549C3[];
extern  VTBL_ENTRY _ZTV7S7549C3[];
extern Class_Descriptor cd_S7549C6;
extern VTBL_ENTRY _ZTI7S7549C6[];
extern  VTBL_ENTRY _ZTV7S7549C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C6[];
extern Class_Descriptor cd_S7549C5;
extern VTBL_ENTRY _ZTI7S7549C5[];
extern  VTBL_ENTRY _ZTV7S7549C5[];
static Base_Class bases_S7549C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7549C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7549C3,    ABISELECT(224,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7549C3,    ABISELECT(352,240), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7549C2,    ABISELECT(264,176), //bcp->offset
    28, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7549C2,    ABISELECT(392,264), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7549C3,    ABISELECT(480,328), //bcp->offset
    42, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7549C6,    ABISELECT(392,264), //bcp->offset
    36, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7549C8,    ABISELECT(224,152), //bcp->offset
    17, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7549C7,    ABISELECT(528,352), //bcp->offset
    45, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7549C2,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7549C3,    ABISELECT(128,88), //bcp->offset
    14, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7549C6,    ABISELECT(40,24), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7549C5,    ABISELECT(576,384), //bcp->offset
    50, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7549C11[];
extern void _ZN7S7549C32v2Ev();
extern void _ZN8S7549C11D1Ev();
extern void _ZN8S7549C11D0Ev();
extern void _ZN7S7549C22v3Ev();
extern void _ZN7S7549C32v2Ev();
extern void _ZN7S7549C32v2Ev();
extern void _ZN7S7549C82v4Ev();
extern void _ZN7S7549C82v5Ev();
extern void _ZN7S7549C22v3Ev();
extern void _ZN7S7549C32v2Ev();
extern void _ZN7S7549C22v3Ev();
extern void _ZN7S7549C32v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S7549C11D1Ev,_ZTv0_n12_N8S7549C11D1Ev)();
extern void ABISELECT(_ZThn576_N8S7549C11D1Ev,_ZThn384_N8S7549C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7549C11D0Ev,_ZTv0_n12_N8S7549C11D0Ev)();
extern void ABISELECT(_ZThn576_N8S7549C11D0Ev,_ZThn384_N8S7549C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7549C11[] = {
  ABISELECT(576,384),
  ABISELECT(528,352),
  ABISELECT(392,264),
  ABISELECT(352,240),
  ABISELECT(224,152),
  0,
  (VTBL_ENTRY)&(_ZTI8S7549C11[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  (VTBL_ENTRY)&_ZN8S7549C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7549C11D0Ev,
  ABISELECT(312,216),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S7549C11[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S7549C11[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  ABISELECT(40,24),
  0,
  0,
  0,
  ABISELECT(168,112),
  ABISELECT(128,88),
  ABISELECT(-224,-152),
  (VTBL_ENTRY)&(_ZTI8S7549C11[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v4Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v5Ev,
  ABISELECT(88,64),
  ABISELECT(-264,-176),
  (VTBL_ENTRY)&(_ZTI8S7549C11[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
  0,
  ABISELECT(-352,-240),
  (VTBL_ENTRY)&(_ZTI8S7549C11[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  ABISELECT(88,64),
  0,
  ABISELECT(-40,-24),
  ABISELECT(-392,-264),
  (VTBL_ENTRY)&(_ZTI8S7549C11[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
  ABISELECT(-480,-328),
  (VTBL_ENTRY)&(_ZTI8S7549C11[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  ABISELECT(-136,-88),
  ABISELECT(-176,-112),
  ABISELECT(-304,-200),
  ABISELECT(-528,-352),
  (VTBL_ENTRY)&(_ZTI8S7549C11[0]),
  ABISELECT(-576,-384),
  ABISELECT(-576,-384),
  (VTBL_ENTRY)&(_ZTI8S7549C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7549C11D1Ev,_ZTv0_n12_N8S7549C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7549C11D0Ev,_ZTv0_n12_N8S7549C11D0Ev),
};
extern VTBL_ENTRY _ZTV8S7549C11[];
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C6__A__8S7549C11[] = {
  ABISELECT(312,216),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C6[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C27S7549C6__A2__8S7549C11[] = {
  ABISELECT(312,216),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__7S7549C27S7549C6__A2__8S7549C11[] = {
  0,
  ABISELECT(-312,-216),
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__7S7549C6__A__8S7549C11[] = {
  0,
  ABISELECT(-312,-216),
  (VTBL_ENTRY)&(_ZTI7S7549C6[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C32v2Ev();
extern void _ZN7S7549C82v4Ev();
extern void _ZN7S7549C82v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C8__8S7549C11[] = {
  ABISELECT(168,112),
  ABISELECT(128,88),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v4Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v5Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C27S7549C8__8S7549C11[] = {
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__7S7549C27S7549C8__8S7549C11[] = {
  0,
  ABISELECT(-88,-64),
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C2__7S7549C8__8S7549C11[] = {
  ABISELECT(88,64),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__A1__7S7549C8__8S7549C11[] = {
  0,
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C6__7S7549C8__8S7549C11[] = {
  ABISELECT(88,64),
  0,
  ABISELECT(-40,-24),
  ABISELECT(-168,-112),
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C37S7549C6__A2__7S7549C8__8S7549C11[] = {
  ABISELECT(-256,-176),
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C6__8S7549C11[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C6[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C27S7549C6__A1__8S7549C11[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__7S7549C27S7549C6__A1__8S7549C11[] = {
  0,
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__7S7549C6__8S7549C11[] = {
  0,
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI7S7549C6[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7549C7__8S7549C11[] = {
  ABISELECT(-136,-88),
  ABISELECT(-176,-112),
  ABISELECT(-304,-200),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C7[0]),
};
extern void _ZN7S7549C32v2Ev();
extern void _ZN7S7549C82v4Ev();
extern void _ZN7S7549C82v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C8__7S7549C7__8S7549C11[] = {
  ABISELECT(40,24),
  0,
  0,
  0,
  ABISELECT(168,112),
  ABISELECT(128,88),
  ABISELECT(304,200),
  (VTBL_ENTRY)&(_ZTI7S7549C7[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v4Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v5Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C27S7549C8__7S7549C7__8S7549C11[] = {
  ABISELECT(88,64),
  ABISELECT(264,176),
  (VTBL_ENTRY)&(_ZTI7S7549C7[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__A1__7S7549C7__8S7549C11[] = {
  0,
  ABISELECT(176,112),
  (VTBL_ENTRY)&(_ZTI7S7549C7[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C6__7S7549C7__8S7549C11[] = {
  ABISELECT(88,64),
  0,
  ABISELECT(-40,-24),
  ABISELECT(136,88),
  (VTBL_ENTRY)&(_ZTI7S7549C7[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C37S7549C6__A2__7S7549C7__8S7549C11[] = {
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI7S7549C7[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
static  VTT_ENTRY vtt_S7549C11[] = {
  {&(_ZTV8S7549C11[7]),  7,55},
  {&(_tg__ZTV7S7549C6__A__8S7549C11[3]),  3,4},
  {&(_tg__ZTV7S7549C27S7549C6__A2__8S7549C11[3]),  3,4},
  {&(_tg__ZTV7S7549C3__7S7549C27S7549C6__A2__8S7549C11[3]),  3,4},
  {&(_tg__ZTV7S7549C3__7S7549C6__A__8S7549C11[3]),  3,4},
  {&(_ZTV8S7549C11[25]),  25,55},
  {&(_ZTV8S7549C11[31]),  31,55},
  {&(_ZTV8S7549C11[35]),  35,55},
  {&(_ZTV8S7549C11[41]),  41,55},
  {&(_ZTV8S7549C11[44]),  44,55},
  {&(_ZTV8S7549C11[50]),  50,55},
  {&(_ZTV8S7549C11[13]),  13,55},
  {&(_ZTV8S7549C11[53]),  53,55},
  {&(_tg__ZTV7S7549C8__8S7549C11[4]),  4,7},
  {&(_tg__ZTV7S7549C27S7549C8__8S7549C11[3]),  3,4},
  {&(_tg__ZTV7S7549C3__7S7549C27S7549C8__8S7549C11[3]),  3,4},
  {&(_tg__ZTV7S7549C2__7S7549C8__8S7549C11[3]),  3,4},
  {&(_tg__ZTV7S7549C3__A1__7S7549C8__8S7549C11[3]),  3,4},
  {&(_tg__ZTV7S7549C6__7S7549C8__8S7549C11[5]),  5,6},
  {&(_tg__ZTV7S7549C37S7549C6__A2__7S7549C8__8S7549C11[2]),  2,3},
  {&(_tg__ZTV7S7549C6__8S7549C11[3]),  3,4},
  {&(_tg__ZTV7S7549C27S7549C6__A1__8S7549C11[3]),  3,4},
  {&(_tg__ZTV7S7549C3__7S7549C27S7549C6__A1__8S7549C11[3]),  3,4},
  {&(_tg__ZTV7S7549C3__7S7549C6__8S7549C11[3]),  3,4},
  {&(_tg__ZTV7S7549C7__8S7549C11[5]),  5,5},
  {&(_tg__ZTV7S7549C8__7S7549C7__8S7549C11[8]),  8,11},
  {&(_tg__ZTV7S7549C27S7549C8__7S7549C7__8S7549C11[3]),  3,4},
  {&(_tg__ZTV7S7549C3__A1__7S7549C7__8S7549C11[3]),  3,4},
  {&(_tg__ZTV7S7549C6__7S7549C7__8S7549C11[5]),  5,6},
  {&(_tg__ZTV7S7549C37S7549C6__A2__7S7549C7__8S7549C11[2]),  2,3},
};
extern VTBL_ENTRY _ZTI8S7549C11[];
extern  VTBL_ENTRY _ZTV8S7549C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7549C11[];
static VTBL_ENTRY alt_thunk_names67[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7549C11D0Ev,_ZTv0_n12_N8S7549C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N8S7549C11D0Ev,_ZThn384_N8S7549C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7549C11D1Ev,_ZTv0_n12_N8S7549C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N8S7549C11D1Ev,_ZThn384_N8S7549C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7549C11 = {  "S7549C11", // class name
  bases_S7549C11, 13,
  &(vtc_S7549C11[0]), // expected_vtbl_contents
  &(vtt_S7549C11[0]), // expected_vtt_contents
  ABISELECT(1136,760), // object size
  NSPAIRA(_ZTI8S7549C11),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7549C11),55, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7549C11),30, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names67,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7549C9  : S7549C10 , S7549C5 , S7549C2 , S7549C11 {
  ::S7549C5 s7549c9f0;
  virtual void  v8(); // _ZN7S7549C92v8Ev
  ~S7549C9(); // tgen
  S7549C9(); // tgen
};
//SIG(-1 S7549C9) C1{ BC2{ vd v2 v3} BC3{ vd m FC4{ BC5{ VBC6{ v4 Fp[2] Fi Fs Fi} v5 FC6 Fi[9]} BC6} Fp FC6 FC7{ VBC8{ BC6 BC5 VBC4 v6 v7} Fi Fi:25 FD Fi[2]}} BC5 BC9{ BC6 VBC8 VBC7 BC4 VBC3 vd Fi:13 Fp[5] Fi Fc Fi[2]} v1 FC3}


void  S7549C9 ::v8(){vfunc_called(this, "_ZN7S7549C92v8Ev");}
S7549C9 ::~S7549C9(){ note_dtor("S7549C9", this);} // tgen
S7549C9 ::S7549C9(){ note_ctor("S7549C9", this);} // tgen

static void Test_S7549C9()
{
  extern Class_Descriptor cd_S7549C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(149,396)];
    init_test(&cd_S7549C9, buf);
    S7549C9 *dp, &lv = *(dp=new (buf) S7549C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2368,1580), "sizeof(S7549C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7549C9)");
    check_base_class_offset(lv, (S7549C10*), 0, "S7549C9");
    /*is_ambiguous_... S7549C9::S7549C5 */ AMB_check_base_class_offset(lv, (S7549C5*), ABISELECT(16,4), "S7549C9");
    /*is_ambiguous_... S7549C9::S7549C2 */ AMB_check_base_class_offset(lv, (S7549C3*)(S7549C2*), ABISELECT(1456,972), "S7549C9");
    /*is_ambiguous_... S7549C8::S7549C2 */ AMB_check_base_class_offset(lv, (S7549C3*)(S7549C2*)(S7549C8*), ABISELECT(1456,972), "S7549C9");
    /*is_ambiguous_... S7549C9::S7549C6 */ AMB_check_base_class_offset(lv, (S7549C3*)(S7549C2*)(S7549C6*), ABISELECT(1456,972), "S7549C9");
    /*is_ambiguous_... S7549C11::S7549C6 */ AMB_check_base_class_offset(lv, (S7549C3*)(S7549C2*)(S7549C6*)(S7549C11*), ABISELECT(1456,972), "S7549C9");
    /*is_ambiguous_... S7549C9::S7549C2 */ AMB_check_base_class_offset(lv, (S7549C2*), ABISELECT(576,380), "S7549C9");
    /*is_ambiguous_... S7549C11::S7549C3 */ AMB_check_base_class_offset(lv, (S7549C3*)(S7549C11*), ABISELECT(664,444), "S7549C9");
    /*is_ambiguous_... S7549C8::S7549C3 */ AMB_check_base_class_offset(lv, (S7549C3*)(S7549C8*), ABISELECT(1496,996), "S7549C9");
    /*is_ambiguous_... S7549C8::S7549C2 */ AMB_check_base_class_offset(lv, (S7549C2*)(S7549C8*), ABISELECT(1536,1020), "S7549C9");
    /*is_ambiguous_... S7549C9::S7549C6 */ AMB_check_base_class_offset(lv, (S7549C2*)(S7549C6*), ABISELECT(1624,1084), "S7549C9");
    /*is_ambiguous_... S7549C9::S7549C6 */ AMB_check_base_class_offset(lv, (S7549C3*)(S7549C6*), ABISELECT(1712,1148), "S7549C9");
    check_base_class_offset(lv, (S7549C6*)(S7549C8*), ABISELECT(1624,1084), "S7549C9");
    check_base_class_offset(lv, (S7549C8*)(S7549C11*), ABISELECT(1496,996), "S7549C9");
    check_base_class_offset(lv, (S7549C8*)(S7549C7*), ABISELECT(1496,996), "S7549C9");
    check_base_class_offset(lv, (S7549C7*)(S7549C11*), ABISELECT(1760,1172), "S7549C9");
    /*is_ambiguous_... S7549C11::S7549C6 */ AMB_check_base_class_offset(lv, (S7549C2*)(S7549C6*)(S7549C11*), ABISELECT(704,468), "S7549C9");
    /*is_ambiguous_... S7549C11::S7549C6 */ AMB_check_base_class_offset(lv, (S7549C3*)(S7549C6*)(S7549C11*), ABISELECT(792,532), "S7549C9");
    /*is_ambiguous_... S7549C11::S7549C6 */ AMB_check_base_class_offset(lv, (S7549C6*)(S7549C11*), ABISELECT(704,468), "S7549C9");
    check_base_class_offset(lv, (S7549C5*)(S7549C11*), ABISELECT(1808,1204), "S7549C9");
    check_base_class_offset(lv, (S7549C11*), ABISELECT(664,444), "S7549C9");
    check_field_offset(lv, s7549c9f0, ABISELECT(896,596), "S7549C9.s7549c9f0");
    test_class_info(&lv, &cd_S7549C9);
    dp->~S7549C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7549C9(Test_S7549C9, "S7549C9", ABISELECT(2368,1580));

#else // __cplusplus

extern void _ZN7S7549C9C1Ev();
extern void _ZN7S7549C9D1Ev();
Name_Map name_map_S7549C9[] = {
  NSPAIR(_ZN7S7549C9C1Ev),
  NSPAIR(_ZN7S7549C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7549C10;
extern VTBL_ENTRY _ZTI8S7549C10[];
extern  VTBL_ENTRY _ZTV8S7549C10[];
extern Class_Descriptor cd_S7549C5;
extern VTBL_ENTRY _ZTI7S7549C5[];
extern  VTBL_ENTRY _ZTV7S7549C5[];
extern Class_Descriptor cd_S7549C3;
extern VTBL_ENTRY _ZTI7S7549C3[];
extern  VTBL_ENTRY _ZTV7S7549C3[];
extern Class_Descriptor cd_S7549C2;
extern VTBL_ENTRY _ZTI7S7549C2[];
extern  VTBL_ENTRY _ZTV7S7549C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C2[];
extern Class_Descriptor cd_S7549C3;
extern VTBL_ENTRY _ZTI7S7549C3[];
extern  VTBL_ENTRY _ZTV7S7549C3[];
extern Class_Descriptor cd_S7549C3;
extern VTBL_ENTRY _ZTI7S7549C3[];
extern  VTBL_ENTRY _ZTV7S7549C3[];
extern Class_Descriptor cd_S7549C2;
extern VTBL_ENTRY _ZTI7S7549C2[];
extern  VTBL_ENTRY _ZTV7S7549C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C2[];
extern Class_Descriptor cd_S7549C2;
extern VTBL_ENTRY _ZTI7S7549C2[];
extern  VTBL_ENTRY _ZTV7S7549C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C2[];
extern Class_Descriptor cd_S7549C3;
extern VTBL_ENTRY _ZTI7S7549C3[];
extern  VTBL_ENTRY _ZTV7S7549C3[];
extern Class_Descriptor cd_S7549C6;
extern VTBL_ENTRY _ZTI7S7549C6[];
extern  VTBL_ENTRY _ZTV7S7549C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C6[];
extern Class_Descriptor cd_S7549C8;
extern VTBL_ENTRY _ZTI7S7549C8[];
extern  VTBL_ENTRY _ZTV7S7549C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C8[];
extern Class_Descriptor cd_S7549C7;
extern VTBL_ENTRY _ZTI7S7549C7[];
extern  VTBL_ENTRY _ZTV7S7549C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C7[];
extern Class_Descriptor cd_S7549C2;
extern VTBL_ENTRY _ZTI7S7549C2[];
extern  VTBL_ENTRY _ZTV7S7549C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C2[];
extern Class_Descriptor cd_S7549C3;
extern VTBL_ENTRY _ZTI7S7549C3[];
extern  VTBL_ENTRY _ZTV7S7549C3[];
extern Class_Descriptor cd_S7549C6;
extern VTBL_ENTRY _ZTI7S7549C6[];
extern  VTBL_ENTRY _ZTV7S7549C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C6[];
extern Class_Descriptor cd_S7549C5;
extern VTBL_ENTRY _ZTI7S7549C5[];
extern  VTBL_ENTRY _ZTV7S7549C5[];
extern Class_Descriptor cd_S7549C11;
extern VTBL_ENTRY _ZTI8S7549C11[];
extern  VTBL_ENTRY _ZTV8S7549C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7549C11[];
static Base_Class bases_S7549C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7549C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7549C5,    ABISELECT(16,4), //bcp->offset
    12, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7549C3,    ABISELECT(1456,972), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7549C2,    ABISELECT(576,380), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7549C3,    ABISELECT(664,444), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7549C3,    ABISELECT(1496,996), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7549C2,    ABISELECT(1536,1020), //bcp->offset
    52, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7549C2,    ABISELECT(1624,1084), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7549C3,    ABISELECT(1712,1148), //bcp->offset
    62, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7549C6,    ABISELECT(1624,1084), //bcp->offset
    56, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7549C8,    ABISELECT(1496,996), //bcp->offset
    41, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7549C7,    ABISELECT(1760,1172), //bcp->offset
    65, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S7549C2,    ABISELECT(704,468), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7549C3,    ABISELECT(792,532), //bcp->offset
    34, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7549C6,    ABISELECT(704,468), //bcp->offset
    30, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7549C5,    ABISELECT(1808,1204), //bcp->offset
    70, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S7549C11,    ABISELECT(664,444), //bcp->offset
    20, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7549C9[];
extern void _ZN7S7549C9D1Ev();
extern void _ZN7S7549C9D0Ev();
extern void _ZN8S7549C102v6Ev();
extern void _ZN8S7549C102v7Ev();
extern void _ZN7S7549C92v8Ev();
extern void ABISELECT(_ZThn16_N7S7549C9D1Ev,_ZThn4_N7S7549C9D1Ev)();
extern void ABISELECT(_ZThn16_N7S7549C9D0Ev,_ZThn4_N7S7549C9D0Ev)();
extern void _ZN7S7549C22v3Ev();
extern void _ZN7S7549C32v2Ev();
extern void ABISELECT(_ZThn664_N7S7549C9D1Ev,_ZThn444_N7S7549C9D1Ev)();
extern void ABISELECT(_ZThn664_N7S7549C9D0Ev,_ZThn444_N7S7549C9D0Ev)();
extern void _ZN7S7549C22v3Ev();
extern void _ZN7S7549C32v2Ev();
extern void _ZN7S7549C32v2Ev();
extern void _ZN7S7549C32v2Ev();
extern void _ZN7S7549C82v4Ev();
extern void _ZN7S7549C82v5Ev();
extern void _ZN7S7549C22v3Ev();
extern void _ZN7S7549C22v3Ev();
extern void _ZN7S7549C32v2Ev();
extern void ABISELECT(_ZTv0_n24_N7S7549C9D1Ev,_ZTv0_n12_N7S7549C9D1Ev)();
extern void ABISELECT(_ZThn1808_N7S7549C9D1Ev,_ZThn1204_N7S7549C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7549C9D0Ev,_ZTv0_n12_N7S7549C9D0Ev)();
extern void ABISELECT(_ZThn1808_N7S7549C9D0Ev,_ZThn1204_N7S7549C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7549C9[] = {
  ABISELECT(1808,1204),
  ABISELECT(1760,1172),
  ABISELECT(1624,1084),
  ABISELECT(1496,996),
  ABISELECT(1456,972),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C9[0]),
  (VTBL_ENTRY)&_ZN7S7549C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7549C9D0Ev,
  (VTBL_ENTRY)&_ZN8S7549C102v6Ev,
  (VTBL_ENTRY)&_ZN8S7549C102v7Ev,
  (VTBL_ENTRY)&_ZN7S7549C92v8Ev,
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI7S7549C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S7549C9D1Ev,_ZThn4_N7S7549C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S7549C9D0Ev,_ZThn4_N7S7549C9D0Ev),
  ABISELECT(880,592),
  ABISELECT(-576,-380),
  (VTBL_ENTRY)&(_ZTI7S7549C9[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
  ABISELECT(1144,760),
  ABISELECT(1096,728),
  ABISELECT(960,640),
  ABISELECT(792,528),
  ABISELECT(832,552),
  ABISELECT(-664,-444),
  (VTBL_ENTRY)&(_ZTI7S7549C9[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn664_N7S7549C9D1Ev,_ZThn444_N7S7549C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn664_N7S7549C9D0Ev,_ZThn444_N7S7549C9D0Ev),
  ABISELECT(752,504),
  ABISELECT(-704,-468),
  (VTBL_ENTRY)&(_ZTI7S7549C9[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
  ABISELECT(-792,-532),
  (VTBL_ENTRY)&(_ZTI7S7549C9[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  0,
  ABISELECT(-1456,-972),
  (VTBL_ENTRY)&(_ZTI7S7549C9[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  ABISELECT(40,24),
  0,
  0,
  0,
  ABISELECT(128,88),
  ABISELECT(-40,-24),
  ABISELECT(-1496,-996),
  (VTBL_ENTRY)&(_ZTI7S7549C9[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v4Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v5Ev,
  ABISELECT(-80,-48),
  ABISELECT(-1536,-1020),
  (VTBL_ENTRY)&(_ZTI7S7549C9[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
  ABISELECT(88,64),
  0,
  ABISELECT(-168,-112),
  ABISELECT(-1624,-1084),
  (VTBL_ENTRY)&(_ZTI7S7549C9[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
  ABISELECT(-1712,-1148),
  (VTBL_ENTRY)&(_ZTI7S7549C9[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  ABISELECT(-136,-88),
  ABISELECT(-304,-200),
  ABISELECT(-264,-176),
  ABISELECT(-1760,-1172),
  (VTBL_ENTRY)&(_ZTI7S7549C9[0]),
  ABISELECT(-1808,-1204),
  ABISELECT(-1808,-1204),
  (VTBL_ENTRY)&(_ZTI7S7549C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7549C9D1Ev,_ZTv0_n12_N7S7549C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7549C9D0Ev,_ZTv0_n12_N7S7549C9D0Ev),
};
extern VTBL_ENTRY _ZTV7S7549C9[];
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C2__7S7549C9[] = {
  ABISELECT(880,592),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__7S7549C2__7S7549C9[] = {
  0,
  ABISELECT(-880,-592),
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C32v2Ev();
extern void _ZN8S7549C11D1Ev();
extern void _ZN8S7549C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7549C11__7S7549C9[] = {
  ABISELECT(1144,760),
  ABISELECT(1096,728),
  ABISELECT(960,640),
  ABISELECT(792,528),
  ABISELECT(832,552),
  0,
  (VTBL_ENTRY)&(_ZTI8S7549C11[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  (VTBL_ENTRY)&_ZN8S7549C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7549C11D0Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C68S7549C11__A1__7S7549C9[] = {
  ABISELECT(752,504),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C6[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C27S7549C68S7549C11__A3__7S7549C9[] = {
  ABISELECT(752,504),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__7S7549C27S7549C68S7549C11__A3__7S7549C9[] = {
  0,
  ABISELECT(-752,-504),
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__7S7549C68S7549C11__A1__7S7549C9[] = {
  0,
  ABISELECT(-752,-504),
  (VTBL_ENTRY)&(_ZTI7S7549C6[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C32v2Ev();
extern void _ZN7S7549C82v4Ev();
extern void _ZN7S7549C82v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C8__8S7549C11__7S7549C9[] = {
  ABISELECT(40,24),
  0,
  0,
  0,
  ABISELECT(128,88),
  ABISELECT(-40,-24),
  ABISELECT(-832,-552),
  (VTBL_ENTRY)&(_ZTI8S7549C11[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v4Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v5Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C27S7549C8__8S7549C11__7S7549C9[] = {
  ABISELECT(-80,-48),
  ABISELECT(-872,-576),
  (VTBL_ENTRY)&(_ZTI8S7549C11[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__A2__8S7549C11__7S7549C9[] = {
  0,
  ABISELECT(-792,-528),
  (VTBL_ENTRY)&(_ZTI8S7549C11[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C6__8S7549C11__7S7549C9[] = {
  ABISELECT(88,64),
  0,
  ABISELECT(-168,-112),
  ABISELECT(-960,-640),
  (VTBL_ENTRY)&(_ZTI8S7549C11[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C37S7549C6__A3__8S7549C11__7S7549C9[] = {
  ABISELECT(-1048,-704),
  (VTBL_ENTRY)&(_ZTI8S7549C11[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7549C7__8S7549C11__7S7549C9[] = {
  ABISELECT(-136,-88),
  ABISELECT(-304,-200),
  ABISELECT(-264,-176),
  ABISELECT(-1096,-728),
  (VTBL_ENTRY)&(_ZTI8S7549C11[0]),
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C6__A__8S7549C11__7S7549C9[] = {
  ABISELECT(752,504),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S7549C11[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7549C11D1Ev,_ZTv0_n12_N8S7549C11D1Ev)();
extern void ABISELECT(_ZThn1144_N8S7549C11D1Ev,_ZThn760_N8S7549C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7549C11D0Ev,_ZTv0_n12_N8S7549C11D0Ev)();
extern void ABISELECT(_ZThn1144_N8S7549C11D0Ev,_ZThn760_N8S7549C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7549C5__8S7549C11__7S7549C9[] = {
  ABISELECT(-1144,-760),
  ABISELECT(-1144,-760),
  (VTBL_ENTRY)&(_ZTI8S7549C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7549C11D1Ev,_ZTv0_n12_N8S7549C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7549C11D0Ev,_ZTv0_n12_N8S7549C11D0Ev),
};
extern void _ZN7S7549C32v2Ev();
extern void _ZN7S7549C82v4Ev();
extern void _ZN7S7549C82v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C8__7S7549C9[] = {
  ABISELECT(128,88),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v4Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v5Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C27S7549C8__A1__7S7549C9[] = {
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__7S7549C27S7549C8__A1__7S7549C9[] = {
  0,
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C2__7S7549C8__7S7549C9[] = {
  ABISELECT(-80,-48),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__A1__7S7549C8__7S7549C9[] = {
  0,
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C6__7S7549C8__7S7549C9[] = {
  ABISELECT(88,64),
  0,
  ABISELECT(-168,-112),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C37S7549C6__A2__7S7549C8__7S7549C9[] = {
  ABISELECT(-216,-152),
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C6__7S7549C9[] = {
  ABISELECT(-168,-112),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C6[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C27S7549C6__A2__7S7549C9[] = {
  ABISELECT(-168,-112),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__7S7549C27S7549C6__A2__7S7549C9[] = {
  0,
  ABISELECT(168,112),
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__7S7549C6__7S7549C9[] = {
  0,
  ABISELECT(168,112),
  (VTBL_ENTRY)&(_ZTI7S7549C6[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7549C7__7S7549C9[] = {
  ABISELECT(-136,-88),
  ABISELECT(-304,-200),
  ABISELECT(-264,-176),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C7[0]),
};
extern void _ZN7S7549C32v2Ev();
extern void _ZN7S7549C82v4Ev();
extern void _ZN7S7549C82v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C8__7S7549C7__7S7549C9[] = {
  ABISELECT(40,24),
  0,
  0,
  0,
  ABISELECT(128,88),
  ABISELECT(-40,-24),
  ABISELECT(264,176),
  (VTBL_ENTRY)&(_ZTI7S7549C7[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v4Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v5Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C27S7549C8__7S7549C7__7S7549C9[] = {
  ABISELECT(-80,-48),
  ABISELECT(224,152),
  (VTBL_ENTRY)&(_ZTI7S7549C7[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__A1__7S7549C7__7S7549C9[] = {
  0,
  ABISELECT(304,200),
  (VTBL_ENTRY)&(_ZTI7S7549C7[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C6__7S7549C7__7S7549C9[] = {
  ABISELECT(88,64),
  0,
  ABISELECT(-168,-112),
  ABISELECT(136,88),
  (VTBL_ENTRY)&(_ZTI7S7549C7[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C37S7549C6__A2__7S7549C7__7S7549C9[] = {
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI7S7549C7[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
static  VTT_ENTRY vtt_S7549C9[] = {
  {&(_ZTV7S7549C9[7]),  7,75},
  {&(_tg__ZTV7S7549C2__7S7549C9[3]),  3,4},
  {&(_tg__ZTV7S7549C3__7S7549C2__7S7549C9[3]),  3,4},
  {&(_tg__ZTV8S7549C11__7S7549C9[7]),  7,10},
  {&(_tg__ZTV7S7549C68S7549C11__A1__7S7549C9[3]),  3,4},
  {&(_tg__ZTV7S7549C27S7549C68S7549C11__A3__7S7549C9[3]),  3,4},
  {&(_tg__ZTV7S7549C3__7S7549C27S7549C68S7549C11__A3__7S7549C9[3]),  3,4},
  {&(_tg__ZTV7S7549C3__7S7549C68S7549C11__A1__7S7549C9[3]),  3,4},
  {&(_tg__ZTV7S7549C8__8S7549C11__7S7549C9[8]),  8,11},
  {&(_tg__ZTV7S7549C27S7549C8__8S7549C11__7S7549C9[3]),  3,4},
  {&(_tg__ZTV7S7549C3__A2__8S7549C11__7S7549C9[3]),  3,4},
  {&(_tg__ZTV7S7549C6__8S7549C11__7S7549C9[5]),  5,6},
  {&(_tg__ZTV7S7549C37S7549C6__A3__8S7549C11__7S7549C9[2]),  2,3},
  {&(_tg__ZTV7S7549C7__8S7549C11__7S7549C9[5]),  5,5},
  {&(_tg__ZTV7S7549C6__A__8S7549C11__7S7549C9[3]),  3,4},
  {&(_tg__ZTV7S7549C5__8S7549C11__7S7549C9[3]),  3,5},
  {&(_ZTV7S7549C9[19]),  19,75},
  {&(_ZTV7S7549C9[40]),  40,75},
  {&(_ZTV7S7549C9[27]),  27,75},
  {&(_ZTV7S7549C9[49]),  49,75},
  {&(_ZTV7S7549C9[55]),  55,75},
  {&(_ZTV7S7549C9[61]),  61,75},
  {&(_ZTV7S7549C9[64]),  64,75},
  {&(_ZTV7S7549C9[70]),  70,75},
  {&(_ZTV7S7549C9[33]),  33,75},
  {&(_ZTV7S7549C9[73]),  73,75},
  {&(_tg__ZTV7S7549C8__7S7549C9[4]),  4,7},
  {&(_tg__ZTV7S7549C27S7549C8__A1__7S7549C9[3]),  3,4},
  {&(_tg__ZTV7S7549C3__7S7549C27S7549C8__A1__7S7549C9[3]),  3,4},
  {&(_tg__ZTV7S7549C2__7S7549C8__7S7549C9[3]),  3,4},
  {&(_tg__ZTV7S7549C3__A1__7S7549C8__7S7549C9[3]),  3,4},
  {&(_tg__ZTV7S7549C6__7S7549C8__7S7549C9[5]),  5,6},
  {&(_tg__ZTV7S7549C37S7549C6__A2__7S7549C8__7S7549C9[2]),  2,3},
  {&(_tg__ZTV7S7549C6__7S7549C9[3]),  3,4},
  {&(_tg__ZTV7S7549C27S7549C6__A2__7S7549C9[3]),  3,4},
  {&(_tg__ZTV7S7549C3__7S7549C27S7549C6__A2__7S7549C9[3]),  3,4},
  {&(_tg__ZTV7S7549C3__7S7549C6__7S7549C9[3]),  3,4},
  {&(_tg__ZTV7S7549C7__7S7549C9[5]),  5,5},
  {&(_tg__ZTV7S7549C8__7S7549C7__7S7549C9[8]),  8,11},
  {&(_tg__ZTV7S7549C27S7549C8__7S7549C7__7S7549C9[3]),  3,4},
  {&(_tg__ZTV7S7549C3__A1__7S7549C7__7S7549C9[3]),  3,4},
  {&(_tg__ZTV7S7549C6__7S7549C7__7S7549C9[5]),  5,6},
  {&(_tg__ZTV7S7549C37S7549C6__A2__7S7549C7__7S7549C9[2]),  2,3},
};
extern VTBL_ENTRY _ZTI7S7549C9[];
extern  VTBL_ENTRY _ZTV7S7549C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C9[];
static VTBL_ENTRY alt_thunk_names68[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7549C11D0Ev,_ZTv0_n12_N8S7549C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1144_N8S7549C11D0Ev,_ZThn760_N8S7549C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7549C11D1Ev,_ZTv0_n12_N8S7549C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1144_N8S7549C11D1Ev,_ZThn760_N8S7549C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7549C9D0Ev,_ZTv0_n12_N7S7549C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1808_N7S7549C9D0Ev,_ZThn1204_N7S7549C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7549C9D1Ev,_ZTv0_n12_N7S7549C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1808_N7S7549C9D1Ev,_ZThn1204_N7S7549C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7549C9 = {  "S7549C9", // class name
  bases_S7549C9, 17,
  &(vtc_S7549C9[0]), // expected_vtbl_contents
  &(vtt_S7549C9[0]), // expected_vtt_contents
  ABISELECT(2368,1580), // object size
  NSPAIRA(_ZTI7S7549C9),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7549C9),75, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7549C9),43, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names68,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7549C4  : virtual S7549C5 , S7549C8 , S7549C2 , virtual S7549C9 {
  char s7549c4f0[5];
  int s7549c4f1[2];
  __tsi64 s7549c4f2;
  ~S7549C4(); // tgen
  S7549C4(); // tgen
};
//SIG(-1 S7549C4) C1{ VBC2{ vd m FC3{ BC4{ VBC5{ v1 Fp[2] Fi Fs Fi} v2 FC5 Fi[9]} BC5} Fp FC5 FC6{ VBC7{ BC5 BC4 VBC3 v3 v4} Fi Fi:25 FD Fi[2]}} BC7 BC4 VBC8{ BC9{ vd v5 v6} BC2 BC4 BC10{ BC5 VBC7 VBC6 BC3 VBC2 vd Fi:13 Fp[5] Fi Fc Fi[2]} v7 FC2} Fc[5] Fi[2] FL}


S7549C4 ::~S7549C4(){ note_dtor("S7549C4", this);} // tgen
S7549C4 ::S7549C4(){ note_ctor("S7549C4", this);} // tgen

static void Test_S7549C4()
{
  extern Class_Descriptor cd_S7549C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(164,440)];
    init_test(&cd_S7549C4, buf);
    S7549C4 *dp, &lv = *(dp=new (buf) S7549C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2608,1756), "sizeof(S7549C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7549C4)");
    /*is_ambiguous_... S7549C4::S7549C5 */ AMB_check_base_class_offset(lv, (S7549C5*), ABISELECT(240,176), "S7549C4");
    check_base_class_offset(lv, (S7549C5*)(S7549C11*)(S7549C9*), ABISELECT(240,176), "S7549C4");
    /*is_ambiguous_... S7549C4::S7549C8 */ AMB_check_base_class_offset(lv, (S7549C3*)(S7549C8*), 0, "S7549C4");
    /*is_ambiguous_... S7549C4::S7549C8 */ AMB_check_base_class_offset(lv, (S7549C3*)(S7549C2*)(S7549C8*), ABISELECT(800,552), "S7549C4");
    /*is_ambiguous_... S7549C4::S7549C6 */ AMB_check_base_class_offset(lv, (S7549C3*)(S7549C2*)(S7549C6*), ABISELECT(800,552), "S7549C4");
    /*is_ambiguous_... S7549C4::S7549C2 */ AMB_check_base_class_offset(lv, (S7549C3*)(S7549C2*), ABISELECT(800,552), "S7549C4");
    /*is_ambiguous_... S7549C9::S7549C2 */ AMB_check_base_class_offset(lv, (S7549C3*)(S7549C2*)(S7549C9*), ABISELECT(800,552), "S7549C4");
    /*is_ambiguous_... S7549C4::S7549C8 */ AMB_check_base_class_offset(lv, (S7549C3*)(S7549C2*)(S7549C8*), ABISELECT(800,552), "S7549C4");
    /*is_ambiguous_... S7549C11::S7549C6 */ AMB_check_base_class_offset(lv, (S7549C3*)(S7549C2*)(S7549C6*)(S7549C11*)(S7549C9*), ABISELECT(800,552), "S7549C4");
    /*is_ambiguous_... S7549C4::S7549C8 */ AMB_check_base_class_offset(lv, (S7549C2*)(S7549C8*), ABISELECT(40,24), "S7549C4");
    /*is_ambiguous_... S7549C4::S7549C6 */ AMB_check_base_class_offset(lv, (S7549C2*)(S7549C6*), ABISELECT(840,576), "S7549C4");
    /*is_ambiguous_... S7549C4::S7549C6 */ AMB_check_base_class_offset(lv, (S7549C3*)(S7549C6*), ABISELECT(928,640), "S7549C4");
    /*is_ambiguous_... S7549C4::S7549C8 */ AMB_check_base_class_offset(lv, (S7549C6*)(S7549C8*), ABISELECT(840,576), "S7549C4");
    /*is_ambiguous_... S7549C4::S7549C8 */ AMB_check_base_class_offset(lv, (S7549C6*)(S7549C8*), ABISELECT(840,576), "S7549C4");
    /*is_ambiguous_... S7549C4::S7549C8 */ AMB_check_base_class_offset(lv, (S7549C8*), 0, "S7549C4");
    /*is_ambiguous_... S7549C4::S7549C2 */ AMB_check_base_class_offset(lv, (S7549C2*), ABISELECT(128,88), "S7549C4");
    check_base_class_offset(lv, (S7549C10*)(S7549C9*), ABISELECT(976,664), "S7549C4");
    /*is_ambiguous_... S7549C9::S7549C5 */ AMB_check_base_class_offset(lv, (S7549C5*)(S7549C9*), ABISELECT(992,668), "S7549C4");
    /*is_ambiguous_... S7549C9::S7549C2 */ AMB_check_base_class_offset(lv, (S7549C2*)(S7549C9*), ABISELECT(1552,1044), "S7549C4");
    /*is_ambiguous_... S7549C11::S7549C3 */ AMB_check_base_class_offset(lv, (S7549C3*)(S7549C11*)(S7549C9*), ABISELECT(1640,1108), "S7549C4");
    /*is_ambiguous_... S7549C4::S7549C8 */ AMB_check_base_class_offset(lv, (S7549C3*)(S7549C8*), ABISELECT(2432,1636), "S7549C4");
    /*is_ambiguous_... S7549C4::S7549C8 */ AMB_check_base_class_offset(lv, (S7549C2*)(S7549C8*), ABISELECT(2472,1660), "S7549C4");
    check_base_class_offset(lv, (S7549C8*)(S7549C11*)(S7549C9*), ABISELECT(2432,1636), "S7549C4");
    check_base_class_offset(lv, (S7549C8*)(S7549C7*), ABISELECT(2432,1636), "S7549C4");
    check_base_class_offset(lv, (S7549C7*)(S7549C11*)(S7549C9*), ABISELECT(2560,1724), "S7549C4");
    /*is_ambiguous_... S7549C11::S7549C6 */ AMB_check_base_class_offset(lv, (S7549C2*)(S7549C6*)(S7549C11*)(S7549C9*), ABISELECT(1680,1132), "S7549C4");
    /*is_ambiguous_... S7549C11::S7549C6 */ AMB_check_base_class_offset(lv, (S7549C3*)(S7549C6*)(S7549C11*)(S7549C9*), ABISELECT(1768,1196), "S7549C4");
    /*is_ambiguous_... S7549C11::S7549C6 */ AMB_check_base_class_offset(lv, (S7549C6*)(S7549C11*)(S7549C9*), ABISELECT(1680,1132), "S7549C4");
    check_base_class_offset(lv, (S7549C11*)(S7549C9*), ABISELECT(1640,1108), "S7549C4");
    check_base_class_offset(lv, (S7549C9*), ABISELECT(976,664), "S7549C4");
    check_field_offset(lv, s7549c4f0, ABISELECT(212,152), "S7549C4.s7549c4f0");
    check_field_offset(lv, s7549c4f1, ABISELECT(220,160), "S7549C4.s7549c4f1");
    check_field_offset(lv, s7549c4f2, ABISELECT(232,168), "S7549C4.s7549c4f2");
    test_class_info(&lv, &cd_S7549C4);
    dp->~S7549C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7549C4(Test_S7549C4, "S7549C4", ABISELECT(2608,1756));

#else // __cplusplus

extern void _ZN7S7549C4C1Ev();
extern void _ZN7S7549C4D1Ev();
Name_Map name_map_S7549C4[] = {
  NSPAIR(_ZN7S7549C4C1Ev),
  NSPAIR(_ZN7S7549C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7549C5;
extern VTBL_ENTRY _ZTI7S7549C5[];
extern  VTBL_ENTRY _ZTV7S7549C5[];
extern Class_Descriptor cd_S7549C3;
extern VTBL_ENTRY _ZTI7S7549C3[];
extern  VTBL_ENTRY _ZTV7S7549C3[];
extern Class_Descriptor cd_S7549C3;
extern VTBL_ENTRY _ZTI7S7549C3[];
extern  VTBL_ENTRY _ZTV7S7549C3[];
extern Class_Descriptor cd_S7549C2;
extern VTBL_ENTRY _ZTI7S7549C2[];
extern  VTBL_ENTRY _ZTV7S7549C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C2[];
extern Class_Descriptor cd_S7549C2;
extern VTBL_ENTRY _ZTI7S7549C2[];
extern  VTBL_ENTRY _ZTV7S7549C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C2[];
extern Class_Descriptor cd_S7549C3;
extern VTBL_ENTRY _ZTI7S7549C3[];
extern  VTBL_ENTRY _ZTV7S7549C3[];
extern Class_Descriptor cd_S7549C6;
extern VTBL_ENTRY _ZTI7S7549C6[];
extern  VTBL_ENTRY _ZTV7S7549C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C6[];
extern Class_Descriptor cd_S7549C8;
extern VTBL_ENTRY _ZTI7S7549C8[];
extern  VTBL_ENTRY _ZTV7S7549C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C8[];
extern Class_Descriptor cd_S7549C2;
extern VTBL_ENTRY _ZTI7S7549C2[];
extern  VTBL_ENTRY _ZTV7S7549C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C2[];
extern Class_Descriptor cd_S7549C10;
extern VTBL_ENTRY _ZTI8S7549C10[];
extern  VTBL_ENTRY _ZTV8S7549C10[];
extern Class_Descriptor cd_S7549C5;
extern VTBL_ENTRY _ZTI7S7549C5[];
extern  VTBL_ENTRY _ZTV7S7549C5[];
extern Class_Descriptor cd_S7549C2;
extern VTBL_ENTRY _ZTI7S7549C2[];
extern  VTBL_ENTRY _ZTV7S7549C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C2[];
extern Class_Descriptor cd_S7549C3;
extern VTBL_ENTRY _ZTI7S7549C3[];
extern  VTBL_ENTRY _ZTV7S7549C3[];
extern Class_Descriptor cd_S7549C3;
extern VTBL_ENTRY _ZTI7S7549C3[];
extern  VTBL_ENTRY _ZTV7S7549C3[];
extern Class_Descriptor cd_S7549C2;
extern VTBL_ENTRY _ZTI7S7549C2[];
extern  VTBL_ENTRY _ZTV7S7549C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C2[];
extern Class_Descriptor cd_S7549C8;
extern VTBL_ENTRY _ZTI7S7549C8[];
extern  VTBL_ENTRY _ZTV7S7549C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C8[];
extern Class_Descriptor cd_S7549C7;
extern VTBL_ENTRY _ZTI7S7549C7[];
extern  VTBL_ENTRY _ZTV7S7549C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C7[];
extern Class_Descriptor cd_S7549C2;
extern VTBL_ENTRY _ZTI7S7549C2[];
extern  VTBL_ENTRY _ZTV7S7549C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C2[];
extern Class_Descriptor cd_S7549C3;
extern VTBL_ENTRY _ZTI7S7549C3[];
extern  VTBL_ENTRY _ZTV7S7549C3[];
extern Class_Descriptor cd_S7549C6;
extern VTBL_ENTRY _ZTI7S7549C6[];
extern  VTBL_ENTRY _ZTV7S7549C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C6[];
extern Class_Descriptor cd_S7549C11;
extern VTBL_ENTRY _ZTI8S7549C11[];
extern  VTBL_ENTRY _ZTV8S7549C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7549C11[];
extern Class_Descriptor cd_S7549C9;
extern VTBL_ENTRY _ZTI7S7549C9[];
extern  VTBL_ENTRY _ZTV7S7549C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C9[];
static Base_Class bases_S7549C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7549C5,    ABISELECT(240,176), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7549C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7549C3,    ABISELECT(800,552), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7549C2,    ABISELECT(40,24), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7549C2,    ABISELECT(840,576), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7549C3,    ABISELECT(928,640), //bcp->offset
    36, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7549C6,    ABISELECT(840,576), //bcp->offset
    30, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7549C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7549C2,    ABISELECT(128,88), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7549C10,    ABISELECT(976,664), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7549C5,    ABISELECT(992,668), //bcp->offset
    57, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7549C2,    ABISELECT(1552,1044), //bcp->offset
    61, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7549C3,    ABISELECT(1640,1108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7549C3,    ABISELECT(2432,1636), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7549C2,    ABISELECT(2472,1660), //bcp->offset
    93, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7549C8,    ABISELECT(2432,1636), //bcp->offset
    82, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S7549C7,    ABISELECT(2560,1724), //bcp->offset
    97, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7549C2,    ABISELECT(1680,1132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7549C3,    ABISELECT(1768,1196), //bcp->offset
    79, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7549C6,    ABISELECT(1680,1132), //bcp->offset
    75, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7549C11,    ABISELECT(1640,1108), //bcp->offset
    65, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7549C9,    ABISELECT(976,664), //bcp->offset
    39, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7549C4[];
extern void _ZN7S7549C32v2Ev();
extern void _ZN7S7549C82v4Ev();
extern void _ZN7S7549C82v5Ev();
extern void _ZN7S7549C4D1Ev();
extern void _ZN7S7549C4D0Ev();
extern void _ZN7S7549C22v3Ev();
extern void _ZN7S7549C22v3Ev();
extern void ABISELECT(_ZTv0_n24_N7S7549C4D1Ev,_ZTv0_n12_N7S7549C4D1Ev)();
extern void ABISELECT(_ZThn240_N7S7549C4D1Ev,_ZThn176_N7S7549C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7549C4D0Ev,_ZTv0_n12_N7S7549C4D0Ev)();
extern void ABISELECT(_ZThn240_N7S7549C4D0Ev,_ZThn176_N7S7549C4D0Ev)() __attribute__((weak));
extern void _ZN7S7549C32v2Ev();
extern void _ZN7S7549C22v3Ev();
extern void _ZN7S7549C32v2Ev();
extern void ABISELECT(_ZTv0_n64_N7S7549C4D1Ev,_ZTv0_n32_N7S7549C4D1Ev)();
extern void ABISELECT(_ZThn976_N7S7549C4D1Ev,_ZThn664_N7S7549C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7549C4D0Ev,_ZTv0_n32_N7S7549C4D0Ev)();
extern void ABISELECT(_ZThn976_N7S7549C4D0Ev,_ZThn664_N7S7549C4D0Ev)() __attribute__((weak));
extern void _ZN8S7549C102v6Ev();
extern void _ZN8S7549C102v7Ev();
extern void _ZN7S7549C92v8Ev();
extern void ABISELECT(_ZTvn16_n64_N7S7549C4D1Ev,_ZTvn4_n32_N7S7549C4D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N7S7549C4D0Ev,_ZTvn4_n32_N7S7549C4D0Ev)();
extern void _ZN7S7549C22v3Ev();
extern void _ZN7S7549C32v2Ev();
extern void ABISELECT(_ZTvn664_n64_N7S7549C4D1Ev,_ZTvn444_n32_N7S7549C4D1Ev)();
extern void ABISELECT(_ZTvn664_n64_N7S7549C4D0Ev,_ZTvn444_n32_N7S7549C4D0Ev)();
extern void _ZN7S7549C22v3Ev();
extern void _ZN7S7549C32v2Ev();
extern void _ZN7S7549C32v2Ev();
extern void _ZN7S7549C82v4Ev();
extern void _ZN7S7549C82v5Ev();
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY vtc_S7549C4[] = {
  ABISELECT(2560,1724),
  ABISELECT(2432,1636),
  ABISELECT(976,664),
  ABISELECT(240,176),
  ABISELECT(840,576),
  ABISELECT(800,552),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C4[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v4Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v5Ev,
  (VTBL_ENTRY)&_ZN7S7549C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7549C4D0Ev,
  ABISELECT(760,528),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7549C4[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
  ABISELECT(672,464),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI7S7549C4[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  (VTBL_ENTRY)&(_ZTI7S7549C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7549C4D1Ev,_ZTv0_n12_N7S7549C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7549C4D0Ev,_ZTv0_n12_N7S7549C4D0Ev),
  0,
  ABISELECT(-800,-552),
  (VTBL_ENTRY)&(_ZTI7S7549C4[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  ABISELECT(88,64),
  0,
  ABISELECT(-40,-24),
  ABISELECT(-840,-576),
  (VTBL_ENTRY)&(_ZTI7S7549C4[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
  ABISELECT(-928,-640),
  (VTBL_ENTRY)&(_ZTI7S7549C4[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  ABISELECT(664,444),
  ABISELECT(576,380),
  0,
  0,
  0,
  ABISELECT(-976,-664),
  ABISELECT(-736,-488),
  ABISELECT(1584,1060),
  ABISELECT(-136,-88),
  ABISELECT(1456,972),
  ABISELECT(-176,-112),
  ABISELECT(-976,-664),
  (VTBL_ENTRY)&(_ZTI7S7549C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7549C4D1Ev,_ZTv0_n32_N7S7549C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7549C4D0Ev,_ZTv0_n32_N7S7549C4D0Ev),
  (VTBL_ENTRY)&_ZN8S7549C102v6Ev,
  (VTBL_ENTRY)&_ZN8S7549C102v7Ev,
  (VTBL_ENTRY)&_ZN7S7549C92v8Ev,
  ABISELECT(-992,-668),
  (VTBL_ENTRY)&(_ZTI7S7549C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N7S7549C4D1Ev,_ZTvn4_n32_N7S7549C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N7S7549C4D0Ev,_ZTvn4_n32_N7S7549C4D0Ev),
  ABISELECT(-752,-492),
  ABISELECT(-1552,-1044),
  (VTBL_ENTRY)&(_ZTI7S7549C4[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
  ABISELECT(-1400,-932),
  ABISELECT(920,616),
  ABISELECT(-800,-532),
  ABISELECT(-840,-556),
  ABISELECT(792,528),
  ABISELECT(-1640,-1108),
  (VTBL_ENTRY)&(_ZTI7S7549C4[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn664_n64_N7S7549C4D1Ev,_ZTvn444_n32_N7S7549C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn664_n64_N7S7549C4D0Ev,_ZTvn444_n32_N7S7549C4D0Ev),
  ABISELECT(-880,-580),
  ABISELECT(-1680,-1132),
  (VTBL_ENTRY)&(_ZTI7S7549C4[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
  ABISELECT(-1768,-1196),
  (VTBL_ENTRY)&(_ZTI7S7549C4[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  ABISELECT(40,24),
  0,
  0,
  0,
  ABISELECT(-1592,-1060),
  ABISELECT(-1632,-1084),
  ABISELECT(-2432,-1636),
  (VTBL_ENTRY)&(_ZTI7S7549C4[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v4Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v5Ev,
  ABISELECT(-1672,-1108),
  ABISELECT(-2472,-1660),
  (VTBL_ENTRY)&(_ZTI7S7549C4[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
  ABISELECT(-1720,-1148),
  ABISELECT(-1760,-1172),
  ABISELECT(-128,-88),
  ABISELECT(-2560,-1724),
  (VTBL_ENTRY)&(_ZTI7S7549C4[0]),
};
extern VTBL_ENTRY _ZTV7S7549C4[];
extern void _ZN7S7549C32v2Ev();
extern void _ZN7S7549C82v4Ev();
extern void _ZN7S7549C82v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C8__A__7S7549C4[] = {
  ABISELECT(840,576),
  ABISELECT(800,552),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v4Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v5Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C27S7549C8__7S7549C4[] = {
  ABISELECT(760,528),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__7S7549C27S7549C8__7S7549C4[] = {
  0,
  ABISELECT(-760,-528),
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C2__7S7549C8__A__7S7549C4[] = {
  ABISELECT(760,528),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__A1__7S7549C8__A__7S7549C4[] = {
  0,
  ABISELECT(-800,-552),
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C6__7S7549C8__A__7S7549C4[] = {
  ABISELECT(88,64),
  0,
  ABISELECT(-40,-24),
  ABISELECT(-840,-576),
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C37S7549C6__A2__7S7549C8__A__7S7549C4[] = {
  ABISELECT(-928,-640),
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C2__A2__7S7549C4[] = {
  ABISELECT(672,464),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__7S7549C2__A2__7S7549C4[] = {
  0,
  ABISELECT(-672,-464),
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C6__7S7549C4[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C6[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C27S7549C6__A1__7S7549C4[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__7S7549C27S7549C6__A1__7S7549C4[] = {
  0,
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__7S7549C6__7S7549C4[] = {
  0,
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI7S7549C6[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C9D1Ev();
extern void _ZN7S7549C9D0Ev();
extern void _ZN8S7549C102v6Ev();
extern void _ZN8S7549C102v7Ev();
extern void _ZN7S7549C92v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C9__7S7549C4[] = {
  ABISELECT(-736,-488),
  ABISELECT(1584,1060),
  ABISELECT(-136,-88),
  ABISELECT(1456,972),
  ABISELECT(-176,-112),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C9[0]),
  (VTBL_ENTRY)&_ZN7S7549C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7549C9D0Ev,
  (VTBL_ENTRY)&_ZN8S7549C102v6Ev,
  (VTBL_ENTRY)&_ZN8S7549C102v7Ev,
  (VTBL_ENTRY)&_ZN7S7549C92v8Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C27S7549C9__A3__7S7549C4[] = {
  ABISELECT(-752,-492),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__7S7549C27S7549C9__A3__7S7549C4[] = {
  0,
  ABISELECT(752,492),
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C32v2Ev();
extern void _ZN8S7549C11D1Ev();
extern void _ZN8S7549C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7549C117S7549C9__7S7549C4[] = {
  ABISELECT(-1400,-932),
  ABISELECT(920,616),
  ABISELECT(-800,-532),
  ABISELECT(-840,-556),
  ABISELECT(792,528),
  0,
  (VTBL_ENTRY)&(_ZTI8S7549C11[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  (VTBL_ENTRY)&_ZN8S7549C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7549C11D0Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C68S7549C117S7549C9__A1__7S7549C4[] = {
  ABISELECT(-880,-580),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C6[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C27S7549C68S7549C117S7549C9__A5__7S7549C4[] = {
  ABISELECT(-880,-580),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__7S7549C27S7549C68S7549C117S7549C9__A5__7S7549C4[] = {
  0,
  ABISELECT(880,580),
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__7S7549C68S7549C117S7549C9__A1__7S7549C4[] = {
  0,
  ABISELECT(880,580),
  (VTBL_ENTRY)&(_ZTI7S7549C6[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C32v2Ev();
extern void _ZN7S7549C82v4Ev();
extern void _ZN7S7549C82v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C8__8S7549C117S7549C9__7S7549C4[] = {
  ABISELECT(40,24),
  0,
  0,
  0,
  ABISELECT(-1592,-1060),
  ABISELECT(-1632,-1084),
  ABISELECT(-792,-528),
  (VTBL_ENTRY)&(_ZTI8S7549C11[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v4Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v5Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C27S7549C8__8S7549C117S7549C9__7S7549C4[] = {
  ABISELECT(-1672,-1108),
  ABISELECT(-832,-552),
  (VTBL_ENTRY)&(_ZTI8S7549C11[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__A2__8S7549C117S7549C9__7S7549C4[] = {
  0,
  ABISELECT(840,556),
  (VTBL_ENTRY)&(_ZTI8S7549C11[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C6__8S7549C117S7549C9__7S7549C4[] = {
  ABISELECT(88,64),
  0,
  ABISELECT(-40,-24),
  ABISELECT(800,532),
  (VTBL_ENTRY)&(_ZTI8S7549C11[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C37S7549C6__A3__8S7549C117S7549C9__7S7549C4[] = {
  ABISELECT(712,468),
  (VTBL_ENTRY)&(_ZTI8S7549C11[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7549C7__8S7549C117S7549C9__7S7549C4[] = {
  ABISELECT(-1720,-1148),
  ABISELECT(-1760,-1172),
  ABISELECT(-128,-88),
  ABISELECT(-920,-616),
  (VTBL_ENTRY)&(_ZTI8S7549C11[0]),
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C6__A__8S7549C117S7549C9__7S7549C4[] = {
  ABISELECT(-880,-580),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S7549C11[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7549C11D1Ev,_ZTv0_n12_N8S7549C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7549C11D0Ev,_ZTv0_n12_N8S7549C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7549C5__8S7549C117S7549C9__7S7549C4[] = {
  ABISELECT(1400,932),
  ABISELECT(1400,932),
  (VTBL_ENTRY)&(_ZTI8S7549C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7549C11D1Ev,_ZTv0_n12_N8S7549C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7549C11D0Ev,_ZTv0_n12_N8S7549C11D0Ev),
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C2__7S7549C9__7S7549C4[] = {
  ABISELECT(-752,-492),
  ABISELECT(-576,-380),
  (VTBL_ENTRY)&(_ZTI7S7549C9[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__7S7549C9__7S7549C4[] = {
  0,
  ABISELECT(176,112),
  (VTBL_ENTRY)&(_ZTI7S7549C9[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C32v2Ev();
extern void ABISELECT(_ZThn664_N7S7549C9D1Ev,_ZThn444_N7S7549C9D1Ev)();
extern void ABISELECT(_ZThn664_N7S7549C9D0Ev,_ZThn444_N7S7549C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7549C11__7S7549C9__7S7549C4[] = {
  ABISELECT(-1400,-932),
  ABISELECT(920,616),
  ABISELECT(-800,-532),
  ABISELECT(-840,-556),
  ABISELECT(792,528),
  ABISELECT(-664,-444),
  (VTBL_ENTRY)&(_ZTI7S7549C9[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn664_N7S7549C9D1Ev,_ZThn444_N7S7549C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn664_N7S7549C9D0Ev,_ZThn444_N7S7549C9D0Ev),
};
extern void _ZN7S7549C32v2Ev();
extern void _ZN7S7549C82v4Ev();
extern void _ZN7S7549C82v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C8__7S7549C9__7S7549C4[] = {
  ABISELECT(40,24),
  0,
  0,
  0,
  ABISELECT(-1592,-1060),
  ABISELECT(-1632,-1084),
  ABISELECT(-1456,-972),
  (VTBL_ENTRY)&(_ZTI7S7549C9[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v4Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v5Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C27S7549C8__A1__7S7549C9__7S7549C4[] = {
  ABISELECT(-1672,-1108),
  ABISELECT(-1496,-996),
  (VTBL_ENTRY)&(_ZTI7S7549C9[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C6__7S7549C9__7S7549C4[] = {
  ABISELECT(88,64),
  0,
  ABISELECT(-40,-24),
  ABISELECT(136,88),
  (VTBL_ENTRY)&(_ZTI7S7549C9[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C37S7549C6__A3__7S7549C9__7S7549C4[] = {
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI7S7549C9[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7549C7__7S7549C9__7S7549C4[] = {
  ABISELECT(-1720,-1148),
  ABISELECT(-1760,-1172),
  ABISELECT(-128,-88),
  ABISELECT(-1584,-1060),
  (VTBL_ENTRY)&(_ZTI7S7549C9[0]),
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C68S7549C11__A1__7S7549C9__7S7549C4[] = {
  ABISELECT(-880,-580),
  ABISELECT(-704,-468),
  (VTBL_ENTRY)&(_ZTI7S7549C9[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7549C9D1Ev,_ZTv0_n12_N7S7549C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7549C9D0Ev,_ZTv0_n12_N7S7549C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7549C5__A1__7S7549C9__7S7549C4[] = {
  ABISELECT(736,488),
  ABISELECT(736,488),
  (VTBL_ENTRY)&(_ZTI7S7549C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7549C9D1Ev,_ZTv0_n12_N7S7549C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7549C9D0Ev,_ZTv0_n12_N7S7549C9D0Ev),
};
extern void _ZN7S7549C32v2Ev();
extern void _ZN7S7549C82v4Ev();
extern void _ZN7S7549C82v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C8__A1__7S7549C4[] = {
  ABISELECT(-1592,-1060),
  ABISELECT(-1632,-1084),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v4Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v5Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C27S7549C8__A4__7S7549C4[] = {
  ABISELECT(-1672,-1108),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__7S7549C27S7549C8__A4__7S7549C4[] = {
  0,
  ABISELECT(1672,1108),
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C2__7S7549C8__A1__7S7549C4[] = {
  ABISELECT(-1672,-1108),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__A1__7S7549C8__A1__7S7549C4[] = {
  0,
  ABISELECT(1632,1084),
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C6__7S7549C8__A1__7S7549C4[] = {
  ABISELECT(88,64),
  0,
  ABISELECT(-40,-24),
  ABISELECT(1592,1060),
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C37S7549C6__A2__7S7549C8__A1__7S7549C4[] = {
  ABISELECT(1504,996),
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7549C7__7S7549C4[] = {
  ABISELECT(-1720,-1148),
  ABISELECT(-1760,-1172),
  ABISELECT(-128,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C7[0]),
};
extern void _ZN7S7549C32v2Ev();
extern void _ZN7S7549C82v4Ev();
extern void _ZN7S7549C82v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C8__7S7549C7__7S7549C4[] = {
  ABISELECT(40,24),
  0,
  0,
  0,
  ABISELECT(-1592,-1060),
  ABISELECT(-1632,-1084),
  ABISELECT(128,88),
  (VTBL_ENTRY)&(_ZTI7S7549C7[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v4Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v5Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C27S7549C8__7S7549C7__7S7549C4[] = {
  ABISELECT(-1672,-1108),
  ABISELECT(88,64),
  (VTBL_ENTRY)&(_ZTI7S7549C7[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__A1__7S7549C7__7S7549C4[] = {
  0,
  ABISELECT(1760,1172),
  (VTBL_ENTRY)&(_ZTI7S7549C7[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C6__7S7549C7__7S7549C4[] = {
  ABISELECT(88,64),
  0,
  ABISELECT(-40,-24),
  ABISELECT(1720,1148),
  (VTBL_ENTRY)&(_ZTI7S7549C7[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C37S7549C6__A2__7S7549C7__7S7549C4[] = {
  ABISELECT(1632,1084),
  (VTBL_ENTRY)&(_ZTI7S7549C7[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
static  VTT_ENTRY vtt_S7549C4[] = {
  {&(_ZTV7S7549C4[8]),  8,102},
  {&(_tg__ZTV7S7549C8__A__7S7549C4[4]),  4,7},
  {&(_tg__ZTV7S7549C27S7549C8__7S7549C4[3]),  3,4},
  {&(_tg__ZTV7S7549C3__7S7549C27S7549C8__7S7549C4[3]),  3,4},
  {&(_tg__ZTV7S7549C2__7S7549C8__A__7S7549C4[3]),  3,4},
  {&(_tg__ZTV7S7549C3__A1__7S7549C8__A__7S7549C4[3]),  3,4},
  {&(_tg__ZTV7S7549C6__7S7549C8__A__7S7549C4[5]),  5,6},
  {&(_tg__ZTV7S7549C37S7549C6__A2__7S7549C8__A__7S7549C4[2]),  2,3},
  {&(_tg__ZTV7S7549C2__A2__7S7549C4[3]),  3,4},
  {&(_tg__ZTV7S7549C3__7S7549C2__A2__7S7549C4[3]),  3,4},
  {&(_ZTV7S7549C4[24]),  24,102},
  {&(_ZTV7S7549C4[16]),  16,102},
  {&(_ZTV7S7549C4[29]),  29,102},
  {&(_ZTV7S7549C4[35]),  35,102},
  {&(_ZTV7S7549C4[38]),  38,102},
  {&(_ZTV7S7549C4[20]),  20,102},
  {&(_ZTV7S7549C4[52]),  52,102},
  {&(_ZTV7S7549C4[59]),  59,102},
  {&(_ZTV7S7549C4[64]),  64,102},
  {&(_ZTV7S7549C4[72]),  72,102},
  {&(_ZTV7S7549C4[90]),  90,102},
  {&(_ZTV7S7549C4[96]),  96,102},
  {&(_ZTV7S7549C4[102]),  102,102},
  {&(_ZTV7S7549C4[78]),  78,102},
  {&(_ZTV7S7549C4[81]),  81,102},
  {&(_tg__ZTV7S7549C6__7S7549C4[3]),  3,4},
  {&(_tg__ZTV7S7549C27S7549C6__A1__7S7549C4[3]),  3,4},
  {&(_tg__ZTV7S7549C3__7S7549C27S7549C6__A1__7S7549C4[3]),  3,4},
  {&(_tg__ZTV7S7549C3__7S7549C6__7S7549C4[3]),  3,4},
  {&(_tg__ZTV7S7549C9__7S7549C4[7]),  7,12},
  {&(_tg__ZTV7S7549C27S7549C9__A3__7S7549C4[3]),  3,4},
  {&(_tg__ZTV7S7549C3__7S7549C27S7549C9__A3__7S7549C4[3]),  3,4},
  {&(_tg__ZTV8S7549C117S7549C9__7S7549C4[7]),  7,10},
  {&(_tg__ZTV7S7549C68S7549C117S7549C9__A1__7S7549C4[3]),  3,4},
  {&(_tg__ZTV7S7549C27S7549C68S7549C117S7549C9__A5__7S7549C4[3]),  3,4},
  {&(_tg__ZTV7S7549C3__7S7549C27S7549C68S7549C117S7549C9__A5__7S7549C4[3]),  3,4},
  {&(_tg__ZTV7S7549C3__7S7549C68S7549C117S7549C9__A1__7S7549C4[3]),  3,4},
  {&(_tg__ZTV7S7549C8__8S7549C117S7549C9__7S7549C4[8]),  8,11},
  {&(_tg__ZTV7S7549C27S7549C8__8S7549C117S7549C9__7S7549C4[3]),  3,4},
  {&(_tg__ZTV7S7549C3__A2__8S7549C117S7549C9__7S7549C4[3]),  3,4},
  {&(_tg__ZTV7S7549C6__8S7549C117S7549C9__7S7549C4[5]),  5,6},
  {&(_tg__ZTV7S7549C37S7549C6__A3__8S7549C117S7549C9__7S7549C4[2]),  2,3},
  {&(_tg__ZTV7S7549C7__8S7549C117S7549C9__7S7549C4[5]),  5,5},
  {&(_tg__ZTV7S7549C6__A__8S7549C117S7549C9__7S7549C4[3]),  3,4},
  {&(_tg__ZTV7S7549C5__8S7549C117S7549C9__7S7549C4[3]),  3,5},
  {&(_tg__ZTV7S7549C2__7S7549C9__7S7549C4[3]),  3,4},
  {&(_tg__ZTV7S7549C3__7S7549C9__7S7549C4[3]),  3,4},
  {&(_tg__ZTV8S7549C11__7S7549C9__7S7549C4[7]),  7,10},
  {&(_tg__ZTV7S7549C8__7S7549C9__7S7549C4[8]),  8,11},
  {&(_tg__ZTV7S7549C27S7549C8__A1__7S7549C9__7S7549C4[3]),  3,4},
  {&(_tg__ZTV7S7549C6__7S7549C9__7S7549C4[5]),  5,6},
  {&(_tg__ZTV7S7549C37S7549C6__A3__7S7549C9__7S7549C4[2]),  2,3},
  {&(_tg__ZTV7S7549C7__7S7549C9__7S7549C4[5]),  5,5},
  {&(_tg__ZTV7S7549C68S7549C11__A1__7S7549C9__7S7549C4[3]),  3,4},
  {&(_tg__ZTV7S7549C5__A1__7S7549C9__7S7549C4[3]),  3,5},
  {&(_tg__ZTV7S7549C8__A1__7S7549C4[4]),  4,7},
  {&(_tg__ZTV7S7549C27S7549C8__A4__7S7549C4[3]),  3,4},
  {&(_tg__ZTV7S7549C3__7S7549C27S7549C8__A4__7S7549C4[3]),  3,4},
  {&(_tg__ZTV7S7549C2__7S7549C8__A1__7S7549C4[3]),  3,4},
  {&(_tg__ZTV7S7549C3__A1__7S7549C8__A1__7S7549C4[3]),  3,4},
  {&(_tg__ZTV7S7549C6__7S7549C8__A1__7S7549C4[5]),  5,6},
  {&(_tg__ZTV7S7549C37S7549C6__A2__7S7549C8__A1__7S7549C4[2]),  2,3},
  {&(_tg__ZTV7S7549C7__7S7549C4[5]),  5,5},
  {&(_tg__ZTV7S7549C8__7S7549C7__7S7549C4[8]),  8,11},
  {&(_tg__ZTV7S7549C27S7549C8__7S7549C7__7S7549C4[3]),  3,4},
  {&(_tg__ZTV7S7549C3__A1__7S7549C7__7S7549C4[3]),  3,4},
  {&(_tg__ZTV7S7549C6__7S7549C7__7S7549C4[5]),  5,6},
  {&(_tg__ZTV7S7549C37S7549C6__A2__7S7549C7__7S7549C4[2]),  2,3},
};
extern VTBL_ENTRY _ZTI7S7549C4[];
extern  VTBL_ENTRY _ZTV7S7549C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C4[];
static VTBL_ENTRY alt_thunk_names69[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7549C4D0Ev,_ZTv0_n32_N7S7549C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn976_N7S7549C4D0Ev,_ZThn664_N7S7549C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7549C4D1Ev,_ZTv0_n32_N7S7549C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn976_N7S7549C4D1Ev,_ZThn664_N7S7549C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7549C4D0Ev,_ZTv0_n12_N7S7549C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S7549C4D0Ev,_ZThn176_N7S7549C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7549C4D1Ev,_ZTv0_n12_N7S7549C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S7549C4D1Ev,_ZThn176_N7S7549C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7549C4 = {  "S7549C4", // class name
  bases_S7549C4, 22,
  &(vtc_S7549C4[0]), // expected_vtbl_contents
  &(vtt_S7549C4[0]), // expected_vtt_contents
  ABISELECT(2608,1756), // object size
  NSPAIRA(_ZTI7S7549C4),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7549C4),102, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7549C4),68, //virtual table table var
  22, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names69,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7549C12  : virtual S7549C3 , S7549C8 {
  int s7549c12f0[2];
  virtual void  v9(); // _ZN8S7549C122v9Ev
  ~S7549C12(); // tgen
  S7549C12(); // tgen
};
//SIG(-1 S7549C12) C1{ VBC2{ v2 Fp[2] Fi Fs Fi} BC3{ BC2 BC4{ VBC2 v3 FC2 Fi[9]} VBC5{ BC4 BC2} v4 v5} v1 Fi[2]}


void  S7549C12 ::v9(){vfunc_called(this, "_ZN8S7549C122v9Ev");}
S7549C12 ::~S7549C12(){ note_dtor("S7549C12", this);} // tgen
S7549C12 ::S7549C12(){ note_ctor("S7549C12", this);} // tgen

static void Test_S7549C12()
{
  extern Class_Descriptor cd_S7549C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(39,53)];
    init_test(&cd_S7549C12, buf);
    S7549C12 *dp, &lv = *(dp=new (buf) S7549C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,208), "sizeof(S7549C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7549C12)");
    /*is_ambiguous_... S7549C12::S7549C3 */ AMB_check_base_class_offset(lv, (S7549C3*), ABISELECT(136,96), "S7549C12");
    /*is_ambiguous_... S7549C8::S7549C2 */ AMB_check_base_class_offset(lv, (S7549C3*)(S7549C2*)(S7549C8*), ABISELECT(136,96), "S7549C12");
    check_base_class_offset(lv, (S7549C3*)(S7549C2*)(S7549C6*), ABISELECT(136,96), "S7549C12");
    /*is_ambiguous_... S7549C8::S7549C3 */ AMB_check_base_class_offset(lv, (S7549C3*)(S7549C8*), 0, "S7549C12");
    /*is_ambiguous_... S7549C8::S7549C2 */ AMB_check_base_class_offset(lv, (S7549C2*)(S7549C8*), ABISELECT(40,24), "S7549C12");
    check_base_class_offset(lv, (S7549C2*)(S7549C6*), ABISELECT(176,120), "S7549C12");
    /*is_ambiguous_... S7549C6::S7549C3 */ AMB_check_base_class_offset(lv, (S7549C3*)(S7549C6*), ABISELECT(264,184), "S7549C12");
    check_base_class_offset(lv, (S7549C6*)(S7549C8*), ABISELECT(176,120), "S7549C12");
    check_base_class_offset(lv, (S7549C8*), 0, "S7549C12");
    check_field_offset(lv, s7549c12f0, ABISELECT(124,88), "S7549C12.s7549c12f0");
    test_class_info(&lv, &cd_S7549C12);
    dp->~S7549C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7549C12(Test_S7549C12, "S7549C12", ABISELECT(304,208));

#else // __cplusplus

extern void _ZN8S7549C12C1Ev();
extern void _ZN8S7549C12D1Ev();
Name_Map name_map_S7549C12[] = {
  NSPAIR(_ZN8S7549C12C1Ev),
  NSPAIR(_ZN8S7549C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7549C3;
extern VTBL_ENTRY _ZTI7S7549C3[];
extern  VTBL_ENTRY _ZTV7S7549C3[];
extern Class_Descriptor cd_S7549C3;
extern VTBL_ENTRY _ZTI7S7549C3[];
extern  VTBL_ENTRY _ZTV7S7549C3[];
extern Class_Descriptor cd_S7549C2;
extern VTBL_ENTRY _ZTI7S7549C2[];
extern  VTBL_ENTRY _ZTV7S7549C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C2[];
extern Class_Descriptor cd_S7549C2;
extern VTBL_ENTRY _ZTI7S7549C2[];
extern  VTBL_ENTRY _ZTV7S7549C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C2[];
extern Class_Descriptor cd_S7549C3;
extern VTBL_ENTRY _ZTI7S7549C3[];
extern  VTBL_ENTRY _ZTV7S7549C3[];
extern Class_Descriptor cd_S7549C6;
extern VTBL_ENTRY _ZTI7S7549C6[];
extern  VTBL_ENTRY _ZTV7S7549C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C6[];
extern Class_Descriptor cd_S7549C8;
extern VTBL_ENTRY _ZTI7S7549C8[];
extern  VTBL_ENTRY _ZTV7S7549C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C8[];
static Base_Class bases_S7549C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7549C3,    ABISELECT(136,96), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7549C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7549C2,    ABISELECT(40,24), //bcp->offset
    8, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7549C2,    ABISELECT(176,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7549C3,    ABISELECT(264,184), //bcp->offset
    22, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7549C6,    ABISELECT(176,120), //bcp->offset
    16, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7549C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7549C12[];
extern void _ZN7S7549C32v2Ev();
extern void _ZN7S7549C82v4Ev();
extern void _ZN7S7549C82v5Ev();
extern void _ZN8S7549C122v9Ev();
extern void _ZN7S7549C22v3Ev();
extern void _ZN7S7549C32v2Ev();
extern void _ZN7S7549C22v3Ev();
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY vtc_S7549C12[] = {
  ABISELECT(176,120),
  ABISELECT(136,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S7549C12[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v4Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v5Ev,
  (VTBL_ENTRY)&_ZN8S7549C122v9Ev,
  ABISELECT(96,72),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S7549C12[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
  0,
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S7549C12[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  ABISELECT(88,64),
  0,
  ABISELECT(-40,-24),
  ABISELECT(-176,-120),
  (VTBL_ENTRY)&(_ZTI8S7549C12[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
  ABISELECT(-264,-184),
  (VTBL_ENTRY)&(_ZTI8S7549C12[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern VTBL_ENTRY _ZTV8S7549C12[];
extern void _ZN7S7549C32v2Ev();
extern void _ZN7S7549C82v4Ev();
extern void _ZN7S7549C82v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C8__8S7549C12[] = {
  ABISELECT(176,120),
  ABISELECT(136,96),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v4Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v5Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C27S7549C8__8S7549C12[] = {
  ABISELECT(96,72),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__7S7549C27S7549C8__8S7549C12[] = {
  0,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C2__7S7549C8__8S7549C12[] = {
  ABISELECT(96,72),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__A1__7S7549C8__8S7549C12[] = {
  0,
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C6__7S7549C8__8S7549C12[] = {
  ABISELECT(88,64),
  0,
  ABISELECT(-40,-24),
  ABISELECT(-176,-120),
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C37S7549C6__A2__7S7549C8__8S7549C12[] = {
  ABISELECT(-264,-184),
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C6__8S7549C12[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C6[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C27S7549C6__A1__8S7549C12[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__7S7549C27S7549C6__A1__8S7549C12[] = {
  0,
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__7S7549C6__8S7549C12[] = {
  0,
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI7S7549C6[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
static  VTT_ENTRY vtt_S7549C12[] = {
  {&(_ZTV8S7549C12[4]),  4,25},
  {&(_tg__ZTV7S7549C8__8S7549C12[4]),  4,7},
  {&(_tg__ZTV7S7549C27S7549C8__8S7549C12[3]),  3,4},
  {&(_tg__ZTV7S7549C3__7S7549C27S7549C8__8S7549C12[3]),  3,4},
  {&(_tg__ZTV7S7549C2__7S7549C8__8S7549C12[3]),  3,4},
  {&(_tg__ZTV7S7549C3__A1__7S7549C8__8S7549C12[3]),  3,4},
  {&(_tg__ZTV7S7549C6__7S7549C8__8S7549C12[5]),  5,6},
  {&(_tg__ZTV7S7549C37S7549C6__A2__7S7549C8__8S7549C12[2]),  2,3},
  {&(_ZTV8S7549C12[15]),  15,25},
  {&(_ZTV8S7549C12[11]),  11,25},
  {&(_ZTV8S7549C12[21]),  21,25},
  {&(_ZTV8S7549C12[24]),  24,25},
  {&(_tg__ZTV7S7549C6__8S7549C12[3]),  3,4},
  {&(_tg__ZTV7S7549C27S7549C6__A1__8S7549C12[3]),  3,4},
  {&(_tg__ZTV7S7549C3__7S7549C27S7549C6__A1__8S7549C12[3]),  3,4},
  {&(_tg__ZTV7S7549C3__7S7549C6__8S7549C12[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S7549C12[];
extern  VTBL_ENTRY _ZTV8S7549C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7549C12[];
Class_Descriptor cd_S7549C12 = {  "S7549C12", // class name
  bases_S7549C12, 7,
  &(vtc_S7549C12[0]), // expected_vtbl_contents
  &(vtt_S7549C12[0]), // expected_vtt_contents
  ABISELECT(304,208), // object size
  NSPAIRA(_ZTI8S7549C12),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7549C12),25, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7549C12),16, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7549C1  : S7549C2 , virtual S7549C4 , S7549C12 , S7549C7 {
  int s7549c1f0;
  void *s7549c1f1;
  int s7549c1f2[2];
  void *s7549c1f3[3];
  virtual void  v1(); // _ZN7S7549C12v1Ev
  ~S7549C1(); // tgen
  S7549C1(); // tgen
};
//SIG(1 S7549C1) C1{ BC2{ VBC3{ v2 Fp[2] Fi Fs Fi} v3 FC3 Fi[9]} VBC4{ VBC5{ vd m FC6{ BC2 BC3} Fp FC3 FC7{ VBC8{ BC3 BC2 VBC6 v4 v5} Fi Fi:25 FD Fi[2]}} BC8 BC2 VBC9{ BC10{ vd v6 v7} BC5 BC2 BC11{ BC3 VBC8 VBC7 BC6 VBC5 vd Fi:13 Fp[5] Fi Fc Fi[2]} v8 FC5} Fc[5] Fi[2] FL} BC12{ VBC3 BC8 v9 Fi[2]} BC7 v1 Fi Fp Fi[2] Fp[3]}


void  S7549C1 ::v1(){vfunc_called(this, "_ZN7S7549C12v1Ev");}
S7549C1 ::~S7549C1(){ note_dtor("S7549C1", this);} // tgen
S7549C1 ::S7549C1(){ note_ctor("S7549C1", this);} // tgen

static void Test_S7549C1()
{
  extern Class_Descriptor cd_S7549C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(183,495)];
    init_test(&cd_S7549C1, buf);
    S7549C1 *dp, &lv = *(dp=new (buf) S7549C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2912,1976), "sizeof(S7549C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7549C1)");
    /*is_ambiguous_... S7549C1::S7549C2 */ AMB_check_base_class_offset(lv, (S7549C3*)(S7549C2*), ABISELECT(312,220), "S7549C1");
    /*is_ambiguous_... S7549C4::S7549C8 */ AMB_check_base_class_offset(lv, (S7549C3*)(S7549C2*)(S7549C8*)(S7549C4*), ABISELECT(312,220), "S7549C1");
    /*is_ambiguous_... S7549C1::S7549C6 */ AMB_check_base_class_offset(lv, (S7549C3*)(S7549C2*)(S7549C6*), ABISELECT(312,220), "S7549C1");
    /*is_ambiguous_... S7549C4::S7549C2 */ AMB_check_base_class_offset(lv, (S7549C3*)(S7549C2*)(S7549C4*), ABISELECT(312,220), "S7549C1");
    /*is_ambiguous_... S7549C9::S7549C2 */ AMB_check_base_class_offset(lv, (S7549C3*)(S7549C2*)(S7549C9*), ABISELECT(312,220), "S7549C1");
    /*is_ambiguous_... S7549C1::S7549C8 */ AMB_check_base_class_offset(lv, (S7549C3*)(S7549C2*)(S7549C8*), ABISELECT(312,220), "S7549C1");
    /*is_ambiguous_... S7549C11::S7549C6 */ AMB_check_base_class_offset(lv, (S7549C3*)(S7549C2*)(S7549C6*)(S7549C11*)(S7549C9*), ABISELECT(312,220), "S7549C1");
    /*is_ambiguous_... S7549C12::S7549C3 */ AMB_check_base_class_offset(lv, (S7549C3*)(S7549C12*), ABISELECT(312,220), "S7549C1");
    /*is_ambiguous_... S7549C8::S7549C2 */ AMB_check_base_class_offset(lv, (S7549C3*)(S7549C2*)(S7549C8*)(S7549C12*), ABISELECT(312,220), "S7549C1");
    /*is_ambiguous_... S7549C1::S7549C2 */ AMB_check_base_class_offset(lv, (S7549C2*), 0, "S7549C1");
    /*is_ambiguous_... S7549C4::S7549C5 */ AMB_check_base_class_offset(lv, (S7549C5*)(S7549C4*), ABISELECT(592,420), "S7549C1");
    check_base_class_offset(lv, (S7549C5*)(S7549C11*)(S7549C9*), ABISELECT(592,420), "S7549C1");
    /*is_ambiguous_... S7549C4::S7549C8 */ AMB_check_base_class_offset(lv, (S7549C3*)(S7549C8*)(S7549C4*), ABISELECT(352,244), "S7549C1");
    /*is_ambiguous_... S7549C4::S7549C8 */ AMB_check_base_class_offset(lv, (S7549C2*)(S7549C8*)(S7549C4*), ABISELECT(392,268), "S7549C1");
    /*is_ambiguous_... S7549C1::S7549C6 */ AMB_check_base_class_offset(lv, (S7549C2*)(S7549C6*), ABISELECT(1152,796), "S7549C1");
    /*is_ambiguous_... S7549C1::S7549C6 */ AMB_check_base_class_offset(lv, (S7549C3*)(S7549C6*), ABISELECT(1240,860), "S7549C1");
    /*is_ambiguous_... S7549C4::S7549C8 */ AMB_check_base_class_offset(lv, (S7549C6*)(S7549C8*)(S7549C4*), ABISELECT(1152,796), "S7549C1");
    /*is_ambiguous_... S7549C1::S7549C8 */ AMB_check_base_class_offset(lv, (S7549C6*)(S7549C8*), ABISELECT(1152,796), "S7549C1");
    check_base_class_offset(lv, (S7549C6*)(S7549C8*)(S7549C12*), ABISELECT(1152,796), "S7549C1");
    /*is_ambiguous_... S7549C4::S7549C8 */ AMB_check_base_class_offset(lv, (S7549C8*)(S7549C4*), ABISELECT(352,244), "S7549C1");
    /*is_ambiguous_... S7549C4::S7549C2 */ AMB_check_base_class_offset(lv, (S7549C2*)(S7549C4*), ABISELECT(480,332), "S7549C1");
    check_base_class_offset(lv, (S7549C10*)(S7549C9*), ABISELECT(1280,884), "S7549C1");
    /*is_ambiguous_... S7549C9::S7549C5 */ AMB_check_base_class_offset(lv, (S7549C5*)(S7549C9*), ABISELECT(1296,888), "S7549C1");
    /*is_ambiguous_... S7549C9::S7549C2 */ AMB_check_base_class_offset(lv, (S7549C2*)(S7549C9*), ABISELECT(1856,1264), "S7549C1");
    /*is_ambiguous_... S7549C11::S7549C3 */ AMB_check_base_class_offset(lv, (S7549C3*)(S7549C11*)(S7549C9*), ABISELECT(1944,1328), "S7549C1");
    /*is_ambiguous_... S7549C1::S7549C8 */ AMB_check_base_class_offset(lv, (S7549C3*)(S7549C8*), ABISELECT(2736,1856), "S7549C1");
    /*is_ambiguous_... S7549C1::S7549C8 */ AMB_check_base_class_offset(lv, (S7549C2*)(S7549C8*), ABISELECT(2776,1880), "S7549C1");
    check_base_class_offset(lv, (S7549C8*)(S7549C11*)(S7549C9*), ABISELECT(2736,1856), "S7549C1");
    /*is_ambiguous_... S7549C1::S7549C7 */ AMB_check_base_class_offset(lv, (S7549C8*)(S7549C7*), ABISELECT(2736,1856), "S7549C1");
    /*is_ambiguous_... S7549C1::S7549C7 */ AMB_check_base_class_offset(lv, (S7549C8*)(S7549C7*), ABISELECT(2736,1856), "S7549C1");
    check_base_class_offset(lv, (S7549C7*)(S7549C11*)(S7549C9*), ABISELECT(2864,1944), "S7549C1");
    /*is_ambiguous_... S7549C11::S7549C6 */ AMB_check_base_class_offset(lv, (S7549C2*)(S7549C6*)(S7549C11*)(S7549C9*), ABISELECT(1984,1352), "S7549C1");
    /*is_ambiguous_... S7549C11::S7549C6 */ AMB_check_base_class_offset(lv, (S7549C3*)(S7549C6*)(S7549C11*)(S7549C9*), ABISELECT(2072,1416), "S7549C1");
    /*is_ambiguous_... S7549C11::S7549C6 */ AMB_check_base_class_offset(lv, (S7549C6*)(S7549C11*)(S7549C9*), ABISELECT(1984,1352), "S7549C1");
    check_base_class_offset(lv, (S7549C11*)(S7549C9*), ABISELECT(1944,1328), "S7549C1");
    check_base_class_offset(lv, (S7549C9*)(S7549C4*), ABISELECT(1280,884), "S7549C1");
    check_base_class_offset(lv, (S7549C4*), ABISELECT(352,244), "S7549C1");
    /*is_ambiguous_... S7549C8::S7549C3 */ AMB_check_base_class_offset(lv, (S7549C3*)(S7549C8*)(S7549C12*), ABISELECT(88,64), "S7549C1");
    /*is_ambiguous_... S7549C8::S7549C2 */ AMB_check_base_class_offset(lv, (S7549C2*)(S7549C8*)(S7549C12*), ABISELECT(128,88), "S7549C1");
    check_base_class_offset(lv, (S7549C8*)(S7549C12*), ABISELECT(88,64), "S7549C1");
    check_base_class_offset(lv, (S7549C12*), ABISELECT(88,64), "S7549C1");
    /*is_ambiguous_... S7549C1::S7549C7 */ AMB_check_base_class_offset(lv, (S7549C7*), ABISELECT(224,160), "S7549C1");
    check_field_offset(lv, s7549c1f0, ABISELECT(264,192), "S7549C1.s7549c1f0");
    check_field_offset(lv, s7549c1f1, ABISELECT(272,196), "S7549C1.s7549c1f1");
    check_field_offset(lv, s7549c1f2, ABISELECT(280,200), "S7549C1.s7549c1f2");
    check_field_offset(lv, s7549c1f3, ABISELECT(288,208), "S7549C1.s7549c1f3");
    test_class_info(&lv, &cd_S7549C1);
    dp->~S7549C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7549C1(Test_S7549C1, "S7549C1", ABISELECT(2912,1976));

#else // __cplusplus

extern void _ZN7S7549C1C1Ev();
extern void _ZN7S7549C1D1Ev();
Name_Map name_map_S7549C1[] = {
  NSPAIR(_ZN7S7549C1C1Ev),
  NSPAIR(_ZN7S7549C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7549C3;
extern VTBL_ENTRY _ZTI7S7549C3[];
extern  VTBL_ENTRY _ZTV7S7549C3[];
extern Class_Descriptor cd_S7549C2;
extern VTBL_ENTRY _ZTI7S7549C2[];
extern  VTBL_ENTRY _ZTV7S7549C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C2[];
extern Class_Descriptor cd_S7549C5;
extern VTBL_ENTRY _ZTI7S7549C5[];
extern  VTBL_ENTRY _ZTV7S7549C5[];
extern Class_Descriptor cd_S7549C3;
extern VTBL_ENTRY _ZTI7S7549C3[];
extern  VTBL_ENTRY _ZTV7S7549C3[];
extern Class_Descriptor cd_S7549C2;
extern VTBL_ENTRY _ZTI7S7549C2[];
extern  VTBL_ENTRY _ZTV7S7549C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C2[];
extern Class_Descriptor cd_S7549C2;
extern VTBL_ENTRY _ZTI7S7549C2[];
extern  VTBL_ENTRY _ZTV7S7549C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C2[];
extern Class_Descriptor cd_S7549C3;
extern VTBL_ENTRY _ZTI7S7549C3[];
extern  VTBL_ENTRY _ZTV7S7549C3[];
extern Class_Descriptor cd_S7549C6;
extern VTBL_ENTRY _ZTI7S7549C6[];
extern  VTBL_ENTRY _ZTV7S7549C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C6[];
extern Class_Descriptor cd_S7549C8;
extern VTBL_ENTRY _ZTI7S7549C8[];
extern  VTBL_ENTRY _ZTV7S7549C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C8[];
extern Class_Descriptor cd_S7549C2;
extern VTBL_ENTRY _ZTI7S7549C2[];
extern  VTBL_ENTRY _ZTV7S7549C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C2[];
extern Class_Descriptor cd_S7549C10;
extern VTBL_ENTRY _ZTI8S7549C10[];
extern  VTBL_ENTRY _ZTV8S7549C10[];
extern Class_Descriptor cd_S7549C5;
extern VTBL_ENTRY _ZTI7S7549C5[];
extern  VTBL_ENTRY _ZTV7S7549C5[];
extern Class_Descriptor cd_S7549C2;
extern VTBL_ENTRY _ZTI7S7549C2[];
extern  VTBL_ENTRY _ZTV7S7549C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C2[];
extern Class_Descriptor cd_S7549C3;
extern VTBL_ENTRY _ZTI7S7549C3[];
extern  VTBL_ENTRY _ZTV7S7549C3[];
extern Class_Descriptor cd_S7549C3;
extern VTBL_ENTRY _ZTI7S7549C3[];
extern  VTBL_ENTRY _ZTV7S7549C3[];
extern Class_Descriptor cd_S7549C2;
extern VTBL_ENTRY _ZTI7S7549C2[];
extern  VTBL_ENTRY _ZTV7S7549C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C2[];
extern Class_Descriptor cd_S7549C8;
extern VTBL_ENTRY _ZTI7S7549C8[];
extern  VTBL_ENTRY _ZTV7S7549C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C8[];
extern Class_Descriptor cd_S7549C7;
extern VTBL_ENTRY _ZTI7S7549C7[];
extern  VTBL_ENTRY _ZTV7S7549C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C7[];
extern Class_Descriptor cd_S7549C2;
extern VTBL_ENTRY _ZTI7S7549C2[];
extern  VTBL_ENTRY _ZTV7S7549C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C2[];
extern Class_Descriptor cd_S7549C3;
extern VTBL_ENTRY _ZTI7S7549C3[];
extern  VTBL_ENTRY _ZTV7S7549C3[];
extern Class_Descriptor cd_S7549C6;
extern VTBL_ENTRY _ZTI7S7549C6[];
extern  VTBL_ENTRY _ZTV7S7549C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C6[];
extern Class_Descriptor cd_S7549C11;
extern VTBL_ENTRY _ZTI8S7549C11[];
extern  VTBL_ENTRY _ZTV8S7549C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7549C11[];
extern Class_Descriptor cd_S7549C9;
extern VTBL_ENTRY _ZTI7S7549C9[];
extern  VTBL_ENTRY _ZTV7S7549C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C9[];
extern Class_Descriptor cd_S7549C4;
extern VTBL_ENTRY _ZTI7S7549C4[];
extern  VTBL_ENTRY _ZTV7S7549C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C4[];
extern Class_Descriptor cd_S7549C3;
extern VTBL_ENTRY _ZTI7S7549C3[];
extern  VTBL_ENTRY _ZTV7S7549C3[];
extern Class_Descriptor cd_S7549C2;
extern VTBL_ENTRY _ZTI7S7549C2[];
extern  VTBL_ENTRY _ZTV7S7549C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C2[];
extern Class_Descriptor cd_S7549C8;
extern VTBL_ENTRY _ZTI7S7549C8[];
extern  VTBL_ENTRY _ZTV7S7549C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C8[];
extern Class_Descriptor cd_S7549C12;
extern VTBL_ENTRY _ZTI8S7549C12[];
extern  VTBL_ENTRY _ZTV8S7549C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7549C12[];
extern Class_Descriptor cd_S7549C7;
extern VTBL_ENTRY _ZTI7S7549C7[];
extern  VTBL_ENTRY _ZTV7S7549C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C7[];
static Base_Class bases_S7549C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7549C3,    ABISELECT(312,220), //bcp->offset
    30, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7549C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7549C5,    ABISELECT(592,420), //bcp->offset
    60, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S7549C3,    ABISELECT(352,244), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7549C2,    ABISELECT(392,268), //bcp->offset
    52, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7549C2,    ABISELECT(1152,796), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7549C3,    ABISELECT(1240,860), //bcp->offset
    71, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7549C6,    ABISELECT(1152,796), //bcp->offset
    65, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7549C8,    ABISELECT(352,244), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7549C2,    ABISELECT(480,332), //bcp->offset
    56, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7549C10,    ABISELECT(1280,884), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7549C5,    ABISELECT(1296,888), //bcp->offset
    92, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7549C2,    ABISELECT(1856,1264), //bcp->offset
    96, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7549C3,    ABISELECT(1944,1328), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7549C3,    ABISELECT(2736,1856), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7549C2,    ABISELECT(2776,1880), //bcp->offset
    128, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7549C8,    ABISELECT(2736,1856), //bcp->offset
    117, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S7549C7,    ABISELECT(2864,1944), //bcp->offset
    132, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    103, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S7549C2,    ABISELECT(1984,1352), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7549C3,    ABISELECT(2072,1416), //bcp->offset
    114, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7549C6,    ABISELECT(1984,1352), //bcp->offset
    110, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7549C11,    ABISELECT(1944,1328), //bcp->offset
    100, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7549C9,    ABISELECT(1280,884), //bcp->offset
    74, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7549C4,    ABISELECT(352,244), //bcp->offset
    34, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7549C3,    ABISELECT(88,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7549C2,    ABISELECT(128,88), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7549C8,    ABISELECT(88,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7549C12,    ABISELECT(88,64), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7549C7,    ABISELECT(224,160), //bcp->offset
    25, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7549C1[];
extern void _ZN7S7549C22v3Ev();
extern void _ZN7S7549C12v1Ev();
extern void _ZN7S7549C1D1Ev();
extern void _ZN7S7549C1D0Ev();
extern void _ZN7S7549C32v2Ev();
extern void _ZN7S7549C82v4Ev();
extern void _ZN7S7549C82v5Ev();
extern void _ZN8S7549C122v9Ev();
extern void _ZN7S7549C22v3Ev();
extern void _ZN7S7549C32v2Ev();
extern void _ZN7S7549C32v2Ev();
extern void _ZN7S7549C82v4Ev();
extern void _ZN7S7549C82v5Ev();
extern void ABISELECT(_ZTv0_n104_N7S7549C1D1Ev,_ZTv0_n52_N7S7549C1D1Ev)();
extern void ABISELECT(_ZThn352_N7S7549C1D1Ev,_ZThn244_N7S7549C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N7S7549C1D0Ev,_ZTv0_n52_N7S7549C1D0Ev)();
extern void ABISELECT(_ZThn352_N7S7549C1D0Ev,_ZThn244_N7S7549C1D0Ev)() __attribute__((weak));
extern void _ZN7S7549C22v3Ev();
extern void _ZN7S7549C22v3Ev();
extern void ABISELECT(_ZTv0_n24_N7S7549C1D1Ev,_ZTv0_n12_N7S7549C1D1Ev)();
extern void ABISELECT(_ZThn592_N7S7549C1D1Ev,_ZThn420_N7S7549C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7549C1D0Ev,_ZTv0_n12_N7S7549C1D0Ev)();
extern void ABISELECT(_ZThn592_N7S7549C1D0Ev,_ZThn420_N7S7549C1D0Ev)() __attribute__((weak));
extern void _ZN7S7549C22v3Ev();
extern void _ZN7S7549C32v2Ev();
extern void ABISELECT(_ZTv0_n64_N7S7549C1D1Ev,_ZTv0_n32_N7S7549C1D1Ev)();
extern void ABISELECT(_ZThn1280_N7S7549C1D1Ev,_ZThn884_N7S7549C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7549C1D0Ev,_ZTv0_n32_N7S7549C1D0Ev)();
extern void ABISELECT(_ZThn1280_N7S7549C1D0Ev,_ZThn884_N7S7549C1D0Ev)() __attribute__((weak));
extern void _ZN8S7549C102v6Ev();
extern void _ZN8S7549C102v7Ev();
extern void _ZN7S7549C92v8Ev();
extern void ABISELECT(_ZTvn16_n64_N7S7549C1D1Ev,_ZTvn4_n32_N7S7549C1D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N7S7549C1D0Ev,_ZTvn4_n32_N7S7549C1D0Ev)();
extern void _ZN7S7549C22v3Ev();
extern void _ZN7S7549C32v2Ev();
extern void ABISELECT(_ZTvn664_n64_N7S7549C1D1Ev,_ZTvn444_n32_N7S7549C1D1Ev)();
extern void ABISELECT(_ZTvn664_n64_N7S7549C1D0Ev,_ZTvn444_n32_N7S7549C1D0Ev)();
extern void _ZN7S7549C22v3Ev();
extern void _ZN7S7549C32v2Ev();
extern void _ZN7S7549C32v2Ev();
extern void _ZN7S7549C82v4Ev();
extern void _ZN7S7549C82v5Ev();
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY vtc_S7549C1[] = {
  ABISELECT(2864,1944),
  ABISELECT(2736,1856),
  ABISELECT(1280,884),
  ABISELECT(1152,796),
  ABISELECT(592,420),
  ABISELECT(352,244),
  ABISELECT(312,220),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C1[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
  (VTBL_ENTRY)&_ZN7S7549C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7549C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7549C1D0Ev,
  ABISELECT(1064,732),
  ABISELECT(224,156),
  ABISELECT(-88,-64),
  (VTBL_ENTRY)&(_ZTI7S7549C1[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v4Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v5Ev,
  (VTBL_ENTRY)&_ZN8S7549C122v9Ev,
  ABISELECT(184,132),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI7S7549C1[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
  ABISELECT(928,636),
  ABISELECT(88,60),
  ABISELECT(2512,1696),
  ABISELECT(-224,-160),
  (VTBL_ENTRY)&(_ZTI7S7549C1[0]),
  0,
  ABISELECT(-312,-220),
  (VTBL_ENTRY)&(_ZTI7S7549C1[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  ABISELECT(-352,-244),
  ABISELECT(40,24),
  0,
  0,
  0,
  ABISELECT(2512,1700),
  ABISELECT(2384,1612),
  ABISELECT(928,640),
  ABISELECT(240,176),
  ABISELECT(800,552),
  ABISELECT(-40,-24),
  ABISELECT(-352,-244),
  (VTBL_ENTRY)&(_ZTI7S7549C1[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v4Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v5Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N7S7549C1D1Ev,_ZTv0_n52_N7S7549C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N7S7549C1D0Ev,_ZTv0_n52_N7S7549C1D0Ev),
  ABISELECT(-80,-48),
  ABISELECT(-392,-268),
  (VTBL_ENTRY)&(_ZTI7S7549C1[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
  ABISELECT(-168,-112),
  ABISELECT(-480,-332),
  (VTBL_ENTRY)&(_ZTI7S7549C1[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
  ABISELECT(-592,-420),
  ABISELECT(-592,-420),
  (VTBL_ENTRY)&(_ZTI7S7549C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7549C1D1Ev,_ZTv0_n12_N7S7549C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7549C1D0Ev,_ZTv0_n12_N7S7549C1D0Ev),
  ABISELECT(88,64),
  0,
  ABISELECT(-840,-576),
  ABISELECT(-1152,-796),
  (VTBL_ENTRY)&(_ZTI7S7549C1[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
  ABISELECT(-1240,-860),
  (VTBL_ENTRY)&(_ZTI7S7549C1[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  ABISELECT(664,444),
  ABISELECT(576,380),
  0,
  0,
  0,
  ABISELECT(-1280,-884),
  ABISELECT(-688,-464),
  ABISELECT(1584,1060),
  ABISELECT(-128,-88),
  ABISELECT(1456,972),
  ABISELECT(-968,-664),
  ABISELECT(-1280,-884),
  (VTBL_ENTRY)&(_ZTI7S7549C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7549C1D1Ev,_ZTv0_n32_N7S7549C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7549C1D0Ev,_ZTv0_n32_N7S7549C1D0Ev),
  (VTBL_ENTRY)&_ZN8S7549C102v6Ev,
  (VTBL_ENTRY)&_ZN8S7549C102v7Ev,
  (VTBL_ENTRY)&_ZN7S7549C92v8Ev,
  ABISELECT(-1296,-888),
  (VTBL_ENTRY)&(_ZTI7S7549C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N7S7549C1D1Ev,_ZTvn4_n32_N7S7549C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N7S7549C1D0Ev,_ZTvn4_n32_N7S7549C1D0Ev),
  ABISELECT(-1544,-1044),
  ABISELECT(-1856,-1264),
  (VTBL_ENTRY)&(_ZTI7S7549C1[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
  ABISELECT(-1352,-908),
  ABISELECT(920,616),
  ABISELECT(-792,-532),
  ABISELECT(-1632,-1108),
  ABISELECT(792,528),
  ABISELECT(-1944,-1328),
  (VTBL_ENTRY)&(_ZTI7S7549C1[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn664_n64_N7S7549C1D1Ev,_ZTvn444_n32_N7S7549C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn664_n64_N7S7549C1D0Ev,_ZTvn444_n32_N7S7549C1D0Ev),
  ABISELECT(-1672,-1132),
  ABISELECT(-1984,-1352),
  (VTBL_ENTRY)&(_ZTI7S7549C1[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
  ABISELECT(-2072,-1416),
  (VTBL_ENTRY)&(_ZTI7S7549C1[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  ABISELECT(40,24),
  0,
  0,
  0,
  ABISELECT(-1584,-1060),
  ABISELECT(-2424,-1636),
  ABISELECT(-2736,-1856),
  (VTBL_ENTRY)&(_ZTI7S7549C1[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v4Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v5Ev,
  ABISELECT(-2464,-1660),
  ABISELECT(-2776,-1880),
  (VTBL_ENTRY)&(_ZTI7S7549C1[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
  ABISELECT(-1712,-1148),
  ABISELECT(-2552,-1724),
  ABISELECT(-128,-88),
  ABISELECT(-2864,-1944),
  (VTBL_ENTRY)&(_ZTI7S7549C1[0]),
};
extern VTBL_ENTRY _ZTV7S7549C1[];
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C2__7S7549C1[] = {
  ABISELECT(312,220),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__7S7549C2__7S7549C1[] = {
  0,
  ABISELECT(-312,-220),
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C32v2Ev();
extern void _ZN7S7549C82v4Ev();
extern void _ZN7S7549C82v5Ev();
extern void _ZN8S7549C122v9Ev();
static  VTBL_ENTRY _tg__ZTV8S7549C12__7S7549C1[] = {
  ABISELECT(1064,732),
  ABISELECT(224,156),
  0,
  (VTBL_ENTRY)&(_ZTI8S7549C12[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v4Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v5Ev,
  (VTBL_ENTRY)&_ZN8S7549C122v9Ev,
};
extern void _ZN7S7549C32v2Ev();
extern void _ZN7S7549C82v4Ev();
extern void _ZN7S7549C82v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C88S7549C12__A2__7S7549C1[] = {
  ABISELECT(1064,732),
  ABISELECT(224,156),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v4Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v5Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C27S7549C88S7549C12__A7__7S7549C1[] = {
  ABISELECT(184,132),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__7S7549C27S7549C88S7549C12__A7__7S7549C1[] = {
  0,
  ABISELECT(-184,-132),
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C2__7S7549C88S7549C12__A2__7S7549C1[] = {
  ABISELECT(184,132),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__A1__7S7549C88S7549C12__A2__7S7549C1[] = {
  0,
  ABISELECT(-224,-156),
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C6__7S7549C88S7549C12__A2__7S7549C1[] = {
  ABISELECT(88,64),
  0,
  ABISELECT(-840,-576),
  ABISELECT(-1064,-732),
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C37S7549C6__A2__7S7549C88S7549C12__A2__7S7549C1[] = {
  ABISELECT(-1152,-796),
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__8S7549C12__7S7549C1[] = {
  0,
  ABISELECT(-224,-156),
  (VTBL_ENTRY)&(_ZTI8S7549C12[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C27S7549C8__8S7549C12__7S7549C1[] = {
  ABISELECT(184,132),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S7549C12[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C6__8S7549C12__7S7549C1[] = {
  ABISELECT(88,64),
  0,
  ABISELECT(-840,-576),
  ABISELECT(-1064,-732),
  (VTBL_ENTRY)&(_ZTI8S7549C12[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C37S7549C6__A2__8S7549C12__7S7549C1[] = {
  ABISELECT(-1152,-796),
  (VTBL_ENTRY)&(_ZTI8S7549C12[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7549C7__A__7S7549C1[] = {
  ABISELECT(928,636),
  ABISELECT(88,60),
  ABISELECT(2512,1696),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C7[0]),
};
extern void _ZN7S7549C32v2Ev();
extern void _ZN7S7549C82v4Ev();
extern void _ZN7S7549C82v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C8__7S7549C7__A__7S7549C1[] = {
  ABISELECT(40,24),
  0,
  0,
  0,
  ABISELECT(-1584,-1060),
  ABISELECT(-2424,-1636),
  ABISELECT(-2512,-1696),
  (VTBL_ENTRY)&(_ZTI7S7549C7[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v4Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v5Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C27S7549C8__7S7549C7__A__7S7549C1[] = {
  ABISELECT(-2464,-1660),
  ABISELECT(-2552,-1720),
  (VTBL_ENTRY)&(_ZTI7S7549C7[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__A1__7S7549C7__A__7S7549C1[] = {
  0,
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI7S7549C7[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C6__7S7549C7__A__7S7549C1[] = {
  ABISELECT(88,64),
  0,
  ABISELECT(-840,-576),
  ABISELECT(-928,-636),
  (VTBL_ENTRY)&(_ZTI7S7549C7[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C37S7549C6__A2__7S7549C7__A__7S7549C1[] = {
  ABISELECT(-1016,-700),
  (VTBL_ENTRY)&(_ZTI7S7549C7[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C32v2Ev();
extern void _ZN7S7549C82v4Ev();
extern void _ZN7S7549C82v5Ev();
extern void _ZN7S7549C4D1Ev();
extern void _ZN7S7549C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C4__7S7549C1[] = {
  ABISELECT(2512,1700),
  ABISELECT(2384,1612),
  ABISELECT(928,640),
  ABISELECT(240,176),
  ABISELECT(800,552),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C4[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v4Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v5Ev,
  (VTBL_ENTRY)&_ZN7S7549C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7549C4D0Ev,
};
extern void _ZN7S7549C32v2Ev();
extern void _ZN7S7549C82v4Ev();
extern void _ZN7S7549C82v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C87S7549C4__7S7549C1[] = {
  ABISELECT(800,552),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v4Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v5Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C27S7549C87S7549C4__A1__7S7549C1[] = {
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__7S7549C27S7549C87S7549C4__A1__7S7549C1[] = {
  0,
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C2__7S7549C87S7549C4__7S7549C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__A1__7S7549C87S7549C4__7S7549C1[] = {
  0,
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C6__7S7549C87S7549C4__7S7549C1[] = {
  ABISELECT(88,64),
  0,
  ABISELECT(-840,-576),
  ABISELECT(-800,-552),
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C37S7549C6__A2__7S7549C87S7549C4__7S7549C1[] = {
  ABISELECT(-888,-616),
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C27S7549C4__A3__7S7549C1[] = {
  ABISELECT(-168,-112),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__7S7549C27S7549C4__A3__7S7549C1[] = {
  0,
  ABISELECT(168,112),
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7549C4D1Ev,_ZTv0_n12_N7S7549C4D1Ev)();
extern void ABISELECT(_ZThn240_N7S7549C4D1Ev,_ZThn176_N7S7549C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7549C4D0Ev,_ZTv0_n12_N7S7549C4D0Ev)();
extern void ABISELECT(_ZThn240_N7S7549C4D0Ev,_ZThn176_N7S7549C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7549C5__7S7549C4__7S7549C1[] = {
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  (VTBL_ENTRY)&(_ZTI7S7549C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7549C4D1Ev,_ZTv0_n12_N7S7549C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7549C4D0Ev,_ZTv0_n12_N7S7549C4D0Ev),
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C27S7549C8__7S7549C4__7S7549C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7549C4[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__A1__7S7549C4__7S7549C1[] = {
  0,
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI7S7549C4[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C6__7S7549C4__7S7549C1[] = {
  ABISELECT(88,64),
  0,
  ABISELECT(-840,-576),
  ABISELECT(-800,-552),
  (VTBL_ENTRY)&(_ZTI7S7549C4[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C37S7549C6__A2__7S7549C4__7S7549C1[] = {
  ABISELECT(-888,-616),
  (VTBL_ENTRY)&(_ZTI7S7549C4[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C2__A2__7S7549C4__7S7549C1[] = {
  ABISELECT(-168,-112),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI7S7549C4[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void ABISELECT(_ZTv0_n64_N7S7549C4D1Ev,_ZTv0_n32_N7S7549C4D1Ev)();
extern void ABISELECT(_ZThn928_N7S7549C4D1Ev,_ZThn640_N7S7549C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7549C4D0Ev,_ZTv0_n32_N7S7549C4D0Ev)();
extern void ABISELECT(_ZThn928_N7S7549C4D0Ev,_ZThn640_N7S7549C4D0Ev)() __attribute__((weak));
extern void _ZN8S7549C102v6Ev();
extern void _ZN8S7549C102v7Ev();
extern void _ZN7S7549C92v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C9__7S7549C4__7S7549C1[] = {
  ABISELECT(664,444),
  ABISELECT(576,380),
  0,
  0,
  0,
  ABISELECT(-928,-640),
  ABISELECT(-688,-464),
  ABISELECT(1584,1060),
  ABISELECT(-128,-88),
  ABISELECT(1456,972),
  ABISELECT(-968,-664),
  ABISELECT(-928,-640),
  (VTBL_ENTRY)&(_ZTI7S7549C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7549C4D1Ev,_ZTv0_n32_N7S7549C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7549C4D0Ev,_ZTv0_n32_N7S7549C4D0Ev),
  (VTBL_ENTRY)&_ZN8S7549C102v6Ev,
  (VTBL_ENTRY)&_ZN8S7549C102v7Ev,
  (VTBL_ENTRY)&_ZN7S7549C92v8Ev,
};
extern void ABISELECT(_ZTvn16_n64_N7S7549C4D1Ev,_ZTvn4_n32_N7S7549C4D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N7S7549C4D0Ev,_ZTvn4_n32_N7S7549C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7549C57S7549C9__A1__7S7549C4__7S7549C1[] = {
  ABISELECT(-944,-644),
  (VTBL_ENTRY)&(_ZTI7S7549C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N7S7549C4D1Ev,_ZTvn4_n32_N7S7549C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N7S7549C4D0Ev,_ZTvn4_n32_N7S7549C4D0Ev),
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C27S7549C9__A3__7S7549C4__7S7549C1[] = {
  ABISELECT(-1544,-1044),
  ABISELECT(-1504,-1020),
  (VTBL_ENTRY)&(_ZTI7S7549C4[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
extern void ABISELECT(_ZTvn664_n64_N7S7549C4D1Ev,_ZTvn444_n32_N7S7549C4D1Ev)();
extern void ABISELECT(_ZTvn664_n64_N7S7549C4D0Ev,_ZTvn444_n32_N7S7549C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7549C117S7549C9__7S7549C4__7S7549C1[] = {
  ABISELECT(-1352,-908),
  ABISELECT(920,616),
  ABISELECT(-792,-532),
  ABISELECT(-1632,-1108),
  ABISELECT(792,528),
  ABISELECT(-1592,-1084),
  (VTBL_ENTRY)&(_ZTI7S7549C4[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn664_n64_N7S7549C4D1Ev,_ZTvn444_n32_N7S7549C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn664_n64_N7S7549C4D0Ev,_ZTvn444_n32_N7S7549C4D0Ev),
};
extern void _ZN7S7549C32v2Ev();
extern void _ZN7S7549C82v4Ev();
extern void _ZN7S7549C82v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C8__A1__7S7549C4__7S7549C1[] = {
  ABISELECT(40,24),
  0,
  0,
  0,
  ABISELECT(-1584,-1060),
  ABISELECT(-2424,-1636),
  ABISELECT(-2384,-1612),
  (VTBL_ENTRY)&(_ZTI7S7549C4[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v4Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v5Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C27S7549C8__A4__7S7549C4__7S7549C1[] = {
  ABISELECT(-2464,-1660),
  ABISELECT(-2424,-1636),
  (VTBL_ENTRY)&(_ZTI7S7549C4[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7549C7__7S7549C4__7S7549C1[] = {
  ABISELECT(-1712,-1148),
  ABISELECT(-2552,-1724),
  ABISELECT(-128,-88),
  ABISELECT(-2512,-1700),
  (VTBL_ENTRY)&(_ZTI7S7549C4[0]),
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C68S7549C117S7549C9__A1__7S7549C4__7S7549C1[] = {
  ABISELECT(-1672,-1132),
  ABISELECT(-1632,-1108),
  (VTBL_ENTRY)&(_ZTI7S7549C4[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C37S7549C68S7549C117S7549C9__A5__7S7549C4__7S7549C1[] = {
  ABISELECT(-1720,-1172),
  (VTBL_ENTRY)&(_ZTI7S7549C4[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C6__7S7549C1[] = {
  ABISELECT(-840,-576),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C6[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C27S7549C6__A2__7S7549C1[] = {
  ABISELECT(-840,-576),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__7S7549C27S7549C6__A2__7S7549C1[] = {
  0,
  ABISELECT(840,576),
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__7S7549C6__7S7549C1[] = {
  0,
  ABISELECT(840,576),
  (VTBL_ENTRY)&(_ZTI7S7549C6[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C9D1Ev();
extern void _ZN7S7549C9D0Ev();
extern void _ZN8S7549C102v6Ev();
extern void _ZN8S7549C102v7Ev();
extern void _ZN7S7549C92v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C9__7S7549C1[] = {
  ABISELECT(-688,-464),
  ABISELECT(1584,1060),
  ABISELECT(-128,-88),
  ABISELECT(1456,972),
  ABISELECT(-968,-664),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C9[0]),
  (VTBL_ENTRY)&_ZN7S7549C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7549C9D0Ev,
  (VTBL_ENTRY)&_ZN8S7549C102v6Ev,
  (VTBL_ENTRY)&_ZN8S7549C102v7Ev,
  (VTBL_ENTRY)&_ZN7S7549C92v8Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C27S7549C9__A4__7S7549C1[] = {
  ABISELECT(-1544,-1044),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__7S7549C27S7549C9__A4__7S7549C1[] = {
  0,
  ABISELECT(1544,1044),
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C32v2Ev();
extern void _ZN8S7549C11D1Ev();
extern void _ZN8S7549C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7549C117S7549C9__7S7549C1[] = {
  ABISELECT(-1352,-908),
  ABISELECT(920,616),
  ABISELECT(-792,-532),
  ABISELECT(-1632,-1108),
  ABISELECT(792,528),
  0,
  (VTBL_ENTRY)&(_ZTI8S7549C11[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  (VTBL_ENTRY)&_ZN8S7549C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7549C11D0Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C68S7549C117S7549C9__A1__7S7549C1[] = {
  ABISELECT(-1672,-1132),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C6[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C27S7549C68S7549C117S7549C9__A6__7S7549C1[] = {
  ABISELECT(-1672,-1132),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__7S7549C27S7549C68S7549C117S7549C9__A6__7S7549C1[] = {
  0,
  ABISELECT(1672,1132),
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__7S7549C68S7549C117S7549C9__A1__7S7549C1[] = {
  0,
  ABISELECT(1672,1132),
  (VTBL_ENTRY)&(_ZTI7S7549C6[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C32v2Ev();
extern void _ZN7S7549C82v4Ev();
extern void _ZN7S7549C82v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C8__8S7549C117S7549C9__7S7549C1[] = {
  ABISELECT(40,24),
  0,
  0,
  0,
  ABISELECT(-1584,-1060),
  ABISELECT(-2424,-1636),
  ABISELECT(-792,-528),
  (VTBL_ENTRY)&(_ZTI8S7549C11[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v4Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v5Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C27S7549C8__8S7549C117S7549C9__7S7549C1[] = {
  ABISELECT(-2464,-1660),
  ABISELECT(-832,-552),
  (VTBL_ENTRY)&(_ZTI8S7549C11[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__A2__8S7549C117S7549C9__7S7549C1[] = {
  0,
  ABISELECT(1632,1108),
  (VTBL_ENTRY)&(_ZTI8S7549C11[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C6__8S7549C117S7549C9__7S7549C1[] = {
  ABISELECT(88,64),
  0,
  ABISELECT(-840,-576),
  ABISELECT(792,532),
  (VTBL_ENTRY)&(_ZTI8S7549C11[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C37S7549C6__A3__8S7549C117S7549C9__7S7549C1[] = {
  ABISELECT(704,468),
  (VTBL_ENTRY)&(_ZTI8S7549C11[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7549C7__8S7549C117S7549C9__7S7549C1[] = {
  ABISELECT(-1712,-1148),
  ABISELECT(-2552,-1724),
  ABISELECT(-128,-88),
  ABISELECT(-920,-616),
  (VTBL_ENTRY)&(_ZTI8S7549C11[0]),
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C6__A__8S7549C117S7549C9__7S7549C1[] = {
  ABISELECT(-1672,-1132),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S7549C11[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7549C11D1Ev,_ZTv0_n12_N8S7549C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7549C11D0Ev,_ZTv0_n12_N8S7549C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7549C5__8S7549C117S7549C9__7S7549C1[] = {
  ABISELECT(1352,908),
  ABISELECT(1352,908),
  (VTBL_ENTRY)&(_ZTI8S7549C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7549C11D1Ev,_ZTv0_n12_N8S7549C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7549C11D0Ev,_ZTv0_n12_N8S7549C11D0Ev),
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C2__7S7549C9__7S7549C1[] = {
  ABISELECT(-1544,-1044),
  ABISELECT(-576,-380),
  (VTBL_ENTRY)&(_ZTI7S7549C9[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__7S7549C9__7S7549C1[] = {
  0,
  ABISELECT(968,664),
  (VTBL_ENTRY)&(_ZTI7S7549C9[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C32v2Ev();
extern void ABISELECT(_ZThn664_N7S7549C9D1Ev,_ZThn444_N7S7549C9D1Ev)();
extern void ABISELECT(_ZThn664_N7S7549C9D0Ev,_ZThn444_N7S7549C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7549C11__7S7549C9__7S7549C1[] = {
  ABISELECT(-1352,-908),
  ABISELECT(920,616),
  ABISELECT(-792,-532),
  ABISELECT(-1632,-1108),
  ABISELECT(792,528),
  ABISELECT(-664,-444),
  (VTBL_ENTRY)&(_ZTI7S7549C9[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn664_N7S7549C9D1Ev,_ZThn444_N7S7549C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn664_N7S7549C9D0Ev,_ZThn444_N7S7549C9D0Ev),
};
extern void _ZN7S7549C32v2Ev();
extern void _ZN7S7549C82v4Ev();
extern void _ZN7S7549C82v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C8__7S7549C9__7S7549C1[] = {
  ABISELECT(40,24),
  0,
  0,
  0,
  ABISELECT(-1584,-1060),
  ABISELECT(-2424,-1636),
  ABISELECT(-1456,-972),
  (VTBL_ENTRY)&(_ZTI7S7549C9[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v4Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v5Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C27S7549C8__A1__7S7549C9__7S7549C1[] = {
  ABISELECT(-2464,-1660),
  ABISELECT(-1496,-996),
  (VTBL_ENTRY)&(_ZTI7S7549C9[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C6__7S7549C9__7S7549C1[] = {
  ABISELECT(88,64),
  0,
  ABISELECT(-840,-576),
  ABISELECT(128,88),
  (VTBL_ENTRY)&(_ZTI7S7549C9[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C37S7549C6__A3__7S7549C9__7S7549C1[] = {
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI7S7549C9[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7549C7__7S7549C9__7S7549C1[] = {
  ABISELECT(-1712,-1148),
  ABISELECT(-2552,-1724),
  ABISELECT(-128,-88),
  ABISELECT(-1584,-1060),
  (VTBL_ENTRY)&(_ZTI7S7549C9[0]),
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C68S7549C11__A1__7S7549C9__7S7549C1[] = {
  ABISELECT(-1672,-1132),
  ABISELECT(-704,-468),
  (VTBL_ENTRY)&(_ZTI7S7549C9[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7549C9D1Ev,_ZTv0_n12_N7S7549C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7549C9D0Ev,_ZTv0_n12_N7S7549C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7549C5__A1__7S7549C9__7S7549C1[] = {
  ABISELECT(688,464),
  ABISELECT(688,464),
  (VTBL_ENTRY)&(_ZTI7S7549C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7549C9D1Ev,_ZTv0_n12_N7S7549C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7549C9D0Ev,_ZTv0_n12_N7S7549C9D0Ev),
};
extern void _ZN7S7549C32v2Ev();
extern void _ZN7S7549C82v4Ev();
extern void _ZN7S7549C82v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C8__A1__7S7549C1[] = {
  ABISELECT(-1584,-1060),
  ABISELECT(-2424,-1636),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v4Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v5Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C27S7549C8__A5__7S7549C1[] = {
  ABISELECT(-2464,-1660),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__7S7549C27S7549C8__A5__7S7549C1[] = {
  0,
  ABISELECT(2464,1660),
  (VTBL_ENTRY)&(_ZTI7S7549C2[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C2__7S7549C8__A1__7S7549C1[] = {
  ABISELECT(-2464,-1660),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__A1__7S7549C8__A1__7S7549C1[] = {
  0,
  ABISELECT(2424,1636),
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C6__7S7549C8__A1__7S7549C1[] = {
  ABISELECT(88,64),
  0,
  ABISELECT(-840,-576),
  ABISELECT(1584,1060),
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C37S7549C6__A2__7S7549C8__A1__7S7549C1[] = {
  ABISELECT(1496,996),
  (VTBL_ENTRY)&(_ZTI7S7549C8[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7549C7__7S7549C1[] = {
  ABISELECT(-1712,-1148),
  ABISELECT(-2552,-1724),
  ABISELECT(-128,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S7549C7[0]),
};
extern void _ZN7S7549C32v2Ev();
extern void _ZN7S7549C82v4Ev();
extern void _ZN7S7549C82v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C8__7S7549C7__7S7549C1[] = {
  ABISELECT(40,24),
  0,
  0,
  0,
  ABISELECT(-1584,-1060),
  ABISELECT(-2424,-1636),
  ABISELECT(128,88),
  (VTBL_ENTRY)&(_ZTI7S7549C7[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v4Ev,
  (VTBL_ENTRY)&_ZN7S7549C82v5Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C27S7549C8__7S7549C7__7S7549C1[] = {
  ABISELECT(-2464,-1660),
  ABISELECT(88,64),
  (VTBL_ENTRY)&(_ZTI7S7549C7[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C3__A1__7S7549C7__7S7549C1[] = {
  0,
  ABISELECT(2552,1724),
  (VTBL_ENTRY)&(_ZTI7S7549C7[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
extern void _ZN7S7549C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C6__7S7549C7__7S7549C1[] = {
  ABISELECT(88,64),
  0,
  ABISELECT(-840,-576),
  ABISELECT(1712,1148),
  (VTBL_ENTRY)&(_ZTI7S7549C7[0]),
  (VTBL_ENTRY)&_ZN7S7549C22v3Ev,
};
extern void _ZN7S7549C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7549C37S7549C6__A2__7S7549C7__7S7549C1[] = {
  ABISELECT(1624,1084),
  (VTBL_ENTRY)&(_ZTI7S7549C7[0]),
  (VTBL_ENTRY)&_ZN7S7549C32v2Ev,
};
static  VTT_ENTRY vtt_S7549C1[] = {
  {&(_ZTV7S7549C1[9]),  9,137},
  {&(_tg__ZTV7S7549C2__7S7549C1[3]),  3,4},
  {&(_tg__ZTV7S7549C3__7S7549C2__7S7549C1[3]),  3,4},
  {&(_tg__ZTV8S7549C12__7S7549C1[4]),  4,8},
  {&(_tg__ZTV7S7549C88S7549C12__A2__7S7549C1[4]),  4,7},
  {&(_tg__ZTV7S7549C27S7549C88S7549C12__A7__7S7549C1[3]),  3,4},
  {&(_tg__ZTV7S7549C3__7S7549C27S7549C88S7549C12__A7__7S7549C1[3]),  3,4},
  {&(_tg__ZTV7S7549C2__7S7549C88S7549C12__A2__7S7549C1[3]),  3,4},
  {&(_tg__ZTV7S7549C3__A1__7S7549C88S7549C12__A2__7S7549C1[3]),  3,4},
  {&(_tg__ZTV7S7549C6__7S7549C88S7549C12__A2__7S7549C1[5]),  5,6},
  {&(_tg__ZTV7S7549C37S7549C6__A2__7S7549C88S7549C12__A2__7S7549C1[2]),  2,3},
  {&(_tg__ZTV7S7549C3__8S7549C12__7S7549C1[3]),  3,4},
  {&(_tg__ZTV7S7549C27S7549C8__8S7549C12__7S7549C1[3]),  3,4},
  {&(_tg__ZTV7S7549C6__8S7549C12__7S7549C1[5]),  5,6},
  {&(_tg__ZTV7S7549C37S7549C6__A2__8S7549C12__7S7549C1[2]),  2,3},
  {&(_tg__ZTV7S7549C7__A__7S7549C1[5]),  5,5},
  {&(_tg__ZTV7S7549C8__7S7549C7__A__7S7549C1[8]),  8,11},
  {&(_tg__ZTV7S7549C27S7549C8__7S7549C7__A__7S7549C1[3]),  3,4},
  {&(_tg__ZTV7S7549C3__A1__7S7549C7__A__7S7549C1[3]),  3,4},
  {&(_tg__ZTV7S7549C6__7S7549C7__A__7S7549C1[5]),  5,6},
  {&(_tg__ZTV7S7549C37S7549C6__A2__7S7549C7__A__7S7549C1[2]),  2,3},
  {&(_ZTV7S7549C1[33]),  33,137},
  {&(_ZTV7S7549C1[47]),  47,137},
  {&(_ZTV7S7549C1[63]),  63,137},
  {&(_ZTV7S7549C1[55]),  55,137},
  {&(_ZTV7S7549C1[70]),  70,137},
  {&(_ZTV7S7549C1[73]),  73,137},
  {&(_ZTV7S7549C1[59]),  59,137},
  {&(_ZTV7S7549C1[87]),  87,137},
  {&(_ZTV7S7549C1[94]),  94,137},
  {&(_ZTV7S7549C1[99]),  99,137},
  {&(_ZTV7S7549C1[107]),  107,137},
  {&(_ZTV7S7549C1[125]),  125,137},
  {&(_ZTV7S7549C1[131]),  131,137},
  {&(_ZTV7S7549C1[137]),  137,137},
  {&(_ZTV7S7549C1[113]),  113,137},
  {&(_ZTV7S7549C1[116]),  116,137},
  {&(_ZTV7S7549C1[17]),  17,137},
  {&(_ZTV7S7549C1[24]),  24,137},
  {&(_ZTV7S7549C1[30]),  30,137},
  {&(_tg__ZTV7S7549C4__7S7549C1[8]),  8,13},
  {&(_tg__ZTV7S7549C87S7549C4__7S7549C1[4]),  4,7},
  {&(_tg__ZTV7S7549C27S7549C87S7549C4__A1__7S7549C1[3]),  3,4},
  {&(_tg__ZTV7S7549C3__7S7549C27S7549C87S7549C4__A1__7S7549C1[3]),  3,4},
  {&(_tg__ZTV7S7549C2__7S7549C87S7549C4__7S7549C1[3]),  3,4},
  {&(_tg__ZTV7S7549C3__A1__7S7549C87S7549C4__7S7549C1[3]),  3,4},
  {&(_tg__ZTV7S7549C6__7S7549C87S7549C4__7S7549C1[5]),  5,6},
  {&(_tg__ZTV7S7549C37S7549C6__A2__7S7549C87S7549C4__7S7549C1[2]),  2,3},
  {&(_tg__ZTV7S7549C27S7549C4__A3__7S7549C1[3]),  3,4},
  {&(_tg__ZTV7S7549C3__7S7549C27S7549C4__A3__7S7549C1[3]),  3,4},
  {&(_tg__ZTV7S7549C5__7S7549C4__7S7549C1[3]),  3,5},
  {&(_tg__ZTV7S7549C27S7549C8__7S7549C4__7S7549C1[3]),  3,4},
  {&(_tg__ZTV7S7549C3__A1__7S7549C4__7S7549C1[3]),  3,4},
  {&(_tg__ZTV7S7549C6__7S7549C4__7S7549C1[5]),  5,6},
  {&(_tg__ZTV7S7549C37S7549C6__A2__7S7549C4__7S7549C1[2]),  2,3},
  {&(_tg__ZTV7S7549C2__A2__7S7549C4__7S7549C1[3]),  3,4},
  {&(_tg__ZTV7S7549C9__7S7549C4__7S7549C1[13]),  13,18},
  {&(_tg__ZTV7S7549C57S7549C9__A1__7S7549C4__7S7549C1[2]),  2,4},
  {&(_tg__ZTV7S7549C27S7549C9__A3__7S7549C4__7S7549C1[3]),  3,4},
  {&(_tg__ZTV8S7549C117S7549C9__7S7549C4__7S7549C1[7]),  7,10},
  {&(_tg__ZTV7S7549C8__A1__7S7549C4__7S7549C1[8]),  8,11},
  {&(_tg__ZTV7S7549C27S7549C8__A4__7S7549C4__7S7549C1[3]),  3,4},
  {&(_tg__ZTV7S7549C7__7S7549C4__7S7549C1[5]),  5,5},
  {&(_tg__ZTV7S7549C68S7549C117S7549C9__A1__7S7549C4__7S7549C1[3]),  3,4},
  {&(_tg__ZTV7S7549C37S7549C68S7549C117S7549C9__A5__7S7549C4__7S7549C1[2]),  2,3},
  {&(_tg__ZTV7S7549C6__7S7549C1[3]),  3,4},
  {&(_tg__ZTV7S7549C27S7549C6__A2__7S7549C1[3]),  3,4},
  {&(_tg__ZTV7S7549C3__7S7549C27S7549C6__A2__7S7549C1[3]),  3,4},
  {&(_tg__ZTV7S7549C3__7S7549C6__7S7549C1[3]),  3,4},
  {&(_tg__ZTV7S7549C9__7S7549C1[7]),  7,12},
  {&(_tg__ZTV7S7549C27S7549C9__A4__7S7549C1[3]),  3,4},
  {&(_tg__ZTV7S7549C3__7S7549C27S7549C9__A4__7S7549C1[3]),  3,4},
  {&(_tg__ZTV8S7549C117S7549C9__7S7549C1[7]),  7,10},
  {&(_tg__ZTV7S7549C68S7549C117S7549C9__A1__7S7549C1[3]),  3,4},
  {&(_tg__ZTV7S7549C27S7549C68S7549C117S7549C9__A6__7S7549C1[3]),  3,4},
  {&(_tg__ZTV7S7549C3__7S7549C27S7549C68S7549C117S7549C9__A6__7S7549C1[3]),  3,4},
  {&(_tg__ZTV7S7549C3__7S7549C68S7549C117S7549C9__A1__7S7549C1[3]),  3,4},
  {&(_tg__ZTV7S7549C8__8S7549C117S7549C9__7S7549C1[8]),  8,11},
  {&(_tg__ZTV7S7549C27S7549C8__8S7549C117S7549C9__7S7549C1[3]),  3,4},
  {&(_tg__ZTV7S7549C3__A2__8S7549C117S7549C9__7S7549C1[3]),  3,4},
  {&(_tg__ZTV7S7549C6__8S7549C117S7549C9__7S7549C1[5]),  5,6},
  {&(_tg__ZTV7S7549C37S7549C6__A3__8S7549C117S7549C9__7S7549C1[2]),  2,3},
  {&(_tg__ZTV7S7549C7__8S7549C117S7549C9__7S7549C1[5]),  5,5},
  {&(_tg__ZTV7S7549C6__A__8S7549C117S7549C9__7S7549C1[3]),  3,4},
  {&(_tg__ZTV7S7549C5__8S7549C117S7549C9__7S7549C1[3]),  3,5},
  {&(_tg__ZTV7S7549C2__7S7549C9__7S7549C1[3]),  3,4},
  {&(_tg__ZTV7S7549C3__7S7549C9__7S7549C1[3]),  3,4},
  {&(_tg__ZTV8S7549C11__7S7549C9__7S7549C1[7]),  7,10},
  {&(_tg__ZTV7S7549C8__7S7549C9__7S7549C1[8]),  8,11},
  {&(_tg__ZTV7S7549C27S7549C8__A1__7S7549C9__7S7549C1[3]),  3,4},
  {&(_tg__ZTV7S7549C6__7S7549C9__7S7549C1[5]),  5,6},
  {&(_tg__ZTV7S7549C37S7549C6__A3__7S7549C9__7S7549C1[2]),  2,3},
  {&(_tg__ZTV7S7549C7__7S7549C9__7S7549C1[5]),  5,5},
  {&(_tg__ZTV7S7549C68S7549C11__A1__7S7549C9__7S7549C1[3]),  3,4},
  {&(_tg__ZTV7S7549C5__A1__7S7549C9__7S7549C1[3]),  3,5},
  {&(_tg__ZTV7S7549C8__A1__7S7549C1[4]),  4,7},
  {&(_tg__ZTV7S7549C27S7549C8__A5__7S7549C1[3]),  3,4},
  {&(_tg__ZTV7S7549C3__7S7549C27S7549C8__A5__7S7549C1[3]),  3,4},
  {&(_tg__ZTV7S7549C2__7S7549C8__A1__7S7549C1[3]),  3,4},
  {&(_tg__ZTV7S7549C3__A1__7S7549C8__A1__7S7549C1[3]),  3,4},
  {&(_tg__ZTV7S7549C6__7S7549C8__A1__7S7549C1[5]),  5,6},
  {&(_tg__ZTV7S7549C37S7549C6__A2__7S7549C8__A1__7S7549C1[2]),  2,3},
  {&(_tg__ZTV7S7549C7__7S7549C1[5]),  5,5},
  {&(_tg__ZTV7S7549C8__7S7549C7__7S7549C1[8]),  8,11},
  {&(_tg__ZTV7S7549C27S7549C8__7S7549C7__7S7549C1[3]),  3,4},
  {&(_tg__ZTV7S7549C3__A1__7S7549C7__7S7549C1[3]),  3,4},
  {&(_tg__ZTV7S7549C6__7S7549C7__7S7549C1[5]),  5,6},
  {&(_tg__ZTV7S7549C37S7549C6__A2__7S7549C7__7S7549C1[2]),  2,3},
};
extern VTBL_ENTRY _ZTI7S7549C1[];
extern  VTBL_ENTRY _ZTV7S7549C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7549C1[];
static VTBL_ENTRY alt_thunk_names70[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7549C4D0Ev,_ZTv0_n32_N7S7549C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn928_N7S7549C4D0Ev,_ZThn640_N7S7549C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7549C4D1Ev,_ZTv0_n32_N7S7549C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn928_N7S7549C4D1Ev,_ZThn640_N7S7549C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7549C4D0Ev,_ZTv0_n12_N7S7549C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S7549C4D0Ev,_ZThn176_N7S7549C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7549C4D1Ev,_ZTv0_n12_N7S7549C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S7549C4D1Ev,_ZThn176_N7S7549C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7549C1D0Ev,_ZTv0_n32_N7S7549C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1280_N7S7549C1D0Ev,_ZThn884_N7S7549C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7549C1D1Ev,_ZTv0_n32_N7S7549C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1280_N7S7549C1D1Ev,_ZThn884_N7S7549C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7549C1D0Ev,_ZTv0_n12_N7S7549C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn592_N7S7549C1D0Ev,_ZThn420_N7S7549C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7549C1D1Ev,_ZTv0_n12_N7S7549C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn592_N7S7549C1D1Ev,_ZThn420_N7S7549C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N7S7549C1D0Ev,_ZTv0_n52_N7S7549C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S7549C1D0Ev,_ZThn244_N7S7549C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N7S7549C1D1Ev,_ZTv0_n52_N7S7549C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S7549C1D1Ev,_ZThn244_N7S7549C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7549C1 = {  "S7549C1", // class name
  bases_S7549C1, 29,
  &(vtc_S7549C1[0]), // expected_vtbl_contents
  &(vtt_S7549C1[0]), // expected_vtt_contents
  ABISELECT(2912,1976), // object size
  NSPAIRA(_ZTI7S7549C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7549C1),137, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7549C1),108, //virtual table table var
  29, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names70,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1679C4_nt  {
  int s1679c4f0;
  void  mf1679c4(); // _ZN10S1679C4_nt8mf1679c4Ev
  virtual  ~S1679C4_nt(); // _ZN10S1679C4_ntD1Ev
  S1679C4_nt(); // tgen
};
//SIG(-1 S1679C4_nt) C1{ vd m Fi}


void  S1679C4_nt ::mf1679c4(){}
 S1679C4_nt ::~S1679C4_nt(){ note_dtor("S1679C4_nt", this);}
S1679C4_nt ::S1679C4_nt(){ note_ctor("S1679C4_nt", this);} // tgen

//skip512 S1679C4_nt

#else // __cplusplus

extern void _ZN10S1679C4_ntC1Ev();
extern void _ZN10S1679C4_ntD1Ev();
Name_Map name_map_S1679C4_nt[] = {
  NSPAIR(_ZN10S1679C4_ntC1Ev),
  NSPAIR(_ZN10S1679C4_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern void _ZN10S1679C4_ntD1Ev();
extern void _ZN10S1679C4_ntD0Ev();
static  VTBL_ENTRY vtc_S1679C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1679C4_nt[0]),
  (VTBL_ENTRY)&_ZN10S1679C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1679C4_ntD0Ev,
};
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
VTBL_ENTRY *P__ZTI10S1679C4_nt = _ZTI10S1679C4_nt; 
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
Class_Descriptor cd_S1679C4_nt = {  "S1679C4_nt", // class name
  0,0,//no base classes
  &(vtc_S1679C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S1679C4_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S1679C4_nt),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1679C3  : S1679C4_nt {
  virtual void  v4(); // _ZN7S1679C32v4Ev
  virtual void  v5(); // _ZN7S1679C32v5Ev
  virtual void  v6(); // _ZN7S1679C32v6Ev
  virtual void  v7(); // _ZN7S1679C32v7Ev
  virtual void  v8(); // _ZN7S1679C32v8Ev
  virtual void  v9(); // _ZN7S1679C32v9Ev
  virtual void  v10(); // _ZN7S1679C33v10Ev
  virtual void  v11(); // _ZN7S1679C33v11Ev
  virtual void  v12(); // _ZN7S1679C33v12Ev
  virtual void  v13(); // _ZN7S1679C33v13Ev
  virtual void  v14(); // _ZN7S1679C33v14Ev
  virtual void  v15(); // _ZN7S1679C33v15Ev
  ~S1679C3(); // tgen
  S1679C3(); // tgen
};
//SIG(-1 S1679C3) C1{ BC2{ vd m Fi} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


void  S1679C3 ::v4(){vfunc_called(this, "_ZN7S1679C32v4Ev");}
void  S1679C3 ::v5(){vfunc_called(this, "_ZN7S1679C32v5Ev");}
void  S1679C3 ::v6(){vfunc_called(this, "_ZN7S1679C32v6Ev");}
void  S1679C3 ::v7(){vfunc_called(this, "_ZN7S1679C32v7Ev");}
void  S1679C3 ::v8(){vfunc_called(this, "_ZN7S1679C32v8Ev");}
void  S1679C3 ::v9(){vfunc_called(this, "_ZN7S1679C32v9Ev");}
void  S1679C3 ::v10(){vfunc_called(this, "_ZN7S1679C33v10Ev");}
void  S1679C3 ::v11(){vfunc_called(this, "_ZN7S1679C33v11Ev");}
void  S1679C3 ::v12(){vfunc_called(this, "_ZN7S1679C33v12Ev");}
void  S1679C3 ::v13(){vfunc_called(this, "_ZN7S1679C33v13Ev");}
void  S1679C3 ::v14(){vfunc_called(this, "_ZN7S1679C33v14Ev");}
void  S1679C3 ::v15(){vfunc_called(this, "_ZN7S1679C33v15Ev");}
S1679C3 ::~S1679C3(){ note_dtor("S1679C3", this);} // tgen
S1679C3 ::S1679C3(){ note_ctor("S1679C3", this);} // tgen

static void Test_S1679C3()
{
  extern Class_Descriptor cd_S1679C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1679C3, buf);
    S1679C3 *dp, &lv = *(dp=new (buf) S1679C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1679C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1679C3)");
    check_base_class_offset(lv, (S1679C4_nt*), 0, "S1679C3");
    test_class_info(&lv, &cd_S1679C3);
    dp->~S1679C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1679C3(Test_S1679C3, "S1679C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S1679C3C1Ev();
extern void _ZN7S1679C3D1Ev();
Name_Map name_map_S1679C3[] = {
  NSPAIR(_ZN7S1679C3C1Ev),
  NSPAIR(_ZN7S1679C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
static Base_Class bases_S1679C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1679C3[];
extern void _ZN7S1679C3D1Ev();
extern void _ZN7S1679C3D0Ev();
extern void _ZN7S1679C32v4Ev();
extern void _ZN7S1679C32v5Ev();
extern void _ZN7S1679C32v6Ev();
extern void _ZN7S1679C32v7Ev();
extern void _ZN7S1679C32v8Ev();
extern void _ZN7S1679C32v9Ev();
extern void _ZN7S1679C33v10Ev();
extern void _ZN7S1679C33v11Ev();
extern void _ZN7S1679C33v12Ev();
extern void _ZN7S1679C33v13Ev();
extern void _ZN7S1679C33v14Ev();
extern void _ZN7S1679C33v15Ev();
static  VTBL_ENTRY vtc_S1679C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1679C3[0]),
  (VTBL_ENTRY)&_ZN7S1679C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1679C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1679C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1679C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1679C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1679C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1679C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1679C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1679C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1679C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1679C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1679C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1679C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1679C33v15Ev,
};
extern VTBL_ENTRY _ZTI7S1679C3[];
extern  VTBL_ENTRY _ZTV7S1679C3[];
Class_Descriptor cd_S1679C3 = {  "S1679C3", // class name
  bases_S1679C3, 1,
  &(vtc_S1679C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S1679C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1679C3),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1679C8_nt  {
  ::S5266C28_nt s1679c8f0;
  void *s1679c8f1[2];
  void  mf1679c8(); // _ZN10S1679C8_nt8mf1679c8Ev
};
//SIG(-1 S1679C8_nt) C1{ m FC2{ m Fp Fi[2] FC3{ m}} Fp[2]}


void  S1679C8_nt ::mf1679c8(){}

//skip512 S1679C8_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1679C2  : S1679C3 {
  ::S79C38_nt s1679c2f0;
  ::S5266C36 s1679c2f1;
  ::S1679C8_nt s1679c2f2;
  void *s1679c2f3[4];
  char s1679c2f4;
  __tsi64 s1679c2f5;
  int s1679c2f6;
  virtual  ~S1679C2(); // _ZN7S1679C2D1Ev
  virtual void  v16(); // _ZN7S1679C23v16Ev
  virtual void  v17(); // _ZN7S1679C23v17Ev
  virtual void  v18(); // _ZN7S1679C23v18Ev
  virtual void  v19(); // _ZN7S1679C23v19Ev
  virtual void  v20(); // _ZN7S1679C23v20Ev
  virtual void  v21(); // _ZN7S1679C23v21Ev
  virtual void  v22(); // _ZN7S1679C23v22Ev
  virtual void  v23(); // _ZN7S1679C23v23Ev
  virtual void  v24(); // _ZN7S1679C23v24Ev
  virtual void  v25(); // _ZN7S1679C23v25Ev
  virtual void  v26(); // _ZN7S1679C23v26Ev
  S1679C2(); // tgen
};
//SIG(-1 S1679C2) C1{ BC2{ BC3{ vd m Fi} v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 FC4{ m Fp[2]} FC5{ m Fp Fi[2] FC6{ m}} FC7{ m FC8{ m Fp Fi[2] FC6} Fp[2]} Fp[4] Fc FL Fi}


 S1679C2 ::~S1679C2(){ note_dtor("S1679C2", this);}
void  S1679C2 ::v16(){vfunc_called(this, "_ZN7S1679C23v16Ev");}
void  S1679C2 ::v17(){vfunc_called(this, "_ZN7S1679C23v17Ev");}
void  S1679C2 ::v18(){vfunc_called(this, "_ZN7S1679C23v18Ev");}
void  S1679C2 ::v19(){vfunc_called(this, "_ZN7S1679C23v19Ev");}
void  S1679C2 ::v20(){vfunc_called(this, "_ZN7S1679C23v20Ev");}
void  S1679C2 ::v21(){vfunc_called(this, "_ZN7S1679C23v21Ev");}
void  S1679C2 ::v22(){vfunc_called(this, "_ZN7S1679C23v22Ev");}
void  S1679C2 ::v23(){vfunc_called(this, "_ZN7S1679C23v23Ev");}
void  S1679C2 ::v24(){vfunc_called(this, "_ZN7S1679C23v24Ev");}
void  S1679C2 ::v25(){vfunc_called(this, "_ZN7S1679C23v25Ev");}
void  S1679C2 ::v26(){vfunc_called(this, "_ZN7S1679C23v26Ev");}
S1679C2 ::S1679C2(){ note_ctor("S1679C2", this);} // tgen

static void Test_S1679C2()
{
  extern Class_Descriptor cd_S1679C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,23)];
    init_test(&cd_S1679C2, buf);
    S1679C2 *dp, &lv = *(dp=new (buf) S1679C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,88), "sizeof(S1679C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1679C2)");
    check_base_class_offset(lv, (S1679C4_nt*)(S1679C3*), 0, "S1679C2");
    check_base_class_offset(lv, (S1679C3*), 0, "S1679C2");
    check_field_offset(lv, s1679c2f0, ABISELECT(16,8), "S1679C2.s1679c2f0");
    check_field_offset(lv, s1679c2f1, ABISELECT(32,16), "S1679C2.s1679c2f1");
    check_field_offset(lv, s1679c2f2, ABISELECT(56,32), "S1679C2.s1679c2f2");
    check_field_offset(lv, s1679c2f3, ABISELECT(96,56), "S1679C2.s1679c2f3");
    check_field_offset(lv, s1679c2f4, ABISELECT(128,72), "S1679C2.s1679c2f4");
    check_field_offset(lv, s1679c2f5, ABISELECT(136,76), "S1679C2.s1679c2f5");
    check_field_offset(lv, s1679c2f6, ABISELECT(144,84), "S1679C2.s1679c2f6");
    test_class_info(&lv, &cd_S1679C2);
    dp->~S1679C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1679C2(Test_S1679C2, "S1679C2", ABISELECT(152,88));

#else // __cplusplus

extern void _ZN7S1679C2C1Ev();
extern void _ZN7S1679C2D1Ev();
Name_Map name_map_S1679C2[] = {
  NSPAIR(_ZN7S1679C2C1Ev),
  NSPAIR(_ZN7S1679C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
extern Class_Descriptor cd_S1679C3;
extern VTBL_ENTRY _ZTI7S1679C3[];
extern  VTBL_ENTRY _ZTV7S1679C3[];
static Base_Class bases_S1679C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1679C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1679C2[];
extern void _ZN7S1679C2D1Ev();
extern void _ZN7S1679C2D0Ev();
extern void _ZN7S1679C32v4Ev();
extern void _ZN7S1679C32v5Ev();
extern void _ZN7S1679C32v6Ev();
extern void _ZN7S1679C32v7Ev();
extern void _ZN7S1679C32v8Ev();
extern void _ZN7S1679C32v9Ev();
extern void _ZN7S1679C33v10Ev();
extern void _ZN7S1679C33v11Ev();
extern void _ZN7S1679C33v12Ev();
extern void _ZN7S1679C33v13Ev();
extern void _ZN7S1679C33v14Ev();
extern void _ZN7S1679C33v15Ev();
extern void _ZN7S1679C23v16Ev();
extern void _ZN7S1679C23v17Ev();
extern void _ZN7S1679C23v18Ev();
extern void _ZN7S1679C23v19Ev();
extern void _ZN7S1679C23v20Ev();
extern void _ZN7S1679C23v21Ev();
extern void _ZN7S1679C23v22Ev();
extern void _ZN7S1679C23v23Ev();
extern void _ZN7S1679C23v24Ev();
extern void _ZN7S1679C23v25Ev();
extern void _ZN7S1679C23v26Ev();
static  VTBL_ENTRY vtc_S1679C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1679C2[0]),
  (VTBL_ENTRY)&_ZN7S1679C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1679C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1679C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1679C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1679C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1679C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1679C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1679C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1679C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1679C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1679C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1679C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1679C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1679C33v15Ev,
  (VTBL_ENTRY)&_ZN7S1679C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1679C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1679C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1679C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1679C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1679C23v21Ev,
  (VTBL_ENTRY)&_ZN7S1679C23v22Ev,
  (VTBL_ENTRY)&_ZN7S1679C23v23Ev,
  (VTBL_ENTRY)&_ZN7S1679C23v24Ev,
  (VTBL_ENTRY)&_ZN7S1679C23v25Ev,
  (VTBL_ENTRY)&_ZN7S1679C23v26Ev,
};
extern VTBL_ENTRY _ZTI7S1679C2[];
extern  VTBL_ENTRY _ZTV7S1679C2[];
Class_Descriptor cd_S1679C2 = {  "S1679C2", // class name
  bases_S1679C2, 2,
  &(vtc_S1679C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(152,88), // object size
  NSPAIRA(_ZTI7S1679C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1679C2),27, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1679C11_nt  {
  ::S5266C25 s1679c11f0;
  ::S5266C21 s1679c11f1;
  char s1679c11f2;
  void  mf1679c11(); // _ZN11S1679C11_nt9mf1679c11Ev
  virtual  ~S1679C11_nt(); // _ZN11S1679C11_ntD1Ev
  S1679C11_nt(); // tgen
};
//SIG(-1 S1679C11_nt) C1{ vd m FC2{ m Fp Fi FC3{ m} FC3} FC4{ m Fp Fi FC5{ m} FC5} Fc}


void  S1679C11_nt ::mf1679c11(){}
 S1679C11_nt ::~S1679C11_nt(){ note_dtor("S1679C11_nt", this);}
S1679C11_nt ::S1679C11_nt(){ note_ctor("S1679C11_nt", this);} // tgen

//skip512 S1679C11_nt

#else // __cplusplus

extern void _ZN11S1679C11_ntC1Ev();
extern void _ZN11S1679C11_ntD1Ev();
Name_Map name_map_S1679C11_nt[] = {
  NSPAIR(_ZN11S1679C11_ntC1Ev),
  NSPAIR(_ZN11S1679C11_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S1679C11_nt[];
extern void _ZN11S1679C11_ntD1Ev();
extern void _ZN11S1679C11_ntD0Ev();
static  VTBL_ENTRY vtc_S1679C11_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S1679C11_nt[0]),
  (VTBL_ENTRY)&_ZN11S1679C11_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S1679C11_ntD0Ev,
};
extern VTBL_ENTRY _ZTI11S1679C11_nt[];
VTBL_ENTRY *P__ZTI11S1679C11_nt = _ZTI11S1679C11_nt; 
extern  VTBL_ENTRY _ZTV11S1679C11_nt[];
Class_Descriptor cd_S1679C11_nt = {  "S1679C11_nt", // class name
  0,0,//no base classes
  &(vtc_S1679C11_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI11S1679C11_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S1679C11_nt),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1679C1  : S1679C2 , S1679C11_nt {
  int s1679c1f0;
  virtual  ~S1679C1(); // _ZN7S1679C1D1Ev
  virtual void  v1(); // _ZN7S1679C12v1Ev
  virtual void  v2(); // _ZN7S1679C12v2Ev
  virtual void  v3(); // _ZN7S1679C12v3Ev
  S1679C1(); // tgen
};
//SIG(1 S1679C1) C1{ BC2{ BC3{ BC4{ vd m Fi} v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15} vd v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 FC5{ m Fp[2]} FC6{ m Fp Fi[2] FC7{ m}} FC8{ m FC9{ m Fp Fi[2] FC7} Fp[2]} Fp[4] Fc FL Fi} BC10{ vd m FC11{ m Fp Fi FC12{ m} FC12} FC13{ m Fp Fi FC14{ m} FC14} Fc} vd v1 v2 v3 Fi}


 S1679C1 ::~S1679C1(){ note_dtor("S1679C1", this);}
void  S1679C1 ::v1(){vfunc_called(this, "_ZN7S1679C12v1Ev");}
void  S1679C1 ::v2(){vfunc_called(this, "_ZN7S1679C12v2Ev");}
void  S1679C1 ::v3(){vfunc_called(this, "_ZN7S1679C12v3Ev");}
S1679C1 ::S1679C1(){ note_ctor("S1679C1", this);} // tgen

static void Test_S1679C1()
{
  extern Class_Descriptor cd_S1679C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(26,32)];
    init_test(&cd_S1679C1, buf);
    S1679C1 *dp, &lv = *(dp=new (buf) S1679C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(200,124), "sizeof(S1679C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1679C1)");
    check_base_class_offset(lv, (S1679C4_nt*)(S1679C3*)(S1679C2*), 0, "S1679C1");
    check_base_class_offset(lv, (S1679C3*)(S1679C2*), 0, "S1679C1");
    check_base_class_offset(lv, (S1679C2*), 0, "S1679C1");
    check_base_class_offset(lv, (S1679C11_nt*), ABISELECT(152,88), "S1679C1");
    check_field_offset(lv, s1679c1f0, ABISELECT(196,120), "S1679C1.s1679c1f0");
    test_class_info(&lv, &cd_S1679C1);
    dp->~S1679C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1679C1(Test_S1679C1, "S1679C1", ABISELECT(200,124));

#else // __cplusplus

extern void _ZN7S1679C1C1Ev();
extern void _ZN7S1679C1D1Ev();
Name_Map name_map_S1679C1[] = {
  NSPAIR(_ZN7S1679C1C1Ev),
  NSPAIR(_ZN7S1679C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
extern Class_Descriptor cd_S1679C3;
extern VTBL_ENTRY _ZTI7S1679C3[];
extern  VTBL_ENTRY _ZTV7S1679C3[];
extern Class_Descriptor cd_S1679C2;
extern VTBL_ENTRY _ZTI7S1679C2[];
extern  VTBL_ENTRY _ZTV7S1679C2[];
extern Class_Descriptor cd_S1679C11_nt;
extern VTBL_ENTRY _ZTI11S1679C11_nt[];
extern  VTBL_ENTRY _ZTV11S1679C11_nt[];
static Base_Class bases_S1679C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1679C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1679C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1679C11_nt,    ABISELECT(152,88), //bcp->offset
    30, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1679C1[];
extern void _ZN7S1679C1D1Ev();
extern void _ZN7S1679C1D0Ev();
extern void _ZN7S1679C32v4Ev();
extern void _ZN7S1679C32v5Ev();
extern void _ZN7S1679C32v6Ev();
extern void _ZN7S1679C32v7Ev();
extern void _ZN7S1679C32v8Ev();
extern void _ZN7S1679C32v9Ev();
extern void _ZN7S1679C33v10Ev();
extern void _ZN7S1679C33v11Ev();
extern void _ZN7S1679C33v12Ev();
extern void _ZN7S1679C33v13Ev();
extern void _ZN7S1679C33v14Ev();
extern void _ZN7S1679C33v15Ev();
extern void _ZN7S1679C23v16Ev();
extern void _ZN7S1679C23v17Ev();
extern void _ZN7S1679C23v18Ev();
extern void _ZN7S1679C23v19Ev();
extern void _ZN7S1679C23v20Ev();
extern void _ZN7S1679C23v21Ev();
extern void _ZN7S1679C23v22Ev();
extern void _ZN7S1679C23v23Ev();
extern void _ZN7S1679C23v24Ev();
extern void _ZN7S1679C23v25Ev();
extern void _ZN7S1679C23v26Ev();
extern void _ZN7S1679C12v1Ev();
extern void _ZN7S1679C12v2Ev();
extern void _ZN7S1679C12v3Ev();
extern void ABISELECT(_ZThn152_N7S1679C1D1Ev,_ZThn88_N7S1679C1D1Ev)();
extern void ABISELECT(_ZThn152_N7S1679C1D0Ev,_ZThn88_N7S1679C1D0Ev)();
static  VTBL_ENTRY vtc_S1679C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1679C1[0]),
  (VTBL_ENTRY)&_ZN7S1679C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1679C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1679C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1679C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1679C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1679C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1679C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1679C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1679C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1679C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1679C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1679C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1679C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1679C33v15Ev,
  (VTBL_ENTRY)&_ZN7S1679C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1679C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1679C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1679C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1679C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1679C23v21Ev,
  (VTBL_ENTRY)&_ZN7S1679C23v22Ev,
  (VTBL_ENTRY)&_ZN7S1679C23v23Ev,
  (VTBL_ENTRY)&_ZN7S1679C23v24Ev,
  (VTBL_ENTRY)&_ZN7S1679C23v25Ev,
  (VTBL_ENTRY)&_ZN7S1679C23v26Ev,
  (VTBL_ENTRY)&_ZN7S1679C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1679C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1679C12v3Ev,
  ABISELECT(-152,-88),
  (VTBL_ENTRY)&(_ZTI7S1679C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn152_N7S1679C1D1Ev,_ZThn88_N7S1679C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn152_N7S1679C1D0Ev,_ZThn88_N7S1679C1D0Ev),
};
extern VTBL_ENTRY _ZTI7S1679C1[];
extern  VTBL_ENTRY _ZTV7S1679C1[];
Class_Descriptor cd_S1679C1 = {  "S1679C1", // class name
  bases_S1679C1, 4,
  &(vtc_S1679C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(200,124), // object size
  NSPAIRA(_ZTI7S1679C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S1679C1),34, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  4, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7719C4_nt  {
  char s7719c4f0;
  void  mf7719c4(); // _ZN10S7719C4_nt8mf7719c4Ev
};
//SIG(-1 S7719C4_nt) C1{ m Fc}


void  S7719C4_nt ::mf7719c4(){}

//skip512 S7719C4_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI10S7719C4_nt[];
VTBL_ENTRY *P__ZTI10S7719C4_nt = _ZTI10S7719C4_nt; 
Class_Descriptor cd_S7719C4_nt = {  "S7719C4_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI10S7719C4_nt),ABISELECT(16,8), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7719C6  : S5266C26 , S7719C4_nt {
};
//SIG(-1 S7719C6) C1{ BC2{ m} BC3{ m Fc}}



static void Test_S7719C6()
{
  extern Class_Descriptor cd_S7719C6;
  void *lvp;
  {
    char buf[1];
    init_test(&cd_S7719C6, buf);
    S7719C6 &lv = *(new (buf) S7719C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1, "sizeof(S7719C6)");
    check2(__alignof__(lv), 1, "__alignof__(S7719C6)");
    check_base_class_offset(lv, (S5266C26*), 0, "S7719C6");
    check_base_class_offset(lv, (S7719C4_nt*), 0, "S7719C6");
    test_class_info(&lv, &cd_S7719C6);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7719C6(Test_S7719C6, "S7719C6", 1);

#else // __cplusplus

extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
static Base_Class bases_S7719C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7719C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7719C6[];
Class_Descriptor cd_S7719C6 = {  "S7719C6", // class name
  bases_S7719C6, 2,
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI7S7719C6),ABISELECT(56,32), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7719C8  : S5266C26 , S5266C29 , virtual S7719C4_nt {
  ::S5266C29 s7719c8f0;
  ~S7719C8(); // tgen
  S7719C8(); // tgen
};
//SIG(-1 S7719C8) C1{ BC2{ m} BC3{ m} VBC4{ m Fc} FC3}


S7719C8 ::~S7719C8(){ note_dtor("S7719C8", this);} // tgen
S7719C8 ::S7719C8(){ note_ctor("S7719C8", this);} // tgen

static void Test_S7719C8()
{
  extern Class_Descriptor cd_S7719C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7719C8, buf);
    S7719C8 *dp, &lv = *(dp=new (buf) S7719C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7719C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7719C8)");
    check_base_class_offset(lv, (S5266C26*), 0, "S7719C8");
    check_base_class_offset(lv, (S5266C29*), 0, "S7719C8");
    check_base_class_offset(lv, (S7719C4_nt*), ABISELECT(9,5), "S7719C8");
    check_field_offset(lv, s7719c8f0, ABISELECT(8,4), "S7719C8.s7719c8f0");
    test_class_info(&lv, &cd_S7719C8);
    dp->~S7719C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7719C8(Test_S7719C8, "S7719C8", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7719C8C1Ev();
extern void _ZN7S7719C8D1Ev();
Name_Map name_map_S7719C8[] = {
  NSPAIR(_ZN7S7719C8C1Ev),
  NSPAIR(_ZN7S7719C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
static Base_Class bases_S7719C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7719C4_nt,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7719C8[];
static  VTBL_ENTRY vtc_S7719C8[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C8[0]),
};
extern VTBL_ENTRY _ZTV7S7719C8[];
static  VTT_ENTRY vtt_S7719C8[] = {
  {&(_ZTV7S7719C8[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7719C8[];
extern  VTBL_ENTRY _ZTV7S7719C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C8[];
Class_Descriptor cd_S7719C8 = {  "S7719C8", // class name
  bases_S7719C8, 3,
  &(vtc_S7719C8[0]), // expected_vtbl_contents
  &(vtt_S7719C8[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7719C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7719C8),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7719C8),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7719C3  : virtual S7719C4_nt , S5266C29 , S7719C6 , virtual S7719C8 {
  ~S7719C3(); // tgen
  S7719C3(); // tgen
};
//SIG(-1 S7719C3) C1{ VBC2{ m Fc} BC3{ m} BC4{ BC5{ m} BC2} VBC6{ BC5 BC3 VBC2 FC3}}


S7719C3 ::~S7719C3(){ note_dtor("S7719C3", this);} // tgen
S7719C3 ::S7719C3(){ note_ctor("S7719C3", this);} // tgen

static void Test_S7719C3()
{
  extern Class_Descriptor cd_S7719C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S7719C3, buf);
    S7719C3 *dp, &lv = *(dp=new (buf) S7719C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7719C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7719C3)");
    /*is_ambiguous_... S7719C3::S7719C4_nt */ AMB_check_base_class_offset(lv, (S7719C4_nt*), ABISELECT(9,5), "S7719C3");
    check_base_class_offset(lv, (S7719C4_nt*)(S7719C8*), ABISELECT(9,5), "S7719C3");
    /*is_ambiguous_... S7719C3::S5266C29 */ AMB_check_base_class_offset(lv, (S5266C29*), 0, "S7719C3");
    check_base_class_offset(lv, (S5266C26*)(S7719C6*), ABISELECT(8,4), "S7719C3");
    check_base_class_offset(lv, (S7719C4_nt*)(S7719C6*), ABISELECT(8,4), "S7719C3");
    check_base_class_offset(lv, (S7719C6*), ABISELECT(8,4), "S7719C3");
    check_base_class_offset(lv, (S5266C26*)(S7719C8*), ABISELECT(16,8), "S7719C3");
    check_base_class_offset(lv, (S5266C29*)(S7719C8*), ABISELECT(16,8), "S7719C3");
    check_base_class_offset(lv, (S7719C8*), ABISELECT(16,8), "S7719C3");
    test_class_info(&lv, &cd_S7719C3);
    dp->~S7719C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7719C3(Test_S7719C3, "S7719C3", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S7719C3C1Ev();
extern void _ZN7S7719C3D1Ev();
Name_Map name_map_S7719C3[] = {
  NSPAIR(_ZN7S7719C3C1Ev),
  NSPAIR(_ZN7S7719C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S7719C6;
extern VTBL_ENTRY _ZTI7S7719C6[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S7719C8;
extern VTBL_ENTRY _ZTI7S7719C8[];
extern  VTBL_ENTRY _ZTV7S7719C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C8[];
static Base_Class bases_S7719C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7719C4_nt,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C26,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7719C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C26,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S5266C29,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7719C8,    ABISELECT(16,8), //bcp->offset
    4, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7719C3[];
static  VTBL_ENTRY vtc_S7719C3[] = {
  ABISELECT(16,8),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C3[0]),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7719C3[0]),
};
extern VTBL_ENTRY _ZTV7S7719C3[];
static  VTBL_ENTRY _tg__ZTV7S7719C8__7S7719C3[] = {
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C8[0]),
};
static  VTT_ENTRY vtt_S7719C3[] = {
  {&(_ZTV7S7719C3[4]),  4,7},
  {&(_ZTV7S7719C3[7]),  7,7},
  {&(_tg__ZTV7S7719C8__7S7719C3[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7719C3[];
extern  VTBL_ENTRY _ZTV7S7719C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C3[];
Class_Descriptor cd_S7719C3 = {  "S7719C3", // class name
  bases_S7719C3, 8,
  &(vtc_S7719C3[0]), // expected_vtbl_contents
  &(vtt_S7719C3[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S7719C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7719C3),7, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7719C3),3, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7719C9  : S7719C4_nt , S5266C26 , virtual S5266C29 {
  ~S7719C9(); // tgen
  S7719C9(); // tgen
};
//SIG(-1 S7719C9) C1{ BC2{ m Fc} BC3{ m} VBC4{ m}}


S7719C9 ::~S7719C9(){ note_dtor("S7719C9", this);} // tgen
S7719C9 ::S7719C9(){ note_ctor("S7719C9", this);} // tgen

static void Test_S7719C9()
{
  extern Class_Descriptor cd_S7719C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7719C9, buf);
    S7719C9 *dp, &lv = *(dp=new (buf) S7719C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7719C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7719C9)");
    check_base_class_offset(lv, (S7719C4_nt*), ABISELECT(8,4), "S7719C9");
    check_base_class_offset(lv, (S5266C26*), 0, "S7719C9");
    check_base_class_offset(lv, (S5266C29*), 0, "S7719C9");
    test_class_info(&lv, &cd_S7719C9);
    dp->~S7719C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7719C9(Test_S7719C9, "S7719C9", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7719C9C1Ev();
extern void _ZN7S7719C9D1Ev();
Name_Map name_map_S7719C9[] = {
  NSPAIR(_ZN7S7719C9C1Ev),
  NSPAIR(_ZN7S7719C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
static Base_Class bases_S7719C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7719C4_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7719C9[];
static  VTBL_ENTRY vtc_S7719C9[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C9[0]),
};
extern VTBL_ENTRY _ZTV7S7719C9[];
static  VTT_ENTRY vtt_S7719C9[] = {
  {&(_ZTV7S7719C9[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7719C9[];
extern  VTBL_ENTRY _ZTV7S7719C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C9[];
Class_Descriptor cd_S7719C9 = {  "S7719C9", // class name
  bases_S7719C9, 3,
  &(vtc_S7719C9[0]), // expected_vtbl_contents
  &(vtt_S7719C9[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7719C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7719C9),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7719C9),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7719C11  : S7719C6 , S5266C26 , S7719C9 {
  __tsi64 s7719c11f0;
  ~S7719C11(); // tgen
  S7719C11(); // tgen
};
//SIG(-1 S7719C11) C1{ BC2{ BC3{ m} BC4{ m Fc}} BC3 BC5{ BC4 BC3 VBC6{ m}} FL}


S7719C11 ::~S7719C11(){ note_dtor("S7719C11", this);} // tgen
S7719C11 ::S7719C11(){ note_ctor("S7719C11", this);} // tgen

static void Test_S7719C11()
{
  extern Class_Descriptor cd_S7719C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S7719C11, buf);
    S7719C11 *dp, &lv = *(dp=new (buf) S7719C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S7719C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7719C11)");
    check_base_class_offset(lv, (S5266C26*)(S7719C6*), ABISELECT(9,5), "S7719C11");
    check_base_class_offset(lv, (S7719C4_nt*)(S7719C6*), ABISELECT(9,5), "S7719C11");
    check_base_class_offset(lv, (S7719C6*), ABISELECT(9,5), "S7719C11");
    /*is_ambiguous_... S7719C11::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*), ABISELECT(10,6), "S7719C11");
    check_base_class_offset(lv, (S7719C4_nt*)(S7719C9*), ABISELECT(8,4), "S7719C11");
    check_base_class_offset(lv, (S5266C26*)(S7719C9*), 0, "S7719C11");
    check_base_class_offset(lv, (S5266C29*)(S7719C9*), 0, "S7719C11");
    check_base_class_offset(lv, (S7719C9*), 0, "S7719C11");
    check_field_offset(lv, s7719c11f0, ABISELECT(16,8), "S7719C11.s7719c11f0");
    test_class_info(&lv, &cd_S7719C11);
    dp->~S7719C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7719C11(Test_S7719C11, "S7719C11", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S7719C11C1Ev();
extern void _ZN8S7719C11D1Ev();
Name_Map name_map_S7719C11[] = {
  NSPAIR(_ZN8S7719C11C1Ev),
  NSPAIR(_ZN8S7719C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S7719C6;
extern VTBL_ENTRY _ZTI7S7719C6[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S7719C9;
extern VTBL_ENTRY _ZTI7S7719C9[];
extern  VTBL_ENTRY _ZTV7S7719C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C9[];
static Base_Class bases_S7719C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C26,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7719C6,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C26,    ABISELECT(10,6), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7719C4_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7719C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7719C11[];
static  VTBL_ENTRY vtc_S7719C11[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7719C11[0]),
};
extern VTBL_ENTRY _ZTV8S7719C11[];
static  VTBL_ENTRY _tg__ZTV7S7719C9__8S7719C11[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C9[0]),
};
static  VTT_ENTRY vtt_S7719C11[] = {
  {&(_ZTV8S7719C11[3]),  3,3},
  {&(_tg__ZTV7S7719C9__8S7719C11[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7719C11[];
extern  VTBL_ENTRY _ZTV8S7719C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7719C11[];
Class_Descriptor cd_S7719C11 = {  "S7719C11", // class name
  bases_S7719C11, 8,
  &(vtc_S7719C11[0]), // expected_vtbl_contents
  &(vtt_S7719C11[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S7719C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7719C11),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7719C11),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7719C10  : virtual S5266C29 , virtual S7719C9 , virtual S7719C11 , S7719C3 , virtual S5266C26 {
  __tsi64 s7719c10f0[2];
  ~S7719C10(); // tgen
  S7719C10(); // tgen
};
//SIG(-1 S7719C10) C1{ VBC2{ m} VBC3{ BC4{ m Fc} BC5{ m} VBC2} VBC6{ BC7{ BC5 BC4} BC5 BC3 FL} BC8{ VBC4 BC2 BC7 VBC9{ BC5 BC2 VBC4 FC2}} VBC5 FL[2]}


S7719C10 ::~S7719C10(){ note_dtor("S7719C10", this);} // tgen
S7719C10 ::S7719C10(){ note_ctor("S7719C10", this);} // tgen

static void Test_S7719C10()
{
  extern Class_Descriptor cd_S7719C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S7719C10, buf);
    S7719C10 *dp, &lv = *(dp=new (buf) S7719C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S7719C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7719C10)");
    /*is_ambiguous_... S7719C10::S5266C29 */ AMB_check_base_class_offset(lv, (S5266C29*), ABISELECT(32,24), "S7719C10");
    /*is_ambiguous_... S7719C10::S7719C9 */ AMB_check_base_class_offset(lv, (S5266C29*)(S7719C9*), ABISELECT(32,24), "S7719C10");
    check_base_class_offset(lv, (S5266C29*)(S7719C9*)(S7719C11*), ABISELECT(32,24), "S7719C10");
    /*is_ambiguous_... S7719C10::S7719C9 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S7719C9*), ABISELECT(40,28), "S7719C10");
    /*is_ambiguous_... S7719C10::S7719C9 */ AMB_check_base_class_offset(lv, (S5266C26*)(S7719C9*), ABISELECT(32,24), "S7719C10");
    /*is_ambiguous_... S7719C10::S7719C9 */ AMB_check_base_class_offset(lv, (S7719C9*), ABISELECT(32,24), "S7719C10");
    check_base_class_offset(lv, (S5266C26*)(S7719C6*)(S7719C11*), ABISELECT(57,37), "S7719C10");
    check_base_class_offset(lv, (S7719C4_nt*)(S7719C6*)(S7719C11*), ABISELECT(57,37), "S7719C10");
    check_base_class_offset(lv, (S7719C6*)(S7719C11*), ABISELECT(57,37), "S7719C10");
    /*is_ambiguous_... S7719C11::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*)(S7719C11*), ABISELECT(58,38), "S7719C10");
    check_base_class_offset(lv, (S7719C4_nt*)(S7719C9*)(S7719C11*), ABISELECT(56,36), "S7719C10");
    check_base_class_offset(lv, (S5266C26*)(S7719C9*)(S7719C11*), ABISELECT(48,32), "S7719C10");
    check_base_class_offset(lv, (S7719C9*)(S7719C11*), ABISELECT(48,32), "S7719C10");
    check_base_class_offset(lv, (S7719C11*), ABISELECT(48,32), "S7719C10");
    /*is_ambiguous_... S7719C3::S7719C4_nt */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S7719C3*), ABISELECT(72,48), "S7719C10");
    check_base_class_offset(lv, (S7719C4_nt*)(S7719C8*), ABISELECT(72,48), "S7719C10");
    /*is_ambiguous_... S7719C3::S5266C29 */ AMB_check_base_class_offset(lv, (S5266C29*)(S7719C3*), 0, "S7719C10");
    check_base_class_offset(lv, (S5266C26*)(S7719C6*)(S7719C3*), ABISELECT(8,4), "S7719C10");
    check_base_class_offset(lv, (S7719C4_nt*)(S7719C6*)(S7719C3*), ABISELECT(8,4), "S7719C10");
    check_base_class_offset(lv, (S7719C6*)(S7719C3*), ABISELECT(8,4), "S7719C10");
    check_base_class_offset(lv, (S5266C26*)(S7719C8*), ABISELECT(80,52), "S7719C10");
    check_base_class_offset(lv, (S5266C29*)(S7719C8*), ABISELECT(80,52), "S7719C10");
    check_base_class_offset(lv, (S7719C8*)(S7719C3*), ABISELECT(80,52), "S7719C10");
    check_base_class_offset(lv, (S7719C3*), 0, "S7719C10");
    /*is_ambiguous_... S7719C10::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*), 0, "S7719C10");
    check_field_offset(lv, s7719c10f0, ABISELECT(16,8), "S7719C10.s7719c10f0");
    test_class_info(&lv, &cd_S7719C10);
    dp->~S7719C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7719C10(Test_S7719C10, "S7719C10", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN8S7719C10C1Ev();
extern void _ZN8S7719C10D1Ev();
Name_Map name_map_S7719C10[] = {
  NSPAIR(_ZN8S7719C10C1Ev),
  NSPAIR(_ZN8S7719C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C9;
extern VTBL_ENTRY _ZTI7S7719C9[];
extern  VTBL_ENTRY _ZTV7S7719C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C9[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S7719C6;
extern VTBL_ENTRY _ZTI7S7719C6[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C9;
extern VTBL_ENTRY _ZTI7S7719C9[];
extern  VTBL_ENTRY _ZTV7S7719C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C9[];
extern Class_Descriptor cd_S7719C11;
extern VTBL_ENTRY _ZTI8S7719C11[];
extern  VTBL_ENTRY _ZTV8S7719C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7719C11[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S7719C6;
extern VTBL_ENTRY _ZTI7S7719C6[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S7719C8;
extern VTBL_ENTRY _ZTI7S7719C8[];
extern  VTBL_ENTRY _ZTV7S7719C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C8[];
extern Class_Descriptor cd_S7719C3;
extern VTBL_ENTRY _ZTI7S7719C3[];
extern  VTBL_ENTRY _ZTV7S7719C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C3[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
static Base_Class bases_S7719C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C29,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7719C4_nt,    ABISELECT(40,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7719C9,    ABISELECT(32,24), //bcp->offset
    8, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5266C26,    ABISELECT(57,37), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(57,37), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7719C6,    ABISELECT(57,37), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(58,38), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7719C9,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7719C11,    ABISELECT(48,32), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7719C4_nt,    ABISELECT(72,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7719C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S5266C29,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7719C8,    ABISELECT(80,52), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7719C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7719C10[];
static  VTBL_ENTRY vtc_S7719C10[] = {
  0,
  ABISELECT(48,32),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(80,52),
  ABISELECT(72,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7719C10[0]),
  0,
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S7719C10[0]),
  ABISELECT(-16,-8),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S7719C10[0]),
  ABISELECT(-8,-4),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S7719C10[0]),
};
extern VTBL_ENTRY _ZTV8S7719C10[];
static  VTBL_ENTRY _tg__ZTV7S7719C3__8S7719C10[] = {
  ABISELECT(80,52),
  ABISELECT(72,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C8__7S7719C3__8S7719C10[] = {
  ABISELECT(-8,-4),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI7S7719C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C9__8S7719C10[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7719C11__8S7719C10[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7719C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C98S7719C11__A1__8S7719C10[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C8__8S7719C10[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C8[0]),
};
static  VTT_ENTRY vtt_S7719C10[] = {
  {&(_ZTV8S7719C10[8]),  8,17},
  {&(_tg__ZTV7S7719C3__8S7719C10[4]),  4,4},
  {&(_tg__ZTV7S7719C8__7S7719C3__8S7719C10[3]),  3,3},
  {&(_ZTV8S7719C10[11]),  11,17},
  {&(_ZTV8S7719C10[14]),  14,17},
  {&(_ZTV8S7719C10[17]),  17,17},
  {&(_tg__ZTV7S7719C9__8S7719C10[3]),  3,3},
  {&(_tg__ZTV8S7719C11__8S7719C10[3]),  3,3},
  {&(_tg__ZTV7S7719C98S7719C11__A1__8S7719C10[3]),  3,3},
  {&(_tg__ZTV7S7719C8__8S7719C10[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7719C10[];
extern  VTBL_ENTRY _ZTV8S7719C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7719C10[];
Class_Descriptor cd_S7719C10 = {  "S7719C10", // class name
  bases_S7719C10, 22,
  &(vtc_S7719C10[0]), // expected_vtbl_contents
  &(vtt_S7719C10[0]), // expected_vtt_contents
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI8S7719C10),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7719C10),17, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7719C10),10, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7719C2  : virtual S7719C3 , virtual S7719C9 , S7719C8 , virtual S7719C10 {
  ~S7719C2(); // tgen
  S7719C2(); // tgen
};
//SIG(-1 S7719C2) C1{ VBC2{ VBC3{ m Fc} BC4{ m} BC5{ BC6{ m} BC3} VBC7{ BC6 BC4 VBC3 FC4}} VBC8{ BC3 BC6 VBC4} BC7 VBC9{ VBC4 VBC8 VBC10{ BC5 BC6 BC8 FL} BC2 VBC6 FL[2]}}


S7719C2 ::~S7719C2(){ note_dtor("S7719C2", this);} // tgen
S7719C2 ::S7719C2(){ note_ctor("S7719C2", this);} // tgen

static void Test_S7719C2()
{
  extern Class_Descriptor cd_S7719C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,20)];
    init_test(&cd_S7719C2, buf);
    S7719C2 *dp, &lv = *(dp=new (buf) S7719C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,76), "sizeof(S7719C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7719C2)");
    /*is_ambiguous_... S7719C2::S7719C3 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S7719C3*), ABISELECT(25,13), "S7719C2");
    /*is_ambiguous_... S7719C2::S7719C8 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S7719C8*), ABISELECT(25,13), "S7719C2");
    /*is_ambiguous_... S7719C2::S7719C8 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S7719C8*), ABISELECT(25,13), "S7719C2");
    /*is_ambiguous_... S7719C3::S7719C4_nt */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S7719C3*)(S7719C10*), ABISELECT(25,13), "S7719C2");
    /*is_ambiguous_... S7719C2::S7719C3 */ AMB_check_base_class_offset(lv, (S5266C29*)(S7719C3*), ABISELECT(16,8), "S7719C2");
    /*is_ambiguous_... S7719C2::S7719C3 */ AMB_check_base_class_offset(lv, (S5266C26*)(S7719C6*)(S7719C3*), ABISELECT(24,12), "S7719C2");
    /*is_ambiguous_... S7719C2::S7719C3 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S7719C6*)(S7719C3*), ABISELECT(24,12), "S7719C2");
    /*is_ambiguous_... S7719C2::S7719C3 */ AMB_check_base_class_offset(lv, (S7719C6*)(S7719C3*), ABISELECT(24,12), "S7719C2");
    /*is_ambiguous_... S7719C2::S7719C8 */ AMB_check_base_class_offset(lv, (S5266C26*)(S7719C8*), ABISELECT(32,16), "S7719C2");
    /*is_ambiguous_... S7719C2::S7719C8 */ AMB_check_base_class_offset(lv, (S5266C29*)(S7719C8*), ABISELECT(32,16), "S7719C2");
    /*is_ambiguous_... S7719C2::S7719C3 */ AMB_check_base_class_offset(lv, (S7719C8*)(S7719C3*), ABISELECT(32,16), "S7719C2");
    check_base_class_offset(lv, (S7719C8*)(S7719C3*)(S7719C10*), ABISELECT(32,16), "S7719C2");
    /*is_ambiguous_... S7719C2::S7719C3 */ AMB_check_base_class_offset(lv, (S7719C3*), ABISELECT(16,8), "S7719C2");
    /*is_ambiguous_... S7719C2::S7719C9 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S7719C9*), ABISELECT(56,28), "S7719C2");
    /*is_ambiguous_... S7719C2::S7719C9 */ AMB_check_base_class_offset(lv, (S5266C26*)(S7719C9*), ABISELECT(48,24), "S7719C2");
    /*is_ambiguous_... S7719C2::S7719C9 */ AMB_check_base_class_offset(lv, (S5266C29*)(S7719C9*), ABISELECT(57,29), "S7719C2");
    /*is_ambiguous_... S7719C10::S5266C29 */ AMB_check_base_class_offset(lv, (S5266C29*)(S7719C10*), ABISELECT(57,29), "S7719C2");
    check_base_class_offset(lv, (S5266C29*)(S7719C9*)(S7719C11*), ABISELECT(57,29), "S7719C2");
    /*is_ambiguous_... S7719C2::S7719C9 */ AMB_check_base_class_offset(lv, (S7719C9*), ABISELECT(48,24), "S7719C2");
    /*is_ambiguous_... S7719C10::S7719C9 */ AMB_check_base_class_offset(lv, (S7719C9*)(S7719C10*), ABISELECT(48,24), "S7719C2");
    /*is_ambiguous_... S7719C2::S7719C8 */ AMB_check_base_class_offset(lv, (S5266C26*)(S7719C8*), 0, "S7719C2");
    /*is_ambiguous_... S7719C2::S7719C8 */ AMB_check_base_class_offset(lv, (S5266C29*)(S7719C8*), 0, "S7719C2");
    /*is_ambiguous_... S7719C2::S7719C8 */ AMB_check_base_class_offset(lv, (S7719C8*), 0, "S7719C2");
    check_base_class_offset(lv, (S5266C26*)(S7719C6*)(S7719C11*), ABISELECT(105,61), "S7719C2");
    check_base_class_offset(lv, (S7719C4_nt*)(S7719C6*)(S7719C11*), ABISELECT(105,61), "S7719C2");
    check_base_class_offset(lv, (S7719C6*)(S7719C11*), ABISELECT(105,61), "S7719C2");
    /*is_ambiguous_... S7719C11::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*)(S7719C11*), ABISELECT(106,62), "S7719C2");
    check_base_class_offset(lv, (S7719C4_nt*)(S7719C9*)(S7719C11*), ABISELECT(104,60), "S7719C2");
    check_base_class_offset(lv, (S5266C26*)(S7719C9*)(S7719C11*), ABISELECT(96,56), "S7719C2");
    check_base_class_offset(lv, (S7719C9*)(S7719C11*), ABISELECT(96,56), "S7719C2");
    check_base_class_offset(lv, (S7719C11*)(S7719C10*), ABISELECT(96,56), "S7719C2");
    /*is_ambiguous_... S7719C3::S5266C29 */ AMB_check_base_class_offset(lv, (S5266C29*)(S7719C3*)(S7719C10*), ABISELECT(64,32), "S7719C2");
    check_base_class_offset(lv, (S5266C26*)(S7719C6*)(S7719C3*)(S7719C10*), ABISELECT(72,36), "S7719C2");
    check_base_class_offset(lv, (S7719C4_nt*)(S7719C6*)(S7719C3*)(S7719C10*), ABISELECT(72,36), "S7719C2");
    check_base_class_offset(lv, (S7719C6*)(S7719C3*)(S7719C10*), ABISELECT(72,36), "S7719C2");
    check_base_class_offset(lv, (S7719C3*)(S7719C10*), ABISELECT(64,32), "S7719C2");
    /*is_ambiguous_... S7719C10::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*)(S7719C10*), ABISELECT(120,72), "S7719C2");
    check_base_class_offset(lv, (S7719C10*), ABISELECT(64,32), "S7719C2");
    test_class_info(&lv, &cd_S7719C2);
    dp->~S7719C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7719C2(Test_S7719C2, "S7719C2", ABISELECT(128,76));

#else // __cplusplus

extern void _ZN7S7719C2C1Ev();
extern void _ZN7S7719C2D1Ev();
Name_Map name_map_S7719C2[] = {
  NSPAIR(_ZN7S7719C2C1Ev),
  NSPAIR(_ZN7S7719C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S7719C6;
extern VTBL_ENTRY _ZTI7S7719C6[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S7719C8;
extern VTBL_ENTRY _ZTI7S7719C8[];
extern  VTBL_ENTRY _ZTV7S7719C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C8[];
extern Class_Descriptor cd_S7719C3;
extern VTBL_ENTRY _ZTI7S7719C3[];
extern  VTBL_ENTRY _ZTV7S7719C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C3[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S7719C9;
extern VTBL_ENTRY _ZTI7S7719C9[];
extern  VTBL_ENTRY _ZTV7S7719C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C9[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S7719C8;
extern VTBL_ENTRY _ZTI7S7719C8[];
extern  VTBL_ENTRY _ZTV7S7719C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C8[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S7719C6;
extern VTBL_ENTRY _ZTI7S7719C6[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C9;
extern VTBL_ENTRY _ZTI7S7719C9[];
extern  VTBL_ENTRY _ZTV7S7719C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C9[];
extern Class_Descriptor cd_S7719C11;
extern VTBL_ENTRY _ZTI8S7719C11[];
extern  VTBL_ENTRY _ZTV8S7719C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7719C11[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S7719C6;
extern VTBL_ENTRY _ZTI7S7719C6[];
extern Class_Descriptor cd_S7719C3;
extern VTBL_ENTRY _ZTI7S7719C3[];
extern  VTBL_ENTRY _ZTV7S7719C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C3[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C10;
extern VTBL_ENTRY _ZTI8S7719C10[];
extern  VTBL_ENTRY _ZTV8S7719C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7719C10[];
static Base_Class bases_S7719C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7719C4_nt,    ABISELECT(25,13), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S5266C29,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7719C6,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S5266C29,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7719C8,    ABISELECT(32,16), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7719C3,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7719C4_nt,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S5266C29,    ABISELECT(57,29), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7719C9,    ABISELECT(48,24), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7719C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C26,    ABISELECT(105,61), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(105,61), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7719C6,    ABISELECT(105,61), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(106,62), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(104,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7719C9,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7719C11,    ABISELECT(96,56), //bcp->offset
    28, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S5266C29,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7719C6,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S7719C3,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(120,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S7719C10,    ABISELECT(64,32), //bcp->offset
    20, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7719C2[];
static  VTBL_ENTRY vtc_S7719C2[] = {
  ABISELECT(120,72),
  ABISELECT(96,56),
  ABISELECT(64,32),
  ABISELECT(57,29),
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(16,8),
  ABISELECT(25,13),
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C2[0]),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7719C2[0]),
  ABISELECT(-7,-3),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7719C2[0]),
  ABISELECT(9,5),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7719C2[0]),
  ABISELECT(56,40),
  ABISELECT(32,24),
  ABISELECT(-16,-8),
  ABISELECT(-7,-3),
  ABISELECT(-32,-16),
  ABISELECT(-39,-19),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S7719C2[0]),
  ABISELECT(-39,-27),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S7719C2[0]),
};
extern VTBL_ENTRY _ZTV7S7719C2[];
static  VTBL_ENTRY _tg__ZTV7S7719C8__A__7S7719C2[] = {
  ABISELECT(25,13),
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C3__7S7719C2[] = {
  ABISELECT(16,8),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C8__7S7719C3__7S7719C2[] = {
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7719C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C8__7S7719C2[] = {
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C9__7S7719C2[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7719C10__7S7719C2[] = {
  ABISELECT(56,40),
  ABISELECT(32,24),
  ABISELECT(-16,-8),
  ABISELECT(-7,-3),
  ABISELECT(-32,-16),
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI8S7719C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C38S7719C10__A1__7S7719C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C8__7S7719C38S7719C10__A1__7S7719C2[] = {
  ABISELECT(-7,-3),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7719C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C9__8S7719C10__7S7719C2[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7719C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7719C11__8S7719C10__7S7719C2[] = {
  ABISELECT(-39,-27),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S7719C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C8__8S7719C10__7S7719C2[] = {
  ABISELECT(-7,-3),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7719C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7719C11__7S7719C2[] = {
  ABISELECT(-39,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S7719C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C98S7719C11__A1__7S7719C2[] = {
  ABISELECT(-39,-27),
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C9[0]),
};
static  VTT_ENTRY vtt_S7719C2[] = {
  {&(_ZTV7S7719C2[10]),  10,31},
  {&(_tg__ZTV7S7719C8__A__7S7719C2[3]),  3,3},
  {&(_ZTV7S7719C2[14]),  14,31},
  {&(_ZTV7S7719C2[17]),  17,31},
  {&(_ZTV7S7719C2[20]),  20,31},
  {&(_ZTV7S7719C2[28]),  28,31},
  {&(_ZTV7S7719C2[31]),  31,31},
  {&(_tg__ZTV7S7719C3__7S7719C2[4]),  4,4},
  {&(_tg__ZTV7S7719C8__7S7719C3__7S7719C2[3]),  3,3},
  {&(_tg__ZTV7S7719C8__7S7719C2[3]),  3,3},
  {&(_tg__ZTV7S7719C9__7S7719C2[3]),  3,3},
  {&(_tg__ZTV8S7719C10__7S7719C2[8]),  8,8},
  {&(_tg__ZTV7S7719C38S7719C10__A1__7S7719C2[4]),  4,4},
  {&(_tg__ZTV7S7719C8__7S7719C38S7719C10__A1__7S7719C2[3]),  3,3},
  {&(_tg__ZTV7S7719C9__8S7719C10__7S7719C2[3]),  3,3},
  {&(_tg__ZTV8S7719C11__8S7719C10__7S7719C2[3]),  3,3},
  {&(_tg__ZTV7S7719C8__8S7719C10__7S7719C2[3]),  3,3},
  {&(_tg__ZTV8S7719C11__7S7719C2[3]),  3,3},
  {&(_tg__ZTV7S7719C98S7719C11__A1__7S7719C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7719C2[];
extern  VTBL_ENTRY _ZTV7S7719C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C2[];
Class_Descriptor cd_S7719C2 = {  "S7719C2", // class name
  bases_S7719C2, 31,
  &(vtc_S7719C2[0]), // expected_vtbl_contents
  &(vtt_S7719C2[0]), // expected_vtt_contents
  ABISELECT(128,76), // object size
  NSPAIRA(_ZTI7S7719C2),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7719C2),31, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7719C2),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7719C14  : virtual S7719C9 {
  long double s7719c14f0;
  void *s7719c14f1[8];
  ~S7719C14(); // tgen
  S7719C14(); // tgen
};
//SIG(-1 S7719C14) C1{ VBC2{ BC3{ m Fc} BC4{ m} VBC5{ m}} FD Fp[8]}


S7719C14 ::~S7719C14(){ note_dtor("S7719C14", this);} // tgen
S7719C14 ::S7719C14(){ note_ctor("S7719C14", this);} // tgen

static void Test_S7719C14()
{
  extern Class_Descriptor cd_S7719C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(8,15)];
    init_test(&cd_S7719C14, buf);
    S7719C14 *dp, &lv = *(dp=new (buf) S7719C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,56), "sizeof(S7719C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7719C14)");
    check_base_class_offset(lv, (S7719C4_nt*)(S7719C9*), ABISELECT(104,52), "S7719C14");
    check_base_class_offset(lv, (S5266C26*)(S7719C9*), ABISELECT(96,48), "S7719C14");
    check_base_class_offset(lv, (S5266C29*)(S7719C9*), 0, "S7719C14");
    check_base_class_offset(lv, (S7719C9*), ABISELECT(96,48), "S7719C14");
    check_field_offset(lv, s7719c14f0, ABISELECT(16,4), "S7719C14.s7719c14f0");
    check_field_offset(lv, s7719c14f1, ABISELECT(32,16), "S7719C14.s7719c14f1");
    test_class_info(&lv, &cd_S7719C14);
    dp->~S7719C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7719C14(Test_S7719C14, "S7719C14", ABISELECT(112,56));

#else // __cplusplus

extern void _ZN8S7719C14C1Ev();
extern void _ZN8S7719C14D1Ev();
Name_Map name_map_S7719C14[] = {
  NSPAIR(_ZN8S7719C14C1Ev),
  NSPAIR(_ZN8S7719C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S7719C9;
extern VTBL_ENTRY _ZTI7S7719C9[];
extern  VTBL_ENTRY _ZTV7S7719C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C9[];
static Base_Class bases_S7719C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7719C4_nt,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7719C9,    ABISELECT(96,48), //bcp->offset
    4, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7719C14[];
static  VTBL_ENTRY vtc_S7719C14[] = {
  0,
  ABISELECT(96,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7719C14[0]),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S7719C14[0]),
};
extern VTBL_ENTRY _ZTV8S7719C14[];
static  VTBL_ENTRY _tg__ZTV7S7719C9__8S7719C14[] = {
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C9[0]),
};
static  VTT_ENTRY vtt_S7719C14[] = {
  {&(_ZTV8S7719C14[4]),  4,7},
  {&(_ZTV8S7719C14[7]),  7,7},
  {&(_tg__ZTV7S7719C9__8S7719C14[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7719C14[];
extern  VTBL_ENTRY _ZTV8S7719C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7719C14[];
Class_Descriptor cd_S7719C14 = {  "S7719C14", // class name
  bases_S7719C14, 4,
  &(vtc_S7719C14[0]), // expected_vtbl_contents
  &(vtt_S7719C14[0]), // expected_vtt_contents
  ABISELECT(112,56), // object size
  NSPAIRA(_ZTI8S7719C14),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S7719C14),7, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7719C14),3, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7719C13  : S7719C9 , S7719C14 , virtual S5266C26 , virtual S7719C4_nt {
  ~S7719C13(); // tgen
  S7719C13(); // tgen
};
//SIG(-1 S7719C13) C1{ BC2{ BC3{ m Fc} BC4{ m} VBC5{ m}} BC6{ VBC2 FD Fp[8]} VBC4 VBC3}


S7719C13 ::~S7719C13(){ note_dtor("S7719C13", this);} // tgen
S7719C13 ::S7719C13(){ note_ctor("S7719C13", this);} // tgen

static void Test_S7719C13()
{
  extern Class_Descriptor cd_S7719C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,17)];
    init_test(&cd_S7719C13, buf);
    S7719C13 *dp, &lv = *(dp=new (buf) S7719C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,64), "sizeof(S7719C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7719C13)");
    /*is_ambiguous_... S7719C13::S7719C9 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S7719C9*), ABISELECT(8,4), "S7719C13");
    /*is_ambiguous_... S7719C13::S7719C9 */ AMB_check_base_class_offset(lv, (S5266C26*)(S7719C9*), 0, "S7719C13");
    /*is_ambiguous_... S7719C13::S7719C9 */ AMB_check_base_class_offset(lv, (S5266C29*)(S7719C9*), 0, "S7719C13");
    /*is_ambiguous_... S7719C13::S7719C9 */ AMB_check_base_class_offset(lv, (S5266C29*)(S7719C9*), 0, "S7719C13");
    /*is_ambiguous_... S7719C13::S7719C9 */ AMB_check_base_class_offset(lv, (S7719C9*), 0, "S7719C13");
    /*is_ambiguous_... S7719C13::S7719C9 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S7719C9*), ABISELECT(120,60), "S7719C13");
    /*is_ambiguous_... S7719C13::S7719C9 */ AMB_check_base_class_offset(lv, (S5266C26*)(S7719C9*), ABISELECT(112,56), "S7719C13");
    check_base_class_offset(lv, (S7719C9*)(S7719C14*), ABISELECT(112,56), "S7719C13");
    check_base_class_offset(lv, (S7719C14*), ABISELECT(16,8), "S7719C13");
    /*is_ambiguous_... S7719C13::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*), ABISELECT(121,61), "S7719C13");
    /*is_ambiguous_... S7719C13::S7719C4_nt */ AMB_check_base_class_offset(lv, (S7719C4_nt*), ABISELECT(121,61), "S7719C13");
    test_class_info(&lv, &cd_S7719C13);
    dp->~S7719C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7719C13(Test_S7719C13, "S7719C13", ABISELECT(128,64));

#else // __cplusplus

extern void _ZN8S7719C13C1Ev();
extern void _ZN8S7719C13D1Ev();
Name_Map name_map_S7719C13[] = {
  NSPAIR(_ZN8S7719C13C1Ev),
  NSPAIR(_ZN8S7719C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S7719C9;
extern VTBL_ENTRY _ZTI7S7719C9[];
extern  VTBL_ENTRY _ZTV7S7719C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C9[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C9;
extern VTBL_ENTRY _ZTI7S7719C9[];
extern  VTBL_ENTRY _ZTV7S7719C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C9[];
extern Class_Descriptor cd_S7719C14;
extern VTBL_ENTRY _ZTI8S7719C14[];
extern  VTBL_ENTRY _ZTV8S7719C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7719C14[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
static Base_Class bases_S7719C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7719C4_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7719C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7719C4_nt,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7719C9,    ABISELECT(112,56), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7719C14,    ABISELECT(16,8), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C26,    ABISELECT(121,61), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7719C4_nt,    ABISELECT(121,61), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7719C13[];
static  VTBL_ENTRY vtc_S7719C13[] = {
  ABISELECT(121,61),
  ABISELECT(121,61),
  ABISELECT(112,56),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7719C13[0]),
  ABISELECT(-16,-8),
  ABISELECT(96,48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7719C13[0]),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S7719C13[0]),
};
extern VTBL_ENTRY _ZTV8S7719C13[];
static  VTBL_ENTRY _tg__ZTV7S7719C9__A__8S7719C13[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7719C14__8S7719C13[] = {
  ABISELECT(-16,-8),
  ABISELECT(96,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7719C14[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C9__8S7719C14__8S7719C13[] = {
  ABISELECT(-112,-56),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S7719C14[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C9__A1__8S7719C13[] = {
  ABISELECT(-112,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C9[0]),
};
static  VTT_ENTRY vtt_S7719C13[] = {
  {&(_ZTV8S7719C13[6]),  6,13},
  {&(_tg__ZTV7S7719C9__A__8S7719C13[3]),  3,3},
  {&(_tg__ZTV8S7719C14__8S7719C13[4]),  4,4},
  {&(_tg__ZTV7S7719C9__8S7719C14__8S7719C13[3]),  3,3},
  {&(_ZTV8S7719C13[10]),  10,13},
  {&(_ZTV8S7719C13[13]),  13,13},
  {&(_tg__ZTV7S7719C9__A1__8S7719C13[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7719C13[];
extern  VTBL_ENTRY _ZTV8S7719C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7719C13[];
Class_Descriptor cd_S7719C13 = {  "S7719C13", // class name
  bases_S7719C13, 10,
  &(vtc_S7719C13[0]), // expected_vtbl_contents
  &(vtt_S7719C13[0]), // expected_vtt_contents
  ABISELECT(128,64), // object size
  NSPAIRA(_ZTI8S7719C13),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7719C13),13, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7719C13),7, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7719C16  : S5266C26 , S7719C3 , virtual S7719C9 {
  virtual  ~S7719C16(); // _ZN8S7719C16D2Ev
  S7719C16(); // tgen
};
//SIG(-1 S7719C16) C1{ BC2{ m} BC3{ VBC4{ m Fc} BC5{ m} BC6{ BC2 BC4} VBC7{ BC2 BC5 VBC4 FC5}} VBC8{ BC4 BC2 VBC5} vd}


 S7719C16 ::~S7719C16(){ note_dtor("S7719C16", this);}
S7719C16 ::S7719C16(){ note_ctor("S7719C16", this);} // tgen

static void Test_S7719C16()
{
  extern Class_Descriptor cd_S7719C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S7719C16, buf);
    S7719C16 *dp, &lv = *(dp=new (buf) S7719C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S7719C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7719C16)");
    /*is_ambiguous_... S7719C16::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*), 0, "S7719C16");
    /*is_ambiguous_... S7719C3::S7719C4_nt */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S7719C3*), ABISELECT(9,5), "S7719C16");
    check_base_class_offset(lv, (S7719C4_nt*)(S7719C8*), ABISELECT(9,5), "S7719C16");
    /*is_ambiguous_... S7719C3::S5266C29 */ AMB_check_base_class_offset(lv, (S5266C29*)(S7719C3*), 0, "S7719C16");
    check_base_class_offset(lv, (S5266C26*)(S7719C6*)(S7719C3*), ABISELECT(8,4), "S7719C16");
    check_base_class_offset(lv, (S7719C4_nt*)(S7719C6*)(S7719C3*), ABISELECT(8,4), "S7719C16");
    check_base_class_offset(lv, (S7719C6*)(S7719C3*), ABISELECT(8,4), "S7719C16");
    check_base_class_offset(lv, (S5266C26*)(S7719C8*), ABISELECT(16,8), "S7719C16");
    check_base_class_offset(lv, (S5266C29*)(S7719C8*), ABISELECT(16,8), "S7719C16");
    check_base_class_offset(lv, (S7719C8*)(S7719C3*), ABISELECT(16,8), "S7719C16");
    check_base_class_offset(lv, (S7719C3*), 0, "S7719C16");
    check_base_class_offset(lv, (S7719C4_nt*)(S7719C9*), ABISELECT(40,20), "S7719C16");
    check_base_class_offset(lv, (S5266C26*)(S7719C9*), ABISELECT(32,16), "S7719C16");
    check_base_class_offset(lv, (S5266C29*)(S7719C9*), ABISELECT(41,21), "S7719C16");
    check_base_class_offset(lv, (S7719C9*), ABISELECT(32,16), "S7719C16");
    test_class_info(&lv, &cd_S7719C16);
    dp->~S7719C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7719C16(Test_S7719C16, "S7719C16", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN8S7719C16C1Ev();
extern void _ZN8S7719C16D2Ev();
Name_Map name_map_S7719C16[] = {
  NSPAIR(_ZN8S7719C16C1Ev),
  NSPAIR(_ZN8S7719C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S7719C6;
extern VTBL_ENTRY _ZTI7S7719C6[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S7719C8;
extern VTBL_ENTRY _ZTI7S7719C8[];
extern  VTBL_ENTRY _ZTV7S7719C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C8[];
extern Class_Descriptor cd_S7719C3;
extern VTBL_ENTRY _ZTI7S7719C3[];
extern  VTBL_ENTRY _ZTV7S7719C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C3[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S7719C9;
extern VTBL_ENTRY _ZTI7S7719C9[];
extern  VTBL_ENTRY _ZTV7S7719C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C9[];
static Base_Class bases_S7719C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7719C4_nt,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7719C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S5266C29,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7719C8,    ABISELECT(16,8), //bcp->offset
    8, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7719C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7719C4_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S5266C29,    ABISELECT(41,21), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7719C9,    ABISELECT(32,16), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7719C16[];
extern void _ZN8S7719C16D1Ev();
extern void _ZN8S7719C16D0Ev();
static  VTBL_ENTRY vtc_S7719C16[] = {
  ABISELECT(41,21),
  ABISELECT(32,16),
  ABISELECT(16,8),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S7719C16[0]),
  (VTBL_ENTRY)&_ZN8S7719C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7719C16D0Ev,
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7719C16[0]),
  ABISELECT(9,5),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7719C16[0]),
};
extern VTBL_ENTRY _ZTV8S7719C16[];
static  VTBL_ENTRY _tg__ZTV7S7719C3__8S7719C16[] = {
  ABISELECT(16,8),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C8__7S7719C3__8S7719C16[] = {
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7719C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C8__8S7719C16[] = {
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C9__8S7719C16[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C9[0]),
};
static  VTT_ENTRY vtt_S7719C16[] = {
  {&(_ZTV8S7719C16[6]),  6,14},
  {&(_tg__ZTV7S7719C3__8S7719C16[4]),  4,4},
  {&(_tg__ZTV7S7719C8__7S7719C3__8S7719C16[3]),  3,3},
  {&(_ZTV8S7719C16[11]),  11,14},
  {&(_ZTV8S7719C16[14]),  14,14},
  {&(_tg__ZTV7S7719C8__8S7719C16[3]),  3,3},
  {&(_tg__ZTV7S7719C9__8S7719C16[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7719C16[];
extern  VTBL_ENTRY _ZTV8S7719C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7719C16[];
Class_Descriptor cd_S7719C16 = {  "S7719C16", // class name
  bases_S7719C16, 14,
  &(vtc_S7719C16[0]), // expected_vtbl_contents
  &(vtt_S7719C16[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI8S7719C16),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7719C16),14, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7719C16),7, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7719C15  : S7719C6 , virtual S7719C16 , S7719C9 {
  int s7719c15f0;
  virtual  ~S7719C15(); // _ZN8S7719C15D2Ev
  S7719C15(); // tgen
};
//SIG(-1 S7719C15) C1{ BC2{ BC3{ m} BC4{ m Fc}} VBC5{ BC3 BC6{ VBC4 BC7{ m} BC2 VBC8{ BC3 BC7 VBC4 FC7}} VBC9{ BC4 BC3 VBC7} vd} BC9 vd Fi}


 S7719C15 ::~S7719C15(){ note_dtor("S7719C15", this);}
S7719C15 ::S7719C15(){ note_ctor("S7719C15", this);} // tgen

static void Test_S7719C15()
{
  extern Class_Descriptor cd_S7719C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S7719C15, buf);
    S7719C15 *dp, &lv = *(dp=new (buf) S7719C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S7719C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7719C15)");
    /*is_ambiguous_... S7719C15::S7719C6 */ AMB_check_base_class_offset(lv, (S5266C26*)(S7719C6*), ABISELECT(9,5), "S7719C15");
    /*is_ambiguous_... S7719C15::S7719C6 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S7719C6*), ABISELECT(9,5), "S7719C15");
    /*is_ambiguous_... S7719C15::S7719C6 */ AMB_check_base_class_offset(lv, (S7719C6*), ABISELECT(9,5), "S7719C15");
    /*is_ambiguous_... S7719C16::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*)(S7719C16*), ABISELECT(16,12), "S7719C15");
    /*is_ambiguous_... S7719C3::S7719C4_nt */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S7719C3*)(S7719C16*), ABISELECT(25,17), "S7719C15");
    check_base_class_offset(lv, (S7719C4_nt*)(S7719C8*), ABISELECT(25,17), "S7719C15");
    /*is_ambiguous_... S7719C3::S5266C29 */ AMB_check_base_class_offset(lv, (S5266C29*)(S7719C3*)(S7719C16*), ABISELECT(16,12), "S7719C15");
    check_base_class_offset(lv, (S5266C26*)(S7719C6*)(S7719C3*)(S7719C16*), ABISELECT(24,16), "S7719C15");
    check_base_class_offset(lv, (S7719C4_nt*)(S7719C6*)(S7719C3*)(S7719C16*), ABISELECT(24,16), "S7719C15");
    check_base_class_offset(lv, (S7719C6*)(S7719C3*)(S7719C16*), ABISELECT(24,16), "S7719C15");
    check_base_class_offset(lv, (S5266C26*)(S7719C8*), ABISELECT(32,20), "S7719C15");
    check_base_class_offset(lv, (S5266C29*)(S7719C8*), ABISELECT(32,20), "S7719C15");
    check_base_class_offset(lv, (S7719C8*)(S7719C3*)(S7719C16*), ABISELECT(32,20), "S7719C15");
    check_base_class_offset(lv, (S7719C3*)(S7719C16*), ABISELECT(16,12), "S7719C15");
    /*is_ambiguous_... S7719C15::S7719C9 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S7719C9*), ABISELECT(56,32), "S7719C15");
    /*is_ambiguous_... S7719C15::S7719C9 */ AMB_check_base_class_offset(lv, (S5266C26*)(S7719C9*), ABISELECT(48,28), "S7719C15");
    /*is_ambiguous_... S7719C15::S7719C9 */ AMB_check_base_class_offset(lv, (S5266C29*)(S7719C9*), 0, "S7719C15");
    /*is_ambiguous_... S7719C15::S7719C9 */ AMB_check_base_class_offset(lv, (S5266C29*)(S7719C9*), 0, "S7719C15");
    check_base_class_offset(lv, (S7719C9*)(S7719C16*), ABISELECT(48,28), "S7719C15");
    check_base_class_offset(lv, (S7719C16*), ABISELECT(16,12), "S7719C15");
    /*is_ambiguous_... S7719C15::S7719C9 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S7719C9*), ABISELECT(8,4), "S7719C15");
    /*is_ambiguous_... S7719C15::S7719C9 */ AMB_check_base_class_offset(lv, (S5266C26*)(S7719C9*), 0, "S7719C15");
    /*is_ambiguous_... S7719C15::S7719C9 */ AMB_check_base_class_offset(lv, (S7719C9*), 0, "S7719C15");
    check_field_offset(lv, s7719c15f0, ABISELECT(12,8), "S7719C15.s7719c15f0");
    test_class_info(&lv, &cd_S7719C15);
    dp->~S7719C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7719C15(Test_S7719C15, "S7719C15", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN8S7719C15C1Ev();
extern void _ZN8S7719C15D2Ev();
Name_Map name_map_S7719C15[] = {
  NSPAIR(_ZN8S7719C15C1Ev),
  NSPAIR(_ZN8S7719C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S7719C6;
extern VTBL_ENTRY _ZTI7S7719C6[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S7719C6;
extern VTBL_ENTRY _ZTI7S7719C6[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S7719C8;
extern VTBL_ENTRY _ZTI7S7719C8[];
extern  VTBL_ENTRY _ZTV7S7719C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C8[];
extern Class_Descriptor cd_S7719C3;
extern VTBL_ENTRY _ZTI7S7719C3[];
extern  VTBL_ENTRY _ZTV7S7719C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C3[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S7719C9;
extern VTBL_ENTRY _ZTI7S7719C9[];
extern  VTBL_ENTRY _ZTV7S7719C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C9[];
extern Class_Descriptor cd_S7719C16;
extern VTBL_ENTRY _ZTI8S7719C16[];
extern  VTBL_ENTRY _ZTV8S7719C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7719C16[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C9;
extern VTBL_ENTRY _ZTI7S7719C9[];
extern  VTBL_ENTRY _ZTV7S7719C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C9[];
static Base_Class bases_S7719C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C26,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7719C6,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C26,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S5266C29,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7719C6,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S5266C29,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7719C8,    ABISELECT(32,20), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7719C3,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S7719C9,    ABISELECT(48,28), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S7719C16,    ABISELECT(16,12), //bcp->offset
    9, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7719C4_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7719C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7719C15[];
extern void _ZN8S7719C15D1Ev();
extern void _ZN8S7719C15D0Ev();
extern void ABISELECT(_ZTv0_n56_N8S7719C15D1Ev,_ZTv0_n28_N8S7719C15D1Ev)();
extern void ABISELECT(_ZThn16_N8S7719C15D1Ev,_ZThn12_N8S7719C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7719C15D0Ev,_ZTv0_n28_N8S7719C15D0Ev)();
extern void ABISELECT(_ZThn16_N8S7719C15D0Ev,_ZThn12_N8S7719C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7719C15[] = {
  ABISELECT(48,28),
  ABISELECT(32,20),
  ABISELECT(25,17),
  ABISELECT(16,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7719C15[0]),
  (VTBL_ENTRY)&_ZN8S7719C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7719C15D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(32,16),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7719C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7719C15D1Ev,_ZTv0_n28_N8S7719C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7719C15D0Ev,_ZTv0_n28_N8S7719C15D0Ev),
  ABISELECT(-7,-3),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S7719C15[0]),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7719C15[0]),
};
extern VTBL_ENTRY _ZTV8S7719C15[];
static  VTBL_ENTRY _tg__ZTV7S7719C9__A__8S7719C15[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C9[0]),
};
extern void _ZN8S7719C16D1Ev();
extern void _ZN8S7719C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7719C16__8S7719C15[] = {
  ABISELECT(-16,-12),
  ABISELECT(32,16),
  ABISELECT(16,8),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S7719C16[0]),
  (VTBL_ENTRY)&_ZN8S7719C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7719C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7719C38S7719C16__8S7719C15[] = {
  ABISELECT(16,8),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C8__7S7719C38S7719C16__8S7719C15[] = {
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7719C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C8__8S7719C16__8S7719C15[] = {
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7719C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C9__8S7719C16__8S7719C15[] = {
  ABISELECT(-48,-28),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7719C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C8__8S7719C15[] = {
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C9__8S7719C15[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C9[0]),
};
static  VTT_ENTRY vtt_S7719C15[] = {
  {&(_ZTV8S7719C15[7]),  7,24},
  {&(_tg__ZTV7S7719C9__A__8S7719C15[3]),  3,3},
  {&(_ZTV8S7719C15[16]),  16,24},
  {&(_ZTV8S7719C15[21]),  21,24},
  {&(_ZTV8S7719C15[24]),  24,24},
  {&(_tg__ZTV8S7719C16__8S7719C15[6]),  6,8},
  {&(_tg__ZTV7S7719C38S7719C16__8S7719C15[4]),  4,4},
  {&(_tg__ZTV7S7719C8__7S7719C38S7719C16__8S7719C15[3]),  3,3},
  {&(_tg__ZTV7S7719C8__8S7719C16__8S7719C15[3]),  3,3},
  {&(_tg__ZTV7S7719C9__8S7719C16__8S7719C15[3]),  3,3},
  {&(_tg__ZTV7S7719C8__8S7719C15[3]),  3,3},
  {&(_tg__ZTV7S7719C9__8S7719C15[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7719C15[];
extern  VTBL_ENTRY _ZTV8S7719C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7719C15[];
static VTBL_ENTRY alt_thunk_names71[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7719C15D0Ev,_ZTv0_n28_N8S7719C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7719C15D0Ev,_ZThn12_N8S7719C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7719C15D1Ev,_ZTv0_n28_N8S7719C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7719C15D1Ev,_ZThn12_N8S7719C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7719C15 = {  "S7719C15", // class name
  bases_S7719C15, 21,
  &(vtc_S7719C15[0]), // expected_vtbl_contents
  &(vtt_S7719C15[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI8S7719C15),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7719C15),24, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7719C15),12, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names71,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7719C17_nt  {
  int s7719c17f0;
  void  mf7719c17(); // _ZN11S7719C17_nt9mf7719c17Ev
};
//SIG(-1 S7719C17_nt) C1{ m Fi}


void  S7719C17_nt ::mf7719c17(){}

//skip512 S7719C17_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI11S7719C17_nt[];
VTBL_ENTRY *P__ZTI11S7719C17_nt = _ZTI11S7719C17_nt; 
Class_Descriptor cd_S7719C17_nt = {  "S7719C17_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI11S7719C17_nt),ABISELECT(16,8), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7719C12  : S7719C6 , virtual S7719C13 , S7719C15 , S7719C17_nt {
  int s7719c12f0;
  virtual  ~S7719C12(); // _ZN8S7719C12D2Ev
  S7719C12(); // tgen
};
//SIG(-1 S7719C12) C1{ BC2{ BC3{ m} BC4{ m Fc}} VBC5{ BC6{ BC4 BC3 VBC7{ m}} BC8{ VBC6 FD Fp[8]} VBC3 VBC4} BC9{ BC2 VBC10{ BC3 BC11{ VBC4 BC7 BC2 VBC12{ BC3 BC7 VBC4 FC7}} VBC6 vd} BC6 vd Fi} BC13{ m Fi} vd Fi}


 S7719C12 ::~S7719C12(){ note_dtor("S7719C12", this);}
S7719C12 ::S7719C12(){ note_ctor("S7719C12", this);} // tgen

static void Test_S7719C12()
{
  extern Class_Descriptor cd_S7719C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,27)];
    init_test(&cd_S7719C12, buf);
    S7719C12 *dp, &lv = *(dp=new (buf) S7719C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,104), "sizeof(S7719C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7719C12)");
    /*is_ambiguous_... S7719C12::S7719C6 */ AMB_check_base_class_offset(lv, (S5266C26*)(S7719C6*), ABISELECT(16,12), "S7719C12");
    /*is_ambiguous_... S7719C12::S7719C6 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S7719C6*), ABISELECT(16,12), "S7719C12");
    /*is_ambiguous_... S7719C12::S7719C6 */ AMB_check_base_class_offset(lv, (S7719C6*), ABISELECT(16,12), "S7719C12");
    /*is_ambiguous_... S7719C13::S7719C9 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S7719C9*)(S7719C13*), ABISELECT(40,28), "S7719C12");
    /*is_ambiguous_... S7719C13::S7719C9 */ AMB_check_base_class_offset(lv, (S5266C26*)(S7719C9*)(S7719C13*), ABISELECT(32,24), "S7719C12");
    /*is_ambiguous_... S7719C13::S7719C9 */ AMB_check_base_class_offset(lv, (S5266C29*)(S7719C9*)(S7719C13*), 0, "S7719C12");
    /*is_ambiguous_... S7719C12::S7719C9 */ AMB_check_base_class_offset(lv, (S5266C29*)(S7719C9*), 0, "S7719C12");
    /*is_ambiguous_... S7719C15::S7719C9 */ AMB_check_base_class_offset(lv, (S5266C29*)(S7719C9*)(S7719C15*), 0, "S7719C12");
    /*is_ambiguous_... S7719C13::S7719C9 */ AMB_check_base_class_offset(lv, (S7719C9*)(S7719C13*), ABISELECT(32,24), "S7719C12");
    /*is_ambiguous_... S7719C12::S7719C9 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S7719C9*), ABISELECT(152,84), "S7719C12");
    /*is_ambiguous_... S7719C12::S7719C9 */ AMB_check_base_class_offset(lv, (S5266C26*)(S7719C9*), ABISELECT(144,80), "S7719C12");
    check_base_class_offset(lv, (S7719C9*)(S7719C14*)(S7719C13*), ABISELECT(144,80), "S7719C12");
    check_base_class_offset(lv, (S7719C9*)(S7719C16*), ABISELECT(144,80), "S7719C12");
    check_base_class_offset(lv, (S7719C14*)(S7719C13*), ABISELECT(48,32), "S7719C12");
    /*is_ambiguous_... S7719C13::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*)(S7719C13*), ABISELECT(153,85), "S7719C12");
    /*is_ambiguous_... S7719C13::S7719C4_nt */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S7719C13*), ABISELECT(153,85), "S7719C12");
    /*is_ambiguous_... S7719C3::S7719C4_nt */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S7719C3*)(S7719C16*), ABISELECT(153,85), "S7719C12");
    check_base_class_offset(lv, (S7719C4_nt*)(S7719C8*), ABISELECT(153,85), "S7719C12");
    check_base_class_offset(lv, (S7719C13*), ABISELECT(32,24), "S7719C12");
    /*is_ambiguous_... S7719C15::S7719C6 */ AMB_check_base_class_offset(lv, (S5266C26*)(S7719C6*)(S7719C15*), ABISELECT(9,5), "S7719C12");
    /*is_ambiguous_... S7719C15::S7719C6 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S7719C6*)(S7719C15*), ABISELECT(9,5), "S7719C12");
    /*is_ambiguous_... S7719C15::S7719C6 */ AMB_check_base_class_offset(lv, (S7719C6*)(S7719C15*), ABISELECT(9,5), "S7719C12");
    /*is_ambiguous_... S7719C16::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*)(S7719C16*), ABISELECT(160,88), "S7719C12");
    /*is_ambiguous_... S7719C3::S5266C29 */ AMB_check_base_class_offset(lv, (S5266C29*)(S7719C3*)(S7719C16*), ABISELECT(160,88), "S7719C12");
    check_base_class_offset(lv, (S5266C26*)(S7719C6*)(S7719C3*)(S7719C16*), ABISELECT(168,92), "S7719C12");
    check_base_class_offset(lv, (S7719C4_nt*)(S7719C6*)(S7719C3*)(S7719C16*), ABISELECT(168,92), "S7719C12");
    check_base_class_offset(lv, (S7719C6*)(S7719C3*)(S7719C16*), ABISELECT(168,92), "S7719C12");
    check_base_class_offset(lv, (S5266C26*)(S7719C8*), ABISELECT(176,96), "S7719C12");
    check_base_class_offset(lv, (S5266C29*)(S7719C8*), ABISELECT(176,96), "S7719C12");
    check_base_class_offset(lv, (S7719C8*)(S7719C3*)(S7719C16*), ABISELECT(176,96), "S7719C12");
    check_base_class_offset(lv, (S7719C3*)(S7719C16*), ABISELECT(160,88), "S7719C12");
    check_base_class_offset(lv, (S7719C16*)(S7719C15*), ABISELECT(160,88), "S7719C12");
    /*is_ambiguous_... S7719C15::S7719C9 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S7719C9*)(S7719C15*), ABISELECT(8,4), "S7719C12");
    /*is_ambiguous_... S7719C15::S7719C9 */ AMB_check_base_class_offset(lv, (S5266C26*)(S7719C9*)(S7719C15*), 0, "S7719C12");
    /*is_ambiguous_... S7719C15::S7719C9 */ AMB_check_base_class_offset(lv, (S7719C9*)(S7719C15*), 0, "S7719C12");
    check_base_class_offset(lv, (S7719C15*), 0, "S7719C12");
    check_base_class_offset(lv, (S7719C17_nt*), ABISELECT(20,16), "S7719C12");
    check_field_offset(lv, s7719c12f0, ABISELECT(24,20), "S7719C12.s7719c12f0");
    test_class_info(&lv, &cd_S7719C12);
    dp->~S7719C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7719C12(Test_S7719C12, "S7719C12", ABISELECT(192,104));

#else // __cplusplus

extern void _ZN8S7719C12C1Ev();
extern void _ZN8S7719C12D2Ev();
Name_Map name_map_S7719C12[] = {
  NSPAIR(_ZN8S7719C12C1Ev),
  NSPAIR(_ZN8S7719C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S7719C6;
extern VTBL_ENTRY _ZTI7S7719C6[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S7719C9;
extern VTBL_ENTRY _ZTI7S7719C9[];
extern  VTBL_ENTRY _ZTV7S7719C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C9[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C9;
extern VTBL_ENTRY _ZTI7S7719C9[];
extern  VTBL_ENTRY _ZTV7S7719C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C9[];
extern Class_Descriptor cd_S7719C14;
extern VTBL_ENTRY _ZTI8S7719C14[];
extern  VTBL_ENTRY _ZTV8S7719C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7719C14[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S7719C13;
extern VTBL_ENTRY _ZTI8S7719C13[];
extern  VTBL_ENTRY _ZTV8S7719C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7719C13[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S7719C6;
extern VTBL_ENTRY _ZTI7S7719C6[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S7719C6;
extern VTBL_ENTRY _ZTI7S7719C6[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S7719C8;
extern VTBL_ENTRY _ZTI7S7719C8[];
extern  VTBL_ENTRY _ZTV7S7719C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C8[];
extern Class_Descriptor cd_S7719C3;
extern VTBL_ENTRY _ZTI7S7719C3[];
extern  VTBL_ENTRY _ZTV7S7719C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C3[];
extern Class_Descriptor cd_S7719C16;
extern VTBL_ENTRY _ZTI8S7719C16[];
extern  VTBL_ENTRY _ZTV8S7719C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7719C16[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C9;
extern VTBL_ENTRY _ZTI7S7719C9[];
extern  VTBL_ENTRY _ZTV7S7719C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C9[];
extern Class_Descriptor cd_S7719C15;
extern VTBL_ENTRY _ZTI8S7719C15[];
extern  VTBL_ENTRY _ZTV8S7719C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7719C15[];
extern Class_Descriptor cd_S7719C17_nt;
extern VTBL_ENTRY _ZTI11S7719C17_nt[];
static Base_Class bases_S7719C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C26,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7719C6,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7719C4_nt,    ABISELECT(40,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7719C9,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7719C9,    ABISELECT(144,80), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7719C14,    ABISELECT(48,32), //bcp->offset
    17, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(153,85), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7719C4_nt,    ABISELECT(153,85), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7719C13,    ABISELECT(32,24), //bcp->offset
    11, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5266C26,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7719C6,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S5266C29,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(168,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(168,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7719C6,    ABISELECT(168,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(176,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S5266C29,    ABISELECT(176,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S7719C8,    ABISELECT(176,96), //bcp->offset
    33, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S7719C3,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7719C16,    ABISELECT(160,88), //bcp->offset
    24, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S7719C4_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S7719C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7719C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7719C17_nt,    ABISELECT(20,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7719C12[];
extern void _ZN8S7719C12D1Ev();
extern void _ZN8S7719C12D0Ev();
extern void ABISELECT(_ZTv0_n56_N8S7719C12D1Ev,_ZTv0_n28_N8S7719C12D1Ev)();
extern void ABISELECT(_ZThn160_N8S7719C12D1Ev,_ZThn88_N8S7719C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7719C12D0Ev,_ZTv0_n28_N8S7719C12D0Ev)();
extern void ABISELECT(_ZThn160_N8S7719C12D0Ev,_ZThn88_N8S7719C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7719C12[] = {
  ABISELECT(153,85),
  ABISELECT(32,24),
  ABISELECT(144,80),
  ABISELECT(176,96),
  ABISELECT(153,85),
  ABISELECT(160,88),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7719C12[0]),
  (VTBL_ENTRY)&_ZN8S7719C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7719C12D0Ev,
  ABISELECT(121,61),
  ABISELECT(121,61),
  ABISELECT(112,56),
  ABISELECT(-32,-24),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S7719C12[0]),
  ABISELECT(-48,-32),
  ABISELECT(96,48),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S7719C12[0]),
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S7719C12[0]),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-7,-3),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S7719C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7719C12D1Ev,_ZTv0_n28_N8S7719C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7719C12D0Ev,_ZTv0_n28_N8S7719C12D0Ev),
  ABISELECT(-23,-11),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI8S7719C12[0]),
};
extern VTBL_ENTRY _ZTV8S7719C12[];
extern void _ZN8S7719C15D1Ev();
extern void _ZN8S7719C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7719C15__8S7719C12[] = {
  ABISELECT(144,80),
  ABISELECT(176,96),
  ABISELECT(153,85),
  ABISELECT(160,88),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7719C15[0]),
  (VTBL_ENTRY)&_ZN8S7719C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7719C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7719C98S7719C15__A2__8S7719C12[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C9[0]),
};
extern void ABISELECT(_ZTv0_n56_N8S7719C15D1Ev,_ZTv0_n28_N8S7719C15D1Ev)();
extern void ABISELECT(_ZThn160_N8S7719C15D1Ev,_ZThn88_N8S7719C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7719C15D0Ev,_ZTv0_n28_N8S7719C15D0Ev)();
extern void ABISELECT(_ZThn160_N8S7719C15D0Ev,_ZThn88_N8S7719C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7719C16__8S7719C15__8S7719C12[] = {
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-7,-3),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S7719C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7719C15D1Ev,_ZTv0_n28_N8S7719C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7719C15D0Ev,_ZTv0_n28_N8S7719C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7719C8__8S7719C15__8S7719C12[] = {
  ABISELECT(-23,-11),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI8S7719C15[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C9__8S7719C15__8S7719C12[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S7719C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7719C13__8S7719C12[] = {
  ABISELECT(121,61),
  ABISELECT(121,61),
  ABISELECT(112,56),
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7719C13[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C98S7719C13__8S7719C12[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7719C148S7719C13__8S7719C12[] = {
  ABISELECT(-48,-32),
  ABISELECT(96,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7719C14[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C9__8S7719C148S7719C13__8S7719C12[] = {
  ABISELECT(-144,-80),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S7719C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7719C14__8S7719C13__8S7719C12[] = {
  ABISELECT(-48,-32),
  ABISELECT(96,48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7719C13[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C9__A1__8S7719C13__8S7719C12[] = {
  ABISELECT(-144,-80),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S7719C13[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C9__A1__8S7719C12[] = {
  ABISELECT(-144,-80),
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C9[0]),
};
extern void _ZN8S7719C16D1Ev();
extern void _ZN8S7719C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7719C16__8S7719C12[] = {
  ABISELECT(-160,-88),
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S7719C16[0]),
  (VTBL_ENTRY)&_ZN8S7719C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7719C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7719C38S7719C16__8S7719C12[] = {
  ABISELECT(16,8),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C8__7S7719C38S7719C16__8S7719C12[] = {
  ABISELECT(-23,-11),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7719C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C8__8S7719C16__8S7719C12[] = {
  ABISELECT(-23,-11),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7719C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C9__8S7719C16__8S7719C12[] = {
  ABISELECT(-144,-80),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7719C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C8__8S7719C12[] = {
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C8[0]),
};
static  VTT_ENTRY vtt_S7719C12[] = {
  {&(_ZTV8S7719C12[9]),  9,36},
  {&(_tg__ZTV8S7719C15__8S7719C12[7]),  7,9},
  {&(_tg__ZTV7S7719C98S7719C15__A2__8S7719C12[3]),  3,3},
  {&(_tg__ZTV8S7719C16__8S7719C15__8S7719C12[7]),  7,9},
  {&(_tg__ZTV7S7719C8__8S7719C15__8S7719C12[3]),  3,3},
  {&(_tg__ZTV7S7719C9__8S7719C15__8S7719C12[3]),  3,3},
  {&(_ZTV8S7719C12[17]),  17,36},
  {&(_ZTV8S7719C12[21]),  21,36},
  {&(_ZTV8S7719C12[24]),  24,36},
  {&(_ZTV8S7719C12[31]),  31,36},
  {&(_ZTV8S7719C12[36]),  36,36},
  {&(_tg__ZTV8S7719C13__8S7719C12[6]),  6,6},
  {&(_tg__ZTV7S7719C98S7719C13__8S7719C12[3]),  3,3},
  {&(_tg__ZTV8S7719C148S7719C13__8S7719C12[4]),  4,4},
  {&(_tg__ZTV7S7719C9__8S7719C148S7719C13__8S7719C12[3]),  3,3},
  {&(_tg__ZTV8S7719C14__8S7719C13__8S7719C12[4]),  4,4},
  {&(_tg__ZTV7S7719C9__A1__8S7719C13__8S7719C12[3]),  3,3},
  {&(_tg__ZTV7S7719C9__A1__8S7719C12[3]),  3,3},
  {&(_tg__ZTV8S7719C16__8S7719C12[6]),  6,8},
  {&(_tg__ZTV7S7719C38S7719C16__8S7719C12[4]),  4,4},
  {&(_tg__ZTV7S7719C8__7S7719C38S7719C16__8S7719C12[3]),  3,3},
  {&(_tg__ZTV7S7719C8__8S7719C16__8S7719C12[3]),  3,3},
  {&(_tg__ZTV7S7719C9__8S7719C16__8S7719C12[3]),  3,3},
  {&(_tg__ZTV7S7719C8__8S7719C12[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7719C12[];
extern  VTBL_ENTRY _ZTV8S7719C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7719C12[];
static VTBL_ENTRY alt_thunk_names72[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7719C15D0Ev,_ZTv0_n28_N8S7719C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7719C15D0Ev,_ZThn88_N8S7719C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7719C15D1Ev,_ZTv0_n28_N8S7719C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7719C15D1Ev,_ZThn88_N8S7719C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7719C12D0Ev,_ZTv0_n28_N8S7719C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7719C12D0Ev,_ZThn88_N8S7719C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7719C12D1Ev,_ZTv0_n28_N8S7719C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7719C12D1Ev,_ZThn88_N8S7719C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7719C12 = {  "S7719C12", // class name
  bases_S7719C12, 32,
  &(vtc_S7719C12[0]), // expected_vtbl_contents
  &(vtt_S7719C12[0]), // expected_vtt_contents
  ABISELECT(192,104), // object size
  NSPAIRA(_ZTI8S7719C12),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7719C12),36, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7719C12),24, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names72,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7719C18  : virtual S7719C4_nt , virtual S7719C10 , S7719C3 {
  int s7719c18f0;
  virtual  ~S7719C18(); // _ZN8S7719C18D2Ev
  S7719C18(); // tgen
};
//SIG(-1 S7719C18) C1{ VBC2{ m Fc} VBC3{ VBC4{ m} VBC5{ BC2 BC6{ m} VBC4} VBC7{ BC8{ BC6 BC2} BC6 BC5 FL} BC9{ VBC2 BC4 BC8 VBC10{ BC6 BC4 VBC2 FC4}} VBC6 FL[2]} BC9 vd Fi}


 S7719C18 ::~S7719C18(){ note_dtor("S7719C18", this);}
S7719C18 ::S7719C18(){ note_ctor("S7719C18", this);} // tgen

static void Test_S7719C18()
{
  extern Class_Descriptor cd_S7719C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,19)];
    init_test(&cd_S7719C18, buf);
    S7719C18 *dp, &lv = *(dp=new (buf) S7719C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,72), "sizeof(S7719C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7719C18)");
    /*is_ambiguous_... S7719C18::S7719C4_nt */ AMB_check_base_class_offset(lv, (S7719C4_nt*), ABISELECT(16,12), "S7719C18");
    /*is_ambiguous_... S7719C3::S7719C4_nt */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S7719C3*)(S7719C10*), ABISELECT(16,12), "S7719C18");
    check_base_class_offset(lv, (S7719C4_nt*)(S7719C8*), ABISELECT(16,12), "S7719C18");
    /*is_ambiguous_... S7719C18::S7719C3 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S7719C3*), ABISELECT(16,12), "S7719C18");
    /*is_ambiguous_... S7719C10::S5266C29 */ AMB_check_base_class_offset(lv, (S5266C29*)(S7719C10*), ABISELECT(56,40), "S7719C18");
    /*is_ambiguous_... S7719C18::S7719C9 */ AMB_check_base_class_offset(lv, (S5266C29*)(S7719C9*), ABISELECT(56,40), "S7719C18");
    check_base_class_offset(lv, (S5266C29*)(S7719C9*)(S7719C11*), ABISELECT(56,40), "S7719C18");
    /*is_ambiguous_... S7719C18::S7719C9 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S7719C9*), ABISELECT(64,44), "S7719C18");
    /*is_ambiguous_... S7719C18::S7719C9 */ AMB_check_base_class_offset(lv, (S5266C26*)(S7719C9*), ABISELECT(56,40), "S7719C18");
    /*is_ambiguous_... S7719C10::S7719C9 */ AMB_check_base_class_offset(lv, (S7719C9*)(S7719C10*), ABISELECT(56,40), "S7719C18");
    check_base_class_offset(lv, (S5266C26*)(S7719C6*)(S7719C11*), ABISELECT(81,53), "S7719C18");
    check_base_class_offset(lv, (S7719C4_nt*)(S7719C6*)(S7719C11*), ABISELECT(81,53), "S7719C18");
    check_base_class_offset(lv, (S7719C6*)(S7719C11*), ABISELECT(81,53), "S7719C18");
    /*is_ambiguous_... S7719C11::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*)(S7719C11*), ABISELECT(82,54), "S7719C18");
    check_base_class_offset(lv, (S7719C4_nt*)(S7719C9*)(S7719C11*), ABISELECT(80,52), "S7719C18");
    check_base_class_offset(lv, (S5266C26*)(S7719C9*)(S7719C11*), ABISELECT(72,48), "S7719C18");
    check_base_class_offset(lv, (S7719C9*)(S7719C11*), ABISELECT(72,48), "S7719C18");
    check_base_class_offset(lv, (S7719C11*)(S7719C10*), ABISELECT(72,48), "S7719C18");
    /*is_ambiguous_... S7719C3::S5266C29 */ AMB_check_base_class_offset(lv, (S5266C29*)(S7719C3*)(S7719C10*), ABISELECT(24,16), "S7719C18");
    check_base_class_offset(lv, (S5266C26*)(S7719C6*)(S7719C3*)(S7719C10*), ABISELECT(32,20), "S7719C18");
    check_base_class_offset(lv, (S7719C4_nt*)(S7719C6*)(S7719C3*)(S7719C10*), ABISELECT(32,20), "S7719C18");
    check_base_class_offset(lv, (S7719C6*)(S7719C3*)(S7719C10*), ABISELECT(32,20), "S7719C18");
    check_base_class_offset(lv, (S5266C26*)(S7719C8*), ABISELECT(96,64), "S7719C18");
    check_base_class_offset(lv, (S5266C29*)(S7719C8*), ABISELECT(96,64), "S7719C18");
    check_base_class_offset(lv, (S7719C8*)(S7719C3*)(S7719C10*), ABISELECT(96,64), "S7719C18");
    /*is_ambiguous_... S7719C18::S7719C3 */ AMB_check_base_class_offset(lv, (S7719C8*)(S7719C3*), ABISELECT(96,64), "S7719C18");
    check_base_class_offset(lv, (S7719C3*)(S7719C10*), ABISELECT(24,16), "S7719C18");
    /*is_ambiguous_... S7719C10::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*)(S7719C10*), 0, "S7719C18");
    check_base_class_offset(lv, (S7719C10*), ABISELECT(24,16), "S7719C18");
    /*is_ambiguous_... S7719C18::S7719C3 */ AMB_check_base_class_offset(lv, (S5266C29*)(S7719C3*), 0, "S7719C18");
    /*is_ambiguous_... S7719C18::S7719C3 */ AMB_check_base_class_offset(lv, (S5266C26*)(S7719C6*)(S7719C3*), ABISELECT(8,4), "S7719C18");
    /*is_ambiguous_... S7719C18::S7719C3 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S7719C6*)(S7719C3*), ABISELECT(8,4), "S7719C18");
    /*is_ambiguous_... S7719C18::S7719C3 */ AMB_check_base_class_offset(lv, (S7719C6*)(S7719C3*), ABISELECT(8,4), "S7719C18");
    /*is_ambiguous_... S7719C18::S7719C3 */ AMB_check_base_class_offset(lv, (S7719C3*), 0, "S7719C18");
    check_field_offset(lv, s7719c18f0, ABISELECT(12,8), "S7719C18.s7719c18f0");
    test_class_info(&lv, &cd_S7719C18);
    dp->~S7719C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7719C18(Test_S7719C18, "S7719C18", ABISELECT(112,72));

#else // __cplusplus

extern void _ZN8S7719C18C1Ev();
extern void _ZN8S7719C18D2Ev();
Name_Map name_map_S7719C18[] = {
  NSPAIR(_ZN8S7719C18C1Ev),
  NSPAIR(_ZN8S7719C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C9;
extern VTBL_ENTRY _ZTI7S7719C9[];
extern  VTBL_ENTRY _ZTV7S7719C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C9[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S7719C6;
extern VTBL_ENTRY _ZTI7S7719C6[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C9;
extern VTBL_ENTRY _ZTI7S7719C9[];
extern  VTBL_ENTRY _ZTV7S7719C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C9[];
extern Class_Descriptor cd_S7719C11;
extern VTBL_ENTRY _ZTI8S7719C11[];
extern  VTBL_ENTRY _ZTV8S7719C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7719C11[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S7719C6;
extern VTBL_ENTRY _ZTI7S7719C6[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S7719C8;
extern VTBL_ENTRY _ZTI7S7719C8[];
extern  VTBL_ENTRY _ZTV7S7719C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C8[];
extern Class_Descriptor cd_S7719C3;
extern VTBL_ENTRY _ZTI7S7719C3[];
extern  VTBL_ENTRY _ZTV7S7719C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C3[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C10;
extern VTBL_ENTRY _ZTI8S7719C10[];
extern  VTBL_ENTRY _ZTV8S7719C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7719C10[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S7719C6;
extern VTBL_ENTRY _ZTI7S7719C6[];
extern Class_Descriptor cd_S7719C3;
extern VTBL_ENTRY _ZTI7S7719C3[];
extern  VTBL_ENTRY _ZTV7S7719C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C3[];
static Base_Class bases_S7719C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7719C4_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5266C29,    ABISELECT(56,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7719C4_nt,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(56,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7719C9,    ABISELECT(56,40), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S5266C26,    ABISELECT(81,53), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(81,53), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7719C6,    ABISELECT(81,53), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(82,54), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(72,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7719C9,    ABISELECT(72,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7719C11,    ABISELECT(72,48), //bcp->offset
    22, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S5266C29,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7719C6,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S5266C29,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7719C8,    ABISELECT(96,64), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7719C3,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7719C10,    ABISELECT(24,16), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7719C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7719C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7719C18[];
extern void _ZN8S7719C18D1Ev();
extern void _ZN8S7719C18D0Ev();
static  VTBL_ENTRY vtc_S7719C18[] = {
  0,
  ABISELECT(72,48),
  ABISELECT(56,40),
  ABISELECT(56,40),
  ABISELECT(24,16),
  ABISELECT(96,64),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7719C18[0]),
  (VTBL_ENTRY)&_ZN8S7719C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7719C18D0Ev,
  ABISELECT(-24,-16),
  ABISELECT(48,32),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(72,48),
  ABISELECT(-8,-4),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7719C18[0]),
  0,
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI8S7719C18[0]),
  ABISELECT(-16,-8),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI8S7719C18[0]),
  ABISELECT(-80,-52),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S7719C18[0]),
};
extern VTBL_ENTRY _ZTV8S7719C18[];
static  VTBL_ENTRY _tg__ZTV7S7719C3__A1__8S7719C18[] = {
  ABISELECT(96,64),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C8__7S7719C3__A1__8S7719C18[] = {
  ABISELECT(-80,-52),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI7S7719C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7719C10__8S7719C18[] = {
  ABISELECT(-24,-16),
  ABISELECT(48,32),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(72,48),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7719C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C38S7719C10__8S7719C18[] = {
  ABISELECT(72,48),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C8__7S7719C38S7719C10__8S7719C18[] = {
  ABISELECT(-80,-52),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI7S7719C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C9__8S7719C10__8S7719C18[] = {
  0,
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S7719C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7719C11__8S7719C10__8S7719C18[] = {
  ABISELECT(-16,-8),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S7719C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C8__8S7719C10__8S7719C18[] = {
  ABISELECT(-80,-52),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI8S7719C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C9__8S7719C18[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7719C11__8S7719C18[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7719C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C98S7719C11__A1__8S7719C18[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C8__8S7719C18[] = {
  ABISELECT(-80,-52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C8[0]),
};
static  VTT_ENTRY vtt_S7719C18[] = {
  {&(_ZTV8S7719C18[9]),  9,28},
  {&(_tg__ZTV7S7719C3__A1__8S7719C18[4]),  4,4},
  {&(_tg__ZTV7S7719C8__7S7719C3__A1__8S7719C18[3]),  3,3},
  {&(_ZTV8S7719C18[19]),  19,28},
  {&(_ZTV8S7719C18[22]),  22,28},
  {&(_ZTV8S7719C18[25]),  25,28},
  {&(_ZTV8S7719C18[28]),  28,28},
  {&(_tg__ZTV8S7719C10__8S7719C18[8]),  8,8},
  {&(_tg__ZTV7S7719C38S7719C10__8S7719C18[4]),  4,4},
  {&(_tg__ZTV7S7719C8__7S7719C38S7719C10__8S7719C18[3]),  3,3},
  {&(_tg__ZTV7S7719C9__8S7719C10__8S7719C18[3]),  3,3},
  {&(_tg__ZTV8S7719C11__8S7719C10__8S7719C18[3]),  3,3},
  {&(_tg__ZTV7S7719C8__8S7719C10__8S7719C18[3]),  3,3},
  {&(_tg__ZTV7S7719C9__8S7719C18[3]),  3,3},
  {&(_tg__ZTV8S7719C11__8S7719C18[3]),  3,3},
  {&(_tg__ZTV7S7719C98S7719C11__A1__8S7719C18[3]),  3,3},
  {&(_tg__ZTV7S7719C8__8S7719C18[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7719C18[];
extern  VTBL_ENTRY _ZTV8S7719C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7719C18[];
Class_Descriptor cd_S7719C18 = {  "S7719C18", // class name
  bases_S7719C18, 28,
  &(vtc_S7719C18[0]), // expected_vtbl_contents
  &(vtt_S7719C18[0]), // expected_vtt_contents
  ABISELECT(112,72), // object size
  NSPAIRA(_ZTI8S7719C18),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7719C18),28, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7719C18),17, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7719C1  : S7719C2 , S7719C12 , S7719C18 , S7719C8 {
  ~S7719C1(); // tgen
  S7719C1(); // tgen
};
//SIG(1 S7719C1) C1{ BC2{ VBC3{ VBC4{ m Fc} BC5{ m} BC6{ BC7{ m} BC4} VBC8{ BC7 BC5 VBC4 FC5}} VBC9{ BC4 BC7 VBC5} BC8 VBC10{ VBC5 VBC9 VBC11{ BC6 BC7 BC9 FL} BC3 VBC7 FL[2]}} BC12{ BC6 VBC13{ BC9 BC14{ VBC9 FD Fp[8]} VBC7 VBC4} BC15{ BC6 VBC16{ BC7 BC3 VBC9 vd} BC9 vd Fi} BC17{ m Fi} vd Fi} BC18{ VBC4 VBC10 BC3 vd Fi} BC8}


S7719C1 ::~S7719C1(){ note_dtor("S7719C1", this);} // tgen
S7719C1 ::S7719C1(){ note_ctor("S7719C1", this);} // tgen

static void Test_S7719C1()
{
  extern Class_Descriptor cd_S7719C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,47)];
    init_test(&cd_S7719C1, buf);
    S7719C1 *dp, &lv = *(dp=new (buf) S7719C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,184), "sizeof(S7719C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7719C1)");
    /*is_ambiguous_... S7719C1::S7719C3 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S7719C3*), ABISELECT(89,57), "S7719C1");
    /*is_ambiguous_... S7719C1::S7719C8 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S7719C8*), ABISELECT(89,57), "S7719C1");
    /*is_ambiguous_... S7719C2::S7719C8 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S7719C8*)(S7719C2*), ABISELECT(89,57), "S7719C1");
    /*is_ambiguous_... S7719C3::S7719C4_nt */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S7719C3*)(S7719C10*), ABISELECT(89,57), "S7719C1");
    /*is_ambiguous_... S7719C13::S7719C4_nt */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S7719C13*), ABISELECT(89,57), "S7719C1");
    /*is_ambiguous_... S7719C3::S7719C4_nt */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S7719C3*)(S7719C16*), ABISELECT(89,57), "S7719C1");
    /*is_ambiguous_... S7719C18::S7719C4_nt */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S7719C18*), ABISELECT(89,57), "S7719C1");
    /*is_ambiguous_... S7719C18::S7719C3 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S7719C3*)(S7719C18*), ABISELECT(89,57), "S7719C1");
    /*is_ambiguous_... S7719C1::S7719C8 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S7719C8*), ABISELECT(89,57), "S7719C1");
    /*is_ambiguous_... S7719C1::S7719C3 */ AMB_check_base_class_offset(lv, (S5266C29*)(S7719C3*), ABISELECT(80,52), "S7719C1");
    /*is_ambiguous_... S7719C1::S7719C3 */ AMB_check_base_class_offset(lv, (S5266C26*)(S7719C6*)(S7719C3*), ABISELECT(88,56), "S7719C1");
    /*is_ambiguous_... S7719C1::S7719C3 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S7719C6*)(S7719C3*), ABISELECT(88,56), "S7719C1");
    /*is_ambiguous_... S7719C1::S7719C3 */ AMB_check_base_class_offset(lv, (S7719C6*)(S7719C3*), ABISELECT(88,56), "S7719C1");
    /*is_ambiguous_... S7719C1::S7719C8 */ AMB_check_base_class_offset(lv, (S5266C26*)(S7719C8*), ABISELECT(96,60), "S7719C1");
    /*is_ambiguous_... S7719C1::S7719C8 */ AMB_check_base_class_offset(lv, (S5266C29*)(S7719C8*), ABISELECT(96,60), "S7719C1");
    /*is_ambiguous_... S7719C1::S7719C3 */ AMB_check_base_class_offset(lv, (S7719C8*)(S7719C3*), ABISELECT(96,60), "S7719C1");
    check_base_class_offset(lv, (S7719C8*)(S7719C3*)(S7719C10*), ABISELECT(96,60), "S7719C1");
    check_base_class_offset(lv, (S7719C8*)(S7719C3*)(S7719C16*), ABISELECT(96,60), "S7719C1");
    /*is_ambiguous_... S7719C18::S7719C3 */ AMB_check_base_class_offset(lv, (S7719C8*)(S7719C3*)(S7719C18*), ABISELECT(96,60), "S7719C1");
    /*is_ambiguous_... S7719C2::S7719C3 */ AMB_check_base_class_offset(lv, (S7719C3*)(S7719C2*), ABISELECT(80,52), "S7719C1");
    /*is_ambiguous_... S7719C1::S7719C9 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S7719C9*), ABISELECT(120,72), "S7719C1");
    /*is_ambiguous_... S7719C1::S7719C9 */ AMB_check_base_class_offset(lv, (S5266C26*)(S7719C9*), ABISELECT(112,68), "S7719C1");
    /*is_ambiguous_... S7719C1::S7719C9 */ AMB_check_base_class_offset(lv, (S5266C29*)(S7719C9*), ABISELECT(121,73), "S7719C1");
    /*is_ambiguous_... S7719C10::S5266C29 */ AMB_check_base_class_offset(lv, (S5266C29*)(S7719C10*), ABISELECT(121,73), "S7719C1");
    check_base_class_offset(lv, (S5266C29*)(S7719C9*)(S7719C11*), ABISELECT(121,73), "S7719C1");
    /*is_ambiguous_... S7719C13::S7719C9 */ AMB_check_base_class_offset(lv, (S5266C29*)(S7719C9*)(S7719C13*), ABISELECT(121,73), "S7719C1");
    /*is_ambiguous_... S7719C15::S7719C9 */ AMB_check_base_class_offset(lv, (S5266C29*)(S7719C9*)(S7719C15*)(S7719C12*), ABISELECT(121,73), "S7719C1");
    /*is_ambiguous_... S7719C2::S7719C9 */ AMB_check_base_class_offset(lv, (S7719C9*)(S7719C2*), ABISELECT(112,68), "S7719C1");
    /*is_ambiguous_... S7719C10::S7719C9 */ AMB_check_base_class_offset(lv, (S7719C9*)(S7719C10*), ABISELECT(112,68), "S7719C1");
    check_base_class_offset(lv, (S7719C9*)(S7719C14*)(S7719C13*), ABISELECT(112,68), "S7719C1");
    check_base_class_offset(lv, (S7719C9*)(S7719C16*), ABISELECT(112,68), "S7719C1");
    /*is_ambiguous_... S7719C2::S7719C8 */ AMB_check_base_class_offset(lv, (S5266C26*)(S7719C8*)(S7719C2*), 0, "S7719C1");
    /*is_ambiguous_... S7719C2::S7719C8 */ AMB_check_base_class_offset(lv, (S5266C29*)(S7719C8*)(S7719C2*), 0, "S7719C1");
    /*is_ambiguous_... S7719C2::S7719C8 */ AMB_check_base_class_offset(lv, (S7719C8*)(S7719C2*), 0, "S7719C1");
    check_base_class_offset(lv, (S5266C26*)(S7719C6*)(S7719C11*), ABISELECT(169,105), "S7719C1");
    check_base_class_offset(lv, (S7719C4_nt*)(S7719C6*)(S7719C11*), ABISELECT(169,105), "S7719C1");
    check_base_class_offset(lv, (S7719C6*)(S7719C11*), ABISELECT(169,105), "S7719C1");
    /*is_ambiguous_... S7719C11::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*)(S7719C11*), ABISELECT(170,106), "S7719C1");
    check_base_class_offset(lv, (S7719C4_nt*)(S7719C9*)(S7719C11*), ABISELECT(168,104), "S7719C1");
    check_base_class_offset(lv, (S5266C26*)(S7719C9*)(S7719C11*), ABISELECT(160,100), "S7719C1");
    check_base_class_offset(lv, (S7719C9*)(S7719C11*), ABISELECT(160,100), "S7719C1");
    check_base_class_offset(lv, (S7719C11*)(S7719C10*), ABISELECT(160,100), "S7719C1");
    /*is_ambiguous_... S7719C3::S5266C29 */ AMB_check_base_class_offset(lv, (S5266C29*)(S7719C3*)(S7719C10*), ABISELECT(128,76), "S7719C1");
    check_base_class_offset(lv, (S5266C26*)(S7719C6*)(S7719C3*)(S7719C10*), ABISELECT(136,80), "S7719C1");
    check_base_class_offset(lv, (S7719C4_nt*)(S7719C6*)(S7719C3*)(S7719C10*), ABISELECT(136,80), "S7719C1");
    check_base_class_offset(lv, (S7719C6*)(S7719C3*)(S7719C10*), ABISELECT(136,80), "S7719C1");
    check_base_class_offset(lv, (S7719C3*)(S7719C10*), ABISELECT(128,76), "S7719C1");
    /*is_ambiguous_... S7719C10::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*)(S7719C10*), ABISELECT(184,116), "S7719C1");
    /*is_ambiguous_... S7719C13::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*)(S7719C13*), ABISELECT(184,116), "S7719C1");
    check_base_class_offset(lv, (S7719C10*)(S7719C2*), ABISELECT(128,76), "S7719C1");
    check_base_class_offset(lv, (S7719C10*)(S7719C18*), ABISELECT(128,76), "S7719C1");
    check_base_class_offset(lv, (S7719C2*), 0, "S7719C1");
    /*is_ambiguous_... S7719C12::S7719C6 */ AMB_check_base_class_offset(lv, (S5266C26*)(S7719C6*)(S7719C12*), ABISELECT(32,20), "S7719C1");
    /*is_ambiguous_... S7719C12::S7719C6 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S7719C6*)(S7719C12*), ABISELECT(32,20), "S7719C1");
    /*is_ambiguous_... S7719C12::S7719C6 */ AMB_check_base_class_offset(lv, (S7719C6*)(S7719C12*), ABISELECT(32,20), "S7719C1");
    /*is_ambiguous_... S7719C13::S7719C9 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S7719C9*)(S7719C13*), ABISELECT(200,124), "S7719C1");
    /*is_ambiguous_... S7719C13::S7719C9 */ AMB_check_base_class_offset(lv, (S5266C26*)(S7719C9*)(S7719C13*), ABISELECT(192,120), "S7719C1");
    /*is_ambiguous_... S7719C13::S7719C9 */ AMB_check_base_class_offset(lv, (S7719C9*)(S7719C13*), ABISELECT(192,120), "S7719C1");
    check_base_class_offset(lv, (S7719C14*)(S7719C13*), ABISELECT(208,128), "S7719C1");
    check_base_class_offset(lv, (S7719C13*)(S7719C12*), ABISELECT(192,120), "S7719C1");
    /*is_ambiguous_... S7719C15::S7719C6 */ AMB_check_base_class_offset(lv, (S5266C26*)(S7719C6*)(S7719C15*)(S7719C12*), ABISELECT(25,13), "S7719C1");
    /*is_ambiguous_... S7719C15::S7719C6 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S7719C6*)(S7719C15*)(S7719C12*), ABISELECT(25,13), "S7719C1");
    /*is_ambiguous_... S7719C15::S7719C6 */ AMB_check_base_class_offset(lv, (S7719C6*)(S7719C15*)(S7719C12*), ABISELECT(25,13), "S7719C1");
    /*is_ambiguous_... S7719C16::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*)(S7719C16*), ABISELECT(304,176), "S7719C1");
    /*is_ambiguous_... S7719C3::S5266C29 */ AMB_check_base_class_offset(lv, (S5266C29*)(S7719C3*)(S7719C16*), ABISELECT(304,176), "S7719C1");
    check_base_class_offset(lv, (S5266C26*)(S7719C6*)(S7719C3*)(S7719C16*), ABISELECT(312,180), "S7719C1");
    check_base_class_offset(lv, (S7719C4_nt*)(S7719C6*)(S7719C3*)(S7719C16*), ABISELECT(312,180), "S7719C1");
    check_base_class_offset(lv, (S7719C6*)(S7719C3*)(S7719C16*), ABISELECT(312,180), "S7719C1");
    check_base_class_offset(lv, (S7719C3*)(S7719C16*), ABISELECT(304,176), "S7719C1");
    check_base_class_offset(lv, (S7719C16*)(S7719C15*)(S7719C12*), ABISELECT(304,176), "S7719C1");
    /*is_ambiguous_... S7719C15::S7719C9 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S7719C9*)(S7719C15*)(S7719C12*), ABISELECT(24,12), "S7719C1");
    /*is_ambiguous_... S7719C15::S7719C9 */ AMB_check_base_class_offset(lv, (S5266C26*)(S7719C9*)(S7719C15*)(S7719C12*), ABISELECT(16,8), "S7719C1");
    /*is_ambiguous_... S7719C15::S7719C9 */ AMB_check_base_class_offset(lv, (S7719C9*)(S7719C15*)(S7719C12*), ABISELECT(16,8), "S7719C1");
    check_base_class_offset(lv, (S7719C15*)(S7719C12*), ABISELECT(16,8), "S7719C1");
    check_base_class_offset(lv, (S7719C17_nt*)(S7719C12*), ABISELECT(36,24), "S7719C1");
    check_base_class_offset(lv, (S7719C12*), ABISELECT(16,8), "S7719C1");
    /*is_ambiguous_... S7719C18::S7719C3 */ AMB_check_base_class_offset(lv, (S5266C29*)(S7719C3*)(S7719C18*), ABISELECT(48,32), "S7719C1");
    /*is_ambiguous_... S7719C18::S7719C3 */ AMB_check_base_class_offset(lv, (S5266C26*)(S7719C6*)(S7719C3*)(S7719C18*), ABISELECT(56,36), "S7719C1");
    /*is_ambiguous_... S7719C18::S7719C3 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S7719C6*)(S7719C3*)(S7719C18*), ABISELECT(56,36), "S7719C1");
    /*is_ambiguous_... S7719C18::S7719C3 */ AMB_check_base_class_offset(lv, (S7719C6*)(S7719C3*)(S7719C18*), ABISELECT(56,36), "S7719C1");
    /*is_ambiguous_... S7719C18::S7719C3 */ AMB_check_base_class_offset(lv, (S7719C3*)(S7719C18*), ABISELECT(48,32), "S7719C1");
    check_base_class_offset(lv, (S7719C18*), ABISELECT(48,32), "S7719C1");
    /*is_ambiguous_... S7719C1::S7719C8 */ AMB_check_base_class_offset(lv, (S5266C26*)(S7719C8*), ABISELECT(64,44), "S7719C1");
    /*is_ambiguous_... S7719C1::S7719C8 */ AMB_check_base_class_offset(lv, (S5266C29*)(S7719C8*), ABISELECT(64,44), "S7719C1");
    /*is_ambiguous_... S7719C1::S7719C8 */ AMB_check_base_class_offset(lv, (S7719C8*), ABISELECT(64,44), "S7719C1");
    test_class_info(&lv, &cd_S7719C1);
    dp->~S7719C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7719C1(Test_S7719C1, "S7719C1", ABISELECT(320,184));

#else // __cplusplus

extern void _ZN7S7719C1C1Ev();
extern void _ZN7S7719C1D1Ev();
Name_Map name_map_S7719C1[] = {
  NSPAIR(_ZN7S7719C1C1Ev),
  NSPAIR(_ZN7S7719C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S7719C6;
extern VTBL_ENTRY _ZTI7S7719C6[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S7719C8;
extern VTBL_ENTRY _ZTI7S7719C8[];
extern  VTBL_ENTRY _ZTV7S7719C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C8[];
extern Class_Descriptor cd_S7719C3;
extern VTBL_ENTRY _ZTI7S7719C3[];
extern  VTBL_ENTRY _ZTV7S7719C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C3[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S7719C9;
extern VTBL_ENTRY _ZTI7S7719C9[];
extern  VTBL_ENTRY _ZTV7S7719C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C9[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S7719C8;
extern VTBL_ENTRY _ZTI7S7719C8[];
extern  VTBL_ENTRY _ZTV7S7719C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C8[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S7719C6;
extern VTBL_ENTRY _ZTI7S7719C6[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C9;
extern VTBL_ENTRY _ZTI7S7719C9[];
extern  VTBL_ENTRY _ZTV7S7719C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C9[];
extern Class_Descriptor cd_S7719C11;
extern VTBL_ENTRY _ZTI8S7719C11[];
extern  VTBL_ENTRY _ZTV8S7719C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7719C11[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S7719C6;
extern VTBL_ENTRY _ZTI7S7719C6[];
extern Class_Descriptor cd_S7719C3;
extern VTBL_ENTRY _ZTI7S7719C3[];
extern  VTBL_ENTRY _ZTV7S7719C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C3[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C10;
extern VTBL_ENTRY _ZTI8S7719C10[];
extern  VTBL_ENTRY _ZTV8S7719C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7719C10[];
extern Class_Descriptor cd_S7719C2;
extern VTBL_ENTRY _ZTI7S7719C2[];
extern  VTBL_ENTRY _ZTV7S7719C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C2[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S7719C6;
extern VTBL_ENTRY _ZTI7S7719C6[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C9;
extern VTBL_ENTRY _ZTI7S7719C9[];
extern  VTBL_ENTRY _ZTV7S7719C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C9[];
extern Class_Descriptor cd_S7719C14;
extern VTBL_ENTRY _ZTI8S7719C14[];
extern  VTBL_ENTRY _ZTV8S7719C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7719C14[];
extern Class_Descriptor cd_S7719C13;
extern VTBL_ENTRY _ZTI8S7719C13[];
extern  VTBL_ENTRY _ZTV8S7719C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7719C13[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S7719C6;
extern VTBL_ENTRY _ZTI7S7719C6[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S7719C6;
extern VTBL_ENTRY _ZTI7S7719C6[];
extern Class_Descriptor cd_S7719C3;
extern VTBL_ENTRY _ZTI7S7719C3[];
extern  VTBL_ENTRY _ZTV7S7719C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C3[];
extern Class_Descriptor cd_S7719C16;
extern VTBL_ENTRY _ZTI8S7719C16[];
extern  VTBL_ENTRY _ZTV8S7719C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7719C16[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C9;
extern VTBL_ENTRY _ZTI7S7719C9[];
extern  VTBL_ENTRY _ZTV7S7719C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C9[];
extern Class_Descriptor cd_S7719C15;
extern VTBL_ENTRY _ZTI8S7719C15[];
extern  VTBL_ENTRY _ZTV8S7719C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7719C15[];
extern Class_Descriptor cd_S7719C17_nt;
extern VTBL_ENTRY _ZTI11S7719C17_nt[];
extern Class_Descriptor cd_S7719C12;
extern VTBL_ENTRY _ZTI8S7719C12[];
extern  VTBL_ENTRY _ZTV8S7719C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7719C12[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S7719C6;
extern VTBL_ENTRY _ZTI7S7719C6[];
extern Class_Descriptor cd_S7719C3;
extern VTBL_ENTRY _ZTI7S7719C3[];
extern  VTBL_ENTRY _ZTV7S7719C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C3[];
extern Class_Descriptor cd_S7719C18;
extern VTBL_ENTRY _ZTI8S7719C18[];
extern  VTBL_ENTRY _ZTV8S7719C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7719C18[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S7719C8;
extern VTBL_ENTRY _ZTI7S7719C8[];
extern  VTBL_ENTRY _ZTV7S7719C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C8[];
static Base_Class bases_S7719C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7719C4_nt,    ABISELECT(89,57), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S5266C29,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(88,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(88,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7719C6,    ABISELECT(88,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(96,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S5266C29,    ABISELECT(96,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7719C8,    ABISELECT(96,60), //bcp->offset
    43, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7719C3,    ABISELECT(80,52), //bcp->offset
    39, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S7719C4_nt,    ABISELECT(120,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(112,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S5266C29,    ABISELECT(121,73), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S7719C9,    ABISELECT(112,68), //bcp->offset
    46, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7719C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(169,105), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(169,105), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7719C6,    ABISELECT(169,105), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(170,106), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(168,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(160,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7719C9,    ABISELECT(160,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7719C11,    ABISELECT(160,100), //bcp->offset
    57, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S5266C29,    ABISELECT(128,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(136,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(136,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7719C6,    ABISELECT(136,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S7719C3,    ABISELECT(128,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(184,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S7719C10,    ABISELECT(128,76), //bcp->offset
    49, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S7719C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C26,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S7719C6,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(200,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(192,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7719C9,    ABISELECT(192,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7719C14,    ABISELECT(208,128), //bcp->offset
    66, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7719C13,    ABISELECT(192,120), //bcp->offset
    60, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    55, //immediately_derived
  0, 1},
  {&cd_S5266C26,    ABISELECT(25,13), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(25,13), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S7719C6,    ABISELECT(25,13), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(304,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S5266C29,    ABISELECT(304,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(312,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(312,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S7719C6,    ABISELECT(312,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S7719C3,    ABISELECT(304,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S7719C16,    ABISELECT(304,176), //bcp->offset
    70, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    53, //immediately_derived
  0, 1},
  {&cd_S7719C4_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S7719C9,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S7719C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S7719C17_nt,    ABISELECT(36,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S7719C12,    ABISELECT(16,8), //bcp->offset
    14, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C29,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    59, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    59, //immediately_derived
  0, 0},
  {&cd_S7719C6,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S7719C3,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    61, //immediately_derived
  0, 0},
  {&cd_S7719C18,    ABISELECT(48,32), //bcp->offset
    25, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C26,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S5266C29,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S7719C8,    ABISELECT(64,44), //bcp->offset
    36, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7719C1[];
extern void _ZN7S7719C1D1Ev();
extern void _ZN7S7719C1D0Ev();
extern void ABISELECT(_ZThn16_N7S7719C1D1Ev,_ZThn8_N7S7719C1D1Ev)();
extern void ABISELECT(_ZThn16_N7S7719C1D0Ev,_ZThn8_N7S7719C1D0Ev)();
extern void ABISELECT(_ZThn48_N7S7719C1D1Ev,_ZThn32_N7S7719C1D1Ev)();
extern void ABISELECT(_ZThn48_N7S7719C1D0Ev,_ZThn32_N7S7719C1D0Ev)();
extern void ABISELECT(_ZTv0_n56_N7S7719C1D1Ev,_ZTv0_n28_N7S7719C1D1Ev)();
extern void ABISELECT(_ZThn304_N7S7719C1D1Ev,_ZThn176_N7S7719C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7719C1D0Ev,_ZTv0_n28_N7S7719C1D0Ev)();
extern void ABISELECT(_ZThn304_N7S7719C1D0Ev,_ZThn176_N7S7719C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7719C1[] = {
  ABISELECT(304,176),
  ABISELECT(192,120),
  ABISELECT(184,116),
  ABISELECT(160,100),
  ABISELECT(128,76),
  ABISELECT(121,73),
  ABISELECT(112,68),
  ABISELECT(96,60),
  ABISELECT(80,52),
  ABISELECT(89,57),
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C1[0]),
  (VTBL_ENTRY)&_ZN7S7719C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7719C1D0Ev,
  ABISELECT(168,108),
  ABISELECT(176,112),
  ABISELECT(96,60),
  ABISELECT(80,52),
  ABISELECT(73,49),
  ABISELECT(288,168),
  ABISELECT(105,65),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7719C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S7719C1D1Ev,_ZThn8_N7S7719C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S7719C1D0Ev,_ZThn8_N7S7719C1D0Ev),
  ABISELECT(136,84),
  ABISELECT(112,68),
  ABISELECT(64,36),
  ABISELECT(73,41),
  ABISELECT(80,44),
  ABISELECT(48,28),
  ABISELECT(41,25),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S7719C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7719C1D1Ev,_ZThn32_N7S7719C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7719C1D0Ev,_ZThn32_N7S7719C1D0Ev),
  ABISELECT(25,13),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI7S7719C1[0]),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI7S7719C1[0]),
  ABISELECT(-7,-3),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S7719C1[0]),
  ABISELECT(9,5),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI7S7719C1[0]),
  ABISELECT(56,40),
  ABISELECT(32,24),
  ABISELECT(-16,-8),
  ABISELECT(-7,-3),
  ABISELECT(-32,-16),
  ABISELECT(-39,-19),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI7S7719C1[0]),
  ABISELECT(-39,-27),
  ABISELECT(-160,-100),
  (VTBL_ENTRY)&(_ZTI7S7719C1[0]),
  ABISELECT(-103,-63),
  ABISELECT(-8,-4),
  ABISELECT(-80,-52),
  ABISELECT(-71,-47),
  ABISELECT(-192,-120),
  (VTBL_ENTRY)&(_ZTI7S7719C1[0]),
  ABISELECT(-87,-55),
  ABISELECT(-96,-60),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI7S7719C1[0]),
  ABISELECT(-304,-176),
  ABISELECT(-183,-103),
  ABISELECT(-192,-108),
  ABISELECT(-208,-116),
  ABISELECT(-215,-119),
  ABISELECT(-304,-176),
  (VTBL_ENTRY)&(_ZTI7S7719C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7719C1D1Ev,_ZTv0_n28_N7S7719C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7719C1D0Ev,_ZTv0_n28_N7S7719C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S7719C1[];
static  VTBL_ENTRY _tg__ZTV7S7719C2__7S7719C1[] = {
  ABISELECT(184,116),
  ABISELECT(160,100),
  ABISELECT(128,76),
  ABISELECT(121,73),
  ABISELECT(112,68),
  ABISELECT(96,60),
  ABISELECT(80,52),
  ABISELECT(89,57),
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C2[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C87S7719C2__A1__7S7719C1[] = {
  ABISELECT(89,57),
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C3__7S7719C2__7S7719C1[] = {
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI7S7719C2[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C8__7S7719C2__7S7719C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S7719C2[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C9__7S7719C2__7S7719C1[] = {
  ABISELECT(9,5),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI7S7719C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7719C10__7S7719C2__7S7719C1[] = {
  ABISELECT(56,40),
  ABISELECT(32,24),
  ABISELECT(-16,-8),
  ABISELECT(-7,-3),
  ABISELECT(-32,-16),
  ABISELECT(-39,-19),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI7S7719C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7719C11__7S7719C2__7S7719C1[] = {
  ABISELECT(-39,-27),
  ABISELECT(-160,-100),
  (VTBL_ENTRY)&(_ZTI7S7719C2[0]),
};
extern void _ZN8S7719C12D1Ev();
extern void _ZN8S7719C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7719C12__7S7719C1[] = {
  ABISELECT(168,108),
  ABISELECT(176,112),
  ABISELECT(96,60),
  ABISELECT(80,52),
  ABISELECT(73,49),
  ABISELECT(288,168),
  ABISELECT(105,65),
  0,
  (VTBL_ENTRY)&(_ZTI8S7719C12[0]),
  (VTBL_ENTRY)&_ZN8S7719C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7719C12D0Ev,
};
extern void _ZN8S7719C15D1Ev();
extern void _ZN8S7719C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7719C158S7719C12__7S7719C1[] = {
  ABISELECT(96,60),
  ABISELECT(80,52),
  ABISELECT(73,49),
  ABISELECT(288,168),
  ABISELECT(105,65),
  0,
  (VTBL_ENTRY)&(_ZTI8S7719C15[0]),
  (VTBL_ENTRY)&_ZN8S7719C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7719C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7719C98S7719C158S7719C12__A3__7S7719C1[] = {
  ABISELECT(105,65),
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C9[0]),
};
extern void ABISELECT(_ZTv0_n56_N8S7719C15D1Ev,_ZTv0_n28_N8S7719C15D1Ev)();
extern void ABISELECT(_ZThn288_N8S7719C15D1Ev,_ZThn168_N8S7719C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7719C15D0Ev,_ZTv0_n28_N8S7719C15D0Ev)();
extern void ABISELECT(_ZThn288_N8S7719C15D0Ev,_ZThn168_N8S7719C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7719C16__8S7719C158S7719C12__7S7719C1[] = {
  ABISELECT(-288,-168),
  ABISELECT(-183,-103),
  ABISELECT(-192,-108),
  ABISELECT(-208,-116),
  ABISELECT(-215,-119),
  ABISELECT(-288,-168),
  (VTBL_ENTRY)&(_ZTI8S7719C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7719C15D1Ev,_ZTv0_n28_N8S7719C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7719C15D0Ev,_ZTv0_n28_N8S7719C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7719C8__8S7719C158S7719C12__7S7719C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S7719C15[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C9__8S7719C158S7719C12__7S7719C1[] = {
  ABISELECT(9,5),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S7719C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7719C13__8S7719C12__7S7719C1[] = {
  ABISELECT(-103,-63),
  ABISELECT(-8,-4),
  ABISELECT(-80,-52),
  ABISELECT(-71,-47),
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI8S7719C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7719C148S7719C13__8S7719C12__7S7719C1[] = {
  ABISELECT(-87,-55),
  ABISELECT(-96,-60),
  ABISELECT(-192,-120),
  (VTBL_ENTRY)&(_ZTI8S7719C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C9__A1__8S7719C12__7S7719C1[] = {
  ABISELECT(9,5),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S7719C12[0]),
};
extern void ABISELECT(_ZTv0_n56_N8S7719C12D1Ev,_ZTv0_n28_N8S7719C12D1Ev)();
extern void ABISELECT(_ZThn288_N8S7719C12D1Ev,_ZThn168_N8S7719C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7719C12D0Ev,_ZTv0_n28_N8S7719C12D0Ev)();
extern void ABISELECT(_ZThn288_N8S7719C12D0Ev,_ZThn168_N8S7719C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7719C16__8S7719C12__7S7719C1[] = {
  ABISELECT(-288,-168),
  ABISELECT(-183,-103),
  ABISELECT(-192,-108),
  ABISELECT(-208,-116),
  ABISELECT(-215,-119),
  ABISELECT(-288,-168),
  (VTBL_ENTRY)&(_ZTI8S7719C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7719C12D1Ev,_ZTv0_n28_N8S7719C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7719C12D0Ev,_ZTv0_n28_N8S7719C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7719C8__8S7719C12__7S7719C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S7719C12[0]),
};
extern void _ZN8S7719C18D1Ev();
extern void _ZN8S7719C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7719C18__7S7719C1[] = {
  ABISELECT(136,84),
  ABISELECT(112,68),
  ABISELECT(64,36),
  ABISELECT(73,41),
  ABISELECT(80,44),
  ABISELECT(48,28),
  ABISELECT(41,25),
  0,
  (VTBL_ENTRY)&(_ZTI8S7719C18[0]),
  (VTBL_ENTRY)&_ZN8S7719C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7719C18D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7719C38S7719C18__A3__7S7719C1[] = {
  ABISELECT(48,28),
  ABISELECT(41,25),
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C8__7S7719C38S7719C18__A3__7S7719C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7719C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7719C10__8S7719C18__7S7719C1[] = {
  ABISELECT(56,40),
  ABISELECT(32,24),
  ABISELECT(-16,-8),
  ABISELECT(-7,-3),
  ABISELECT(-32,-16),
  ABISELECT(-39,-19),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7719C18[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C9__8S7719C18__7S7719C1[] = {
  ABISELECT(9,5),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7719C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7719C11__8S7719C18__7S7719C1[] = {
  ABISELECT(-39,-27),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S7719C18[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C8__8S7719C18__7S7719C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7719C18[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C8__A__7S7719C1[] = {
  ABISELECT(25,13),
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C3__7S7719C1[] = {
  ABISELECT(16,8),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C8__7S7719C3__7S7719C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7719C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C8__7S7719C1[] = {
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C9__7S7719C1[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7719C10__7S7719C1[] = {
  ABISELECT(56,40),
  ABISELECT(32,24),
  ABISELECT(-16,-8),
  ABISELECT(-7,-3),
  ABISELECT(-32,-16),
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI8S7719C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C38S7719C10__A1__7S7719C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C8__7S7719C38S7719C10__A1__7S7719C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7719C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C9__8S7719C10__7S7719C1[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7719C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7719C11__8S7719C10__7S7719C1[] = {
  ABISELECT(-39,-27),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S7719C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C8__8S7719C10__7S7719C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7719C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7719C11__7S7719C1[] = {
  ABISELECT(-39,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S7719C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C98S7719C11__A1__7S7719C1[] = {
  ABISELECT(-39,-27),
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7719C13__7S7719C1[] = {
  ABISELECT(-103,-63),
  ABISELECT(-8,-4),
  ABISELECT(-80,-52),
  ABISELECT(-71,-47),
  0,
  (VTBL_ENTRY)&(_ZTI8S7719C13[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C98S7719C13__A2__7S7719C1[] = {
  ABISELECT(-71,-47),
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7719C148S7719C13__7S7719C1[] = {
  ABISELECT(-87,-55),
  ABISELECT(-96,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S7719C14[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C9__8S7719C148S7719C13__7S7719C1[] = {
  ABISELECT(9,5),
  ABISELECT(96,60),
  (VTBL_ENTRY)&(_ZTI8S7719C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7719C14__8S7719C13__7S7719C1[] = {
  ABISELECT(-87,-55),
  ABISELECT(-96,-60),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7719C13[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C9__A1__8S7719C13__7S7719C1[] = {
  ABISELECT(9,5),
  ABISELECT(80,52),
  (VTBL_ENTRY)&(_ZTI8S7719C13[0]),
};
extern void _ZN8S7719C16D1Ev();
extern void _ZN8S7719C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7719C16__7S7719C1[] = {
  ABISELECT(-183,-103),
  ABISELECT(-192,-108),
  ABISELECT(-208,-116),
  ABISELECT(-215,-119),
  0,
  (VTBL_ENTRY)&(_ZTI8S7719C16[0]),
  (VTBL_ENTRY)&_ZN8S7719C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7719C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7719C38S7719C16__A2__7S7719C1[] = {
  ABISELECT(-208,-116),
  ABISELECT(-215,-119),
  0,
  (VTBL_ENTRY)&(_ZTI7S7719C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C8__7S7719C38S7719C16__A2__7S7719C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(208,116),
  (VTBL_ENTRY)&(_ZTI7S7719C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C8__8S7719C16__7S7719C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(208,116),
  (VTBL_ENTRY)&(_ZTI8S7719C16[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7719C9__8S7719C16__7S7719C1[] = {
  ABISELECT(9,5),
  ABISELECT(192,108),
  (VTBL_ENTRY)&(_ZTI8S7719C16[0]),
};
static  VTT_ENTRY vtt_S7719C1[] = {
  {&(_ZTV7S7719C1[12]),  12,79},
  {&(_tg__ZTV7S7719C2__7S7719C1[10]),  10,10},
  {&(_tg__ZTV7S7719C87S7719C2__A1__7S7719C1[3]),  3,3},
  {&(_tg__ZTV7S7719C3__7S7719C2__7S7719C1[4]),  4,4},
  {&(_tg__ZTV7S7719C8__7S7719C2__7S7719C1[3]),  3,3},
  {&(_tg__ZTV7S7719C9__7S7719C2__7S7719C1[3]),  3,3},
  {&(_tg__ZTV8S7719C10__7S7719C2__7S7719C1[8]),  8,8},
  {&(_tg__ZTV8S7719C11__7S7719C2__7S7719C1[3]),  3,3},
  {&(_tg__ZTV8S7719C12__7S7719C1[9]),  9,11},
  {&(_tg__ZTV8S7719C158S7719C12__7S7719C1[7]),  7,9},
  {&(_tg__ZTV7S7719C98S7719C158S7719C12__A3__7S7719C1[3]),  3,3},
  {&(_tg__ZTV8S7719C16__8S7719C158S7719C12__7S7719C1[7]),  7,9},
  {&(_tg__ZTV7S7719C8__8S7719C158S7719C12__7S7719C1[3]),  3,3},
  {&(_tg__ZTV7S7719C9__8S7719C158S7719C12__7S7719C1[3]),  3,3},
  {&(_tg__ZTV8S7719C13__8S7719C12__7S7719C1[6]),  6,6},
  {&(_tg__ZTV8S7719C148S7719C13__8S7719C12__7S7719C1[4]),  4,4},
  {&(_tg__ZTV7S7719C9__A1__8S7719C12__7S7719C1[3]),  3,3},
  {&(_tg__ZTV8S7719C16__8S7719C12__7S7719C1[7]),  7,9},
  {&(_tg__ZTV7S7719C8__8S7719C12__7S7719C1[3]),  3,3},
  {&(_tg__ZTV8S7719C18__7S7719C1[9]),  9,11},
  {&(_tg__ZTV7S7719C38S7719C18__A3__7S7719C1[4]),  4,4},
  {&(_tg__ZTV7S7719C8__7S7719C38S7719C18__A3__7S7719C1[3]),  3,3},
  {&(_tg__ZTV8S7719C10__8S7719C18__7S7719C1[8]),  8,8},
  {&(_tg__ZTV7S7719C9__8S7719C18__7S7719C1[3]),  3,3},
  {&(_tg__ZTV8S7719C11__8S7719C18__7S7719C1[3]),  3,3},
  {&(_tg__ZTV7S7719C8__8S7719C18__7S7719C1[3]),  3,3},
  {&(_tg__ZTV7S7719C8__A__7S7719C1[3]),  3,3},
  {&(_ZTV7S7719C1[43]),  43,79},
  {&(_ZTV7S7719C1[46]),  46,79},
  {&(_ZTV7S7719C1[49]),  49,79},
  {&(_ZTV7S7719C1[57]),  57,79},
  {&(_ZTV7S7719C1[60]),  60,79},
  {&(_ZTV7S7719C1[23]),  23,79},
  {&(_ZTV7S7719C1[66]),  66,79},
  {&(_ZTV7S7719C1[70]),  70,79},
  {&(_ZTV7S7719C1[77]),  77,79},
  {&(_ZTV7S7719C1[34]),  34,79},
  {&(_ZTV7S7719C1[39]),  39,79},
  {&(_tg__ZTV7S7719C3__7S7719C1[4]),  4,4},
  {&(_tg__ZTV7S7719C8__7S7719C3__7S7719C1[3]),  3,3},
  {&(_tg__ZTV7S7719C8__7S7719C1[3]),  3,3},
  {&(_tg__ZTV7S7719C9__7S7719C1[3]),  3,3},
  {&(_tg__ZTV8S7719C10__7S7719C1[8]),  8,8},
  {&(_tg__ZTV7S7719C38S7719C10__A1__7S7719C1[4]),  4,4},
  {&(_tg__ZTV7S7719C8__7S7719C38S7719C10__A1__7S7719C1[3]),  3,3},
  {&(_tg__ZTV7S7719C9__8S7719C10__7S7719C1[3]),  3,3},
  {&(_tg__ZTV8S7719C11__8S7719C10__7S7719C1[3]),  3,3},
  {&(_tg__ZTV7S7719C8__8S7719C10__7S7719C1[3]),  3,3},
  {&(_tg__ZTV8S7719C11__7S7719C1[3]),  3,3},
  {&(_tg__ZTV7S7719C98S7719C11__A1__7S7719C1[3]),  3,3},
  {&(_tg__ZTV8S7719C13__7S7719C1[6]),  6,6},
  {&(_tg__ZTV7S7719C98S7719C13__A2__7S7719C1[3]),  3,3},
  {&(_tg__ZTV8S7719C148S7719C13__7S7719C1[4]),  4,4},
  {&(_tg__ZTV7S7719C9__8S7719C148S7719C13__7S7719C1[3]),  3,3},
  {&(_tg__ZTV8S7719C14__8S7719C13__7S7719C1[4]),  4,4},
  {&(_tg__ZTV7S7719C9__A1__8S7719C13__7S7719C1[3]),  3,3},
  {&(_tg__ZTV8S7719C16__7S7719C1[6]),  6,8},
  {&(_tg__ZTV7S7719C38S7719C16__A2__7S7719C1[4]),  4,4},
  {&(_tg__ZTV7S7719C8__7S7719C38S7719C16__A2__7S7719C1[3]),  3,3},
  {&(_tg__ZTV7S7719C8__8S7719C16__7S7719C1[3]),  3,3},
  {&(_tg__ZTV7S7719C9__8S7719C16__7S7719C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7719C1[];
extern  VTBL_ENTRY _ZTV7S7719C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7719C1[];
static VTBL_ENTRY alt_thunk_names73[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7719C12D0Ev,_ZTv0_n28_N8S7719C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S7719C12D0Ev,_ZThn168_N8S7719C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7719C12D1Ev,_ZTv0_n28_N8S7719C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S7719C12D1Ev,_ZThn168_N8S7719C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7719C15D0Ev,_ZTv0_n28_N8S7719C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S7719C15D0Ev,_ZThn168_N8S7719C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7719C15D1Ev,_ZTv0_n28_N8S7719C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S7719C15D1Ev,_ZThn168_N8S7719C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7719C1D0Ev,_ZTv0_n28_N7S7719C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N7S7719C1D0Ev,_ZThn176_N7S7719C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7719C1D1Ev,_ZTv0_n28_N7S7719C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N7S7719C1D1Ev,_ZThn176_N7S7719C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7719C1 = {  "S7719C1", // class name
  bases_S7719C1, 65,
  &(vtc_S7719C1[0]), // expected_vtbl_contents
  &(vtt_S7719C1[0]), // expected_vtt_contents
  ABISELECT(320,184), // object size
  NSPAIRA(_ZTI7S7719C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7719C1),79, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7719C1),61, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names73,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3042C3_nt  {
  virtual  ~S3042C3_nt(); // _ZN10S3042C3_ntD1Ev
  virtual void  v17(); // _ZN10S3042C3_nt3v17Ev
  virtual void  v18(); // _ZN10S3042C3_nt3v18Ev
  virtual void  v19(); // _ZN10S3042C3_nt3v19Ev
  virtual void  v20(); // _ZN10S3042C3_nt3v20Ev
  virtual void  v21(); // _ZN10S3042C3_nt3v21Ev
  virtual void  v22(); // _ZN10S3042C3_nt3v22Ev
  virtual void  v23(); // _ZN10S3042C3_nt3v23Ev
  virtual void  v24(); // _ZN10S3042C3_nt3v24Ev
  virtual void  v25(); // _ZN10S3042C3_nt3v25Ev
  virtual void  v26(); // _ZN10S3042C3_nt3v26Ev
  virtual void  v27(); // _ZN10S3042C3_nt3v27Ev
  virtual void  v28(); // _ZN10S3042C3_nt3v28Ev
  virtual void  v29(); // _ZN10S3042C3_nt3v29Ev
  virtual void  v30(); // _ZN10S3042C3_nt3v30Ev
  virtual void  v31(); // _ZN10S3042C3_nt3v31Ev
  virtual void  v32(); // _ZN10S3042C3_nt3v32Ev
  S3042C3_nt(); // tgen
};
//SIG(-1 S3042C3_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16}


 S3042C3_nt ::~S3042C3_nt(){ note_dtor("S3042C3_nt", this);}
void  S3042C3_nt ::v17(){vfunc_called(this, "_ZN10S3042C3_nt3v17Ev");}
void  S3042C3_nt ::v18(){vfunc_called(this, "_ZN10S3042C3_nt3v18Ev");}
void  S3042C3_nt ::v19(){vfunc_called(this, "_ZN10S3042C3_nt3v19Ev");}
void  S3042C3_nt ::v20(){vfunc_called(this, "_ZN10S3042C3_nt3v20Ev");}
void  S3042C3_nt ::v21(){vfunc_called(this, "_ZN10S3042C3_nt3v21Ev");}
void  S3042C3_nt ::v22(){vfunc_called(this, "_ZN10S3042C3_nt3v22Ev");}
void  S3042C3_nt ::v23(){vfunc_called(this, "_ZN10S3042C3_nt3v23Ev");}
void  S3042C3_nt ::v24(){vfunc_called(this, "_ZN10S3042C3_nt3v24Ev");}
void  S3042C3_nt ::v25(){vfunc_called(this, "_ZN10S3042C3_nt3v25Ev");}
void  S3042C3_nt ::v26(){vfunc_called(this, "_ZN10S3042C3_nt3v26Ev");}
void  S3042C3_nt ::v27(){vfunc_called(this, "_ZN10S3042C3_nt3v27Ev");}
void  S3042C3_nt ::v28(){vfunc_called(this, "_ZN10S3042C3_nt3v28Ev");}
void  S3042C3_nt ::v29(){vfunc_called(this, "_ZN10S3042C3_nt3v29Ev");}
void  S3042C3_nt ::v30(){vfunc_called(this, "_ZN10S3042C3_nt3v30Ev");}
void  S3042C3_nt ::v31(){vfunc_called(this, "_ZN10S3042C3_nt3v31Ev");}
void  S3042C3_nt ::v32(){vfunc_called(this, "_ZN10S3042C3_nt3v32Ev");}
S3042C3_nt ::S3042C3_nt(){ note_ctor("S3042C3_nt", this);} // tgen

//skip512 S3042C3_nt

#else // __cplusplus

extern void _ZN10S3042C3_ntC1Ev();
extern void _ZN10S3042C3_ntD1Ev();
Name_Map name_map_S3042C3_nt[] = {
  NSPAIR(_ZN10S3042C3_ntC1Ev),
  NSPAIR(_ZN10S3042C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S3042C3_nt[];
extern void _ZN10S3042C3_ntD1Ev();
extern void _ZN10S3042C3_ntD0Ev();
extern void _ZN10S3042C3_nt3v17Ev();
extern void _ZN10S3042C3_nt3v18Ev();
extern void _ZN10S3042C3_nt3v19Ev();
extern void _ZN10S3042C3_nt3v20Ev();
extern void _ZN10S3042C3_nt3v21Ev();
extern void _ZN10S3042C3_nt3v22Ev();
extern void _ZN10S3042C3_nt3v23Ev();
extern void _ZN10S3042C3_nt3v24Ev();
extern void _ZN10S3042C3_nt3v25Ev();
extern void _ZN10S3042C3_nt3v26Ev();
extern void _ZN10S3042C3_nt3v27Ev();
extern void _ZN10S3042C3_nt3v28Ev();
extern void _ZN10S3042C3_nt3v29Ev();
extern void _ZN10S3042C3_nt3v30Ev();
extern void _ZN10S3042C3_nt3v31Ev();
extern void _ZN10S3042C3_nt3v32Ev();
static  VTBL_ENTRY vtc_S3042C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3042C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S3042C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_nt3v32Ev,
};
extern VTBL_ENTRY _ZTI10S3042C3_nt[];
VTBL_ENTRY *P__ZTI10S3042C3_nt = _ZTI10S3042C3_nt; 
extern  VTBL_ENTRY _ZTV10S3042C3_nt[];
Class_Descriptor cd_S3042C3_nt = {  "S3042C3_nt", // class name
  0,0,//no base classes
  &(vtc_S3042C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S3042C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S3042C3_nt),20, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3042C2  : S3042C3_nt {
  virtual  ~S3042C2(); // _ZN7S3042C2D1Ev
  virtual void  v33(); // _ZN7S3042C23v33Ev
  virtual void  v34(); // _ZN7S3042C23v34Ev
  virtual void  v35(); // _ZN7S3042C23v35Ev
  virtual void  v36(); // _ZN7S3042C23v36Ev
  virtual void  v37(); // _ZN7S3042C23v37Ev
  virtual void  v38(); // _ZN7S3042C23v38Ev
  virtual void  v39(); // _ZN7S3042C23v39Ev
  virtual void  v40(); // _ZN7S3042C23v40Ev
  virtual void  v41(); // _ZN7S3042C23v41Ev
  virtual void  v42(); // _ZN7S3042C23v42Ev
  virtual void  v43(); // _ZN7S3042C23v43Ev
  virtual void  v44(); // _ZN7S3042C23v44Ev
  virtual void  v45(); // _ZN7S3042C23v45Ev
  virtual void  v46(); // _ZN7S3042C23v46Ev
  virtual void  v47(); // _ZN7S3042C23v47Ev
  virtual void  v48(); // _ZN7S3042C23v48Ev
  S3042C2(); // tgen
};
//SIG(-1 S3042C2) C1{ BC2{ vd v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16}


 S3042C2 ::~S3042C2(){ note_dtor("S3042C2", this);}
void  S3042C2 ::v33(){vfunc_called(this, "_ZN7S3042C23v33Ev");}
void  S3042C2 ::v34(){vfunc_called(this, "_ZN7S3042C23v34Ev");}
void  S3042C2 ::v35(){vfunc_called(this, "_ZN7S3042C23v35Ev");}
void  S3042C2 ::v36(){vfunc_called(this, "_ZN7S3042C23v36Ev");}
void  S3042C2 ::v37(){vfunc_called(this, "_ZN7S3042C23v37Ev");}
void  S3042C2 ::v38(){vfunc_called(this, "_ZN7S3042C23v38Ev");}
void  S3042C2 ::v39(){vfunc_called(this, "_ZN7S3042C23v39Ev");}
void  S3042C2 ::v40(){vfunc_called(this, "_ZN7S3042C23v40Ev");}
void  S3042C2 ::v41(){vfunc_called(this, "_ZN7S3042C23v41Ev");}
void  S3042C2 ::v42(){vfunc_called(this, "_ZN7S3042C23v42Ev");}
void  S3042C2 ::v43(){vfunc_called(this, "_ZN7S3042C23v43Ev");}
void  S3042C2 ::v44(){vfunc_called(this, "_ZN7S3042C23v44Ev");}
void  S3042C2 ::v45(){vfunc_called(this, "_ZN7S3042C23v45Ev");}
void  S3042C2 ::v46(){vfunc_called(this, "_ZN7S3042C23v46Ev");}
void  S3042C2 ::v47(){vfunc_called(this, "_ZN7S3042C23v47Ev");}
void  S3042C2 ::v48(){vfunc_called(this, "_ZN7S3042C23v48Ev");}
S3042C2 ::S3042C2(){ note_ctor("S3042C2", this);} // tgen

static void Test_S3042C2()
{
  extern Class_Descriptor cd_S3042C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3042C2, buf);
    S3042C2 *dp, &lv = *(dp=new (buf) S3042C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3042C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3042C2)");
    check_base_class_offset(lv, (S3042C3_nt*), 0, "S3042C2");
    test_class_info(&lv, &cd_S3042C2);
    dp->~S3042C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3042C2(Test_S3042C2, "S3042C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3042C2C1Ev();
extern void _ZN7S3042C2D1Ev();
Name_Map name_map_S3042C2[] = {
  NSPAIR(_ZN7S3042C2C1Ev),
  NSPAIR(_ZN7S3042C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3042C3_nt;
extern VTBL_ENTRY _ZTI10S3042C3_nt[];
extern  VTBL_ENTRY _ZTV10S3042C3_nt[];
static Base_Class bases_S3042C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3042C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3042C2[];
extern void _ZN7S3042C2D1Ev();
extern void _ZN7S3042C2D0Ev();
extern void _ZN10S3042C3_nt3v17Ev();
extern void _ZN10S3042C3_nt3v18Ev();
extern void _ZN10S3042C3_nt3v19Ev();
extern void _ZN10S3042C3_nt3v20Ev();
extern void _ZN10S3042C3_nt3v21Ev();
extern void _ZN10S3042C3_nt3v22Ev();
extern void _ZN10S3042C3_nt3v23Ev();
extern void _ZN10S3042C3_nt3v24Ev();
extern void _ZN10S3042C3_nt3v25Ev();
extern void _ZN10S3042C3_nt3v26Ev();
extern void _ZN10S3042C3_nt3v27Ev();
extern void _ZN10S3042C3_nt3v28Ev();
extern void _ZN10S3042C3_nt3v29Ev();
extern void _ZN10S3042C3_nt3v30Ev();
extern void _ZN10S3042C3_nt3v31Ev();
extern void _ZN10S3042C3_nt3v32Ev();
extern void _ZN7S3042C23v33Ev();
extern void _ZN7S3042C23v34Ev();
extern void _ZN7S3042C23v35Ev();
extern void _ZN7S3042C23v36Ev();
extern void _ZN7S3042C23v37Ev();
extern void _ZN7S3042C23v38Ev();
extern void _ZN7S3042C23v39Ev();
extern void _ZN7S3042C23v40Ev();
extern void _ZN7S3042C23v41Ev();
extern void _ZN7S3042C23v42Ev();
extern void _ZN7S3042C23v43Ev();
extern void _ZN7S3042C23v44Ev();
extern void _ZN7S3042C23v45Ev();
extern void _ZN7S3042C23v46Ev();
extern void _ZN7S3042C23v47Ev();
extern void _ZN7S3042C23v48Ev();
static  VTBL_ENTRY vtc_S3042C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3042C2[0]),
  (VTBL_ENTRY)&_ZN7S3042C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3042C2D0Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN7S3042C23v33Ev,
  (VTBL_ENTRY)&_ZN7S3042C23v34Ev,
  (VTBL_ENTRY)&_ZN7S3042C23v35Ev,
  (VTBL_ENTRY)&_ZN7S3042C23v36Ev,
  (VTBL_ENTRY)&_ZN7S3042C23v37Ev,
  (VTBL_ENTRY)&_ZN7S3042C23v38Ev,
  (VTBL_ENTRY)&_ZN7S3042C23v39Ev,
  (VTBL_ENTRY)&_ZN7S3042C23v40Ev,
  (VTBL_ENTRY)&_ZN7S3042C23v41Ev,
  (VTBL_ENTRY)&_ZN7S3042C23v42Ev,
  (VTBL_ENTRY)&_ZN7S3042C23v43Ev,
  (VTBL_ENTRY)&_ZN7S3042C23v44Ev,
  (VTBL_ENTRY)&_ZN7S3042C23v45Ev,
  (VTBL_ENTRY)&_ZN7S3042C23v46Ev,
  (VTBL_ENTRY)&_ZN7S3042C23v47Ev,
  (VTBL_ENTRY)&_ZN7S3042C23v48Ev,
};
extern VTBL_ENTRY _ZTI7S3042C2[];
extern  VTBL_ENTRY _ZTV7S3042C2[];
Class_Descriptor cd_S3042C2 = {  "S3042C2", // class name
  bases_S3042C2, 1,
  &(vtc_S3042C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3042C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3042C2),36, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3042C4_nt  {
  __tsi64 s3042c4f0[4];
};
//SIG(-1 S3042C4_nt) C1{ FL[4]}



//skip512 S3042C4_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3042C6_nt  {
  void *s3042c6f0;
  int s3042c6f1;
  virtual  ~S3042C6_nt(); // _ZN10S3042C6_ntD1Ev
  virtual void  v50(); // _ZN10S3042C6_nt3v50Ev
  S3042C6_nt(); // tgen
};
//SIG(-1 S3042C6_nt) C1{ vd v1 Fp Fi}


 S3042C6_nt ::~S3042C6_nt(){ note_dtor("S3042C6_nt", this);}
void  S3042C6_nt ::v50(){vfunc_called(this, "_ZN10S3042C6_nt3v50Ev");}
S3042C6_nt ::S3042C6_nt(){ note_ctor("S3042C6_nt", this);} // tgen

//skip512 S3042C6_nt

#else // __cplusplus

extern void _ZN10S3042C6_ntC1Ev();
extern void _ZN10S3042C6_ntD1Ev();
Name_Map name_map_S3042C6_nt[] = {
  NSPAIR(_ZN10S3042C6_ntC1Ev),
  NSPAIR(_ZN10S3042C6_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S3042C6_nt[];
extern void _ZN10S3042C6_ntD1Ev();
extern void _ZN10S3042C6_ntD0Ev();
extern void _ZN10S3042C6_nt3v50Ev();
static  VTBL_ENTRY vtc_S3042C6_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3042C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S3042C6_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S3042C6_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S3042C6_nt3v50Ev,
};
extern VTBL_ENTRY _ZTI10S3042C6_nt[];
VTBL_ENTRY *P__ZTI10S3042C6_nt = _ZTI10S3042C6_nt; 
extern  VTBL_ENTRY _ZTV10S3042C6_nt[];
Class_Descriptor cd_S3042C6_nt = {  "S3042C6_nt", // class name
  0,0,//no base classes
  &(vtc_S3042C6_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI10S3042C6_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S3042C6_nt),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3042C5_nt  : S3042C6_nt {
  void *s3042c5f0;
  virtual  ~S3042C5_nt(); // _ZN10S3042C5_ntD1Ev
  virtual void  v49(); // _ZN10S3042C5_nt3v49Ev
  S3042C5_nt(); // tgen
};
//SIG(-1 S3042C5_nt) C1{ BC2{ vd v2 Fp Fi} vd v1 Fp}


 S3042C5_nt ::~S3042C5_nt(){ note_dtor("S3042C5_nt", this);}
void  S3042C5_nt ::v49(){vfunc_called(this, "_ZN10S3042C5_nt3v49Ev");}
S3042C5_nt ::S3042C5_nt(){ note_ctor("S3042C5_nt", this);} // tgen

//skip512 S3042C5_nt

#else // __cplusplus

extern void _ZN10S3042C5_ntC1Ev();
extern void _ZN10S3042C5_ntD1Ev();
Name_Map name_map_S3042C5_nt[] = {
  NSPAIR(_ZN10S3042C5_ntC1Ev),
  NSPAIR(_ZN10S3042C5_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3042C6_nt;
extern VTBL_ENTRY _ZTI10S3042C6_nt[];
extern  VTBL_ENTRY _ZTV10S3042C6_nt[];
static Base_Class bases_S3042C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3042C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S3042C5_nt[];
extern void _ZN10S3042C5_ntD1Ev();
extern void _ZN10S3042C5_ntD0Ev();
extern void _ZN10S3042C6_nt3v50Ev();
extern void _ZN10S3042C5_nt3v49Ev();
static  VTBL_ENTRY vtc_S3042C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3042C5_nt[0]),
  (VTBL_ENTRY)&_ZN10S3042C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S3042C5_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S3042C6_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S3042C5_nt3v49Ev,
};
extern VTBL_ENTRY _ZTI10S3042C5_nt[];
VTBL_ENTRY *P__ZTI10S3042C5_nt = _ZTI10S3042C5_nt; 
extern  VTBL_ENTRY _ZTV10S3042C5_nt[];
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3042C1  : S3042C2 {
  char s3042c1f0[3];
  int s3042c1f1[2];
  ::S3042C4_nt s3042c1f2;
  ::S3042C4_nt s3042c1f3;
  ::S3042C5_nt s3042c1f4;
  __tsi64 s3042c1f5;
  void *s3042c1f6;
  virtual  ~S3042C1(); // _ZN7S3042C1D1Ev
  virtual void  v1(); // _ZN7S3042C12v1Ev
  virtual void  v2(); // _ZN7S3042C12v2Ev
  virtual void  v3(); // _ZN7S3042C12v3Ev
  virtual void  v4(); // _ZN7S3042C12v4Ev
  virtual void  v5(); // _ZN7S3042C12v5Ev
  virtual void  v6(); // _ZN7S3042C12v6Ev
  virtual void  v7(); // _ZN7S3042C12v7Ev
  virtual void  v8(); // _ZN7S3042C12v8Ev
  virtual void  v9(); // _ZN7S3042C12v9Ev
  virtual void  v10(); // _ZN7S3042C13v10Ev
  virtual void  v11(); // _ZN7S3042C13v11Ev
  virtual void  v12(); // _ZN7S3042C13v12Ev
  virtual void  v13(); // _ZN7S3042C13v13Ev
  virtual void  v14(); // _ZN7S3042C13v14Ev
  virtual void  v15(); // _ZN7S3042C13v15Ev
  virtual void  v16(); // _ZN7S3042C13v16Ev
  S3042C1(); // tgen
};
//SIG(1 S3042C1) C1{ BC2{ BC3{ vd v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32} vd v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 Fc[3] Fi[2] FC4{ FL[4]} FC4 FC5{ BC6{ vd v50 Fp Fi} vd v49 Fp} FL Fp}


 S3042C1 ::~S3042C1(){ note_dtor("S3042C1", this);}
void  S3042C1 ::v1(){vfunc_called(this, "_ZN7S3042C12v1Ev");}
void  S3042C1 ::v2(){vfunc_called(this, "_ZN7S3042C12v2Ev");}
void  S3042C1 ::v3(){vfunc_called(this, "_ZN7S3042C12v3Ev");}
void  S3042C1 ::v4(){vfunc_called(this, "_ZN7S3042C12v4Ev");}
void  S3042C1 ::v5(){vfunc_called(this, "_ZN7S3042C12v5Ev");}
void  S3042C1 ::v6(){vfunc_called(this, "_ZN7S3042C12v6Ev");}
void  S3042C1 ::v7(){vfunc_called(this, "_ZN7S3042C12v7Ev");}
void  S3042C1 ::v8(){vfunc_called(this, "_ZN7S3042C12v8Ev");}
void  S3042C1 ::v9(){vfunc_called(this, "_ZN7S3042C12v9Ev");}
void  S3042C1 ::v10(){vfunc_called(this, "_ZN7S3042C13v10Ev");}
void  S3042C1 ::v11(){vfunc_called(this, "_ZN7S3042C13v11Ev");}
void  S3042C1 ::v12(){vfunc_called(this, "_ZN7S3042C13v12Ev");}
void  S3042C1 ::v13(){vfunc_called(this, "_ZN7S3042C13v13Ev");}
void  S3042C1 ::v14(){vfunc_called(this, "_ZN7S3042C13v14Ev");}
void  S3042C1 ::v15(){vfunc_called(this, "_ZN7S3042C13v15Ev");}
void  S3042C1 ::v16(){vfunc_called(this, "_ZN7S3042C13v16Ev");}
S3042C1 ::S3042C1(){ note_ctor("S3042C1", this);} // tgen

static void Test_S3042C1()
{
  extern Class_Descriptor cd_S3042C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,28)];
    init_test(&cd_S3042C1, buf);
    S3042C1 *dp, &lv = *(dp=new (buf) S3042C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,108), "sizeof(S3042C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3042C1)");
    check_base_class_offset(lv, (S3042C3_nt*)(S3042C2*), 0, "S3042C1");
    check_base_class_offset(lv, (S3042C2*), 0, "S3042C1");
    check_field_offset(lv, s3042c1f0, ABISELECT(8,4), "S3042C1.s3042c1f0");
    check_field_offset(lv, s3042c1f1, ABISELECT(12,8), "S3042C1.s3042c1f1");
    check_field_offset(lv, s3042c1f2, ABISELECT(24,16), "S3042C1.s3042c1f2");
    check_field_offset(lv, s3042c1f3, ABISELECT(56,48), "S3042C1.s3042c1f3");
    check_field_offset(lv, s3042c1f4, ABISELECT(88,80), "S3042C1.s3042c1f4");
    check_field_offset(lv, s3042c1f5, ABISELECT(120,96), "S3042C1.s3042c1f5");
    check_field_offset(lv, s3042c1f6, ABISELECT(128,104), "S3042C1.s3042c1f6");
    test_class_info(&lv, &cd_S3042C1);
    dp->~S3042C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3042C1(Test_S3042C1, "S3042C1", ABISELECT(136,108));

#else // __cplusplus

extern void _ZN7S3042C1C1Ev();
extern void _ZN7S3042C1D1Ev();
Name_Map name_map_S3042C1[] = {
  NSPAIR(_ZN7S3042C1C1Ev),
  NSPAIR(_ZN7S3042C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3042C3_nt;
extern VTBL_ENTRY _ZTI10S3042C3_nt[];
extern  VTBL_ENTRY _ZTV10S3042C3_nt[];
extern Class_Descriptor cd_S3042C2;
extern VTBL_ENTRY _ZTI7S3042C2[];
extern  VTBL_ENTRY _ZTV7S3042C2[];
static Base_Class bases_S3042C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3042C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3042C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3042C1[];
extern void _ZN7S3042C1D1Ev();
extern void _ZN7S3042C1D0Ev();
extern void _ZN10S3042C3_nt3v17Ev();
extern void _ZN10S3042C3_nt3v18Ev();
extern void _ZN10S3042C3_nt3v19Ev();
extern void _ZN10S3042C3_nt3v20Ev();
extern void _ZN10S3042C3_nt3v21Ev();
extern void _ZN10S3042C3_nt3v22Ev();
extern void _ZN10S3042C3_nt3v23Ev();
extern void _ZN10S3042C3_nt3v24Ev();
extern void _ZN10S3042C3_nt3v25Ev();
extern void _ZN10S3042C3_nt3v26Ev();
extern void _ZN10S3042C3_nt3v27Ev();
extern void _ZN10S3042C3_nt3v28Ev();
extern void _ZN10S3042C3_nt3v29Ev();
extern void _ZN10S3042C3_nt3v30Ev();
extern void _ZN10S3042C3_nt3v31Ev();
extern void _ZN10S3042C3_nt3v32Ev();
extern void _ZN7S3042C23v33Ev();
extern void _ZN7S3042C23v34Ev();
extern void _ZN7S3042C23v35Ev();
extern void _ZN7S3042C23v36Ev();
extern void _ZN7S3042C23v37Ev();
extern void _ZN7S3042C23v38Ev();
extern void _ZN7S3042C23v39Ev();
extern void _ZN7S3042C23v40Ev();
extern void _ZN7S3042C23v41Ev();
extern void _ZN7S3042C23v42Ev();
extern void _ZN7S3042C23v43Ev();
extern void _ZN7S3042C23v44Ev();
extern void _ZN7S3042C23v45Ev();
extern void _ZN7S3042C23v46Ev();
extern void _ZN7S3042C23v47Ev();
extern void _ZN7S3042C23v48Ev();
extern void _ZN7S3042C12v1Ev();
extern void _ZN7S3042C12v2Ev();
extern void _ZN7S3042C12v3Ev();
extern void _ZN7S3042C12v4Ev();
extern void _ZN7S3042C12v5Ev();
extern void _ZN7S3042C12v6Ev();
extern void _ZN7S3042C12v7Ev();
extern void _ZN7S3042C12v8Ev();
extern void _ZN7S3042C12v9Ev();
extern void _ZN7S3042C13v10Ev();
extern void _ZN7S3042C13v11Ev();
extern void _ZN7S3042C13v12Ev();
extern void _ZN7S3042C13v13Ev();
extern void _ZN7S3042C13v14Ev();
extern void _ZN7S3042C13v15Ev();
extern void _ZN7S3042C13v16Ev();
static  VTBL_ENTRY vtc_S3042C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3042C1[0]),
  (VTBL_ENTRY)&_ZN7S3042C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3042C1D0Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S3042C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN7S3042C23v33Ev,
  (VTBL_ENTRY)&_ZN7S3042C23v34Ev,
  (VTBL_ENTRY)&_ZN7S3042C23v35Ev,
  (VTBL_ENTRY)&_ZN7S3042C23v36Ev,
  (VTBL_ENTRY)&_ZN7S3042C23v37Ev,
  (VTBL_ENTRY)&_ZN7S3042C23v38Ev,
  (VTBL_ENTRY)&_ZN7S3042C23v39Ev,
  (VTBL_ENTRY)&_ZN7S3042C23v40Ev,
  (VTBL_ENTRY)&_ZN7S3042C23v41Ev,
  (VTBL_ENTRY)&_ZN7S3042C23v42Ev,
  (VTBL_ENTRY)&_ZN7S3042C23v43Ev,
  (VTBL_ENTRY)&_ZN7S3042C23v44Ev,
  (VTBL_ENTRY)&_ZN7S3042C23v45Ev,
  (VTBL_ENTRY)&_ZN7S3042C23v46Ev,
  (VTBL_ENTRY)&_ZN7S3042C23v47Ev,
  (VTBL_ENTRY)&_ZN7S3042C23v48Ev,
  (VTBL_ENTRY)&_ZN7S3042C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3042C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3042C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3042C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3042C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3042C12v6Ev,
  (VTBL_ENTRY)&_ZN7S3042C12v7Ev,
  (VTBL_ENTRY)&_ZN7S3042C12v8Ev,
  (VTBL_ENTRY)&_ZN7S3042C12v9Ev,
  (VTBL_ENTRY)&_ZN7S3042C13v10Ev,
  (VTBL_ENTRY)&_ZN7S3042C13v11Ev,
  (VTBL_ENTRY)&_ZN7S3042C13v12Ev,
  (VTBL_ENTRY)&_ZN7S3042C13v13Ev,
  (VTBL_ENTRY)&_ZN7S3042C13v14Ev,
  (VTBL_ENTRY)&_ZN7S3042C13v15Ev,
  (VTBL_ENTRY)&_ZN7S3042C13v16Ev,
};
extern VTBL_ENTRY _ZTI7S3042C1[];
extern  VTBL_ENTRY _ZTV7S3042C1[];
Class_Descriptor cd_S3042C1 = {  "S3042C1", // class name
  bases_S3042C1, 2,
  &(vtc_S3042C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,108), // object size
  NSPAIRA(_ZTI7S3042C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3042C1),52, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3041C3  {
  virtual  ~S3041C3(); // _ZN7S3041C3D1Ev
  virtual void  v17(); // _ZN7S3041C33v17Ev
  virtual void  v18(); // _ZN7S3041C33v18Ev
  virtual void  v19(); // _ZN7S3041C33v19Ev
  virtual void  v20(); // _ZN7S3041C33v20Ev
  virtual void  v21(); // _ZN7S3041C33v21Ev
  virtual void  v22(); // _ZN7S3041C33v22Ev
  virtual void  v23(); // _ZN7S3041C33v23Ev
  virtual void  v24(); // _ZN7S3041C33v24Ev
  virtual void  v25(); // _ZN7S3041C33v25Ev
  virtual void  v26(); // _ZN7S3041C33v26Ev
  virtual void  v27(); // _ZN7S3041C33v27Ev
  virtual void  v28(); // _ZN7S3041C33v28Ev
  virtual void  v29(); // _ZN7S3041C33v29Ev
  virtual void  v30(); // _ZN7S3041C33v30Ev
  virtual void  v31(); // _ZN7S3041C33v31Ev
  virtual void  v32(); // _ZN7S3041C33v32Ev
  S3041C3(); // tgen
};
//SIG(-1 S3041C3) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16}


 S3041C3 ::~S3041C3(){ note_dtor("S3041C3", this);}
void  S3041C3 ::v17(){vfunc_called(this, "_ZN7S3041C33v17Ev");}
void  S3041C3 ::v18(){vfunc_called(this, "_ZN7S3041C33v18Ev");}
void  S3041C3 ::v19(){vfunc_called(this, "_ZN7S3041C33v19Ev");}
void  S3041C3 ::v20(){vfunc_called(this, "_ZN7S3041C33v20Ev");}
void  S3041C3 ::v21(){vfunc_called(this, "_ZN7S3041C33v21Ev");}
void  S3041C3 ::v22(){vfunc_called(this, "_ZN7S3041C33v22Ev");}
void  S3041C3 ::v23(){vfunc_called(this, "_ZN7S3041C33v23Ev");}
void  S3041C3 ::v24(){vfunc_called(this, "_ZN7S3041C33v24Ev");}
void  S3041C3 ::v25(){vfunc_called(this, "_ZN7S3041C33v25Ev");}
void  S3041C3 ::v26(){vfunc_called(this, "_ZN7S3041C33v26Ev");}
void  S3041C3 ::v27(){vfunc_called(this, "_ZN7S3041C33v27Ev");}
void  S3041C3 ::v28(){vfunc_called(this, "_ZN7S3041C33v28Ev");}
void  S3041C3 ::v29(){vfunc_called(this, "_ZN7S3041C33v29Ev");}
void  S3041C3 ::v30(){vfunc_called(this, "_ZN7S3041C33v30Ev");}
void  S3041C3 ::v31(){vfunc_called(this, "_ZN7S3041C33v31Ev");}
void  S3041C3 ::v32(){vfunc_called(this, "_ZN7S3041C33v32Ev");}
S3041C3 ::S3041C3(){ note_ctor("S3041C3", this);} // tgen

static void Test_S3041C3()
{
  extern Class_Descriptor cd_S3041C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3041C3, buf);
    S3041C3 *dp, &lv = *(dp=new (buf) S3041C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3041C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3041C3)");
    test_class_info(&lv, &cd_S3041C3);
    dp->~S3041C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3041C3(Test_S3041C3, "S3041C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3041C3C1Ev();
extern void _ZN7S3041C3D1Ev();
Name_Map name_map_S3041C3[] = {
  NSPAIR(_ZN7S3041C3C1Ev),
  NSPAIR(_ZN7S3041C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3041C3[];
extern void _ZN7S3041C3D1Ev();
extern void _ZN7S3041C3D0Ev();
extern void _ZN7S3041C33v17Ev();
extern void _ZN7S3041C33v18Ev();
extern void _ZN7S3041C33v19Ev();
extern void _ZN7S3041C33v20Ev();
extern void _ZN7S3041C33v21Ev();
extern void _ZN7S3041C33v22Ev();
extern void _ZN7S3041C33v23Ev();
extern void _ZN7S3041C33v24Ev();
extern void _ZN7S3041C33v25Ev();
extern void _ZN7S3041C33v26Ev();
extern void _ZN7S3041C33v27Ev();
extern void _ZN7S3041C33v28Ev();
extern void _ZN7S3041C33v29Ev();
extern void _ZN7S3041C33v30Ev();
extern void _ZN7S3041C33v31Ev();
extern void _ZN7S3041C33v32Ev();
static  VTBL_ENTRY vtc_S3041C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3041C3[0]),
  (VTBL_ENTRY)&_ZN7S3041C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3041C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3041C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3041C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3041C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3041C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3041C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3041C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3041C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3041C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3041C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3041C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3041C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3041C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3041C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3041C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3041C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3041C33v32Ev,
};
extern VTBL_ENTRY _ZTI7S3041C3[];
extern  VTBL_ENTRY _ZTV7S3041C3[];
Class_Descriptor cd_S3041C3 = {  "S3041C3", // class name
  0,0,//no base classes
  &(vtc_S3041C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3041C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3041C3),20, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3041C2  : S3041C3 {
  virtual  ~S3041C2(); // _ZN7S3041C2D1Ev
  virtual void  v33(); // _ZN7S3041C23v33Ev
  virtual void  v34(); // _ZN7S3041C23v34Ev
  virtual void  v35(); // _ZN7S3041C23v35Ev
  virtual void  v36(); // _ZN7S3041C23v36Ev
  virtual void  v37(); // _ZN7S3041C23v37Ev
  virtual void  v38(); // _ZN7S3041C23v38Ev
  virtual void  v39(); // _ZN7S3041C23v39Ev
  virtual void  v40(); // _ZN7S3041C23v40Ev
  virtual void  v41(); // _ZN7S3041C23v41Ev
  virtual void  v42(); // _ZN7S3041C23v42Ev
  virtual void  v43(); // _ZN7S3041C23v43Ev
  virtual void  v44(); // _ZN7S3041C23v44Ev
  virtual void  v45(); // _ZN7S3041C23v45Ev
  virtual void  v46(); // _ZN7S3041C23v46Ev
  virtual void  v47(); // _ZN7S3041C23v47Ev
  virtual void  v48(); // _ZN7S3041C23v48Ev
  S3041C2(); // tgen
};
//SIG(-1 S3041C2) C1{ BC2{ vd v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16}


 S3041C2 ::~S3041C2(){ note_dtor("S3041C2", this);}
void  S3041C2 ::v33(){vfunc_called(this, "_ZN7S3041C23v33Ev");}
void  S3041C2 ::v34(){vfunc_called(this, "_ZN7S3041C23v34Ev");}
void  S3041C2 ::v35(){vfunc_called(this, "_ZN7S3041C23v35Ev");}
void  S3041C2 ::v36(){vfunc_called(this, "_ZN7S3041C23v36Ev");}
void  S3041C2 ::v37(){vfunc_called(this, "_ZN7S3041C23v37Ev");}
void  S3041C2 ::v38(){vfunc_called(this, "_ZN7S3041C23v38Ev");}
void  S3041C2 ::v39(){vfunc_called(this, "_ZN7S3041C23v39Ev");}
void  S3041C2 ::v40(){vfunc_called(this, "_ZN7S3041C23v40Ev");}
void  S3041C2 ::v41(){vfunc_called(this, "_ZN7S3041C23v41Ev");}
void  S3041C2 ::v42(){vfunc_called(this, "_ZN7S3041C23v42Ev");}
void  S3041C2 ::v43(){vfunc_called(this, "_ZN7S3041C23v43Ev");}
void  S3041C2 ::v44(){vfunc_called(this, "_ZN7S3041C23v44Ev");}
void  S3041C2 ::v45(){vfunc_called(this, "_ZN7S3041C23v45Ev");}
void  S3041C2 ::v46(){vfunc_called(this, "_ZN7S3041C23v46Ev");}
void  S3041C2 ::v47(){vfunc_called(this, "_ZN7S3041C23v47Ev");}
void  S3041C2 ::v48(){vfunc_called(this, "_ZN7S3041C23v48Ev");}
S3041C2 ::S3041C2(){ note_ctor("S3041C2", this);} // tgen

static void Test_S3041C2()
{
  extern Class_Descriptor cd_S3041C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3041C2, buf);
    S3041C2 *dp, &lv = *(dp=new (buf) S3041C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3041C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3041C2)");
    check_base_class_offset(lv, (S3041C3*), 0, "S3041C2");
    test_class_info(&lv, &cd_S3041C2);
    dp->~S3041C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3041C2(Test_S3041C2, "S3041C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3041C2C1Ev();
extern void _ZN7S3041C2D1Ev();
Name_Map name_map_S3041C2[] = {
  NSPAIR(_ZN7S3041C2C1Ev),
  NSPAIR(_ZN7S3041C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3041C3;
extern VTBL_ENTRY _ZTI7S3041C3[];
extern  VTBL_ENTRY _ZTV7S3041C3[];
static Base_Class bases_S3041C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3041C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3041C2[];
extern void _ZN7S3041C2D1Ev();
extern void _ZN7S3041C2D0Ev();
extern void _ZN7S3041C33v17Ev();
extern void _ZN7S3041C33v18Ev();
extern void _ZN7S3041C33v19Ev();
extern void _ZN7S3041C33v20Ev();
extern void _ZN7S3041C33v21Ev();
extern void _ZN7S3041C33v22Ev();
extern void _ZN7S3041C33v23Ev();
extern void _ZN7S3041C33v24Ev();
extern void _ZN7S3041C33v25Ev();
extern void _ZN7S3041C33v26Ev();
extern void _ZN7S3041C33v27Ev();
extern void _ZN7S3041C33v28Ev();
extern void _ZN7S3041C33v29Ev();
extern void _ZN7S3041C33v30Ev();
extern void _ZN7S3041C33v31Ev();
extern void _ZN7S3041C33v32Ev();
extern void _ZN7S3041C23v33Ev();
extern void _ZN7S3041C23v34Ev();
extern void _ZN7S3041C23v35Ev();
extern void _ZN7S3041C23v36Ev();
extern void _ZN7S3041C23v37Ev();
extern void _ZN7S3041C23v38Ev();
extern void _ZN7S3041C23v39Ev();
extern void _ZN7S3041C23v40Ev();
extern void _ZN7S3041C23v41Ev();
extern void _ZN7S3041C23v42Ev();
extern void _ZN7S3041C23v43Ev();
extern void _ZN7S3041C23v44Ev();
extern void _ZN7S3041C23v45Ev();
extern void _ZN7S3041C23v46Ev();
extern void _ZN7S3041C23v47Ev();
extern void _ZN7S3041C23v48Ev();
static  VTBL_ENTRY vtc_S3041C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3041C2[0]),
  (VTBL_ENTRY)&_ZN7S3041C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3041C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3041C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3041C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3041C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3041C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3041C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3041C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3041C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3041C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3041C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3041C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3041C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3041C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3041C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3041C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3041C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3041C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3041C23v33Ev,
  (VTBL_ENTRY)&_ZN7S3041C23v34Ev,
  (VTBL_ENTRY)&_ZN7S3041C23v35Ev,
  (VTBL_ENTRY)&_ZN7S3041C23v36Ev,
  (VTBL_ENTRY)&_ZN7S3041C23v37Ev,
  (VTBL_ENTRY)&_ZN7S3041C23v38Ev,
  (VTBL_ENTRY)&_ZN7S3041C23v39Ev,
  (VTBL_ENTRY)&_ZN7S3041C23v40Ev,
  (VTBL_ENTRY)&_ZN7S3041C23v41Ev,
  (VTBL_ENTRY)&_ZN7S3041C23v42Ev,
  (VTBL_ENTRY)&_ZN7S3041C23v43Ev,
  (VTBL_ENTRY)&_ZN7S3041C23v44Ev,
  (VTBL_ENTRY)&_ZN7S3041C23v45Ev,
  (VTBL_ENTRY)&_ZN7S3041C23v46Ev,
  (VTBL_ENTRY)&_ZN7S3041C23v47Ev,
  (VTBL_ENTRY)&_ZN7S3041C23v48Ev,
};
extern VTBL_ENTRY _ZTI7S3041C2[];
extern  VTBL_ENTRY _ZTV7S3041C2[];
Class_Descriptor cd_S3041C2 = {  "S3041C2", // class name
  bases_S3041C2, 1,
  &(vtc_S3041C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3041C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3041C2),36, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3041C4_nt  {
  long s3041c4f0[4];
};
//SIG(-1 S3041C4_nt) C1{ Fl[4]}



//skip512 S3041C4_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3041C1  : S3041C2 {
  char s3041c1f0[3];
  int s3041c1f1[2];
  ::S3041C4_nt s3041c1f2;
  ::S3041C4_nt s3041c1f3;
  ::S3042C5_nt s3041c1f4;
  long s3041c1f5;
  void *s3041c1f6;
  virtual  ~S3041C1(); // _ZN7S3041C1D1Ev
  virtual void  v1(); // _ZN7S3041C12v1Ev
  virtual void  v2(); // _ZN7S3041C12v2Ev
  virtual void  v3(); // _ZN7S3041C12v3Ev
  virtual void  v4(); // _ZN7S3041C12v4Ev
  virtual void  v5(); // _ZN7S3041C12v5Ev
  virtual void  v6(); // _ZN7S3041C12v6Ev
  virtual void  v7(); // _ZN7S3041C12v7Ev
  virtual void  v8(); // _ZN7S3041C12v8Ev
  virtual void  v9(); // _ZN7S3041C12v9Ev
  virtual void  v10(); // _ZN7S3041C13v10Ev
  virtual void  v11(); // _ZN7S3041C13v11Ev
  virtual void  v12(); // _ZN7S3041C13v12Ev
  virtual void  v13(); // _ZN7S3041C13v13Ev
  virtual void  v14(); // _ZN7S3041C13v14Ev
  virtual void  v15(); // _ZN7S3041C13v15Ev
  virtual void  v16(); // _ZN7S3041C13v16Ev
  S3041C1(); // tgen
};
//SIG(1 S3041C1) C1{ BC2{ BC3{ vd v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32} vd v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 Fc[3] Fi[2] FC4{ Fl[4]} FC4 FC5{ BC6{ vd v50 Fp Fi} vd v49 Fp} Fl Fp}


 S3041C1 ::~S3041C1(){ note_dtor("S3041C1", this);}
void  S3041C1 ::v1(){vfunc_called(this, "_ZN7S3041C12v1Ev");}
void  S3041C1 ::v2(){vfunc_called(this, "_ZN7S3041C12v2Ev");}
void  S3041C1 ::v3(){vfunc_called(this, "_ZN7S3041C12v3Ev");}
void  S3041C1 ::v4(){vfunc_called(this, "_ZN7S3041C12v4Ev");}
void  S3041C1 ::v5(){vfunc_called(this, "_ZN7S3041C12v5Ev");}
void  S3041C1 ::v6(){vfunc_called(this, "_ZN7S3041C12v6Ev");}
void  S3041C1 ::v7(){vfunc_called(this, "_ZN7S3041C12v7Ev");}
void  S3041C1 ::v8(){vfunc_called(this, "_ZN7S3041C12v8Ev");}
void  S3041C1 ::v9(){vfunc_called(this, "_ZN7S3041C12v9Ev");}
void  S3041C1 ::v10(){vfunc_called(this, "_ZN7S3041C13v10Ev");}
void  S3041C1 ::v11(){vfunc_called(this, "_ZN7S3041C13v11Ev");}
void  S3041C1 ::v12(){vfunc_called(this, "_ZN7S3041C13v12Ev");}
void  S3041C1 ::v13(){vfunc_called(this, "_ZN7S3041C13v13Ev");}
void  S3041C1 ::v14(){vfunc_called(this, "_ZN7S3041C13v14Ev");}
void  S3041C1 ::v15(){vfunc_called(this, "_ZN7S3041C13v15Ev");}
void  S3041C1 ::v16(){vfunc_called(this, "_ZN7S3041C13v16Ev");}
S3041C1 ::S3041C1(){ note_ctor("S3041C1", this);} // tgen

static void Test_S3041C1()
{
  extern Class_Descriptor cd_S3041C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,19)];
    init_test(&cd_S3041C1, buf);
    S3041C1 *dp, &lv = *(dp=new (buf) S3041C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,72), "sizeof(S3041C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3041C1)");
    check_base_class_offset(lv, (S3041C3*)(S3041C2*), 0, "S3041C1");
    check_base_class_offset(lv, (S3041C2*), 0, "S3041C1");
    check_field_offset(lv, s3041c1f0, ABISELECT(8,4), "S3041C1.s3041c1f0");
    check_field_offset(lv, s3041c1f1, ABISELECT(12,8), "S3041C1.s3041c1f1");
    check_field_offset(lv, s3041c1f2, ABISELECT(24,16), "S3041C1.s3041c1f2");
    check_field_offset(lv, s3041c1f3, ABISELECT(56,32), "S3041C1.s3041c1f3");
    check_field_offset(lv, s3041c1f4, ABISELECT(88,48), "S3041C1.s3041c1f4");
    check_field_offset(lv, s3041c1f5, ABISELECT(120,64), "S3041C1.s3041c1f5");
    check_field_offset(lv, s3041c1f6, ABISELECT(128,68), "S3041C1.s3041c1f6");
    test_class_info(&lv, &cd_S3041C1);
    dp->~S3041C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3041C1(Test_S3041C1, "S3041C1", ABISELECT(136,72));

#else // __cplusplus

extern void _ZN7S3041C1C1Ev();
extern void _ZN7S3041C1D1Ev();
Name_Map name_map_S3041C1[] = {
  NSPAIR(_ZN7S3041C1C1Ev),
  NSPAIR(_ZN7S3041C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3041C3;
extern VTBL_ENTRY _ZTI7S3041C3[];
extern  VTBL_ENTRY _ZTV7S3041C3[];
extern Class_Descriptor cd_S3041C2;
extern VTBL_ENTRY _ZTI7S3041C2[];
extern  VTBL_ENTRY _ZTV7S3041C2[];
static Base_Class bases_S3041C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3041C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3041C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3041C1[];
extern void _ZN7S3041C1D1Ev();
extern void _ZN7S3041C1D0Ev();
extern void _ZN7S3041C33v17Ev();
extern void _ZN7S3041C33v18Ev();
extern void _ZN7S3041C33v19Ev();
extern void _ZN7S3041C33v20Ev();
extern void _ZN7S3041C33v21Ev();
extern void _ZN7S3041C33v22Ev();
extern void _ZN7S3041C33v23Ev();
extern void _ZN7S3041C33v24Ev();
extern void _ZN7S3041C33v25Ev();
extern void _ZN7S3041C33v26Ev();
extern void _ZN7S3041C33v27Ev();
extern void _ZN7S3041C33v28Ev();
extern void _ZN7S3041C33v29Ev();
extern void _ZN7S3041C33v30Ev();
extern void _ZN7S3041C33v31Ev();
extern void _ZN7S3041C33v32Ev();
extern void _ZN7S3041C23v33Ev();
extern void _ZN7S3041C23v34Ev();
extern void _ZN7S3041C23v35Ev();
extern void _ZN7S3041C23v36Ev();
extern void _ZN7S3041C23v37Ev();
extern void _ZN7S3041C23v38Ev();
extern void _ZN7S3041C23v39Ev();
extern void _ZN7S3041C23v40Ev();
extern void _ZN7S3041C23v41Ev();
extern void _ZN7S3041C23v42Ev();
extern void _ZN7S3041C23v43Ev();
extern void _ZN7S3041C23v44Ev();
extern void _ZN7S3041C23v45Ev();
extern void _ZN7S3041C23v46Ev();
extern void _ZN7S3041C23v47Ev();
extern void _ZN7S3041C23v48Ev();
extern void _ZN7S3041C12v1Ev();
extern void _ZN7S3041C12v2Ev();
extern void _ZN7S3041C12v3Ev();
extern void _ZN7S3041C12v4Ev();
extern void _ZN7S3041C12v5Ev();
extern void _ZN7S3041C12v6Ev();
extern void _ZN7S3041C12v7Ev();
extern void _ZN7S3041C12v8Ev();
extern void _ZN7S3041C12v9Ev();
extern void _ZN7S3041C13v10Ev();
extern void _ZN7S3041C13v11Ev();
extern void _ZN7S3041C13v12Ev();
extern void _ZN7S3041C13v13Ev();
extern void _ZN7S3041C13v14Ev();
extern void _ZN7S3041C13v15Ev();
extern void _ZN7S3041C13v16Ev();
static  VTBL_ENTRY vtc_S3041C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3041C1[0]),
  (VTBL_ENTRY)&_ZN7S3041C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3041C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3041C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3041C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3041C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3041C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3041C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3041C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3041C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3041C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3041C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3041C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3041C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3041C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3041C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3041C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3041C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3041C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3041C23v33Ev,
  (VTBL_ENTRY)&_ZN7S3041C23v34Ev,
  (VTBL_ENTRY)&_ZN7S3041C23v35Ev,
  (VTBL_ENTRY)&_ZN7S3041C23v36Ev,
  (VTBL_ENTRY)&_ZN7S3041C23v37Ev,
  (VTBL_ENTRY)&_ZN7S3041C23v38Ev,
  (VTBL_ENTRY)&_ZN7S3041C23v39Ev,
  (VTBL_ENTRY)&_ZN7S3041C23v40Ev,
  (VTBL_ENTRY)&_ZN7S3041C23v41Ev,
  (VTBL_ENTRY)&_ZN7S3041C23v42Ev,
  (VTBL_ENTRY)&_ZN7S3041C23v43Ev,
  (VTBL_ENTRY)&_ZN7S3041C23v44Ev,
  (VTBL_ENTRY)&_ZN7S3041C23v45Ev,
  (VTBL_ENTRY)&_ZN7S3041C23v46Ev,
  (VTBL_ENTRY)&_ZN7S3041C23v47Ev,
  (VTBL_ENTRY)&_ZN7S3041C23v48Ev,
  (VTBL_ENTRY)&_ZN7S3041C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3041C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3041C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3041C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3041C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3041C12v6Ev,
  (VTBL_ENTRY)&_ZN7S3041C12v7Ev,
  (VTBL_ENTRY)&_ZN7S3041C12v8Ev,
  (VTBL_ENTRY)&_ZN7S3041C12v9Ev,
  (VTBL_ENTRY)&_ZN7S3041C13v10Ev,
  (VTBL_ENTRY)&_ZN7S3041C13v11Ev,
  (VTBL_ENTRY)&_ZN7S3041C13v12Ev,
  (VTBL_ENTRY)&_ZN7S3041C13v13Ev,
  (VTBL_ENTRY)&_ZN7S3041C13v14Ev,
  (VTBL_ENTRY)&_ZN7S3041C13v15Ev,
  (VTBL_ENTRY)&_ZN7S3041C13v16Ev,
};
extern VTBL_ENTRY _ZTI7S3041C1[];
extern  VTBL_ENTRY _ZTV7S3041C1[];
Class_Descriptor cd_S3041C1 = {  "S3041C1", // class name
  bases_S3041C1, 2,
  &(vtc_S3041C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,72), // object size
  NSPAIRA(_ZTI7S3041C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3041C1),52, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1671C3  : S1679C4_nt {
  virtual void  v3(); // _ZN7S1671C32v3Ev
  virtual void  v4(); // _ZN7S1671C32v4Ev
  virtual void  v5(); // _ZN7S1671C32v5Ev
  virtual void  v6(); // _ZN7S1671C32v6Ev
  virtual void  v7(); // _ZN7S1671C32v7Ev
  virtual void  v8(); // _ZN7S1671C32v8Ev
  virtual void  v9(); // _ZN7S1671C32v9Ev
  virtual void  v10(); // _ZN7S1671C33v10Ev
  virtual void  v11(); // _ZN7S1671C33v11Ev
  virtual void  v12(); // _ZN7S1671C33v12Ev
  virtual void  v13(); // _ZN7S1671C33v13Ev
  virtual void  v14(); // _ZN7S1671C33v14Ev
  ~S1671C3(); // tgen
  S1671C3(); // tgen
};
//SIG(-1 S1671C3) C1{ BC2{ vd m Fi} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


void  S1671C3 ::v3(){vfunc_called(this, "_ZN7S1671C32v3Ev");}
void  S1671C3 ::v4(){vfunc_called(this, "_ZN7S1671C32v4Ev");}
void  S1671C3 ::v5(){vfunc_called(this, "_ZN7S1671C32v5Ev");}
void  S1671C3 ::v6(){vfunc_called(this, "_ZN7S1671C32v6Ev");}
void  S1671C3 ::v7(){vfunc_called(this, "_ZN7S1671C32v7Ev");}
void  S1671C3 ::v8(){vfunc_called(this, "_ZN7S1671C32v8Ev");}
void  S1671C3 ::v9(){vfunc_called(this, "_ZN7S1671C32v9Ev");}
void  S1671C3 ::v10(){vfunc_called(this, "_ZN7S1671C33v10Ev");}
void  S1671C3 ::v11(){vfunc_called(this, "_ZN7S1671C33v11Ev");}
void  S1671C3 ::v12(){vfunc_called(this, "_ZN7S1671C33v12Ev");}
void  S1671C3 ::v13(){vfunc_called(this, "_ZN7S1671C33v13Ev");}
void  S1671C3 ::v14(){vfunc_called(this, "_ZN7S1671C33v14Ev");}
S1671C3 ::~S1671C3(){ note_dtor("S1671C3", this);} // tgen
S1671C3 ::S1671C3(){ note_ctor("S1671C3", this);} // tgen

static void Test_S1671C3()
{
  extern Class_Descriptor cd_S1671C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1671C3, buf);
    S1671C3 *dp, &lv = *(dp=new (buf) S1671C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1671C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1671C3)");
    check_base_class_offset(lv, (S1679C4_nt*), 0, "S1671C3");
    test_class_info(&lv, &cd_S1671C3);
    dp->~S1671C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1671C3(Test_S1671C3, "S1671C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S1671C3C1Ev();
extern void _ZN7S1671C3D1Ev();
Name_Map name_map_S1671C3[] = {
  NSPAIR(_ZN7S1671C3C1Ev),
  NSPAIR(_ZN7S1671C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
static Base_Class bases_S1671C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1671C3[];
extern void _ZN7S1671C3D1Ev();
extern void _ZN7S1671C3D0Ev();
extern void _ZN7S1671C32v3Ev();
extern void _ZN7S1671C32v4Ev();
extern void _ZN7S1671C32v5Ev();
extern void _ZN7S1671C32v6Ev();
extern void _ZN7S1671C32v7Ev();
extern void _ZN7S1671C32v8Ev();
extern void _ZN7S1671C32v9Ev();
extern void _ZN7S1671C33v10Ev();
extern void _ZN7S1671C33v11Ev();
extern void _ZN7S1671C33v12Ev();
extern void _ZN7S1671C33v13Ev();
extern void _ZN7S1671C33v14Ev();
static  VTBL_ENTRY vtc_S1671C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1671C3[0]),
  (VTBL_ENTRY)&_ZN7S1671C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1671C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1671C32v3Ev,
  (VTBL_ENTRY)&_ZN7S1671C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1671C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1671C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1671C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1671C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1671C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1671C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1671C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1671C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1671C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1671C33v14Ev,
};
extern VTBL_ENTRY _ZTI7S1671C3[];
extern  VTBL_ENTRY _ZTV7S1671C3[];
Class_Descriptor cd_S1671C3 = {  "S1671C3", // class name
  bases_S1671C3, 1,
  &(vtc_S1671C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S1671C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1671C3),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1671C2  : S1671C3 {
  ::S79C38_nt s1671c2f0;
  ::S17777C6_nt s1671c2f1;
  ::S1679C8_nt s1671c2f2;
  int s1671c2f3[4];
  ::S4533C11_nt s1671c2f4;
  void *s1671c2f5[4];
  virtual  ~S1671C2(); // _ZN7S1671C2D1Ev
  virtual void  v15(); // _ZN7S1671C23v15Ev
  virtual void  v16(); // _ZN7S1671C23v16Ev
  virtual void  v17(); // _ZN7S1671C23v17Ev
  virtual void  v18(); // _ZN7S1671C23v18Ev
  virtual void  v19(); // _ZN7S1671C23v19Ev
  virtual void  v20(); // _ZN7S1671C23v20Ev
  virtual void  v21(); // _ZN7S1671C23v21Ev
  virtual void  v22(); // _ZN7S1671C23v22Ev
  virtual void  v23(); // _ZN7S1671C23v23Ev
  virtual void  v24(); // _ZN7S1671C23v24Ev
  virtual void  v25(); // _ZN7S1671C23v25Ev
  virtual void  v26(); // _ZN7S1671C23v26Ev
  virtual void  v27(); // _ZN7S1671C23v27Ev
  S1671C2(); // tgen
};
//SIG(-1 S1671C2) C1{ BC2{ BC3{ vd m Fi} v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 FC4{ m Fp[2]} FC5{ m Fp} FC6{ m FC7{ m Fp Fi[2] FC8{ m}} Fp[2]} Fi[4] FC9{ m Fp} Fp[4]}


 S1671C2 ::~S1671C2(){ note_dtor("S1671C2", this);}
void  S1671C2 ::v15(){vfunc_called(this, "_ZN7S1671C23v15Ev");}
void  S1671C2 ::v16(){vfunc_called(this, "_ZN7S1671C23v16Ev");}
void  S1671C2 ::v17(){vfunc_called(this, "_ZN7S1671C23v17Ev");}
void  S1671C2 ::v18(){vfunc_called(this, "_ZN7S1671C23v18Ev");}
void  S1671C2 ::v19(){vfunc_called(this, "_ZN7S1671C23v19Ev");}
void  S1671C2 ::v20(){vfunc_called(this, "_ZN7S1671C23v20Ev");}
void  S1671C2 ::v21(){vfunc_called(this, "_ZN7S1671C23v21Ev");}
void  S1671C2 ::v22(){vfunc_called(this, "_ZN7S1671C23v22Ev");}
void  S1671C2 ::v23(){vfunc_called(this, "_ZN7S1671C23v23Ev");}
void  S1671C2 ::v24(){vfunc_called(this, "_ZN7S1671C23v24Ev");}
void  S1671C2 ::v25(){vfunc_called(this, "_ZN7S1671C23v25Ev");}
void  S1671C2 ::v26(){vfunc_called(this, "_ZN7S1671C23v26Ev");}
void  S1671C2 ::v27(){vfunc_called(this, "_ZN7S1671C23v27Ev");}
S1671C2 ::S1671C2(){ note_ctor("S1671C2", this);} // tgen

static void Test_S1671C2()
{
  extern Class_Descriptor cd_S1671C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,21)];
    init_test(&cd_S1671C2, buf);
    S1671C2 *dp, &lv = *(dp=new (buf) S1671C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,80), "sizeof(S1671C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1671C2)");
    check_base_class_offset(lv, (S1679C4_nt*)(S1671C3*), 0, "S1671C2");
    check_base_class_offset(lv, (S1671C3*), 0, "S1671C2");
    check_field_offset(lv, s1671c2f0, ABISELECT(16,8), "S1671C2.s1671c2f0");
    check_field_offset(lv, s1671c2f1, ABISELECT(32,16), "S1671C2.s1671c2f1");
    check_field_offset(lv, s1671c2f2, ABISELECT(40,20), "S1671C2.s1671c2f2");
    check_field_offset(lv, s1671c2f3, ABISELECT(80,44), "S1671C2.s1671c2f3");
    check_field_offset(lv, s1671c2f4, ABISELECT(96,60), "S1671C2.s1671c2f4");
    check_field_offset(lv, s1671c2f5, ABISELECT(104,64), "S1671C2.s1671c2f5");
    test_class_info(&lv, &cd_S1671C2);
    dp->~S1671C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1671C2(Test_S1671C2, "S1671C2", ABISELECT(136,80));

#else // __cplusplus

extern void _ZN7S1671C2C1Ev();
extern void _ZN7S1671C2D1Ev();
Name_Map name_map_S1671C2[] = {
  NSPAIR(_ZN7S1671C2C1Ev),
  NSPAIR(_ZN7S1671C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
extern Class_Descriptor cd_S1671C3;
extern VTBL_ENTRY _ZTI7S1671C3[];
extern  VTBL_ENTRY _ZTV7S1671C3[];
static Base_Class bases_S1671C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1671C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1671C2[];
extern void _ZN7S1671C2D1Ev();
extern void _ZN7S1671C2D0Ev();
extern void _ZN7S1671C32v3Ev();
extern void _ZN7S1671C32v4Ev();
extern void _ZN7S1671C32v5Ev();
extern void _ZN7S1671C32v6Ev();
extern void _ZN7S1671C32v7Ev();
extern void _ZN7S1671C32v8Ev();
extern void _ZN7S1671C32v9Ev();
extern void _ZN7S1671C33v10Ev();
extern void _ZN7S1671C33v11Ev();
extern void _ZN7S1671C33v12Ev();
extern void _ZN7S1671C33v13Ev();
extern void _ZN7S1671C33v14Ev();
extern void _ZN7S1671C23v15Ev();
extern void _ZN7S1671C23v16Ev();
extern void _ZN7S1671C23v17Ev();
extern void _ZN7S1671C23v18Ev();
extern void _ZN7S1671C23v19Ev();
extern void _ZN7S1671C23v20Ev();
extern void _ZN7S1671C23v21Ev();
extern void _ZN7S1671C23v22Ev();
extern void _ZN7S1671C23v23Ev();
extern void _ZN7S1671C23v24Ev();
extern void _ZN7S1671C23v25Ev();
extern void _ZN7S1671C23v26Ev();
extern void _ZN7S1671C23v27Ev();
static  VTBL_ENTRY vtc_S1671C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1671C2[0]),
  (VTBL_ENTRY)&_ZN7S1671C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1671C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1671C32v3Ev,
  (VTBL_ENTRY)&_ZN7S1671C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1671C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1671C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1671C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1671C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1671C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1671C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1671C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1671C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1671C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1671C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1671C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1671C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1671C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1671C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1671C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1671C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1671C23v21Ev,
  (VTBL_ENTRY)&_ZN7S1671C23v22Ev,
  (VTBL_ENTRY)&_ZN7S1671C23v23Ev,
  (VTBL_ENTRY)&_ZN7S1671C23v24Ev,
  (VTBL_ENTRY)&_ZN7S1671C23v25Ev,
  (VTBL_ENTRY)&_ZN7S1671C23v26Ev,
  (VTBL_ENTRY)&_ZN7S1671C23v27Ev,
};
extern VTBL_ENTRY _ZTI7S1671C2[];
extern  VTBL_ENTRY _ZTV7S1671C2[];
Class_Descriptor cd_S1671C2 = {  "S1671C2", // class name
  bases_S1671C2, 2,
  &(vtc_S1671C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,80), // object size
  NSPAIRA(_ZTI7S1671C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1671C2),29, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1671C15_nt  {
  ::S3041C4_nt s1671c15f0;
  void  mf1671c15(); // _ZN11S1671C15_nt9mf1671c15Ev
};
//SIG(-1 S1671C15_nt) C1{ m FC2{ Fl[4]}}


void  S1671C15_nt ::mf1671c15(){}

//skip512 S1671C15_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1671C1  : S1671C2 {
  ::S1679C8_nt s1671c1f0;
  ::S5266C24 s1671c1f1;
  ::S1671C15_nt s1671c1f2;
  virtual  ~S1671C1(); // _ZN7S1671C1D1Ev
  virtual void  v1(); // _ZN7S1671C12v1Ev
  virtual void  v2(); // _ZN7S1671C12v2Ev
  S1671C1(); // tgen
};
//SIG(1 S1671C1) C1{ BC2{ BC3{ BC4{ vd m Fi} v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14} vd v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 FC5{ m Fp[2]} FC6{ m Fp} FC7{ m FC8{ m Fp Fi[2] FC9{ m}} Fp[2]} Fi[4] FC10{ m Fp} Fp[4]} vd v1 v2 FC7 FC11{ BC12{ m Fp Fi FC13{ m} FC13}} FC14{ m FC15{ Fl[4]}}}


 S1671C1 ::~S1671C1(){ note_dtor("S1671C1", this);}
void  S1671C1 ::v1(){vfunc_called(this, "_ZN7S1671C12v1Ev");}
void  S1671C1 ::v2(){vfunc_called(this, "_ZN7S1671C12v2Ev");}
S1671C1 ::S1671C1(){ note_ctor("S1671C1", this);} // tgen

static void Test_S1671C1()
{
  extern Class_Descriptor cd_S1671C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(29,34)];
    init_test(&cd_S1671C1, buf);
    S1671C1 *dp, &lv = *(dp=new (buf) S1671C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,132), "sizeof(S1671C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1671C1)");
    check_base_class_offset(lv, (S1679C4_nt*)(S1671C3*)(S1671C2*), 0, "S1671C1");
    check_base_class_offset(lv, (S1671C3*)(S1671C2*), 0, "S1671C1");
    check_base_class_offset(lv, (S1671C2*), 0, "S1671C1");
    check_field_offset(lv, s1671c1f0, ABISELECT(136,80), "S1671C1.s1671c1f0");
    check_field_offset(lv, s1671c1f1, ABISELECT(176,104), "S1671C1.s1671c1f1");
    check_field_offset(lv, s1671c1f2, ABISELECT(192,116), "S1671C1.s1671c1f2");
    test_class_info(&lv, &cd_S1671C1);
    dp->~S1671C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1671C1(Test_S1671C1, "S1671C1", ABISELECT(224,132));

#else // __cplusplus

extern void _ZN7S1671C1C1Ev();
extern void _ZN7S1671C1D1Ev();
Name_Map name_map_S1671C1[] = {
  NSPAIR(_ZN7S1671C1C1Ev),
  NSPAIR(_ZN7S1671C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
extern Class_Descriptor cd_S1671C3;
extern VTBL_ENTRY _ZTI7S1671C3[];
extern  VTBL_ENTRY _ZTV7S1671C3[];
extern Class_Descriptor cd_S1671C2;
extern VTBL_ENTRY _ZTI7S1671C2[];
extern  VTBL_ENTRY _ZTV7S1671C2[];
static Base_Class bases_S1671C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1671C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1671C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1671C1[];
extern void _ZN7S1671C1D1Ev();
extern void _ZN7S1671C1D0Ev();
extern void _ZN7S1671C32v3Ev();
extern void _ZN7S1671C32v4Ev();
extern void _ZN7S1671C32v5Ev();
extern void _ZN7S1671C32v6Ev();
extern void _ZN7S1671C32v7Ev();
extern void _ZN7S1671C32v8Ev();
extern void _ZN7S1671C32v9Ev();
extern void _ZN7S1671C33v10Ev();
extern void _ZN7S1671C33v11Ev();
extern void _ZN7S1671C33v12Ev();
extern void _ZN7S1671C33v13Ev();
extern void _ZN7S1671C33v14Ev();
extern void _ZN7S1671C23v15Ev();
extern void _ZN7S1671C23v16Ev();
extern void _ZN7S1671C23v17Ev();
extern void _ZN7S1671C23v18Ev();
extern void _ZN7S1671C23v19Ev();
extern void _ZN7S1671C23v20Ev();
extern void _ZN7S1671C23v21Ev();
extern void _ZN7S1671C23v22Ev();
extern void _ZN7S1671C23v23Ev();
extern void _ZN7S1671C23v24Ev();
extern void _ZN7S1671C23v25Ev();
extern void _ZN7S1671C23v26Ev();
extern void _ZN7S1671C23v27Ev();
extern void _ZN7S1671C12v1Ev();
extern void _ZN7S1671C12v2Ev();
static  VTBL_ENTRY vtc_S1671C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1671C1[0]),
  (VTBL_ENTRY)&_ZN7S1671C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1671C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1671C32v3Ev,
  (VTBL_ENTRY)&_ZN7S1671C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1671C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1671C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1671C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1671C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1671C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1671C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1671C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1671C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1671C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1671C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1671C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1671C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1671C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1671C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1671C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1671C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1671C23v21Ev,
  (VTBL_ENTRY)&_ZN7S1671C23v22Ev,
  (VTBL_ENTRY)&_ZN7S1671C23v23Ev,
  (VTBL_ENTRY)&_ZN7S1671C23v24Ev,
  (VTBL_ENTRY)&_ZN7S1671C23v25Ev,
  (VTBL_ENTRY)&_ZN7S1671C23v26Ev,
  (VTBL_ENTRY)&_ZN7S1671C23v27Ev,
  (VTBL_ENTRY)&_ZN7S1671C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1671C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S1671C1[];
extern  VTBL_ENTRY _ZTV7S1671C1[];
Class_Descriptor cd_S1671C1 = {  "S1671C1", // class name
  bases_S1671C1, 3,
  &(vtc_S1671C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(224,132), // object size
  NSPAIRA(_ZTI7S1671C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1671C1),31, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1672C3  : S1679C4_nt {
  virtual void  v3(); // _ZN7S1672C32v3Ev
  virtual void  v4(); // _ZN7S1672C32v4Ev
  virtual void  v5(); // _ZN7S1672C32v5Ev
  virtual void  v6(); // _ZN7S1672C32v6Ev
  virtual void  v7(); // _ZN7S1672C32v7Ev
  virtual void  v8(); // _ZN7S1672C32v8Ev
  virtual void  v9(); // _ZN7S1672C32v9Ev
  virtual void  v10(); // _ZN7S1672C33v10Ev
  virtual void  v11(); // _ZN7S1672C33v11Ev
  virtual void  v12(); // _ZN7S1672C33v12Ev
  virtual void  v13(); // _ZN7S1672C33v13Ev
  virtual void  v14(); // _ZN7S1672C33v14Ev
  ~S1672C3(); // tgen
  S1672C3(); // tgen
};
//SIG(-1 S1672C3) C1{ BC2{ vd m Fi} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


void  S1672C3 ::v3(){vfunc_called(this, "_ZN7S1672C32v3Ev");}
void  S1672C3 ::v4(){vfunc_called(this, "_ZN7S1672C32v4Ev");}
void  S1672C3 ::v5(){vfunc_called(this, "_ZN7S1672C32v5Ev");}
void  S1672C3 ::v6(){vfunc_called(this, "_ZN7S1672C32v6Ev");}
void  S1672C3 ::v7(){vfunc_called(this, "_ZN7S1672C32v7Ev");}
void  S1672C3 ::v8(){vfunc_called(this, "_ZN7S1672C32v8Ev");}
void  S1672C3 ::v9(){vfunc_called(this, "_ZN7S1672C32v9Ev");}
void  S1672C3 ::v10(){vfunc_called(this, "_ZN7S1672C33v10Ev");}
void  S1672C3 ::v11(){vfunc_called(this, "_ZN7S1672C33v11Ev");}
void  S1672C3 ::v12(){vfunc_called(this, "_ZN7S1672C33v12Ev");}
void  S1672C3 ::v13(){vfunc_called(this, "_ZN7S1672C33v13Ev");}
void  S1672C3 ::v14(){vfunc_called(this, "_ZN7S1672C33v14Ev");}
S1672C3 ::~S1672C3(){ note_dtor("S1672C3", this);} // tgen
S1672C3 ::S1672C3(){ note_ctor("S1672C3", this);} // tgen

static void Test_S1672C3()
{
  extern Class_Descriptor cd_S1672C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1672C3, buf);
    S1672C3 *dp, &lv = *(dp=new (buf) S1672C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1672C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1672C3)");
    check_base_class_offset(lv, (S1679C4_nt*), 0, "S1672C3");
    test_class_info(&lv, &cd_S1672C3);
    dp->~S1672C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1672C3(Test_S1672C3, "S1672C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S1672C3C1Ev();
extern void _ZN7S1672C3D1Ev();
Name_Map name_map_S1672C3[] = {
  NSPAIR(_ZN7S1672C3C1Ev),
  NSPAIR(_ZN7S1672C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
static Base_Class bases_S1672C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1672C3[];
extern void _ZN7S1672C3D1Ev();
extern void _ZN7S1672C3D0Ev();
extern void _ZN7S1672C32v3Ev();
extern void _ZN7S1672C32v4Ev();
extern void _ZN7S1672C32v5Ev();
extern void _ZN7S1672C32v6Ev();
extern void _ZN7S1672C32v7Ev();
extern void _ZN7S1672C32v8Ev();
extern void _ZN7S1672C32v9Ev();
extern void _ZN7S1672C33v10Ev();
extern void _ZN7S1672C33v11Ev();
extern void _ZN7S1672C33v12Ev();
extern void _ZN7S1672C33v13Ev();
extern void _ZN7S1672C33v14Ev();
static  VTBL_ENTRY vtc_S1672C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1672C3[0]),
  (VTBL_ENTRY)&_ZN7S1672C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1672C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1672C32v3Ev,
  (VTBL_ENTRY)&_ZN7S1672C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1672C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1672C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1672C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1672C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1672C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1672C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1672C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1672C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1672C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1672C33v14Ev,
};
extern VTBL_ENTRY _ZTI7S1672C3[];
extern  VTBL_ENTRY _ZTV7S1672C3[];
Class_Descriptor cd_S1672C3 = {  "S1672C3", // class name
  bases_S1672C3, 1,
  &(vtc_S1672C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S1672C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1672C3),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1672C2  : S1672C3 {
  ::S79C38_nt s1672c2f0;
  ::S17777C6_nt s1672c2f1;
  ::S1679C8_nt s1672c2f2;
  int s1672c2f3[4];
  ::S4533C11_nt s1672c2f4;
  void *s1672c2f5[4];
  virtual  ~S1672C2(); // _ZN7S1672C2D1Ev
  virtual void  v15(); // _ZN7S1672C23v15Ev
  virtual void  v16(); // _ZN7S1672C23v16Ev
  virtual void  v17(); // _ZN7S1672C23v17Ev
  virtual void  v18(); // _ZN7S1672C23v18Ev
  virtual void  v19(); // _ZN7S1672C23v19Ev
  virtual void  v20(); // _ZN7S1672C23v20Ev
  virtual void  v21(); // _ZN7S1672C23v21Ev
  virtual void  v22(); // _ZN7S1672C23v22Ev
  virtual void  v23(); // _ZN7S1672C23v23Ev
  virtual void  v24(); // _ZN7S1672C23v24Ev
  virtual void  v25(); // _ZN7S1672C23v25Ev
  virtual void  v26(); // _ZN7S1672C23v26Ev
  virtual void  v27(); // _ZN7S1672C23v27Ev
  S1672C2(); // tgen
};
//SIG(-1 S1672C2) C1{ BC2{ BC3{ vd m Fi} v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 FC4{ m Fp[2]} FC5{ m Fp} FC6{ m FC7{ m Fp Fi[2] FC8{ m}} Fp[2]} Fi[4] FC9{ m Fp} Fp[4]}


 S1672C2 ::~S1672C2(){ note_dtor("S1672C2", this);}
void  S1672C2 ::v15(){vfunc_called(this, "_ZN7S1672C23v15Ev");}
void  S1672C2 ::v16(){vfunc_called(this, "_ZN7S1672C23v16Ev");}
void  S1672C2 ::v17(){vfunc_called(this, "_ZN7S1672C23v17Ev");}
void  S1672C2 ::v18(){vfunc_called(this, "_ZN7S1672C23v18Ev");}
void  S1672C2 ::v19(){vfunc_called(this, "_ZN7S1672C23v19Ev");}
void  S1672C2 ::v20(){vfunc_called(this, "_ZN7S1672C23v20Ev");}
void  S1672C2 ::v21(){vfunc_called(this, "_ZN7S1672C23v21Ev");}
void  S1672C2 ::v22(){vfunc_called(this, "_ZN7S1672C23v22Ev");}
void  S1672C2 ::v23(){vfunc_called(this, "_ZN7S1672C23v23Ev");}
void  S1672C2 ::v24(){vfunc_called(this, "_ZN7S1672C23v24Ev");}
void  S1672C2 ::v25(){vfunc_called(this, "_ZN7S1672C23v25Ev");}
void  S1672C2 ::v26(){vfunc_called(this, "_ZN7S1672C23v26Ev");}
void  S1672C2 ::v27(){vfunc_called(this, "_ZN7S1672C23v27Ev");}
S1672C2 ::S1672C2(){ note_ctor("S1672C2", this);} // tgen

static void Test_S1672C2()
{
  extern Class_Descriptor cd_S1672C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,21)];
    init_test(&cd_S1672C2, buf);
    S1672C2 *dp, &lv = *(dp=new (buf) S1672C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,80), "sizeof(S1672C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1672C2)");
    check_base_class_offset(lv, (S1679C4_nt*)(S1672C3*), 0, "S1672C2");
    check_base_class_offset(lv, (S1672C3*), 0, "S1672C2");
    check_field_offset(lv, s1672c2f0, ABISELECT(16,8), "S1672C2.s1672c2f0");
    check_field_offset(lv, s1672c2f1, ABISELECT(32,16), "S1672C2.s1672c2f1");
    check_field_offset(lv, s1672c2f2, ABISELECT(40,20), "S1672C2.s1672c2f2");
    check_field_offset(lv, s1672c2f3, ABISELECT(80,44), "S1672C2.s1672c2f3");
    check_field_offset(lv, s1672c2f4, ABISELECT(96,60), "S1672C2.s1672c2f4");
    check_field_offset(lv, s1672c2f5, ABISELECT(104,64), "S1672C2.s1672c2f5");
    test_class_info(&lv, &cd_S1672C2);
    dp->~S1672C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1672C2(Test_S1672C2, "S1672C2", ABISELECT(136,80));

#else // __cplusplus

extern void _ZN7S1672C2C1Ev();
extern void _ZN7S1672C2D1Ev();
Name_Map name_map_S1672C2[] = {
  NSPAIR(_ZN7S1672C2C1Ev),
  NSPAIR(_ZN7S1672C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
extern Class_Descriptor cd_S1672C3;
extern VTBL_ENTRY _ZTI7S1672C3[];
extern  VTBL_ENTRY _ZTV7S1672C3[];
static Base_Class bases_S1672C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1672C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1672C2[];
extern void _ZN7S1672C2D1Ev();
extern void _ZN7S1672C2D0Ev();
extern void _ZN7S1672C32v3Ev();
extern void _ZN7S1672C32v4Ev();
extern void _ZN7S1672C32v5Ev();
extern void _ZN7S1672C32v6Ev();
extern void _ZN7S1672C32v7Ev();
extern void _ZN7S1672C32v8Ev();
extern void _ZN7S1672C32v9Ev();
extern void _ZN7S1672C33v10Ev();
extern void _ZN7S1672C33v11Ev();
extern void _ZN7S1672C33v12Ev();
extern void _ZN7S1672C33v13Ev();
extern void _ZN7S1672C33v14Ev();
extern void _ZN7S1672C23v15Ev();
extern void _ZN7S1672C23v16Ev();
extern void _ZN7S1672C23v17Ev();
extern void _ZN7S1672C23v18Ev();
extern void _ZN7S1672C23v19Ev();
extern void _ZN7S1672C23v20Ev();
extern void _ZN7S1672C23v21Ev();
extern void _ZN7S1672C23v22Ev();
extern void _ZN7S1672C23v23Ev();
extern void _ZN7S1672C23v24Ev();
extern void _ZN7S1672C23v25Ev();
extern void _ZN7S1672C23v26Ev();
extern void _ZN7S1672C23v27Ev();
static  VTBL_ENTRY vtc_S1672C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1672C2[0]),
  (VTBL_ENTRY)&_ZN7S1672C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1672C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1672C32v3Ev,
  (VTBL_ENTRY)&_ZN7S1672C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1672C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1672C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1672C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1672C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1672C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1672C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1672C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1672C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1672C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1672C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1672C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1672C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1672C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1672C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1672C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1672C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1672C23v21Ev,
  (VTBL_ENTRY)&_ZN7S1672C23v22Ev,
  (VTBL_ENTRY)&_ZN7S1672C23v23Ev,
  (VTBL_ENTRY)&_ZN7S1672C23v24Ev,
  (VTBL_ENTRY)&_ZN7S1672C23v25Ev,
  (VTBL_ENTRY)&_ZN7S1672C23v26Ev,
  (VTBL_ENTRY)&_ZN7S1672C23v27Ev,
};
extern VTBL_ENTRY _ZTI7S1672C2[];
extern  VTBL_ENTRY _ZTV7S1672C2[];
Class_Descriptor cd_S1672C2 = {  "S1672C2", // class name
  bases_S1672C2, 2,
  &(vtc_S1672C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,80), // object size
  NSPAIRA(_ZTI7S1672C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1672C2),29, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1672C15_nt  {
  ::S3042C4_nt s1672c15f0;
  void  mf1672c15(); // _ZN11S1672C15_nt9mf1672c15Ev
};
//SIG(-1 S1672C15_nt) C1{ m FC2{ FL[4]}}


void  S1672C15_nt ::mf1672c15(){}

//skip512 S1672C15_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1672C1  : S1672C2 {
  ::S1679C8_nt s1672c1f0;
  ::S5266C24 s1672c1f1;
  ::S1672C15_nt s1672c1f2;
  virtual  ~S1672C1(); // _ZN7S1672C1D1Ev
  virtual void  v1(); // _ZN7S1672C12v1Ev
  virtual void  v2(); // _ZN7S1672C12v2Ev
  S1672C1(); // tgen
};
//SIG(1 S1672C1) C1{ BC2{ BC3{ BC4{ vd m Fi} v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14} vd v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 FC5{ m Fp[2]} FC6{ m Fp} FC7{ m FC8{ m Fp Fi[2] FC9{ m}} Fp[2]} Fi[4] FC10{ m Fp} Fp[4]} vd v1 v2 FC7 FC11{ BC12{ m Fp Fi FC13{ m} FC13}} FC14{ m FC15{ FL[4]}}}


 S1672C1 ::~S1672C1(){ note_dtor("S1672C1", this);}
void  S1672C1 ::v1(){vfunc_called(this, "_ZN7S1672C12v1Ev");}
void  S1672C1 ::v2(){vfunc_called(this, "_ZN7S1672C12v2Ev");}
S1672C1 ::S1672C1(){ note_ctor("S1672C1", this);} // tgen

static void Test_S1672C1()
{
  extern Class_Descriptor cd_S1672C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(29,38)];
    init_test(&cd_S1672C1, buf);
    S1672C1 *dp, &lv = *(dp=new (buf) S1672C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,148), "sizeof(S1672C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1672C1)");
    check_base_class_offset(lv, (S1679C4_nt*)(S1672C3*)(S1672C2*), 0, "S1672C1");
    check_base_class_offset(lv, (S1672C3*)(S1672C2*), 0, "S1672C1");
    check_base_class_offset(lv, (S1672C2*), 0, "S1672C1");
    check_field_offset(lv, s1672c1f0, ABISELECT(136,80), "S1672C1.s1672c1f0");
    check_field_offset(lv, s1672c1f1, ABISELECT(176,104), "S1672C1.s1672c1f1");
    check_field_offset(lv, s1672c1f2, ABISELECT(192,116), "S1672C1.s1672c1f2");
    test_class_info(&lv, &cd_S1672C1);
    dp->~S1672C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1672C1(Test_S1672C1, "S1672C1", ABISELECT(224,148));

#else // __cplusplus

extern void _ZN7S1672C1C1Ev();
extern void _ZN7S1672C1D1Ev();
Name_Map name_map_S1672C1[] = {
  NSPAIR(_ZN7S1672C1C1Ev),
  NSPAIR(_ZN7S1672C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
extern Class_Descriptor cd_S1672C3;
extern VTBL_ENTRY _ZTI7S1672C3[];
extern  VTBL_ENTRY _ZTV7S1672C3[];
extern Class_Descriptor cd_S1672C2;
extern VTBL_ENTRY _ZTI7S1672C2[];
extern  VTBL_ENTRY _ZTV7S1672C2[];
static Base_Class bases_S1672C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1672C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1672C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1672C1[];
extern void _ZN7S1672C1D1Ev();
extern void _ZN7S1672C1D0Ev();
extern void _ZN7S1672C32v3Ev();
extern void _ZN7S1672C32v4Ev();
extern void _ZN7S1672C32v5Ev();
extern void _ZN7S1672C32v6Ev();
extern void _ZN7S1672C32v7Ev();
extern void _ZN7S1672C32v8Ev();
extern void _ZN7S1672C32v9Ev();
extern void _ZN7S1672C33v10Ev();
extern void _ZN7S1672C33v11Ev();
extern void _ZN7S1672C33v12Ev();
extern void _ZN7S1672C33v13Ev();
extern void _ZN7S1672C33v14Ev();
extern void _ZN7S1672C23v15Ev();
extern void _ZN7S1672C23v16Ev();
extern void _ZN7S1672C23v17Ev();
extern void _ZN7S1672C23v18Ev();
extern void _ZN7S1672C23v19Ev();
extern void _ZN7S1672C23v20Ev();
extern void _ZN7S1672C23v21Ev();
extern void _ZN7S1672C23v22Ev();
extern void _ZN7S1672C23v23Ev();
extern void _ZN7S1672C23v24Ev();
extern void _ZN7S1672C23v25Ev();
extern void _ZN7S1672C23v26Ev();
extern void _ZN7S1672C23v27Ev();
extern void _ZN7S1672C12v1Ev();
extern void _ZN7S1672C12v2Ev();
static  VTBL_ENTRY vtc_S1672C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1672C1[0]),
  (VTBL_ENTRY)&_ZN7S1672C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1672C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1672C32v3Ev,
  (VTBL_ENTRY)&_ZN7S1672C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1672C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1672C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1672C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1672C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1672C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1672C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1672C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1672C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1672C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1672C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1672C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1672C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1672C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1672C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1672C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1672C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1672C23v21Ev,
  (VTBL_ENTRY)&_ZN7S1672C23v22Ev,
  (VTBL_ENTRY)&_ZN7S1672C23v23Ev,
  (VTBL_ENTRY)&_ZN7S1672C23v24Ev,
  (VTBL_ENTRY)&_ZN7S1672C23v25Ev,
  (VTBL_ENTRY)&_ZN7S1672C23v26Ev,
  (VTBL_ENTRY)&_ZN7S1672C23v27Ev,
  (VTBL_ENTRY)&_ZN7S1672C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1672C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S1672C1[];
extern  VTBL_ENTRY _ZTV7S1672C1[];
Class_Descriptor cd_S1672C1 = {  "S1672C1", // class name
  bases_S1672C1, 3,
  &(vtc_S1672C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(224,148), // object size
  NSPAIRA(_ZTI7S1672C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1672C1),31, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19010C7  : S5266C26 , S5266C29 , virtual S7719C4_nt {
  ::S5266C29 s19010c7f0;
  ~S19010C7(); // tgen
  S19010C7(); // tgen
};
//SIG(-1 S19010C7) C1{ BC2{ m} BC3{ m} VBC4{ m Fc} FC3}


S19010C7 ::~S19010C7(){ note_dtor("S19010C7", this);} // tgen
S19010C7 ::S19010C7(){ note_ctor("S19010C7", this);} // tgen

static void Test_S19010C7()
{
  extern Class_Descriptor cd_S19010C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19010C7, buf);
    S19010C7 *dp, &lv = *(dp=new (buf) S19010C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19010C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19010C7)");
    check_base_class_offset(lv, (S5266C26*), 0, "S19010C7");
    check_base_class_offset(lv, (S5266C29*), 0, "S19010C7");
    check_base_class_offset(lv, (S7719C4_nt*), ABISELECT(9,5), "S19010C7");
    check_field_offset(lv, s19010c7f0, ABISELECT(8,4), "S19010C7.s19010c7f0");
    test_class_info(&lv, &cd_S19010C7);
    dp->~S19010C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19010C7(Test_S19010C7, "S19010C7", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19010C7C1Ev();
extern void _ZN8S19010C7D1Ev();
Name_Map name_map_S19010C7[] = {
  NSPAIR(_ZN8S19010C7C1Ev),
  NSPAIR(_ZN8S19010C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
static Base_Class bases_S19010C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7719C4_nt,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19010C7[];
static  VTBL_ENTRY vtc_S19010C7[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S19010C7[0]),
};
extern VTBL_ENTRY _ZTV8S19010C7[];
static  VTT_ENTRY vtt_S19010C7[] = {
  {&(_ZTV8S19010C7[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19010C7[];
extern  VTBL_ENTRY _ZTV8S19010C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19010C7[];
Class_Descriptor cd_S19010C7 = {  "S19010C7", // class name
  bases_S19010C7, 3,
  &(vtc_S19010C7[0]), // expected_vtbl_contents
  &(vtt_S19010C7[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19010C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19010C7),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19010C7),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19010C11  : S5266C26 , S7719C4_nt {
};
//SIG(-1 S19010C11) C1{ BC2{ m} BC3{ m Fc}}



static void Test_S19010C11()
{
  extern Class_Descriptor cd_S19010C11;
  void *lvp;
  {
    char buf[1];
    init_test(&cd_S19010C11, buf);
    S19010C11 &lv = *(new (buf) S19010C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1, "sizeof(S19010C11)");
    check2(__alignof__(lv), 1, "__alignof__(S19010C11)");
    check_base_class_offset(lv, (S5266C26*), 0, "S19010C11");
    check_base_class_offset(lv, (S7719C4_nt*), 0, "S19010C11");
    test_class_info(&lv, &cd_S19010C11);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19010C11(Test_S19010C11, "S19010C11", 1);

#else // __cplusplus

extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
static Base_Class bases_S19010C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7719C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19010C11[];
Class_Descriptor cd_S19010C11 = {  "S19010C11", // class name
  bases_S19010C11, 2,
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI9S19010C11),ABISELECT(56,32), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19010C10  : virtual S7719C4_nt , S5266C29 , S19010C11 , virtual S19010C7 {
  ~S19010C10(); // tgen
  S19010C10(); // tgen
};
//SIG(-1 S19010C10) C1{ VBC2{ m Fc} BC3{ m} BC4{ BC5{ m} BC2} VBC6{ BC5 BC3 VBC2 FC3}}


S19010C10 ::~S19010C10(){ note_dtor("S19010C10", this);} // tgen
S19010C10 ::S19010C10(){ note_ctor("S19010C10", this);} // tgen

static void Test_S19010C10()
{
  extern Class_Descriptor cd_S19010C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19010C10, buf);
    S19010C10 *dp, &lv = *(dp=new (buf) S19010C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19010C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19010C10)");
    /*is_ambiguous_... S19010C10::S7719C4_nt */ AMB_check_base_class_offset(lv, (S7719C4_nt*), ABISELECT(9,5), "S19010C10");
    check_base_class_offset(lv, (S7719C4_nt*)(S19010C7*), ABISELECT(9,5), "S19010C10");
    /*is_ambiguous_... S19010C10::S5266C29 */ AMB_check_base_class_offset(lv, (S5266C29*), 0, "S19010C10");
    check_base_class_offset(lv, (S5266C26*)(S19010C11*), ABISELECT(8,4), "S19010C10");
    check_base_class_offset(lv, (S7719C4_nt*)(S19010C11*), ABISELECT(8,4), "S19010C10");
    check_base_class_offset(lv, (S19010C11*), ABISELECT(8,4), "S19010C10");
    check_base_class_offset(lv, (S5266C26*)(S19010C7*), ABISELECT(16,8), "S19010C10");
    check_base_class_offset(lv, (S5266C29*)(S19010C7*), ABISELECT(16,8), "S19010C10");
    check_base_class_offset(lv, (S19010C7*), ABISELECT(16,8), "S19010C10");
    test_class_info(&lv, &cd_S19010C10);
    dp->~S19010C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19010C10(Test_S19010C10, "S19010C10", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN9S19010C10C1Ev();
extern void _ZN9S19010C10D1Ev();
Name_Map name_map_S19010C10[] = {
  NSPAIR(_ZN9S19010C10C1Ev),
  NSPAIR(_ZN9S19010C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S19010C11;
extern VTBL_ENTRY _ZTI9S19010C11[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S19010C7;
extern VTBL_ENTRY _ZTI8S19010C7[];
extern  VTBL_ENTRY _ZTV8S19010C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19010C7[];
static Base_Class bases_S19010C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7719C4_nt,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C26,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19010C11,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C26,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S5266C29,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19010C7,    ABISELECT(16,8), //bcp->offset
    4, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19010C10[];
static  VTBL_ENTRY vtc_S19010C10[] = {
  ABISELECT(16,8),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI9S19010C10[0]),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19010C10[0]),
};
extern VTBL_ENTRY _ZTV9S19010C10[];
static  VTBL_ENTRY _tg__ZTV8S19010C7__9S19010C10[] = {
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S19010C7[0]),
};
static  VTT_ENTRY vtt_S19010C10[] = {
  {&(_ZTV9S19010C10[4]),  4,7},
  {&(_ZTV9S19010C10[7]),  7,7},
  {&(_tg__ZTV8S19010C7__9S19010C10[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19010C10[];
extern  VTBL_ENTRY _ZTV9S19010C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19010C10[];
Class_Descriptor cd_S19010C10 = {  "S19010C10", // class name
  bases_S19010C10, 8,
  &(vtc_S19010C10[0]), // expected_vtbl_contents
  &(vtt_S19010C10[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI9S19010C10),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19010C10),7, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19010C10),3, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19010C13  : S7719C4_nt , S5266C26 , virtual S5266C29 {
  ~S19010C13(); // tgen
  S19010C13(); // tgen
};
//SIG(-1 S19010C13) C1{ BC2{ m Fc} BC3{ m} VBC4{ m}}


S19010C13 ::~S19010C13(){ note_dtor("S19010C13", this);} // tgen
S19010C13 ::S19010C13(){ note_ctor("S19010C13", this);} // tgen

static void Test_S19010C13()
{
  extern Class_Descriptor cd_S19010C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19010C13, buf);
    S19010C13 *dp, &lv = *(dp=new (buf) S19010C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19010C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19010C13)");
    check_base_class_offset(lv, (S7719C4_nt*), ABISELECT(8,4), "S19010C13");
    check_base_class_offset(lv, (S5266C26*), 0, "S19010C13");
    check_base_class_offset(lv, (S5266C29*), 0, "S19010C13");
    test_class_info(&lv, &cd_S19010C13);
    dp->~S19010C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19010C13(Test_S19010C13, "S19010C13", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S19010C13C1Ev();
extern void _ZN9S19010C13D1Ev();
Name_Map name_map_S19010C13[] = {
  NSPAIR(_ZN9S19010C13C1Ev),
  NSPAIR(_ZN9S19010C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
static Base_Class bases_S19010C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7719C4_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19010C13[];
static  VTBL_ENTRY vtc_S19010C13[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19010C13[0]),
};
extern VTBL_ENTRY _ZTV9S19010C13[];
static  VTT_ENTRY vtt_S19010C13[] = {
  {&(_ZTV9S19010C13[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19010C13[];
extern  VTBL_ENTRY _ZTV9S19010C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19010C13[];
Class_Descriptor cd_S19010C13 = {  "S19010C13", // class name
  bases_S19010C13, 3,
  &(vtc_S19010C13[0]), // expected_vtbl_contents
  &(vtt_S19010C13[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S19010C13),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19010C13),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19010C13),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19010C12  : virtual S19010C13 {
  long double s19010c12f0;
  void *s19010c12f1[8];
  ~S19010C12(); // tgen
  S19010C12(); // tgen
};
//SIG(-1 S19010C12) C1{ VBC2{ BC3{ m Fc} BC4{ m} VBC5{ m}} FD Fp[8]}


S19010C12 ::~S19010C12(){ note_dtor("S19010C12", this);} // tgen
S19010C12 ::S19010C12(){ note_ctor("S19010C12", this);} // tgen

static void Test_S19010C12()
{
  extern Class_Descriptor cd_S19010C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(8,15)];
    init_test(&cd_S19010C12, buf);
    S19010C12 *dp, &lv = *(dp=new (buf) S19010C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,56), "sizeof(S19010C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19010C12)");
    check_base_class_offset(lv, (S7719C4_nt*)(S19010C13*), ABISELECT(104,52), "S19010C12");
    check_base_class_offset(lv, (S5266C26*)(S19010C13*), ABISELECT(96,48), "S19010C12");
    check_base_class_offset(lv, (S5266C29*)(S19010C13*), 0, "S19010C12");
    check_base_class_offset(lv, (S19010C13*), ABISELECT(96,48), "S19010C12");
    check_field_offset(lv, s19010c12f0, ABISELECT(16,4), "S19010C12.s19010c12f0");
    check_field_offset(lv, s19010c12f1, ABISELECT(32,16), "S19010C12.s19010c12f1");
    test_class_info(&lv, &cd_S19010C12);
    dp->~S19010C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19010C12(Test_S19010C12, "S19010C12", ABISELECT(112,56));

#else // __cplusplus

extern void _ZN9S19010C12C1Ev();
extern void _ZN9S19010C12D1Ev();
Name_Map name_map_S19010C12[] = {
  NSPAIR(_ZN9S19010C12C1Ev),
  NSPAIR(_ZN9S19010C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S19010C13;
extern VTBL_ENTRY _ZTI9S19010C13[];
extern  VTBL_ENTRY _ZTV9S19010C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19010C13[];
static Base_Class bases_S19010C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7719C4_nt,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19010C13,    ABISELECT(96,48), //bcp->offset
    4, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19010C12[];
static  VTBL_ENTRY vtc_S19010C12[] = {
  0,
  ABISELECT(96,48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19010C12[0]),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI9S19010C12[0]),
};
extern VTBL_ENTRY _ZTV9S19010C12[];
static  VTBL_ENTRY _tg__ZTV9S19010C13__9S19010C12[] = {
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19010C13[0]),
};
static  VTT_ENTRY vtt_S19010C12[] = {
  {&(_ZTV9S19010C12[4]),  4,7},
  {&(_ZTV9S19010C12[7]),  7,7},
  {&(_tg__ZTV9S19010C13__9S19010C12[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19010C12[];
extern  VTBL_ENTRY _ZTV9S19010C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19010C12[];
Class_Descriptor cd_S19010C12 = {  "S19010C12", // class name
  bases_S19010C12, 4,
  &(vtc_S19010C12[0]), // expected_vtbl_contents
  &(vtt_S19010C12[0]), // expected_vtt_contents
  ABISELECT(112,56), // object size
  NSPAIRA(_ZTI9S19010C12),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19010C12),7, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19010C12),3, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19010C6  : virtual S19010C7 , virtual S19010C10 , S19010C12 {
  virtual  ~S19010C6(); // _ZN8S19010C6D2Ev
  S19010C6(); // tgen
};
//SIG(-1 S19010C6) C1{ VBC2{ BC3{ m} BC4{ m} VBC5{ m Fc} FC4} VBC6{ VBC5 BC4 BC7{ BC3 BC5} VBC2} BC8{ VBC9{ BC5 BC3 VBC4} FD Fp[8]} vd}


 S19010C6 ::~S19010C6(){ note_dtor("S19010C6", this);}
S19010C6 ::S19010C6(){ note_ctor("S19010C6", this);} // tgen

static void Test_S19010C6()
{
  extern Class_Descriptor cd_S19010C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,19)];
    init_test(&cd_S19010C6, buf);
    S19010C6 *dp, &lv = *(dp=new (buf) S19010C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,72), "sizeof(S19010C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19010C6)");
    check_base_class_offset(lv, (S5266C26*)(S19010C7*), ABISELECT(96,48), "S19010C6");
    check_base_class_offset(lv, (S5266C29*)(S19010C7*), ABISELECT(96,48), "S19010C6");
    check_base_class_offset(lv, (S7719C4_nt*)(S19010C7*), ABISELECT(105,53), "S19010C6");
    /*is_ambiguous_... S19010C10::S7719C4_nt */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S19010C10*), ABISELECT(105,53), "S19010C6");
    check_base_class_offset(lv, (S19010C7*), ABISELECT(96,48), "S19010C6");
    check_base_class_offset(lv, (S19010C7*)(S19010C10*), ABISELECT(96,48), "S19010C6");
    /*is_ambiguous_... S19010C10::S5266C29 */ AMB_check_base_class_offset(lv, (S5266C29*)(S19010C10*), ABISELECT(112,56), "S19010C6");
    check_base_class_offset(lv, (S5266C26*)(S19010C11*)(S19010C10*), ABISELECT(120,60), "S19010C6");
    check_base_class_offset(lv, (S7719C4_nt*)(S19010C11*)(S19010C10*), ABISELECT(120,60), "S19010C6");
    check_base_class_offset(lv, (S19010C11*)(S19010C10*), ABISELECT(120,60), "S19010C6");
    check_base_class_offset(lv, (S19010C10*), ABISELECT(112,56), "S19010C6");
    check_base_class_offset(lv, (S7719C4_nt*)(S19010C13*), ABISELECT(136,68), "S19010C6");
    check_base_class_offset(lv, (S5266C26*)(S19010C13*), ABISELECT(128,64), "S19010C6");
    check_base_class_offset(lv, (S5266C29*)(S19010C13*), 0, "S19010C6");
    check_base_class_offset(lv, (S19010C13*)(S19010C12*), ABISELECT(128,64), "S19010C6");
    check_base_class_offset(lv, (S19010C12*), 0, "S19010C6");
    test_class_info(&lv, &cd_S19010C6);
    dp->~S19010C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19010C6(Test_S19010C6, "S19010C6", ABISELECT(144,72));

#else // __cplusplus

extern void _ZN8S19010C6C1Ev();
extern void _ZN8S19010C6D2Ev();
Name_Map name_map_S19010C6[] = {
  NSPAIR(_ZN8S19010C6C1Ev),
  NSPAIR(_ZN8S19010C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S19010C7;
extern VTBL_ENTRY _ZTI8S19010C7[];
extern  VTBL_ENTRY _ZTV8S19010C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19010C7[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S19010C11;
extern VTBL_ENTRY _ZTI9S19010C11[];
extern Class_Descriptor cd_S19010C10;
extern VTBL_ENTRY _ZTI9S19010C10[];
extern  VTBL_ENTRY _ZTV9S19010C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19010C10[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S19010C13;
extern VTBL_ENTRY _ZTI9S19010C13[];
extern  VTBL_ENTRY _ZTV9S19010C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19010C13[];
extern Class_Descriptor cd_S19010C12;
extern VTBL_ENTRY _ZTI9S19010C12[];
extern  VTBL_ENTRY _ZTV9S19010C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19010C12[];
static Base_Class bases_S19010C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C26,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S5266C29,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(105,53), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19010C7,    ABISELECT(96,48), //bcp->offset
    9, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5266C29,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19010C11,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19010C10,    ABISELECT(112,56), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7719C4_nt,    ABISELECT(136,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(128,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19010C13,    ABISELECT(128,64), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19010C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19010C6[];
extern void _ZN8S19010C6D1Ev();
extern void _ZN8S19010C6D0Ev();
static  VTBL_ENTRY vtc_S19010C6[] = {
  ABISELECT(112,56),
  ABISELECT(105,53),
  ABISELECT(96,48),
  0,
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19010C6[0]),
  (VTBL_ENTRY)&_ZN8S19010C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19010C6D0Ev,
  ABISELECT(9,5),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S19010C6[0]),
  ABISELECT(-16,-8),
  ABISELECT(-7,-3),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S19010C6[0]),
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S19010C6[0]),
};
extern VTBL_ENTRY _ZTV8S19010C6[];
static  VTBL_ENTRY _tg__ZTV9S19010C12__8S19010C6[] = {
  0,
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S19010C12[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C13__9S19010C12__8S19010C6[] = {
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S19010C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19010C7__8S19010C6[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S19010C7[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C10__8S19010C6[] = {
  ABISELECT(-16,-8),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI9S19010C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19010C7__9S19010C10__8S19010C6[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19010C10[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C13__8S19010C6[] = {
  ABISELECT(-128,-64),
  0,
  (VTBL_ENTRY)&(_ZTI9S19010C13[0]),
};
static  VTT_ENTRY vtt_S19010C6[] = {
  {&(_ZTV8S19010C6[7]),  7,19},
  {&(_tg__ZTV9S19010C12__8S19010C6[4]),  4,4},
  {&(_tg__ZTV9S19010C13__9S19010C12__8S19010C6[3]),  3,3},
  {&(_ZTV8S19010C6[12]),  12,19},
  {&(_ZTV8S19010C6[16]),  16,19},
  {&(_ZTV8S19010C6[19]),  19,19},
  {&(_tg__ZTV8S19010C7__8S19010C6[3]),  3,3},
  {&(_tg__ZTV9S19010C10__8S19010C6[4]),  4,4},
  {&(_tg__ZTV8S19010C7__9S19010C10__8S19010C6[3]),  3,3},
  {&(_tg__ZTV9S19010C13__8S19010C6[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19010C6[];
extern  VTBL_ENTRY _ZTV8S19010C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19010C6[];
Class_Descriptor cd_S19010C6 = {  "S19010C6", // class name
  bases_S19010C6, 14,
  &(vtc_S19010C6[0]), // expected_vtbl_contents
  &(vtt_S19010C6[0]), // expected_vtt_contents
  ABISELECT(144,72), // object size
  NSPAIRA(_ZTI8S19010C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19010C6),19, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19010C6),10, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19010C3  : S7719C17_nt , virtual S5266C29 , virtual S19010C6 , S19010C12 {
  int s19010c3f0;
  virtual  ~S19010C3(); // _ZN8S19010C3D2Ev
  S19010C3(); // tgen
};
//SIG(-1 S19010C3) C1{ BC2{ m Fi} VBC3{ m} VBC4{ VBC5{ BC6{ m} BC3 VBC7{ m Fc} FC3} VBC8{ VBC7 BC3 BC9{ BC6 BC7} VBC5} BC10{ VBC11{ BC7 BC6 VBC3} FD Fp[8]} vd} BC10 vd Fi}


 S19010C3 ::~S19010C3(){ note_dtor("S19010C3", this);}
S19010C3 ::S19010C3(){ note_ctor("S19010C3", this);} // tgen

static void Test_S19010C3()
{
  extern Class_Descriptor cd_S19010C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(17,33)];
    init_test(&cd_S19010C3, buf);
    S19010C3 *dp, &lv = *(dp=new (buf) S19010C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,128), "sizeof(S19010C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19010C3)");
    check_base_class_offset(lv, (S7719C17_nt*), ABISELECT(96,48), "S19010C3");
    /*is_ambiguous_... S19010C3::S5266C29 */ AMB_check_base_class_offset(lv, (S5266C29*), 0, "S19010C3");
    check_base_class_offset(lv, (S5266C29*)(S19010C13*), 0, "S19010C3");
    check_base_class_offset(lv, (S5266C26*)(S19010C7*), ABISELECT(208,104), "S19010C3");
    check_base_class_offset(lv, (S5266C29*)(S19010C7*), ABISELECT(208,104), "S19010C3");
    check_base_class_offset(lv, (S7719C4_nt*)(S19010C7*), ABISELECT(217,109), "S19010C3");
    /*is_ambiguous_... S19010C10::S7719C4_nt */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S19010C10*), ABISELECT(217,109), "S19010C3");
    check_base_class_offset(lv, (S19010C7*)(S19010C6*), ABISELECT(208,104), "S19010C3");
    check_base_class_offset(lv, (S19010C7*)(S19010C10*), ABISELECT(208,104), "S19010C3");
    /*is_ambiguous_... S19010C10::S5266C29 */ AMB_check_base_class_offset(lv, (S5266C29*)(S19010C10*), ABISELECT(224,112), "S19010C3");
    check_base_class_offset(lv, (S5266C26*)(S19010C11*)(S19010C10*), ABISELECT(232,116), "S19010C3");
    check_base_class_offset(lv, (S7719C4_nt*)(S19010C11*)(S19010C10*), ABISELECT(232,116), "S19010C3");
    check_base_class_offset(lv, (S19010C11*)(S19010C10*), ABISELECT(232,116), "S19010C3");
    check_base_class_offset(lv, (S19010C10*)(S19010C6*), ABISELECT(224,112), "S19010C3");
    check_base_class_offset(lv, (S7719C4_nt*)(S19010C13*), ABISELECT(248,124), "S19010C3");
    check_base_class_offset(lv, (S5266C26*)(S19010C13*), ABISELECT(240,120), "S19010C3");
    check_base_class_offset(lv, (S19010C13*)(S19010C12*)(S19010C6*), ABISELECT(240,120), "S19010C3");
    /*is_ambiguous_... S19010C3::S19010C12 */ AMB_check_base_class_offset(lv, (S19010C13*)(S19010C12*), ABISELECT(240,120), "S19010C3");
    check_base_class_offset(lv, (S19010C12*)(S19010C6*), ABISELECT(112,56), "S19010C3");
    check_base_class_offset(lv, (S19010C6*), ABISELECT(112,56), "S19010C3");
    /*is_ambiguous_... S19010C3::S19010C12 */ AMB_check_base_class_offset(lv, (S19010C12*), 0, "S19010C3");
    check_field_offset(lv, s19010c3f0, ABISELECT(100,52), "S19010C3.s19010c3f0");
    test_class_info(&lv, &cd_S19010C3);
    dp->~S19010C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19010C3(Test_S19010C3, "S19010C3", ABISELECT(256,128));

#else // __cplusplus

extern void _ZN8S19010C3C1Ev();
extern void _ZN8S19010C3D2Ev();
Name_Map name_map_S19010C3[] = {
  NSPAIR(_ZN8S19010C3C1Ev),
  NSPAIR(_ZN8S19010C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7719C17_nt;
extern VTBL_ENTRY _ZTI11S7719C17_nt[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S19010C7;
extern VTBL_ENTRY _ZTI8S19010C7[];
extern  VTBL_ENTRY _ZTV8S19010C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19010C7[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S19010C11;
extern VTBL_ENTRY _ZTI9S19010C11[];
extern Class_Descriptor cd_S19010C10;
extern VTBL_ENTRY _ZTI9S19010C10[];
extern  VTBL_ENTRY _ZTV9S19010C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19010C10[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S19010C13;
extern VTBL_ENTRY _ZTI9S19010C13[];
extern  VTBL_ENTRY _ZTV9S19010C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19010C13[];
extern Class_Descriptor cd_S19010C12;
extern VTBL_ENTRY _ZTI9S19010C12[];
extern  VTBL_ENTRY _ZTV9S19010C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19010C12[];
extern Class_Descriptor cd_S19010C6;
extern VTBL_ENTRY _ZTI8S19010C6[];
extern  VTBL_ENTRY _ZTV8S19010C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19010C6[];
extern Class_Descriptor cd_S19010C12;
extern VTBL_ENTRY _ZTI9S19010C12[];
extern  VTBL_ENTRY _ZTV9S19010C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19010C12[];
static Base_Class bases_S19010C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7719C17_nt,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5266C26,    ABISELECT(208,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S5266C29,    ABISELECT(208,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(217,109), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19010C7,    ABISELECT(208,104), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S5266C29,    ABISELECT(224,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(232,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(232,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19010C11,    ABISELECT(232,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19010C10,    ABISELECT(224,112), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S7719C4_nt,    ABISELECT(248,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(240,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19010C13,    ABISELECT(240,120), //bcp->offset
    27, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19010C12,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19010C6,    ABISELECT(112,56), //bcp->offset
    10, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19010C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19010C3[];
extern void _ZN8S19010C3D1Ev();
extern void _ZN8S19010C3D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S19010C3D1Ev,_ZTv0_n32_N8S19010C3D1Ev)();
extern void ABISELECT(_ZThn112_N8S19010C3D1Ev,_ZThn56_N8S19010C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19010C3D0Ev,_ZTv0_n32_N8S19010C3D0Ev)();
extern void ABISELECT(_ZThn112_N8S19010C3D0Ev,_ZThn56_N8S19010C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19010C3[] = {
  ABISELECT(224,112),
  ABISELECT(217,109),
  ABISELECT(208,104),
  ABISELECT(112,56),
  0,
  ABISELECT(240,120),
  0,
  (VTBL_ENTRY)&(_ZTI8S19010C3[0]),
  (VTBL_ENTRY)&_ZN8S19010C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19010C3D0Ev,
  ABISELECT(-112,-56),
  ABISELECT(112,56),
  ABISELECT(105,53),
  ABISELECT(96,48),
  ABISELECT(-112,-56),
  ABISELECT(128,64),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S19010C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19010C3D1Ev,_ZTv0_n32_N8S19010C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19010C3D0Ev,_ZTv0_n32_N8S19010C3D0Ev),
  ABISELECT(9,5),
  ABISELECT(-208,-104),
  (VTBL_ENTRY)&(_ZTI8S19010C3[0]),
  ABISELECT(-16,-8),
  ABISELECT(-7,-3),
  ABISELECT(-224,-112),
  (VTBL_ENTRY)&(_ZTI8S19010C3[0]),
  ABISELECT(-240,-120),
  ABISELECT(-240,-120),
  (VTBL_ENTRY)&(_ZTI8S19010C3[0]),
};
extern VTBL_ENTRY _ZTV8S19010C3[];
static  VTBL_ENTRY _tg__ZTV9S19010C12__A1__8S19010C3[] = {
  0,
  ABISELECT(240,120),
  0,
  (VTBL_ENTRY)&(_ZTI9S19010C12[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C13__9S19010C12__A1__8S19010C3[] = {
  ABISELECT(-240,-120),
  ABISELECT(-240,-120),
  (VTBL_ENTRY)&(_ZTI9S19010C12[0]),
};
extern void _ZN8S19010C6D1Ev();
extern void _ZN8S19010C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19010C6__8S19010C3[] = {
  ABISELECT(112,56),
  ABISELECT(105,53),
  ABISELECT(96,48),
  ABISELECT(-112,-56),
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19010C6[0]),
  (VTBL_ENTRY)&_ZN8S19010C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19010C6D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19010C128S19010C6__8S19010C3[] = {
  ABISELECT(-112,-56),
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S19010C12[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C13__9S19010C128S19010C6__8S19010C3[] = {
  ABISELECT(-240,-120),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S19010C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19010C7__8S19010C6__8S19010C3[] = {
  ABISELECT(9,5),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S19010C6[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C10__8S19010C6__8S19010C3[] = {
  ABISELECT(-16,-8),
  ABISELECT(-7,-3),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S19010C6[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C13__8S19010C6__8S19010C3[] = {
  ABISELECT(-240,-120),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S19010C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19010C7__8S19010C3[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S19010C7[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C10__8S19010C3[] = {
  ABISELECT(-16,-8),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI9S19010C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19010C7__9S19010C10__8S19010C3[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19010C10[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C13__8S19010C3[] = {
  ABISELECT(-240,-120),
  0,
  (VTBL_ENTRY)&(_ZTI9S19010C13[0]),
};
static  VTT_ENTRY vtt_S19010C3[] = {
  {&(_ZTV8S19010C3[8]),  8,30},
  {&(_tg__ZTV9S19010C12__A1__8S19010C3[4]),  4,4},
  {&(_tg__ZTV9S19010C13__9S19010C12__A1__8S19010C3[3]),  3,3},
  {&(_ZTV8S19010C3[18]),  18,30},
  {&(_ZTV8S19010C3[23]),  23,30},
  {&(_ZTV8S19010C3[27]),  27,30},
  {&(_ZTV8S19010C3[30]),  30,30},
  {&(_tg__ZTV8S19010C6__8S19010C3[7]),  7,9},
  {&(_tg__ZTV9S19010C128S19010C6__8S19010C3[4]),  4,4},
  {&(_tg__ZTV9S19010C13__9S19010C128S19010C6__8S19010C3[3]),  3,3},
  {&(_tg__ZTV8S19010C7__8S19010C6__8S19010C3[3]),  3,3},
  {&(_tg__ZTV9S19010C10__8S19010C6__8S19010C3[4]),  4,4},
  {&(_tg__ZTV9S19010C13__8S19010C6__8S19010C3[3]),  3,3},
  {&(_tg__ZTV8S19010C7__8S19010C3[3]),  3,3},
  {&(_tg__ZTV9S19010C10__8S19010C3[4]),  4,4},
  {&(_tg__ZTV8S19010C7__9S19010C10__8S19010C3[3]),  3,3},
  {&(_tg__ZTV9S19010C13__8S19010C3[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19010C3[];
extern  VTBL_ENTRY _ZTV8S19010C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19010C3[];
static VTBL_ENTRY alt_thunk_names74[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19010C3D0Ev,_ZTv0_n32_N8S19010C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19010C3D0Ev,_ZThn56_N8S19010C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19010C3D1Ev,_ZTv0_n32_N8S19010C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19010C3D1Ev,_ZThn56_N8S19010C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19010C3 = {  "S19010C3", // class name
  bases_S19010C3, 17,
  &(vtc_S19010C3[0]), // expected_vtbl_contents
  &(vtt_S19010C3[0]), // expected_vtt_contents
  ABISELECT(256,128), // object size
  NSPAIRA(_ZTI8S19010C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19010C3),30, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19010C3),17, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names74,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19010C2  : S19010C3 {
  virtual void  v1(); // _ZN8S19010C22v1Ev
  ~S19010C2(); // tgen
  S19010C2(); // tgen
};
//SIG(-1 S19010C2) C1{ BC2{ BC3{ m Fi} VBC4{ m} VBC5{ VBC6{ BC7{ m} BC4 VBC8{ m Fc} FC4} VBC9{ VBC8 BC4 BC10{ BC7 BC8} VBC6} BC11{ VBC12{ BC8 BC7 VBC4} FD Fp[8]} vd} BC11 vd Fi} v1}


void  S19010C2 ::v1(){vfunc_called(this, "_ZN8S19010C22v1Ev");}
S19010C2 ::~S19010C2(){ note_dtor("S19010C2", this);} // tgen
S19010C2 ::S19010C2(){ note_ctor("S19010C2", this);} // tgen

static void Test_S19010C2()
{
  extern Class_Descriptor cd_S19010C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(17,33)];
    init_test(&cd_S19010C2, buf);
    S19010C2 *dp, &lv = *(dp=new (buf) S19010C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,128), "sizeof(S19010C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19010C2)");
    check_base_class_offset(lv, (S7719C17_nt*)(S19010C3*), ABISELECT(96,48), "S19010C2");
    /*is_ambiguous_... S19010C3::S5266C29 */ AMB_check_base_class_offset(lv, (S5266C29*)(S19010C3*), 0, "S19010C2");
    check_base_class_offset(lv, (S5266C29*)(S19010C13*), 0, "S19010C2");
    check_base_class_offset(lv, (S5266C26*)(S19010C7*), ABISELECT(208,104), "S19010C2");
    check_base_class_offset(lv, (S5266C29*)(S19010C7*), ABISELECT(208,104), "S19010C2");
    check_base_class_offset(lv, (S7719C4_nt*)(S19010C7*), ABISELECT(217,109), "S19010C2");
    /*is_ambiguous_... S19010C10::S7719C4_nt */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S19010C10*), ABISELECT(217,109), "S19010C2");
    check_base_class_offset(lv, (S19010C7*)(S19010C6*), ABISELECT(208,104), "S19010C2");
    check_base_class_offset(lv, (S19010C7*)(S19010C10*), ABISELECT(208,104), "S19010C2");
    /*is_ambiguous_... S19010C10::S5266C29 */ AMB_check_base_class_offset(lv, (S5266C29*)(S19010C10*), ABISELECT(224,112), "S19010C2");
    check_base_class_offset(lv, (S5266C26*)(S19010C11*)(S19010C10*), ABISELECT(232,116), "S19010C2");
    check_base_class_offset(lv, (S7719C4_nt*)(S19010C11*)(S19010C10*), ABISELECT(232,116), "S19010C2");
    check_base_class_offset(lv, (S19010C11*)(S19010C10*), ABISELECT(232,116), "S19010C2");
    check_base_class_offset(lv, (S19010C10*)(S19010C6*), ABISELECT(224,112), "S19010C2");
    check_base_class_offset(lv, (S7719C4_nt*)(S19010C13*), ABISELECT(248,124), "S19010C2");
    check_base_class_offset(lv, (S5266C26*)(S19010C13*), ABISELECT(240,120), "S19010C2");
    check_base_class_offset(lv, (S19010C13*)(S19010C12*)(S19010C6*), ABISELECT(240,120), "S19010C2");
    /*is_ambiguous_... S19010C3::S19010C12 */ AMB_check_base_class_offset(lv, (S19010C13*)(S19010C12*)(S19010C3*), ABISELECT(240,120), "S19010C2");
    check_base_class_offset(lv, (S19010C12*)(S19010C6*), ABISELECT(112,56), "S19010C2");
    check_base_class_offset(lv, (S19010C6*)(S19010C3*), ABISELECT(112,56), "S19010C2");
    /*is_ambiguous_... S19010C3::S19010C12 */ AMB_check_base_class_offset(lv, (S19010C12*)(S19010C3*), 0, "S19010C2");
    check_base_class_offset(lv, (S19010C3*), 0, "S19010C2");
    test_class_info(&lv, &cd_S19010C2);
    dp->~S19010C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19010C2(Test_S19010C2, "S19010C2", ABISELECT(256,128));

#else // __cplusplus

extern void _ZN8S19010C2C1Ev();
extern void _ZN8S19010C2D1Ev();
Name_Map name_map_S19010C2[] = {
  NSPAIR(_ZN8S19010C2C1Ev),
  NSPAIR(_ZN8S19010C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7719C17_nt;
extern VTBL_ENTRY _ZTI11S7719C17_nt[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S19010C7;
extern VTBL_ENTRY _ZTI8S19010C7[];
extern  VTBL_ENTRY _ZTV8S19010C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19010C7[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S19010C11;
extern VTBL_ENTRY _ZTI9S19010C11[];
extern Class_Descriptor cd_S19010C10;
extern VTBL_ENTRY _ZTI9S19010C10[];
extern  VTBL_ENTRY _ZTV9S19010C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19010C10[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S19010C13;
extern VTBL_ENTRY _ZTI9S19010C13[];
extern  VTBL_ENTRY _ZTV9S19010C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19010C13[];
extern Class_Descriptor cd_S19010C12;
extern VTBL_ENTRY _ZTI9S19010C12[];
extern  VTBL_ENTRY _ZTV9S19010C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19010C12[];
extern Class_Descriptor cd_S19010C6;
extern VTBL_ENTRY _ZTI8S19010C6[];
extern  VTBL_ENTRY _ZTV8S19010C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19010C6[];
extern Class_Descriptor cd_S19010C12;
extern VTBL_ENTRY _ZTI9S19010C12[];
extern  VTBL_ENTRY _ZTV9S19010C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19010C12[];
extern Class_Descriptor cd_S19010C3;
extern VTBL_ENTRY _ZTI8S19010C3[];
extern  VTBL_ENTRY _ZTV8S19010C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19010C3[];
static Base_Class bases_S19010C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7719C17_nt,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S5266C26,    ABISELECT(208,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S5266C29,    ABISELECT(208,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(217,109), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19010C7,    ABISELECT(208,104), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S5266C29,    ABISELECT(224,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(232,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(232,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19010C11,    ABISELECT(232,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19010C10,    ABISELECT(224,112), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S7719C4_nt,    ABISELECT(248,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(240,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19010C13,    ABISELECT(240,120), //bcp->offset
    28, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19010C12,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19010C6,    ABISELECT(112,56), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19010C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19010C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19010C2[];
extern void _ZN8S19010C2D1Ev();
extern void _ZN8S19010C2D0Ev();
extern void _ZN8S19010C22v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S19010C2D1Ev,_ZTv0_n32_N8S19010C2D1Ev)();
extern void ABISELECT(_ZThn112_N8S19010C2D1Ev,_ZThn56_N8S19010C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19010C2D0Ev,_ZTv0_n32_N8S19010C2D0Ev)();
extern void ABISELECT(_ZThn112_N8S19010C2D0Ev,_ZThn56_N8S19010C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19010C2[] = {
  ABISELECT(224,112),
  ABISELECT(217,109),
  ABISELECT(208,104),
  ABISELECT(112,56),
  0,
  ABISELECT(240,120),
  0,
  (VTBL_ENTRY)&(_ZTI8S19010C2[0]),
  (VTBL_ENTRY)&_ZN8S19010C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19010C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19010C22v1Ev,
  ABISELECT(-112,-56),
  ABISELECT(112,56),
  ABISELECT(105,53),
  ABISELECT(96,48),
  ABISELECT(-112,-56),
  ABISELECT(128,64),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S19010C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19010C2D1Ev,_ZTv0_n32_N8S19010C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19010C2D0Ev,_ZTv0_n32_N8S19010C2D0Ev),
  ABISELECT(9,5),
  ABISELECT(-208,-104),
  (VTBL_ENTRY)&(_ZTI8S19010C2[0]),
  ABISELECT(-16,-8),
  ABISELECT(-7,-3),
  ABISELECT(-224,-112),
  (VTBL_ENTRY)&(_ZTI8S19010C2[0]),
  ABISELECT(-240,-120),
  ABISELECT(-240,-120),
  (VTBL_ENTRY)&(_ZTI8S19010C2[0]),
};
extern VTBL_ENTRY _ZTV8S19010C2[];
extern void _ZN8S19010C3D1Ev();
extern void _ZN8S19010C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19010C3__8S19010C2[] = {
  ABISELECT(224,112),
  ABISELECT(217,109),
  ABISELECT(208,104),
  ABISELECT(112,56),
  0,
  ABISELECT(240,120),
  0,
  (VTBL_ENTRY)&(_ZTI8S19010C3[0]),
  (VTBL_ENTRY)&_ZN8S19010C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19010C3D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19010C128S19010C3__A1__8S19010C2[] = {
  0,
  ABISELECT(240,120),
  0,
  (VTBL_ENTRY)&(_ZTI9S19010C12[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C13__9S19010C128S19010C3__A1__8S19010C2[] = {
  ABISELECT(-240,-120),
  ABISELECT(-240,-120),
  (VTBL_ENTRY)&(_ZTI9S19010C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S19010C3D1Ev,_ZTv0_n32_N8S19010C3D1Ev)();
extern void ABISELECT(_ZThn112_N8S19010C3D1Ev,_ZThn56_N8S19010C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19010C3D0Ev,_ZTv0_n32_N8S19010C3D0Ev)();
extern void ABISELECT(_ZThn112_N8S19010C3D0Ev,_ZThn56_N8S19010C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19010C6__8S19010C3__8S19010C2[] = {
  ABISELECT(-112,-56),
  ABISELECT(112,56),
  ABISELECT(105,53),
  ABISELECT(96,48),
  ABISELECT(-112,-56),
  ABISELECT(128,64),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S19010C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19010C3D1Ev,_ZTv0_n32_N8S19010C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19010C3D0Ev,_ZTv0_n32_N8S19010C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19010C7__8S19010C3__8S19010C2[] = {
  ABISELECT(9,5),
  ABISELECT(-208,-104),
  (VTBL_ENTRY)&(_ZTI8S19010C3[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C10__8S19010C3__8S19010C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(-7,-3),
  ABISELECT(-224,-112),
  (VTBL_ENTRY)&(_ZTI8S19010C3[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C13__8S19010C3__8S19010C2[] = {
  ABISELECT(-240,-120),
  ABISELECT(-240,-120),
  (VTBL_ENTRY)&(_ZTI8S19010C3[0]),
};
extern void _ZN8S19010C6D1Ev();
extern void _ZN8S19010C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19010C6__8S19010C2[] = {
  ABISELECT(112,56),
  ABISELECT(105,53),
  ABISELECT(96,48),
  ABISELECT(-112,-56),
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19010C6[0]),
  (VTBL_ENTRY)&_ZN8S19010C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19010C6D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19010C128S19010C6__8S19010C2[] = {
  ABISELECT(-112,-56),
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S19010C12[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C13__9S19010C128S19010C6__8S19010C2[] = {
  ABISELECT(-240,-120),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S19010C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19010C7__8S19010C6__8S19010C2[] = {
  ABISELECT(9,5),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S19010C6[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C10__8S19010C6__8S19010C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(-7,-3),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S19010C6[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C13__8S19010C6__8S19010C2[] = {
  ABISELECT(-240,-120),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S19010C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19010C7__8S19010C2[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S19010C7[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C10__8S19010C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI9S19010C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19010C7__9S19010C10__8S19010C2[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19010C10[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C13__8S19010C2[] = {
  ABISELECT(-240,-120),
  0,
  (VTBL_ENTRY)&(_ZTI9S19010C13[0]),
};
static  VTT_ENTRY vtt_S19010C2[] = {
  {&(_ZTV8S19010C2[8]),  8,31},
  {&(_tg__ZTV8S19010C3__8S19010C2[8]),  8,10},
  {&(_tg__ZTV9S19010C128S19010C3__A1__8S19010C2[4]),  4,4},
  {&(_tg__ZTV9S19010C13__9S19010C128S19010C3__A1__8S19010C2[3]),  3,3},
  {&(_tg__ZTV8S19010C6__8S19010C3__8S19010C2[8]),  8,10},
  {&(_tg__ZTV8S19010C7__8S19010C3__8S19010C2[3]),  3,3},
  {&(_tg__ZTV9S19010C10__8S19010C3__8S19010C2[4]),  4,4},
  {&(_tg__ZTV9S19010C13__8S19010C3__8S19010C2[3]),  3,3},
  {&(_ZTV8S19010C2[19]),  19,31},
  {&(_ZTV8S19010C2[24]),  24,31},
  {&(_ZTV8S19010C2[28]),  28,31},
  {&(_ZTV8S19010C2[31]),  31,31},
  {&(_tg__ZTV8S19010C6__8S19010C2[7]),  7,9},
  {&(_tg__ZTV9S19010C128S19010C6__8S19010C2[4]),  4,4},
  {&(_tg__ZTV9S19010C13__9S19010C128S19010C6__8S19010C2[3]),  3,3},
  {&(_tg__ZTV8S19010C7__8S19010C6__8S19010C2[3]),  3,3},
  {&(_tg__ZTV9S19010C10__8S19010C6__8S19010C2[4]),  4,4},
  {&(_tg__ZTV9S19010C13__8S19010C6__8S19010C2[3]),  3,3},
  {&(_tg__ZTV8S19010C7__8S19010C2[3]),  3,3},
  {&(_tg__ZTV9S19010C10__8S19010C2[4]),  4,4},
  {&(_tg__ZTV8S19010C7__9S19010C10__8S19010C2[3]),  3,3},
  {&(_tg__ZTV9S19010C13__8S19010C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19010C2[];
extern  VTBL_ENTRY _ZTV8S19010C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19010C2[];
static VTBL_ENTRY alt_thunk_names75[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19010C3D0Ev,_ZTv0_n32_N8S19010C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19010C3D0Ev,_ZThn56_N8S19010C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19010C3D1Ev,_ZTv0_n32_N8S19010C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19010C3D1Ev,_ZThn56_N8S19010C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19010C2D0Ev,_ZTv0_n32_N8S19010C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19010C2D0Ev,_ZThn56_N8S19010C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19010C2D1Ev,_ZTv0_n32_N8S19010C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19010C2D1Ev,_ZThn56_N8S19010C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19010C2 = {  "S19010C2", // class name
  bases_S19010C2, 18,
  &(vtc_S19010C2[0]), // expected_vtbl_contents
  &(vtt_S19010C2[0]), // expected_vtt_contents
  ABISELECT(256,128), // object size
  NSPAIRA(_ZTI8S19010C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19010C2),31, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19010C2),22, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names75,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19010C16  : S19010C11 , S5266C26 , S19010C13 {
  __tsi64 s19010c16f0;
  ~S19010C16(); // tgen
  S19010C16(); // tgen
};
//SIG(-1 S19010C16) C1{ BC2{ BC3{ m} BC4{ m Fc}} BC3 BC5{ BC4 BC3 VBC6{ m}} FL}


S19010C16 ::~S19010C16(){ note_dtor("S19010C16", this);} // tgen
S19010C16 ::S19010C16(){ note_ctor("S19010C16", this);} // tgen

static void Test_S19010C16()
{
  extern Class_Descriptor cd_S19010C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S19010C16, buf);
    S19010C16 *dp, &lv = *(dp=new (buf) S19010C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S19010C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19010C16)");
    check_base_class_offset(lv, (S5266C26*)(S19010C11*), ABISELECT(9,5), "S19010C16");
    check_base_class_offset(lv, (S7719C4_nt*)(S19010C11*), ABISELECT(9,5), "S19010C16");
    check_base_class_offset(lv, (S19010C11*), ABISELECT(9,5), "S19010C16");
    /*is_ambiguous_... S19010C16::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*), ABISELECT(10,6), "S19010C16");
    check_base_class_offset(lv, (S7719C4_nt*)(S19010C13*), ABISELECT(8,4), "S19010C16");
    check_base_class_offset(lv, (S5266C26*)(S19010C13*), 0, "S19010C16");
    check_base_class_offset(lv, (S5266C29*)(S19010C13*), 0, "S19010C16");
    check_base_class_offset(lv, (S19010C13*), 0, "S19010C16");
    check_field_offset(lv, s19010c16f0, ABISELECT(16,8), "S19010C16.s19010c16f0");
    test_class_info(&lv, &cd_S19010C16);
    dp->~S19010C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19010C16(Test_S19010C16, "S19010C16", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN9S19010C16C1Ev();
extern void _ZN9S19010C16D1Ev();
Name_Map name_map_S19010C16[] = {
  NSPAIR(_ZN9S19010C16C1Ev),
  NSPAIR(_ZN9S19010C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S19010C11;
extern VTBL_ENTRY _ZTI9S19010C11[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S19010C13;
extern VTBL_ENTRY _ZTI9S19010C13[];
extern  VTBL_ENTRY _ZTV9S19010C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19010C13[];
static Base_Class bases_S19010C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C26,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19010C11,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C26,    ABISELECT(10,6), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7719C4_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19010C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19010C16[];
static  VTBL_ENTRY vtc_S19010C16[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19010C16[0]),
};
extern VTBL_ENTRY _ZTV9S19010C16[];
static  VTBL_ENTRY _tg__ZTV9S19010C13__9S19010C16[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19010C13[0]),
};
static  VTT_ENTRY vtt_S19010C16[] = {
  {&(_ZTV9S19010C16[3]),  3,3},
  {&(_tg__ZTV9S19010C13__9S19010C16[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19010C16[];
extern  VTBL_ENTRY _ZTV9S19010C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19010C16[];
Class_Descriptor cd_S19010C16 = {  "S19010C16", // class name
  bases_S19010C16, 8,
  &(vtc_S19010C16[0]), // expected_vtbl_contents
  &(vtt_S19010C16[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI9S19010C16),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19010C16),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19010C16),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19010C15  : virtual S5266C29 , virtual S19010C13 , virtual S19010C16 , S19010C10 , virtual S5266C26 {
  __tsi64 s19010c15f0[2];
  ~S19010C15(); // tgen
  S19010C15(); // tgen
};
//SIG(-1 S19010C15) C1{ VBC2{ m} VBC3{ BC4{ m Fc} BC5{ m} VBC2} VBC6{ BC7{ BC5 BC4} BC5 BC3 FL} BC8{ VBC4 BC2 BC7 VBC9{ BC5 BC2 VBC4 FC2}} VBC5 FL[2]}


S19010C15 ::~S19010C15(){ note_dtor("S19010C15", this);} // tgen
S19010C15 ::S19010C15(){ note_ctor("S19010C15", this);} // tgen

static void Test_S19010C15()
{
  extern Class_Descriptor cd_S19010C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S19010C15, buf);
    S19010C15 *dp, &lv = *(dp=new (buf) S19010C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S19010C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19010C15)");
    /*is_ambiguous_... S19010C15::S5266C29 */ AMB_check_base_class_offset(lv, (S5266C29*), ABISELECT(32,24), "S19010C15");
    /*is_ambiguous_... S19010C15::S19010C13 */ AMB_check_base_class_offset(lv, (S5266C29*)(S19010C13*), ABISELECT(32,24), "S19010C15");
    check_base_class_offset(lv, (S5266C29*)(S19010C13*)(S19010C16*), ABISELECT(32,24), "S19010C15");
    /*is_ambiguous_... S19010C15::S19010C13 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S19010C13*), ABISELECT(40,28), "S19010C15");
    /*is_ambiguous_... S19010C15::S19010C13 */ AMB_check_base_class_offset(lv, (S5266C26*)(S19010C13*), ABISELECT(32,24), "S19010C15");
    /*is_ambiguous_... S19010C15::S19010C13 */ AMB_check_base_class_offset(lv, (S19010C13*), ABISELECT(32,24), "S19010C15");
    check_base_class_offset(lv, (S5266C26*)(S19010C11*)(S19010C16*), ABISELECT(57,37), "S19010C15");
    check_base_class_offset(lv, (S7719C4_nt*)(S19010C11*)(S19010C16*), ABISELECT(57,37), "S19010C15");
    check_base_class_offset(lv, (S19010C11*)(S19010C16*), ABISELECT(57,37), "S19010C15");
    /*is_ambiguous_... S19010C16::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*)(S19010C16*), ABISELECT(58,38), "S19010C15");
    check_base_class_offset(lv, (S7719C4_nt*)(S19010C13*)(S19010C16*), ABISELECT(56,36), "S19010C15");
    check_base_class_offset(lv, (S5266C26*)(S19010C13*)(S19010C16*), ABISELECT(48,32), "S19010C15");
    check_base_class_offset(lv, (S19010C13*)(S19010C16*), ABISELECT(48,32), "S19010C15");
    check_base_class_offset(lv, (S19010C16*), ABISELECT(48,32), "S19010C15");
    /*is_ambiguous_... S19010C10::S7719C4_nt */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S19010C10*), ABISELECT(72,48), "S19010C15");
    check_base_class_offset(lv, (S7719C4_nt*)(S19010C7*), ABISELECT(72,48), "S19010C15");
    /*is_ambiguous_... S19010C10::S5266C29 */ AMB_check_base_class_offset(lv, (S5266C29*)(S19010C10*), 0, "S19010C15");
    check_base_class_offset(lv, (S5266C26*)(S19010C11*)(S19010C10*), ABISELECT(8,4), "S19010C15");
    check_base_class_offset(lv, (S7719C4_nt*)(S19010C11*)(S19010C10*), ABISELECT(8,4), "S19010C15");
    check_base_class_offset(lv, (S19010C11*)(S19010C10*), ABISELECT(8,4), "S19010C15");
    check_base_class_offset(lv, (S5266C26*)(S19010C7*), ABISELECT(80,52), "S19010C15");
    check_base_class_offset(lv, (S5266C29*)(S19010C7*), ABISELECT(80,52), "S19010C15");
    check_base_class_offset(lv, (S19010C7*)(S19010C10*), ABISELECT(80,52), "S19010C15");
    check_base_class_offset(lv, (S19010C10*), 0, "S19010C15");
    /*is_ambiguous_... S19010C15::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*), 0, "S19010C15");
    check_field_offset(lv, s19010c15f0, ABISELECT(16,8), "S19010C15.s19010c15f0");
    test_class_info(&lv, &cd_S19010C15);
    dp->~S19010C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19010C15(Test_S19010C15, "S19010C15", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN9S19010C15C1Ev();
extern void _ZN9S19010C15D1Ev();
Name_Map name_map_S19010C15[] = {
  NSPAIR(_ZN9S19010C15C1Ev),
  NSPAIR(_ZN9S19010C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S19010C13;
extern VTBL_ENTRY _ZTI9S19010C13[];
extern  VTBL_ENTRY _ZTV9S19010C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19010C13[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S19010C11;
extern VTBL_ENTRY _ZTI9S19010C11[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S19010C13;
extern VTBL_ENTRY _ZTI9S19010C13[];
extern  VTBL_ENTRY _ZTV9S19010C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19010C13[];
extern Class_Descriptor cd_S19010C16;
extern VTBL_ENTRY _ZTI9S19010C16[];
extern  VTBL_ENTRY _ZTV9S19010C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19010C16[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S19010C11;
extern VTBL_ENTRY _ZTI9S19010C11[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S19010C7;
extern VTBL_ENTRY _ZTI8S19010C7[];
extern  VTBL_ENTRY _ZTV8S19010C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19010C7[];
extern Class_Descriptor cd_S19010C10;
extern VTBL_ENTRY _ZTI9S19010C10[];
extern  VTBL_ENTRY _ZTV9S19010C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19010C10[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
static Base_Class bases_S19010C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C29,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7719C4_nt,    ABISELECT(40,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19010C13,    ABISELECT(32,24), //bcp->offset
    8, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5266C26,    ABISELECT(57,37), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(57,37), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19010C11,    ABISELECT(57,37), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(58,38), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19010C13,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19010C16,    ABISELECT(48,32), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7719C4_nt,    ABISELECT(72,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19010C11,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S5266C29,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19010C7,    ABISELECT(80,52), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S19010C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19010C15[];
static  VTBL_ENTRY vtc_S19010C15[] = {
  0,
  ABISELECT(48,32),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(80,52),
  ABISELECT(72,48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19010C15[0]),
  0,
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI9S19010C15[0]),
  ABISELECT(-16,-8),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI9S19010C15[0]),
  ABISELECT(-8,-4),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S19010C15[0]),
};
extern VTBL_ENTRY _ZTV9S19010C15[];
static  VTBL_ENTRY _tg__ZTV9S19010C10__9S19010C15[] = {
  ABISELECT(80,52),
  ABISELECT(72,48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19010C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19010C7__9S19010C10__9S19010C15[] = {
  ABISELECT(-8,-4),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S19010C10[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C13__9S19010C15[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19010C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C16__9S19010C15[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19010C16[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C139S19010C16__A1__9S19010C15[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19010C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19010C7__9S19010C15[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19010C7[0]),
};
static  VTT_ENTRY vtt_S19010C15[] = {
  {&(_ZTV9S19010C15[8]),  8,17},
  {&(_tg__ZTV9S19010C10__9S19010C15[4]),  4,4},
  {&(_tg__ZTV8S19010C7__9S19010C10__9S19010C15[3]),  3,3},
  {&(_ZTV9S19010C15[11]),  11,17},
  {&(_ZTV9S19010C15[14]),  14,17},
  {&(_ZTV9S19010C15[17]),  17,17},
  {&(_tg__ZTV9S19010C13__9S19010C15[3]),  3,3},
  {&(_tg__ZTV9S19010C16__9S19010C15[3]),  3,3},
  {&(_tg__ZTV9S19010C139S19010C16__A1__9S19010C15[3]),  3,3},
  {&(_tg__ZTV8S19010C7__9S19010C15[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19010C15[];
extern  VTBL_ENTRY _ZTV9S19010C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19010C15[];
Class_Descriptor cd_S19010C15 = {  "S19010C15", // class name
  bases_S19010C15, 22,
  &(vtc_S19010C15[0]), // expected_vtbl_contents
  &(vtt_S19010C15[0]), // expected_vtt_contents
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI9S19010C15),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19010C15),17, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19010C15),10, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19010C14  : virtual S19010C10 , virtual S19010C13 , S19010C7 , virtual S19010C15 {
  ~S19010C14(); // tgen
  S19010C14(); // tgen
};
//SIG(-1 S19010C14) C1{ VBC2{ VBC3{ m Fc} BC4{ m} BC5{ BC6{ m} BC3} VBC7{ BC6 BC4 VBC3 FC4}} VBC8{ BC3 BC6 VBC4} BC7 VBC9{ VBC4 VBC8 VBC10{ BC5 BC6 BC8 FL} BC2 VBC6 FL[2]}}


S19010C14 ::~S19010C14(){ note_dtor("S19010C14", this);} // tgen
S19010C14 ::S19010C14(){ note_ctor("S19010C14", this);} // tgen

static void Test_S19010C14()
{
  extern Class_Descriptor cd_S19010C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,20)];
    init_test(&cd_S19010C14, buf);
    S19010C14 *dp, &lv = *(dp=new (buf) S19010C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,76), "sizeof(S19010C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19010C14)");
    /*is_ambiguous_... S19010C14::S19010C10 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S19010C10*), ABISELECT(25,13), "S19010C14");
    /*is_ambiguous_... S19010C14::S19010C7 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S19010C7*), ABISELECT(25,13), "S19010C14");
    /*is_ambiguous_... S19010C14::S19010C7 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S19010C7*), ABISELECT(25,13), "S19010C14");
    /*is_ambiguous_... S19010C10::S7719C4_nt */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S19010C10*)(S19010C15*), ABISELECT(25,13), "S19010C14");
    /*is_ambiguous_... S19010C14::S19010C10 */ AMB_check_base_class_offset(lv, (S5266C29*)(S19010C10*), ABISELECT(16,8), "S19010C14");
    /*is_ambiguous_... S19010C14::S19010C10 */ AMB_check_base_class_offset(lv, (S5266C26*)(S19010C11*)(S19010C10*), ABISELECT(24,12), "S19010C14");
    /*is_ambiguous_... S19010C14::S19010C10 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S19010C11*)(S19010C10*), ABISELECT(24,12), "S19010C14");
    /*is_ambiguous_... S19010C14::S19010C10 */ AMB_check_base_class_offset(lv, (S19010C11*)(S19010C10*), ABISELECT(24,12), "S19010C14");
    /*is_ambiguous_... S19010C14::S19010C7 */ AMB_check_base_class_offset(lv, (S5266C26*)(S19010C7*), ABISELECT(32,16), "S19010C14");
    /*is_ambiguous_... S19010C14::S19010C7 */ AMB_check_base_class_offset(lv, (S5266C29*)(S19010C7*), ABISELECT(32,16), "S19010C14");
    /*is_ambiguous_... S19010C14::S19010C10 */ AMB_check_base_class_offset(lv, (S19010C7*)(S19010C10*), ABISELECT(32,16), "S19010C14");
    check_base_class_offset(lv, (S19010C7*)(S19010C10*)(S19010C15*), ABISELECT(32,16), "S19010C14");
    /*is_ambiguous_... S19010C14::S19010C10 */ AMB_check_base_class_offset(lv, (S19010C10*), ABISELECT(16,8), "S19010C14");
    /*is_ambiguous_... S19010C14::S19010C13 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S19010C13*), ABISELECT(56,28), "S19010C14");
    /*is_ambiguous_... S19010C14::S19010C13 */ AMB_check_base_class_offset(lv, (S5266C26*)(S19010C13*), ABISELECT(48,24), "S19010C14");
    /*is_ambiguous_... S19010C14::S19010C13 */ AMB_check_base_class_offset(lv, (S5266C29*)(S19010C13*), ABISELECT(57,29), "S19010C14");
    /*is_ambiguous_... S19010C15::S5266C29 */ AMB_check_base_class_offset(lv, (S5266C29*)(S19010C15*), ABISELECT(57,29), "S19010C14");
    check_base_class_offset(lv, (S5266C29*)(S19010C13*)(S19010C16*), ABISELECT(57,29), "S19010C14");
    /*is_ambiguous_... S19010C14::S19010C13 */ AMB_check_base_class_offset(lv, (S19010C13*), ABISELECT(48,24), "S19010C14");
    /*is_ambiguous_... S19010C15::S19010C13 */ AMB_check_base_class_offset(lv, (S19010C13*)(S19010C15*), ABISELECT(48,24), "S19010C14");
    /*is_ambiguous_... S19010C14::S19010C7 */ AMB_check_base_class_offset(lv, (S5266C26*)(S19010C7*), 0, "S19010C14");
    /*is_ambiguous_... S19010C14::S19010C7 */ AMB_check_base_class_offset(lv, (S5266C29*)(S19010C7*), 0, "S19010C14");
    /*is_ambiguous_... S19010C14::S19010C7 */ AMB_check_base_class_offset(lv, (S19010C7*), 0, "S19010C14");
    check_base_class_offset(lv, (S5266C26*)(S19010C11*)(S19010C16*), ABISELECT(105,61), "S19010C14");
    check_base_class_offset(lv, (S7719C4_nt*)(S19010C11*)(S19010C16*), ABISELECT(105,61), "S19010C14");
    check_base_class_offset(lv, (S19010C11*)(S19010C16*), ABISELECT(105,61), "S19010C14");
    /*is_ambiguous_... S19010C16::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*)(S19010C16*), ABISELECT(106,62), "S19010C14");
    check_base_class_offset(lv, (S7719C4_nt*)(S19010C13*)(S19010C16*), ABISELECT(104,60), "S19010C14");
    check_base_class_offset(lv, (S5266C26*)(S19010C13*)(S19010C16*), ABISELECT(96,56), "S19010C14");
    check_base_class_offset(lv, (S19010C13*)(S19010C16*), ABISELECT(96,56), "S19010C14");
    check_base_class_offset(lv, (S19010C16*)(S19010C15*), ABISELECT(96,56), "S19010C14");
    /*is_ambiguous_... S19010C10::S5266C29 */ AMB_check_base_class_offset(lv, (S5266C29*)(S19010C10*)(S19010C15*), ABISELECT(64,32), "S19010C14");
    check_base_class_offset(lv, (S5266C26*)(S19010C11*)(S19010C10*)(S19010C15*), ABISELECT(72,36), "S19010C14");
    check_base_class_offset(lv, (S7719C4_nt*)(S19010C11*)(S19010C10*)(S19010C15*), ABISELECT(72,36), "S19010C14");
    check_base_class_offset(lv, (S19010C11*)(S19010C10*)(S19010C15*), ABISELECT(72,36), "S19010C14");
    check_base_class_offset(lv, (S19010C10*)(S19010C15*), ABISELECT(64,32), "S19010C14");
    /*is_ambiguous_... S19010C15::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*)(S19010C15*), ABISELECT(120,72), "S19010C14");
    check_base_class_offset(lv, (S19010C15*), ABISELECT(64,32), "S19010C14");
    test_class_info(&lv, &cd_S19010C14);
    dp->~S19010C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19010C14(Test_S19010C14, "S19010C14", ABISELECT(128,76));

#else // __cplusplus

extern void _ZN9S19010C14C1Ev();
extern void _ZN9S19010C14D1Ev();
Name_Map name_map_S19010C14[] = {
  NSPAIR(_ZN9S19010C14C1Ev),
  NSPAIR(_ZN9S19010C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S19010C11;
extern VTBL_ENTRY _ZTI9S19010C11[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S19010C7;
extern VTBL_ENTRY _ZTI8S19010C7[];
extern  VTBL_ENTRY _ZTV8S19010C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19010C7[];
extern Class_Descriptor cd_S19010C10;
extern VTBL_ENTRY _ZTI9S19010C10[];
extern  VTBL_ENTRY _ZTV9S19010C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19010C10[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S19010C13;
extern VTBL_ENTRY _ZTI9S19010C13[];
extern  VTBL_ENTRY _ZTV9S19010C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19010C13[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S19010C7;
extern VTBL_ENTRY _ZTI8S19010C7[];
extern  VTBL_ENTRY _ZTV8S19010C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19010C7[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S19010C11;
extern VTBL_ENTRY _ZTI9S19010C11[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S19010C13;
extern VTBL_ENTRY _ZTI9S19010C13[];
extern  VTBL_ENTRY _ZTV9S19010C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19010C13[];
extern Class_Descriptor cd_S19010C16;
extern VTBL_ENTRY _ZTI9S19010C16[];
extern  VTBL_ENTRY _ZTV9S19010C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19010C16[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S19010C11;
extern VTBL_ENTRY _ZTI9S19010C11[];
extern Class_Descriptor cd_S19010C10;
extern VTBL_ENTRY _ZTI9S19010C10[];
extern  VTBL_ENTRY _ZTV9S19010C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19010C10[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S19010C15;
extern VTBL_ENTRY _ZTI9S19010C15[];
extern  VTBL_ENTRY _ZTV9S19010C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19010C15[];
static Base_Class bases_S19010C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7719C4_nt,    ABISELECT(25,13), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S5266C29,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19010C11,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S5266C29,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19010C7,    ABISELECT(32,16), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19010C10,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7719C4_nt,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S5266C29,    ABISELECT(57,29), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19010C13,    ABISELECT(48,24), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19010C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C26,    ABISELECT(105,61), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(105,61), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19010C11,    ABISELECT(105,61), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(106,62), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(104,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19010C13,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19010C16,    ABISELECT(96,56), //bcp->offset
    28, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S5266C29,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19010C11,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S19010C10,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(120,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S19010C15,    ABISELECT(64,32), //bcp->offset
    20, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19010C14[];
static  VTBL_ENTRY vtc_S19010C14[] = {
  ABISELECT(120,72),
  ABISELECT(96,56),
  ABISELECT(64,32),
  ABISELECT(57,29),
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(16,8),
  ABISELECT(25,13),
  0,
  (VTBL_ENTRY)&(_ZTI9S19010C14[0]),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19010C14[0]),
  ABISELECT(-7,-3),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19010C14[0]),
  ABISELECT(9,5),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19010C14[0]),
  ABISELECT(56,40),
  ABISELECT(32,24),
  ABISELECT(-16,-8),
  ABISELECT(-7,-3),
  ABISELECT(-32,-16),
  ABISELECT(-39,-19),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S19010C14[0]),
  ABISELECT(-39,-27),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S19010C14[0]),
};
extern VTBL_ENTRY _ZTV9S19010C14[];
static  VTBL_ENTRY _tg__ZTV8S19010C7__A__9S19010C14[] = {
  ABISELECT(25,13),
  0,
  (VTBL_ENTRY)&(_ZTI8S19010C7[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C10__9S19010C14[] = {
  ABISELECT(16,8),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI9S19010C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19010C7__9S19010C10__9S19010C14[] = {
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19010C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19010C7__9S19010C14[] = {
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S19010C7[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C13__9S19010C14[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI9S19010C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C15__9S19010C14[] = {
  ABISELECT(56,40),
  ABISELECT(32,24),
  ABISELECT(-16,-8),
  ABISELECT(-7,-3),
  ABISELECT(-32,-16),
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI9S19010C15[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C109S19010C15__A1__9S19010C14[] = {
  ABISELECT(-32,-16),
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI9S19010C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19010C7__9S19010C109S19010C15__A1__9S19010C14[] = {
  ABISELECT(-7,-3),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19010C10[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C13__9S19010C15__9S19010C14[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19010C15[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C16__9S19010C15__9S19010C14[] = {
  ABISELECT(-39,-27),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI9S19010C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19010C7__9S19010C15__9S19010C14[] = {
  ABISELECT(-7,-3),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19010C15[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C16__9S19010C14[] = {
  ABISELECT(-39,-27),
  0,
  (VTBL_ENTRY)&(_ZTI9S19010C16[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C139S19010C16__A1__9S19010C14[] = {
  ABISELECT(-39,-27),
  0,
  (VTBL_ENTRY)&(_ZTI9S19010C13[0]),
};
static  VTT_ENTRY vtt_S19010C14[] = {
  {&(_ZTV9S19010C14[10]),  10,31},
  {&(_tg__ZTV8S19010C7__A__9S19010C14[3]),  3,3},
  {&(_ZTV9S19010C14[14]),  14,31},
  {&(_ZTV9S19010C14[17]),  17,31},
  {&(_ZTV9S19010C14[20]),  20,31},
  {&(_ZTV9S19010C14[28]),  28,31},
  {&(_ZTV9S19010C14[31]),  31,31},
  {&(_tg__ZTV9S19010C10__9S19010C14[4]),  4,4},
  {&(_tg__ZTV8S19010C7__9S19010C10__9S19010C14[3]),  3,3},
  {&(_tg__ZTV8S19010C7__9S19010C14[3]),  3,3},
  {&(_tg__ZTV9S19010C13__9S19010C14[3]),  3,3},
  {&(_tg__ZTV9S19010C15__9S19010C14[8]),  8,8},
  {&(_tg__ZTV9S19010C109S19010C15__A1__9S19010C14[4]),  4,4},
  {&(_tg__ZTV8S19010C7__9S19010C109S19010C15__A1__9S19010C14[3]),  3,3},
  {&(_tg__ZTV9S19010C13__9S19010C15__9S19010C14[3]),  3,3},
  {&(_tg__ZTV9S19010C16__9S19010C15__9S19010C14[3]),  3,3},
  {&(_tg__ZTV8S19010C7__9S19010C15__9S19010C14[3]),  3,3},
  {&(_tg__ZTV9S19010C16__9S19010C14[3]),  3,3},
  {&(_tg__ZTV9S19010C139S19010C16__A1__9S19010C14[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19010C14[];
extern  VTBL_ENTRY _ZTV9S19010C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19010C14[];
Class_Descriptor cd_S19010C14 = {  "S19010C14", // class name
  bases_S19010C14, 31,
  &(vtc_S19010C14[0]), // expected_vtbl_contents
  &(vtt_S19010C14[0]), // expected_vtt_contents
  ABISELECT(128,76), // object size
  NSPAIRA(_ZTI9S19010C14),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19010C14),31, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19010C14),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

union  S19010C18_nt  {
  void  mf19010c18(); // _ZN12S19010C18_nt10mf19010c18Ev
};
//SIG(1 S19010C18_nt) U1{ m}

#endif // __cplusplus
#ifdef __cplusplus

struct  S19010C17  : virtual S5266C26 , S19010C13 {
  ::S19010C18_nt s19010c17f0;
  long s19010c17f1[9];
  ~S19010C17(); // tgen
  S19010C17(); // tgen
};
//SIG(-1 S19010C17) C1{ VBC2{ m} BC3{ BC4{ m Fc} BC2 VBC5{ m}} FU6{ m} Fl[9]}


S19010C17 ::~S19010C17(){ note_dtor("S19010C17", this);} // tgen
S19010C17 ::S19010C17(){ note_ctor("S19010C17", this);} // tgen

static void Test_S19010C17()
{
  extern Class_Descriptor cd_S19010C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[13];
    init_test(&cd_S19010C17, buf);
    S19010C17 *dp, &lv = *(dp=new (buf) S19010C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,48), "sizeof(S19010C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19010C17)");
    /*is_ambiguous_... S19010C17::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*), ABISELECT(88,44), "S19010C17");
    check_base_class_offset(lv, (S7719C4_nt*)(S19010C13*), ABISELECT(8,4), "S19010C17");
    check_base_class_offset(lv, (S5266C26*)(S19010C13*), 0, "S19010C17");
    check_base_class_offset(lv, (S5266C29*)(S19010C13*), 0, "S19010C17");
    check_base_class_offset(lv, (S19010C13*), 0, "S19010C17");
    check_field_offset(lv, s19010c17f0, ABISELECT(9,5), "S19010C17.s19010c17f0");
    check_field_offset(lv, s19010c17f1, ABISELECT(16,8), "S19010C17.s19010c17f1");
    test_class_info(&lv, &cd_S19010C17);
    dp->~S19010C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19010C17(Test_S19010C17, "S19010C17", ABISELECT(96,48));

#else // __cplusplus

extern void _ZN9S19010C17C1Ev();
extern void _ZN9S19010C17D1Ev();
Name_Map name_map_S19010C17[] = {
  NSPAIR(_ZN9S19010C17C1Ev),
  NSPAIR(_ZN9S19010C17D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S19010C13;
extern VTBL_ENTRY _ZTI9S19010C13[];
extern  VTBL_ENTRY _ZTV9S19010C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19010C13[];
static Base_Class bases_S19010C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C26,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7719C4_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19010C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19010C17[];
static  VTBL_ENTRY vtc_S19010C17[] = {
  ABISELECT(88,44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19010C17[0]),
};
extern VTBL_ENTRY _ZTV9S19010C17[];
static  VTBL_ENTRY _tg__ZTV9S19010C13__9S19010C17[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19010C13[0]),
};
static  VTT_ENTRY vtt_S19010C17[] = {
  {&(_ZTV9S19010C17[4]),  4,4},
  {&(_tg__ZTV9S19010C13__9S19010C17[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19010C17[];
extern  VTBL_ENTRY _ZTV9S19010C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19010C17[];
Class_Descriptor cd_S19010C17 = {  "S19010C17", // class name
  bases_S19010C17, 5,
  &(vtc_S19010C17[0]), // expected_vtbl_contents
  &(vtt_S19010C17[0]), // expected_vtt_contents
  ABISELECT(96,48), // object size
  NSPAIRA(_ZTI9S19010C17),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19010C17),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19010C17),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19010C1  : virtual S19010C2 , virtual S19010C14 , S19010C11 , S19010C17 {
  virtual  ~S19010C1(); // _ZN8S19010C1D2Ev
  S19010C1(); // tgen
};
//SIG(1 S19010C1) C1{ VBC2{ BC3{ BC4{ m Fi} VBC5{ m} VBC6{ VBC7{ BC8{ m} BC5 VBC9{ m Fc} FC5} VBC10{ VBC9 BC5 BC11{ BC8 BC9} VBC7} BC12{ VBC13{ BC9 BC8 VBC5} FD Fp[8]} vd} BC12 vd Fi} v1} VBC14{ VBC10 VBC13 BC7 VBC15{ VBC5 VBC13 VBC16{ BC11 BC8 BC13 FL} BC10 VBC8 FL[2]}} BC11 BC17{ VBC8 BC13 FU18{ m} Fl[9]} vd}


 S19010C1 ::~S19010C1(){ note_dtor("S19010C1", this);}
S19010C1 ::S19010C1(){ note_ctor("S19010C1", this);} // tgen

static void Test_S19010C1()
{
  extern Class_Descriptor cd_S19010C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(28,58)];
    init_test(&cd_S19010C1, buf);
    S19010C1 *dp, &lv = *(dp=new (buf) S19010C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(432,228), "sizeof(S19010C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19010C1)");
    check_base_class_offset(lv, (S7719C17_nt*)(S19010C3*)(S19010C2*), ABISELECT(192,96), "S19010C1");
    /*is_ambiguous_... S19010C3::S5266C29 */ AMB_check_base_class_offset(lv, (S5266C29*)(S19010C3*)(S19010C2*), 0, "S19010C1");
    /*is_ambiguous_... S19010C1::S19010C13 */ AMB_check_base_class_offset(lv, (S5266C29*)(S19010C13*), 0, "S19010C1");
    /*is_ambiguous_... S19010C15::S5266C29 */ AMB_check_base_class_offset(lv, (S5266C29*)(S19010C15*), 0, "S19010C1");
    check_base_class_offset(lv, (S5266C29*)(S19010C13*)(S19010C16*), 0, "S19010C1");
    check_base_class_offset(lv, (S5266C29*)(S19010C13*)(S19010C17*), 0, "S19010C1");
    /*is_ambiguous_... S19010C1::S19010C7 */ AMB_check_base_class_offset(lv, (S5266C26*)(S19010C7*), ABISELECT(304,152), "S19010C1");
    /*is_ambiguous_... S19010C1::S19010C7 */ AMB_check_base_class_offset(lv, (S5266C29*)(S19010C7*), ABISELECT(304,152), "S19010C1");
    /*is_ambiguous_... S19010C1::S19010C7 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S19010C7*), ABISELECT(313,157), "S19010C1");
    /*is_ambiguous_... S19010C1::S19010C10 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S19010C10*), ABISELECT(313,157), "S19010C1");
    /*is_ambiguous_... S19010C14::S19010C7 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S19010C7*)(S19010C14*), ABISELECT(313,157), "S19010C1");
    /*is_ambiguous_... S19010C10::S7719C4_nt */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S19010C10*)(S19010C15*), ABISELECT(313,157), "S19010C1");
    check_base_class_offset(lv, (S19010C7*)(S19010C6*), ABISELECT(304,152), "S19010C1");
    /*is_ambiguous_... S19010C1::S19010C10 */ AMB_check_base_class_offset(lv, (S19010C7*)(S19010C10*), ABISELECT(304,152), "S19010C1");
    check_base_class_offset(lv, (S19010C7*)(S19010C10*)(S19010C15*), ABISELECT(304,152), "S19010C1");
    /*is_ambiguous_... S19010C1::S19010C10 */ AMB_check_base_class_offset(lv, (S5266C29*)(S19010C10*), ABISELECT(320,160), "S19010C1");
    /*is_ambiguous_... S19010C1::S19010C10 */ AMB_check_base_class_offset(lv, (S5266C26*)(S19010C11*)(S19010C10*), ABISELECT(328,164), "S19010C1");
    /*is_ambiguous_... S19010C1::S19010C10 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S19010C11*)(S19010C10*), ABISELECT(328,164), "S19010C1");
    /*is_ambiguous_... S19010C1::S19010C10 */ AMB_check_base_class_offset(lv, (S19010C11*)(S19010C10*), ABISELECT(328,164), "S19010C1");
    check_base_class_offset(lv, (S19010C10*)(S19010C6*), ABISELECT(320,160), "S19010C1");
    /*is_ambiguous_... S19010C14::S19010C10 */ AMB_check_base_class_offset(lv, (S19010C10*)(S19010C14*), ABISELECT(320,160), "S19010C1");
    /*is_ambiguous_... S19010C1::S19010C13 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S19010C13*), ABISELECT(344,172), "S19010C1");
    /*is_ambiguous_... S19010C1::S19010C13 */ AMB_check_base_class_offset(lv, (S5266C26*)(S19010C13*), ABISELECT(336,168), "S19010C1");
    check_base_class_offset(lv, (S19010C13*)(S19010C12*)(S19010C6*), ABISELECT(336,168), "S19010C1");
    /*is_ambiguous_... S19010C3::S19010C12 */ AMB_check_base_class_offset(lv, (S19010C13*)(S19010C12*)(S19010C3*)(S19010C2*), ABISELECT(336,168), "S19010C1");
    /*is_ambiguous_... S19010C14::S19010C13 */ AMB_check_base_class_offset(lv, (S19010C13*)(S19010C14*), ABISELECT(336,168), "S19010C1");
    /*is_ambiguous_... S19010C15::S19010C13 */ AMB_check_base_class_offset(lv, (S19010C13*)(S19010C15*), ABISELECT(336,168), "S19010C1");
    check_base_class_offset(lv, (S19010C12*)(S19010C6*), ABISELECT(208,104), "S19010C1");
    check_base_class_offset(lv, (S19010C6*)(S19010C3*)(S19010C2*), ABISELECT(208,104), "S19010C1");
    /*is_ambiguous_... S19010C3::S19010C12 */ AMB_check_base_class_offset(lv, (S19010C12*)(S19010C3*)(S19010C2*), ABISELECT(96,48), "S19010C1");
    check_base_class_offset(lv, (S19010C3*)(S19010C2*), ABISELECT(96,48), "S19010C1");
    check_base_class_offset(lv, (S19010C2*), ABISELECT(96,48), "S19010C1");
    /*is_ambiguous_... S19010C14::S19010C7 */ AMB_check_base_class_offset(lv, (S5266C26*)(S19010C7*)(S19010C14*), ABISELECT(352,176), "S19010C1");
    /*is_ambiguous_... S19010C14::S19010C7 */ AMB_check_base_class_offset(lv, (S5266C29*)(S19010C7*)(S19010C14*), ABISELECT(352,176), "S19010C1");
    /*is_ambiguous_... S19010C14::S19010C7 */ AMB_check_base_class_offset(lv, (S19010C7*)(S19010C14*), ABISELECT(352,176), "S19010C1");
    check_base_class_offset(lv, (S5266C26*)(S19010C11*)(S19010C16*), ABISELECT(409,213), "S19010C1");
    check_base_class_offset(lv, (S7719C4_nt*)(S19010C11*)(S19010C16*), ABISELECT(409,213), "S19010C1");
    check_base_class_offset(lv, (S19010C11*)(S19010C16*), ABISELECT(409,213), "S19010C1");
    /*is_ambiguous_... S19010C16::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*)(S19010C16*), ABISELECT(410,214), "S19010C1");
    check_base_class_offset(lv, (S7719C4_nt*)(S19010C13*)(S19010C16*), ABISELECT(408,212), "S19010C1");
    check_base_class_offset(lv, (S5266C26*)(S19010C13*)(S19010C16*), ABISELECT(400,208), "S19010C1");
    check_base_class_offset(lv, (S19010C13*)(S19010C16*), ABISELECT(400,208), "S19010C1");
    check_base_class_offset(lv, (S19010C16*)(S19010C15*), ABISELECT(400,208), "S19010C1");
    /*is_ambiguous_... S19010C10::S5266C29 */ AMB_check_base_class_offset(lv, (S5266C29*)(S19010C10*)(S19010C15*), ABISELECT(368,184), "S19010C1");
    check_base_class_offset(lv, (S5266C26*)(S19010C11*)(S19010C10*)(S19010C15*), ABISELECT(376,188), "S19010C1");
    check_base_class_offset(lv, (S7719C4_nt*)(S19010C11*)(S19010C10*)(S19010C15*), ABISELECT(376,188), "S19010C1");
    check_base_class_offset(lv, (S19010C11*)(S19010C10*)(S19010C15*), ABISELECT(376,188), "S19010C1");
    check_base_class_offset(lv, (S19010C10*)(S19010C15*), ABISELECT(368,184), "S19010C1");
    /*is_ambiguous_... S19010C15::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*)(S19010C15*), ABISELECT(424,224), "S19010C1");
    /*is_ambiguous_... S19010C17::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*)(S19010C17*), ABISELECT(424,224), "S19010C1");
    check_base_class_offset(lv, (S19010C15*)(S19010C14*), ABISELECT(368,184), "S19010C1");
    check_base_class_offset(lv, (S19010C14*), ABISELECT(352,176), "S19010C1");
    /*is_ambiguous_... S19010C1::S19010C11 */ AMB_check_base_class_offset(lv, (S5266C26*)(S19010C11*), ABISELECT(88,44), "S19010C1");
    /*is_ambiguous_... S19010C1::S19010C11 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S19010C11*), ABISELECT(88,44), "S19010C1");
    /*is_ambiguous_... S19010C1::S19010C11 */ AMB_check_base_class_offset(lv, (S19010C11*), ABISELECT(88,44), "S19010C1");
    check_base_class_offset(lv, (S7719C4_nt*)(S19010C13*)(S19010C17*), ABISELECT(8,4), "S19010C1");
    check_base_class_offset(lv, (S5266C26*)(S19010C13*)(S19010C17*), 0, "S19010C1");
    check_base_class_offset(lv, (S19010C13*)(S19010C17*), 0, "S19010C1");
    check_base_class_offset(lv, (S19010C17*), 0, "S19010C1");
    test_class_info(&lv, &cd_S19010C1);
    dp->~S19010C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19010C1(Test_S19010C1, "S19010C1", ABISELECT(432,228));

#else // __cplusplus

extern void _ZN8S19010C1C1Ev();
extern void _ZN8S19010C1D2Ev();
Name_Map name_map_S19010C1[] = {
  NSPAIR(_ZN8S19010C1C1Ev),
  NSPAIR(_ZN8S19010C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7719C17_nt;
extern VTBL_ENTRY _ZTI11S7719C17_nt[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S19010C7;
extern VTBL_ENTRY _ZTI8S19010C7[];
extern  VTBL_ENTRY _ZTV8S19010C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19010C7[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S19010C11;
extern VTBL_ENTRY _ZTI9S19010C11[];
extern Class_Descriptor cd_S19010C10;
extern VTBL_ENTRY _ZTI9S19010C10[];
extern  VTBL_ENTRY _ZTV9S19010C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19010C10[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S19010C13;
extern VTBL_ENTRY _ZTI9S19010C13[];
extern  VTBL_ENTRY _ZTV9S19010C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19010C13[];
extern Class_Descriptor cd_S19010C12;
extern VTBL_ENTRY _ZTI9S19010C12[];
extern  VTBL_ENTRY _ZTV9S19010C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19010C12[];
extern Class_Descriptor cd_S19010C6;
extern VTBL_ENTRY _ZTI8S19010C6[];
extern  VTBL_ENTRY _ZTV8S19010C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19010C6[];
extern Class_Descriptor cd_S19010C12;
extern VTBL_ENTRY _ZTI9S19010C12[];
extern  VTBL_ENTRY _ZTV9S19010C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19010C12[];
extern Class_Descriptor cd_S19010C3;
extern VTBL_ENTRY _ZTI8S19010C3[];
extern  VTBL_ENTRY _ZTV8S19010C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19010C3[];
extern Class_Descriptor cd_S19010C2;
extern VTBL_ENTRY _ZTI8S19010C2[];
extern  VTBL_ENTRY _ZTV8S19010C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19010C2[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S19010C7;
extern VTBL_ENTRY _ZTI8S19010C7[];
extern  VTBL_ENTRY _ZTV8S19010C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19010C7[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S19010C11;
extern VTBL_ENTRY _ZTI9S19010C11[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S19010C13;
extern VTBL_ENTRY _ZTI9S19010C13[];
extern  VTBL_ENTRY _ZTV9S19010C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19010C13[];
extern Class_Descriptor cd_S19010C16;
extern VTBL_ENTRY _ZTI9S19010C16[];
extern  VTBL_ENTRY _ZTV9S19010C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19010C16[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S19010C11;
extern VTBL_ENTRY _ZTI9S19010C11[];
extern Class_Descriptor cd_S19010C10;
extern VTBL_ENTRY _ZTI9S19010C10[];
extern  VTBL_ENTRY _ZTV9S19010C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19010C10[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S19010C15;
extern VTBL_ENTRY _ZTI9S19010C15[];
extern  VTBL_ENTRY _ZTV9S19010C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19010C15[];
extern Class_Descriptor cd_S19010C14;
extern VTBL_ENTRY _ZTI9S19010C14[];
extern  VTBL_ENTRY _ZTV9S19010C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19010C14[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S19010C11;
extern VTBL_ENTRY _ZTI9S19010C11[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S19010C13;
extern VTBL_ENTRY _ZTI9S19010C13[];
extern  VTBL_ENTRY _ZTV9S19010C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19010C13[];
extern Class_Descriptor cd_S19010C17;
extern VTBL_ENTRY _ZTI9S19010C17[];
extern  VTBL_ENTRY _ZTV9S19010C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19010C17[];
static Base_Class bases_S19010C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7719C17_nt,    ABISELECT(192,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S5266C26,    ABISELECT(304,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S5266C29,    ABISELECT(304,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(313,157), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19010C7,    ABISELECT(304,152), //bcp->offset
    38, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S5266C29,    ABISELECT(320,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(328,164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(328,164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19010C11,    ABISELECT(328,164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19010C10,    ABISELECT(320,160), //bcp->offset
    41, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S7719C4_nt,    ABISELECT(344,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(336,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19010C13,    ABISELECT(336,168), //bcp->offset
    45, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19010C12,    ABISELECT(208,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19010C6,    ABISELECT(208,104), //bcp->offset
    28, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19010C12,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19010C3,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19010C2,    ABISELECT(96,48), //bcp->offset
    15, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5266C26,    ABISELECT(352,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S5266C29,    ABISELECT(352,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19010C7,    ABISELECT(352,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(409,213), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(409,213), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19010C11,    ABISELECT(409,213), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(410,214), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(408,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(400,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S19010C13,    ABISELECT(400,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19010C16,    ABISELECT(400,208), //bcp->offset
    66, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S5266C29,    ABISELECT(368,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(376,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(376,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19010C11,    ABISELECT(376,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S19010C10,    ABISELECT(368,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(424,224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S19010C15,    ABISELECT(368,184), //bcp->offset
    58, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S19010C14,    ABISELECT(352,176), //bcp->offset
    48, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5266C26,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S19010C11,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7719C4_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S19010C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S19010C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19010C1[];
extern void _ZN8S19010C1D1Ev();
extern void _ZN8S19010C1D0Ev();
extern void ABISELECT(_ZTv0_n72_N8S19010C1D1Ev,_ZTv0_n36_N8S19010C1D1Ev)();
extern void ABISELECT(_ZThn96_N8S19010C1D1Ev,_ZThn48_N8S19010C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19010C1D0Ev,_ZTv0_n36_N8S19010C1D0Ev)();
extern void ABISELECT(_ZThn96_N8S19010C1D0Ev,_ZThn48_N8S19010C1D0Ev)() __attribute__((weak));
extern void _ZN8S19010C22v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S19010C1D1Ev,_ZTv0_n32_N8S19010C1D1Ev)();
extern void ABISELECT(_ZThn208_N8S19010C1D1Ev,_ZThn104_N8S19010C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19010C1D0Ev,_ZTv0_n32_N8S19010C1D0Ev)();
extern void ABISELECT(_ZThn208_N8S19010C1D0Ev,_ZThn104_N8S19010C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19010C1[] = {
  ABISELECT(400,208),
  ABISELECT(368,184),
  ABISELECT(352,176),
  ABISELECT(336,168),
  ABISELECT(320,160),
  ABISELECT(313,157),
  ABISELECT(304,152),
  ABISELECT(208,104),
  ABISELECT(96,48),
  ABISELECT(424,224),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19010C1[0]),
  (VTBL_ENTRY)&_ZN8S19010C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19010C1D0Ev,
  0,
  ABISELECT(-96,-48),
  ABISELECT(224,112),
  ABISELECT(217,109),
  ABISELECT(208,104),
  ABISELECT(112,56),
  ABISELECT(-96,-48),
  ABISELECT(240,120),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S19010C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19010C1D1Ev,_ZTv0_n36_N8S19010C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19010C1D0Ev,_ZTv0_n36_N8S19010C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19010C22v1Ev,
  ABISELECT(-208,-104),
  ABISELECT(112,56),
  ABISELECT(105,53),
  ABISELECT(96,48),
  ABISELECT(-208,-104),
  ABISELECT(128,64),
  ABISELECT(-208,-104),
  (VTBL_ENTRY)&(_ZTI8S19010C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19010C1D1Ev,_ZTv0_n32_N8S19010C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19010C1D0Ev,_ZTv0_n32_N8S19010C1D0Ev),
  ABISELECT(9,5),
  ABISELECT(-304,-152),
  (VTBL_ENTRY)&(_ZTI8S19010C1[0]),
  ABISELECT(-16,-8),
  ABISELECT(-7,-3),
  ABISELECT(-320,-160),
  (VTBL_ENTRY)&(_ZTI8S19010C1[0]),
  ABISELECT(-336,-168),
  ABISELECT(-336,-168),
  (VTBL_ENTRY)&(_ZTI8S19010C1[0]),
  ABISELECT(72,48),
  ABISELECT(48,32),
  ABISELECT(16,8),
  ABISELECT(-352,-176),
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  ABISELECT(-39,-19),
  ABISELECT(-352,-176),
  (VTBL_ENTRY)&(_ZTI8S19010C1[0]),
  ABISELECT(56,40),
  ABISELECT(32,24),
  ABISELECT(-32,-16),
  ABISELECT(-368,-184),
  ABISELECT(-64,-32),
  ABISELECT(-55,-27),
  ABISELECT(-368,-184),
  (VTBL_ENTRY)&(_ZTI8S19010C1[0]),
  ABISELECT(-400,-208),
  ABISELECT(-400,-208),
  (VTBL_ENTRY)&(_ZTI8S19010C1[0]),
};
extern VTBL_ENTRY _ZTV8S19010C1[];
static  VTBL_ENTRY _tg__ZTV9S19010C17__8S19010C1[] = {
  ABISELECT(424,224),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19010C17[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C139S19010C17__A2__8S19010C1[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19010C13[0]),
};
extern void _ZN8S19010C2D1Ev();
extern void _ZN8S19010C2D0Ev();
extern void _ZN8S19010C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19010C2__8S19010C1[] = {
  ABISELECT(224,112),
  ABISELECT(217,109),
  ABISELECT(208,104),
  ABISELECT(112,56),
  ABISELECT(-96,-48),
  ABISELECT(240,120),
  0,
  (VTBL_ENTRY)&(_ZTI8S19010C2[0]),
  (VTBL_ENTRY)&_ZN8S19010C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19010C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19010C22v1Ev,
};
extern void _ZN8S19010C3D1Ev();
extern void _ZN8S19010C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19010C38S19010C2__8S19010C1[] = {
  ABISELECT(224,112),
  ABISELECT(217,109),
  ABISELECT(208,104),
  ABISELECT(112,56),
  ABISELECT(-96,-48),
  ABISELECT(240,120),
  0,
  (VTBL_ENTRY)&(_ZTI8S19010C3[0]),
  (VTBL_ENTRY)&_ZN8S19010C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19010C3D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19010C128S19010C38S19010C2__A1__8S19010C1[] = {
  ABISELECT(-96,-48),
  ABISELECT(240,120),
  0,
  (VTBL_ENTRY)&(_ZTI9S19010C12[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C13__9S19010C128S19010C38S19010C2__A1__8S19010C1[] = {
  ABISELECT(-336,-168),
  ABISELECT(-240,-120),
  (VTBL_ENTRY)&(_ZTI9S19010C12[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S19010C3D1Ev,_ZTv0_n32_N8S19010C3D1Ev)();
extern void ABISELECT(_ZThn112_N8S19010C3D1Ev,_ZThn56_N8S19010C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19010C3D0Ev,_ZTv0_n32_N8S19010C3D0Ev)();
extern void ABISELECT(_ZThn112_N8S19010C3D0Ev,_ZThn56_N8S19010C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19010C6__8S19010C38S19010C2__8S19010C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(112,56),
  ABISELECT(105,53),
  ABISELECT(96,48),
  ABISELECT(-208,-104),
  ABISELECT(128,64),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S19010C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19010C3D1Ev,_ZTv0_n32_N8S19010C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19010C3D0Ev,_ZTv0_n32_N8S19010C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19010C7__8S19010C38S19010C2__8S19010C1[] = {
  ABISELECT(9,5),
  ABISELECT(-208,-104),
  (VTBL_ENTRY)&(_ZTI8S19010C3[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C10__8S19010C38S19010C2__8S19010C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-7,-3),
  ABISELECT(-224,-112),
  (VTBL_ENTRY)&(_ZTI8S19010C3[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C13__8S19010C38S19010C2__8S19010C1[] = {
  ABISELECT(-336,-168),
  ABISELECT(-240,-120),
  (VTBL_ENTRY)&(_ZTI8S19010C3[0]),
};
extern void ABISELECT(_ZTv0_n64_N8S19010C2D1Ev,_ZTv0_n32_N8S19010C2D1Ev)();
extern void ABISELECT(_ZThn112_N8S19010C2D1Ev,_ZThn56_N8S19010C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19010C2D0Ev,_ZTv0_n32_N8S19010C2D0Ev)();
extern void ABISELECT(_ZThn112_N8S19010C2D0Ev,_ZThn56_N8S19010C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19010C6__8S19010C2__8S19010C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(112,56),
  ABISELECT(105,53),
  ABISELECT(96,48),
  ABISELECT(-208,-104),
  ABISELECT(128,64),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S19010C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19010C2D1Ev,_ZTv0_n32_N8S19010C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19010C2D0Ev,_ZTv0_n32_N8S19010C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19010C7__8S19010C2__8S19010C1[] = {
  ABISELECT(9,5),
  ABISELECT(-208,-104),
  (VTBL_ENTRY)&(_ZTI8S19010C2[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C10__8S19010C2__8S19010C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-7,-3),
  ABISELECT(-224,-112),
  (VTBL_ENTRY)&(_ZTI8S19010C2[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C13__8S19010C2__8S19010C1[] = {
  ABISELECT(-336,-168),
  ABISELECT(-240,-120),
  (VTBL_ENTRY)&(_ZTI8S19010C2[0]),
};
extern void _ZN8S19010C6D1Ev();
extern void _ZN8S19010C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19010C6__8S19010C1[] = {
  ABISELECT(112,56),
  ABISELECT(105,53),
  ABISELECT(96,48),
  ABISELECT(-208,-104),
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19010C6[0]),
  (VTBL_ENTRY)&_ZN8S19010C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19010C6D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19010C128S19010C6__8S19010C1[] = {
  ABISELECT(-208,-104),
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S19010C12[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C13__9S19010C128S19010C6__8S19010C1[] = {
  ABISELECT(-336,-168),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S19010C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19010C7__8S19010C6__8S19010C1[] = {
  ABISELECT(9,5),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S19010C6[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C10__8S19010C6__8S19010C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-7,-3),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S19010C6[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C13__8S19010C6__8S19010C1[] = {
  ABISELECT(-336,-168),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S19010C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19010C7__8S19010C1[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S19010C7[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C10__8S19010C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI9S19010C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19010C7__9S19010C10__8S19010C1[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19010C10[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C13__8S19010C1[] = {
  ABISELECT(-336,-168),
  0,
  (VTBL_ENTRY)&(_ZTI9S19010C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C14__8S19010C1[] = {
  ABISELECT(72,48),
  ABISELECT(48,32),
  ABISELECT(16,8),
  ABISELECT(-352,-176),
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI9S19010C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19010C79S19010C14__A1__8S19010C1[] = {
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI8S19010C7[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C10__9S19010C14__8S19010C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-7,-3),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19010C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19010C7__9S19010C14__8S19010C1[] = {
  ABISELECT(9,5),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S19010C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C13__9S19010C14__8S19010C1[] = {
  ABISELECT(-336,-168),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19010C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C15__9S19010C14__8S19010C1[] = {
  ABISELECT(56,40),
  ABISELECT(32,24),
  ABISELECT(-32,-16),
  ABISELECT(-368,-184),
  ABISELECT(-64,-32),
  ABISELECT(-55,-27),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19010C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C16__9S19010C14__8S19010C1[] = {
  ABISELECT(-400,-208),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI9S19010C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C15__8S19010C1[] = {
  ABISELECT(56,40),
  ABISELECT(32,24),
  ABISELECT(-32,-16),
  ABISELECT(-368,-184),
  ABISELECT(-64,-32),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI9S19010C15[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C109S19010C15__A1__8S19010C1[] = {
  ABISELECT(-64,-32),
  ABISELECT(-55,-27),
  0,
  (VTBL_ENTRY)&(_ZTI9S19010C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19010C7__9S19010C109S19010C15__A1__8S19010C1[] = {
  ABISELECT(9,5),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI9S19010C10[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C13__9S19010C15__8S19010C1[] = {
  ABISELECT(-336,-168),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19010C15[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C16__9S19010C15__8S19010C1[] = {
  ABISELECT(-400,-208),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI9S19010C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19010C7__9S19010C15__8S19010C1[] = {
  ABISELECT(9,5),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI9S19010C15[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C16__8S19010C1[] = {
  ABISELECT(-400,-208),
  0,
  (VTBL_ENTRY)&(_ZTI9S19010C16[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19010C139S19010C16__A1__8S19010C1[] = {
  ABISELECT(-400,-208),
  0,
  (VTBL_ENTRY)&(_ZTI9S19010C13[0]),
};
static  VTT_ENTRY vtt_S19010C1[] = {
  {&(_ZTV8S19010C1[13]),  13,69},
  {&(_tg__ZTV9S19010C17__8S19010C1[4]),  4,4},
  {&(_tg__ZTV9S19010C139S19010C17__A2__8S19010C1[3]),  3,3},
  {&(_ZTV8S19010C1[25]),  25,69},
  {&(_ZTV8S19010C1[36]),  36,69},
  {&(_ZTV8S19010C1[41]),  41,69},
  {&(_ZTV8S19010C1[45]),  45,69},
  {&(_ZTV8S19010C1[48]),  48,69},
  {&(_ZTV8S19010C1[58]),  58,69},
  {&(_ZTV8S19010C1[66]),  66,69},
  {&(_ZTV8S19010C1[69]),  69,69},
  {&(_tg__ZTV8S19010C2__8S19010C1[8]),  8,11},
  {&(_tg__ZTV8S19010C38S19010C2__8S19010C1[8]),  8,10},
  {&(_tg__ZTV9S19010C128S19010C38S19010C2__A1__8S19010C1[4]),  4,4},
  {&(_tg__ZTV9S19010C13__9S19010C128S19010C38S19010C2__A1__8S19010C1[3]),  3,3},
  {&(_tg__ZTV8S19010C6__8S19010C38S19010C2__8S19010C1[8]),  8,10},
  {&(_tg__ZTV8S19010C7__8S19010C38S19010C2__8S19010C1[3]),  3,3},
  {&(_tg__ZTV9S19010C10__8S19010C38S19010C2__8S19010C1[4]),  4,4},
  {&(_tg__ZTV9S19010C13__8S19010C38S19010C2__8S19010C1[3]),  3,3},
  {&(_tg__ZTV8S19010C6__8S19010C2__8S19010C1[8]),  8,10},
  {&(_tg__ZTV8S19010C7__8S19010C2__8S19010C1[3]),  3,3},
  {&(_tg__ZTV9S19010C10__8S19010C2__8S19010C1[4]),  4,4},
  {&(_tg__ZTV9S19010C13__8S19010C2__8S19010C1[3]),  3,3},
  {&(_tg__ZTV8S19010C6__8S19010C1[7]),  7,9},
  {&(_tg__ZTV9S19010C128S19010C6__8S19010C1[4]),  4,4},
  {&(_tg__ZTV9S19010C13__9S19010C128S19010C6__8S19010C1[3]),  3,3},
  {&(_tg__ZTV8S19010C7__8S19010C6__8S19010C1[3]),  3,3},
  {&(_tg__ZTV9S19010C10__8S19010C6__8S19010C1[4]),  4,4},
  {&(_tg__ZTV9S19010C13__8S19010C6__8S19010C1[3]),  3,3},
  {&(_tg__ZTV8S19010C7__8S19010C1[3]),  3,3},
  {&(_tg__ZTV9S19010C10__8S19010C1[4]),  4,4},
  {&(_tg__ZTV8S19010C7__9S19010C10__8S19010C1[3]),  3,3},
  {&(_tg__ZTV9S19010C13__8S19010C1[3]),  3,3},
  {&(_tg__ZTV9S19010C14__8S19010C1[10]),  10,10},
  {&(_tg__ZTV8S19010C79S19010C14__A1__8S19010C1[3]),  3,3},
  {&(_tg__ZTV9S19010C10__9S19010C14__8S19010C1[4]),  4,4},
  {&(_tg__ZTV8S19010C7__9S19010C14__8S19010C1[3]),  3,3},
  {&(_tg__ZTV9S19010C13__9S19010C14__8S19010C1[3]),  3,3},
  {&(_tg__ZTV9S19010C15__9S19010C14__8S19010C1[8]),  8,8},
  {&(_tg__ZTV9S19010C16__9S19010C14__8S19010C1[3]),  3,3},
  {&(_tg__ZTV9S19010C15__8S19010C1[8]),  8,8},
  {&(_tg__ZTV9S19010C109S19010C15__A1__8S19010C1[4]),  4,4},
  {&(_tg__ZTV8S19010C7__9S19010C109S19010C15__A1__8S19010C1[3]),  3,3},
  {&(_tg__ZTV9S19010C13__9S19010C15__8S19010C1[3]),  3,3},
  {&(_tg__ZTV9S19010C16__9S19010C15__8S19010C1[3]),  3,3},
  {&(_tg__ZTV8S19010C7__9S19010C15__8S19010C1[3]),  3,3},
  {&(_tg__ZTV9S19010C16__8S19010C1[3]),  3,3},
  {&(_tg__ZTV9S19010C139S19010C16__A1__8S19010C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19010C1[];
extern  VTBL_ENTRY _ZTV8S19010C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19010C1[];
static VTBL_ENTRY alt_thunk_names76[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19010C2D0Ev,_ZTv0_n32_N8S19010C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19010C2D0Ev,_ZThn56_N8S19010C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19010C2D1Ev,_ZTv0_n32_N8S19010C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19010C2D1Ev,_ZThn56_N8S19010C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19010C3D0Ev,_ZTv0_n32_N8S19010C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19010C3D0Ev,_ZThn56_N8S19010C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19010C3D1Ev,_ZTv0_n32_N8S19010C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19010C3D1Ev,_ZThn56_N8S19010C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19010C1D0Ev,_ZTv0_n32_N8S19010C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S19010C1D0Ev,_ZThn104_N8S19010C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19010C1D1Ev,_ZTv0_n32_N8S19010C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S19010C1D1Ev,_ZThn104_N8S19010C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19010C1D0Ev,_ZTv0_n36_N8S19010C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19010C1D0Ev,_ZThn48_N8S19010C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19010C1D1Ev,_ZTv0_n36_N8S19010C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19010C1D1Ev,_ZThn48_N8S19010C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19010C1 = {  "S19010C1", // class name
  bases_S19010C1, 45,
  &(vtc_S19010C1[0]), // expected_vtbl_contents
  &(vtt_S19010C1[0]), // expected_vtt_contents
  ABISELECT(432,228), // object size
  NSPAIRA(_ZTI8S19010C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19010C1),69, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19010C1),48, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names76,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1584C4  {
  virtual  ~S1584C4(); // _ZN7S1584C4D1Ev
  virtual void  v8(); // _ZN7S1584C42v8Ev
  virtual void  v9(); // _ZN7S1584C42v9Ev
  S1584C4(); // tgen
};
//SIG(-1 S1584C4) C1{ vd v1 v2}


 S1584C4 ::~S1584C4(){ note_dtor("S1584C4", this);}
void  S1584C4 ::v8(){vfunc_called(this, "_ZN7S1584C42v8Ev");}
void  S1584C4 ::v9(){vfunc_called(this, "_ZN7S1584C42v9Ev");}
S1584C4 ::S1584C4(){ note_ctor("S1584C4", this);} // tgen

static void Test_S1584C4()
{
  extern Class_Descriptor cd_S1584C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S1584C4, buf);
    S1584C4 *dp, &lv = *(dp=new (buf) S1584C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1584C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1584C4)");
    test_class_info(&lv, &cd_S1584C4);
    dp->~S1584C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1584C4(Test_S1584C4, "S1584C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S1584C4C1Ev();
extern void _ZN7S1584C4D1Ev();
Name_Map name_map_S1584C4[] = {
  NSPAIR(_ZN7S1584C4C1Ev),
  NSPAIR(_ZN7S1584C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1584C4[];
extern void _ZN7S1584C4D1Ev();
extern void _ZN7S1584C4D0Ev();
extern void _ZN7S1584C42v8Ev();
extern void _ZN7S1584C42v9Ev();
static  VTBL_ENTRY vtc_S1584C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1584C4[0]),
  (VTBL_ENTRY)&_ZN7S1584C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1584C4D0Ev,
  (VTBL_ENTRY)&_ZN7S1584C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1584C42v9Ev,
};
extern VTBL_ENTRY _ZTI7S1584C4[];
extern  VTBL_ENTRY _ZTV7S1584C4[];
Class_Descriptor cd_S1584C4 = {  "S1584C4", // class name
  0,0,//no base classes
  &(vtc_S1584C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S1584C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1584C4),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1584C6  {
  virtual void  v10(); // _ZN7S1584C63v10Ev
  virtual void  v11(); // _ZN7S1584C63v11Ev
  virtual void  v12(); // _ZN7S1584C63v12Ev
  virtual void  v13(); // _ZN7S1584C63v13Ev
  virtual void  v14(); // _ZN7S1584C63v14Ev
  virtual void  v15(); // _ZN7S1584C63v15Ev
  virtual void  v16(); // _ZN7S1584C63v16Ev
  virtual void  v17(); // _ZN7S1584C63v17Ev
  virtual void  v18(); // _ZN7S1584C63v18Ev
  ~S1584C6(); // tgen
  S1584C6(); // tgen
};
//SIG(-1 S1584C6) C1{ v1 v2 v3 v4 v5 v6 v7 v8 v9}


void  S1584C6 ::v10(){vfunc_called(this, "_ZN7S1584C63v10Ev");}
void  S1584C6 ::v11(){vfunc_called(this, "_ZN7S1584C63v11Ev");}
void  S1584C6 ::v12(){vfunc_called(this, "_ZN7S1584C63v12Ev");}
void  S1584C6 ::v13(){vfunc_called(this, "_ZN7S1584C63v13Ev");}
void  S1584C6 ::v14(){vfunc_called(this, "_ZN7S1584C63v14Ev");}
void  S1584C6 ::v15(){vfunc_called(this, "_ZN7S1584C63v15Ev");}
void  S1584C6 ::v16(){vfunc_called(this, "_ZN7S1584C63v16Ev");}
void  S1584C6 ::v17(){vfunc_called(this, "_ZN7S1584C63v17Ev");}
void  S1584C6 ::v18(){vfunc_called(this, "_ZN7S1584C63v18Ev");}
S1584C6 ::~S1584C6(){ note_dtor("S1584C6", this);} // tgen
S1584C6 ::S1584C6(){ note_ctor("S1584C6", this);} // tgen

static void Test_S1584C6()
{
  extern Class_Descriptor cd_S1584C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S1584C6, buf);
    S1584C6 *dp, &lv = *(dp=new (buf) S1584C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S1584C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1584C6)");
    test_class_info(&lv, &cd_S1584C6);
    dp->~S1584C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1584C6(Test_S1584C6, "S1584C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S1584C6C1Ev();
extern void _ZN7S1584C6D1Ev();
Name_Map name_map_S1584C6[] = {
  NSPAIR(_ZN7S1584C6C1Ev),
  NSPAIR(_ZN7S1584C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1584C6[];
extern void _ZN7S1584C63v10Ev();
extern void _ZN7S1584C63v11Ev();
extern void _ZN7S1584C63v12Ev();
extern void _ZN7S1584C63v13Ev();
extern void _ZN7S1584C63v14Ev();
extern void _ZN7S1584C63v15Ev();
extern void _ZN7S1584C63v16Ev();
extern void _ZN7S1584C63v17Ev();
extern void _ZN7S1584C63v18Ev();
static  VTBL_ENTRY vtc_S1584C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1584C6[0]),
  (VTBL_ENTRY)&_ZN7S1584C63v10Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v11Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v12Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v13Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v14Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v15Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v16Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v17Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v18Ev,
};
extern VTBL_ENTRY _ZTI7S1584C6[];
extern  VTBL_ENTRY _ZTV7S1584C6[];
Class_Descriptor cd_S1584C6 = {  "S1584C6", // class name
  0,0,//no base classes
  &(vtc_S1584C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S1584C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1584C6),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1584C5  : virtual S1584C6 {
  void *s1584c5f0;
  long double s1584c5f1;
  int s1584c5f2;
  virtual void  v19(); // _ZN7S1584C53v19Ev
  virtual void  v20(); // _ZN7S1584C53v20Ev
  virtual void  v21(); // _ZN7S1584C53v21Ev
  ~S1584C5(); // tgen
  S1584C5(); // tgen
};
//SIG(-1 S1584C5) C1{ VBC2{ v4 v5 v6 v7 v8 v9 v10 v11 v12} v1 v2 v3 Fp FD Fi}


void  S1584C5 ::v19(){vfunc_called(this, "_ZN7S1584C53v19Ev");}
void  S1584C5 ::v20(){vfunc_called(this, "_ZN7S1584C53v20Ev");}
void  S1584C5 ::v21(){vfunc_called(this, "_ZN7S1584C53v21Ev");}
S1584C5 ::~S1584C5(){ note_dtor("S1584C5", this);} // tgen
S1584C5 ::S1584C5(){ note_ctor("S1584C5", this);} // tgen

static void Test_S1584C5()
{
  extern Class_Descriptor cd_S1584C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,7)];
    init_test(&cd_S1584C5, buf);
    S1584C5 *dp, &lv = *(dp=new (buf) S1584C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S1584C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S1584C5)");
    check_base_class_offset(lv, (S1584C6*), 0, "S1584C5");
    check_field_offset(lv, s1584c5f0, ABISELECT(8,4), "S1584C5.s1584c5f0");
    check_field_offset(lv, s1584c5f1, ABISELECT(16,8), "S1584C5.s1584c5f1");
    check_field_offset(lv, s1584c5f2, ABISELECT(32,20), "S1584C5.s1584c5f2");
    test_class_info(&lv, &cd_S1584C5);
    dp->~S1584C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1584C5(Test_S1584C5, "S1584C5", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN7S1584C5C1Ev();
extern void _ZN7S1584C5D1Ev();
Name_Map name_map_S1584C5[] = {
  NSPAIR(_ZN7S1584C5C1Ev),
  NSPAIR(_ZN7S1584C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1584C6;
extern VTBL_ENTRY _ZTI7S1584C6[];
extern  VTBL_ENTRY _ZTV7S1584C6[];
static Base_Class bases_S1584C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1584C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S1584C5[];
extern void _ZN7S1584C63v10Ev();
extern void _ZN7S1584C63v11Ev();
extern void _ZN7S1584C63v12Ev();
extern void _ZN7S1584C63v13Ev();
extern void _ZN7S1584C63v14Ev();
extern void _ZN7S1584C63v15Ev();
extern void _ZN7S1584C63v16Ev();
extern void _ZN7S1584C63v17Ev();
extern void _ZN7S1584C63v18Ev();
extern void _ZN7S1584C53v19Ev();
extern void _ZN7S1584C53v20Ev();
extern void _ZN7S1584C53v21Ev();
static  VTBL_ENTRY vtc_S1584C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1584C5[0]),
  (VTBL_ENTRY)&_ZN7S1584C63v10Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v11Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v12Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v13Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v14Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v15Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v16Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v17Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v18Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v19Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v20Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v21Ev,
};
extern VTBL_ENTRY _ZTV7S1584C5[];
static  VTT_ENTRY vtt_S1584C5[] = {
  {&(_ZTV7S1584C5[12]),  12,24},
  {&(_ZTV7S1584C5[12]),  12,24},
};
extern VTBL_ENTRY _ZTI7S1584C5[];
extern  VTBL_ENTRY _ZTV7S1584C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1584C5[];
Class_Descriptor cd_S1584C5 = {  "S1584C5", // class name
  bases_S1584C5, 1,
  &(vtc_S1584C5[0]), // expected_vtbl_contents
  &(vtt_S1584C5[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI7S1584C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S1584C5),24, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1584C5),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1584C3  : S1584C4 , S1584C5 {
  void *s1584c3f0;
  virtual  ~S1584C3(); // _ZN7S1584C3D2Ev
  virtual void  v22(); // _ZN7S1584C33v22Ev
  virtual void  v23(); // _ZN7S1584C33v23Ev
  virtual void  v24(); // _ZN7S1584C33v24Ev
  virtual void  v25(); // _ZN7S1584C33v25Ev
  virtual void  v26(); // _ZN7S1584C33v26Ev
  virtual void  v27(); // _ZN7S1584C33v27Ev
  virtual void  v28(); // _ZN7S1584C33v28Ev
  S1584C3(); // tgen
};
//SIG(-1 S1584C3) C1{ BC2{ vd v8 v9} BC3{ VBC4{ v10 v11 v12 v13 v14 v15 v16 v17 v18} v19 v20 v21 Fp FD Fi} vd v1 v2 v3 v4 v5 v6 v7 Fp}


 S1584C3 ::~S1584C3(){ note_dtor("S1584C3", this);}
void  S1584C3 ::v22(){vfunc_called(this, "_ZN7S1584C33v22Ev");}
void  S1584C3 ::v23(){vfunc_called(this, "_ZN7S1584C33v23Ev");}
void  S1584C3 ::v24(){vfunc_called(this, "_ZN7S1584C33v24Ev");}
void  S1584C3 ::v25(){vfunc_called(this, "_ZN7S1584C33v25Ev");}
void  S1584C3 ::v26(){vfunc_called(this, "_ZN7S1584C33v26Ev");}
void  S1584C3 ::v27(){vfunc_called(this, "_ZN7S1584C33v27Ev");}
void  S1584C3 ::v28(){vfunc_called(this, "_ZN7S1584C33v28Ev");}
S1584C3 ::S1584C3(){ note_ctor("S1584C3", this);} // tgen

static void Test_S1584C3()
{
  extern Class_Descriptor cd_S1584C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,9)];
    init_test(&cd_S1584C3, buf);
    S1584C3 *dp, &lv = *(dp=new (buf) S1584C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S1584C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S1584C3)");
    check_base_class_offset(lv, (S1584C4*), 0, "S1584C3");
    check_base_class_offset(lv, (S1584C6*)(S1584C5*), ABISELECT(16,4), "S1584C3");
    check_base_class_offset(lv, (S1584C5*), ABISELECT(16,4), "S1584C3");
    check_field_offset(lv, s1584c3f0, ABISELECT(56,28), "S1584C3.s1584c3f0");
    test_class_info(&lv, &cd_S1584C3);
    dp->~S1584C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1584C3(Test_S1584C3, "S1584C3", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN7S1584C3C1Ev();
extern void _ZN7S1584C3D2Ev();
Name_Map name_map_S1584C3[] = {
  NSPAIR(_ZN7S1584C3C1Ev),
  NSPAIR(_ZN7S1584C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S1584C4;
extern VTBL_ENTRY _ZTI7S1584C4[];
extern  VTBL_ENTRY _ZTV7S1584C4[];
extern Class_Descriptor cd_S1584C6;
extern VTBL_ENTRY _ZTI7S1584C6[];
extern  VTBL_ENTRY _ZTV7S1584C6[];
extern Class_Descriptor cd_S1584C5;
extern VTBL_ENTRY _ZTI7S1584C5[];
extern  VTBL_ENTRY _ZTV7S1584C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1584C5[];
static Base_Class bases_S1584C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1584C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1584C6,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S1584C5,    ABISELECT(16,4), //bcp->offset
    14, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1584C3[];
extern void _ZN7S1584C3D1Ev();
extern void _ZN7S1584C3D0Ev();
extern void _ZN7S1584C42v8Ev();
extern void _ZN7S1584C42v9Ev();
extern void _ZN7S1584C33v22Ev();
extern void _ZN7S1584C33v23Ev();
extern void _ZN7S1584C33v24Ev();
extern void _ZN7S1584C33v25Ev();
extern void _ZN7S1584C33v26Ev();
extern void _ZN7S1584C33v27Ev();
extern void _ZN7S1584C33v28Ev();
extern void _ZN7S1584C63v10Ev();
extern void _ZN7S1584C63v11Ev();
extern void _ZN7S1584C63v12Ev();
extern void _ZN7S1584C63v13Ev();
extern void _ZN7S1584C63v14Ev();
extern void _ZN7S1584C63v15Ev();
extern void _ZN7S1584C63v16Ev();
extern void _ZN7S1584C63v17Ev();
extern void _ZN7S1584C63v18Ev();
extern void _ZN7S1584C53v19Ev();
extern void _ZN7S1584C53v20Ev();
extern void _ZN7S1584C53v21Ev();
static  VTBL_ENTRY vtc_S1584C3[] = {
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S1584C3[0]),
  (VTBL_ENTRY)&_ZN7S1584C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1584C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1584C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1584C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1584C33v22Ev,
  (VTBL_ENTRY)&_ZN7S1584C33v23Ev,
  (VTBL_ENTRY)&_ZN7S1584C33v24Ev,
  (VTBL_ENTRY)&_ZN7S1584C33v25Ev,
  (VTBL_ENTRY)&_ZN7S1584C33v26Ev,
  (VTBL_ENTRY)&_ZN7S1584C33v27Ev,
  (VTBL_ENTRY)&_ZN7S1584C33v28Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI7S1584C3[0]),
  (VTBL_ENTRY)&_ZN7S1584C63v10Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v11Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v12Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v13Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v14Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v15Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v16Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v17Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v18Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v19Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v20Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v21Ev,
};
extern VTBL_ENTRY _ZTV7S1584C3[];
extern void _ZN7S1584C63v10Ev();
extern void _ZN7S1584C63v11Ev();
extern void _ZN7S1584C63v12Ev();
extern void _ZN7S1584C63v13Ev();
extern void _ZN7S1584C63v14Ev();
extern void _ZN7S1584C63v15Ev();
extern void _ZN7S1584C63v16Ev();
extern void _ZN7S1584C63v17Ev();
extern void _ZN7S1584C63v18Ev();
extern void _ZN7S1584C53v19Ev();
extern void _ZN7S1584C53v20Ev();
extern void _ZN7S1584C53v21Ev();
static  VTBL_ENTRY _tg__ZTV7S1584C5__7S1584C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1584C5[0]),
  (VTBL_ENTRY)&_ZN7S1584C63v10Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v11Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v12Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v13Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v14Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v15Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v16Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v17Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v18Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v19Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v20Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v21Ev,
};
static  VTT_ENTRY vtt_S1584C3[] = {
  {&(_ZTV7S1584C3[3]),  3,38},
  {&(_tg__ZTV7S1584C5__7S1584C3[12]),  12,24},
  {&(_tg__ZTV7S1584C5__7S1584C3[12]),  12,24},
  {&(_ZTV7S1584C3[26]),  26,38},
  {&(_ZTV7S1584C3[26]),  26,38},
};
extern VTBL_ENTRY _ZTI7S1584C3[];
extern  VTBL_ENTRY _ZTV7S1584C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1584C3[];
Class_Descriptor cd_S1584C3 = {  "S1584C3", // class name
  bases_S1584C3, 3,
  &(vtc_S1584C3[0]), // expected_vtbl_contents
  &(vtt_S1584C3[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI7S1584C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S1584C3),38, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1584C3),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1584C9  {
  __tsi64 s1584c9f0;
  int s1584c9f1;
  virtual  ~S1584C9(); // _ZN7S1584C9D1Ev
  virtual void  v29(); // _ZN7S1584C93v29Ev
  virtual void  v30(); // _ZN7S1584C93v30Ev
  S1584C9(); // tgen
};
//SIG(-1 S1584C9) C1{ vd v1 v2 FL Fi}


 S1584C9 ::~S1584C9(){ note_dtor("S1584C9", this);}
void  S1584C9 ::v29(){vfunc_called(this, "_ZN7S1584C93v29Ev");}
void  S1584C9 ::v30(){vfunc_called(this, "_ZN7S1584C93v30Ev");}
S1584C9 ::S1584C9(){ note_ctor("S1584C9", this);} // tgen

static void Test_S1584C9()
{
  extern Class_Descriptor cd_S1584C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S1584C9, buf);
    S1584C9 *dp, &lv = *(dp=new (buf) S1584C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S1584C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1584C9)");
    check_field_offset(lv, s1584c9f0, ABISELECT(8,4), "S1584C9.s1584c9f0");
    check_field_offset(lv, s1584c9f1, ABISELECT(16,12), "S1584C9.s1584c9f1");
    test_class_info(&lv, &cd_S1584C9);
    dp->~S1584C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1584C9(Test_S1584C9, "S1584C9", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S1584C9C1Ev();
extern void _ZN7S1584C9D1Ev();
Name_Map name_map_S1584C9[] = {
  NSPAIR(_ZN7S1584C9C1Ev),
  NSPAIR(_ZN7S1584C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1584C9[];
extern void _ZN7S1584C9D1Ev();
extern void _ZN7S1584C9D0Ev();
extern void _ZN7S1584C93v29Ev();
extern void _ZN7S1584C93v30Ev();
static  VTBL_ENTRY vtc_S1584C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1584C9[0]),
  (VTBL_ENTRY)&_ZN7S1584C9D1Ev,
  (VTBL_ENTRY)&_ZN7S1584C9D0Ev,
  (VTBL_ENTRY)&_ZN7S1584C93v29Ev,
  (VTBL_ENTRY)&_ZN7S1584C93v30Ev,
};
extern VTBL_ENTRY _ZTI7S1584C9[];
extern  VTBL_ENTRY _ZTV7S1584C9[];
Class_Descriptor cd_S1584C9 = {  "S1584C9", // class name
  0,0,//no base classes
  &(vtc_S1584C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S1584C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1584C9),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1584C8  : S1584C5 , S1584C9 {
  void *s1584c8f0;
  virtual  ~S1584C8(); // _ZN7S1584C8D2Ev
  virtual void  v31(); // _ZN7S1584C83v31Ev
  virtual void  v32(); // _ZN7S1584C83v32Ev
  S1584C8(); // tgen
};
//SIG(-1 S1584C8) C1{ BC2{ VBC3{ v3 v4 v5 v6 v7 v8 v9 v10 v11} v12 v13 v14 Fp FD Fi} BC4{ vd v15 v16 FL Fi} vd v1 v2 Fp}


 S1584C8 ::~S1584C8(){ note_dtor("S1584C8", this);}
void  S1584C8 ::v31(){vfunc_called(this, "_ZN7S1584C83v31Ev");}
void  S1584C8 ::v32(){vfunc_called(this, "_ZN7S1584C83v32Ev");}
S1584C8 ::S1584C8(){ note_ctor("S1584C8", this);} // tgen

static void Test_S1584C8()
{
  extern Class_Descriptor cd_S1584C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,12)];
    init_test(&cd_S1584C8, buf);
    S1584C8 *dp, &lv = *(dp=new (buf) S1584C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,44), "sizeof(S1584C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S1584C8)");
    check_base_class_offset(lv, (S1584C6*)(S1584C5*), 0, "S1584C8");
    check_base_class_offset(lv, (S1584C5*), 0, "S1584C8");
    check_base_class_offset(lv, (S1584C9*), ABISELECT(40,24), "S1584C8");
    check_field_offset(lv, s1584c8f0, ABISELECT(64,40), "S1584C8.s1584c8f0");
    test_class_info(&lv, &cd_S1584C8);
    dp->~S1584C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1584C8(Test_S1584C8, "S1584C8", ABISELECT(80,44));

#else // __cplusplus

extern void _ZN7S1584C8C1Ev();
extern void _ZN7S1584C8D2Ev();
Name_Map name_map_S1584C8[] = {
  NSPAIR(_ZN7S1584C8C1Ev),
  NSPAIR(_ZN7S1584C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S1584C6;
extern VTBL_ENTRY _ZTI7S1584C6[];
extern  VTBL_ENTRY _ZTV7S1584C6[];
extern Class_Descriptor cd_S1584C5;
extern VTBL_ENTRY _ZTI7S1584C5[];
extern  VTBL_ENTRY _ZTV7S1584C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1584C5[];
extern Class_Descriptor cd_S1584C9;
extern VTBL_ENTRY _ZTI7S1584C9[];
extern  VTBL_ENTRY _ZTV7S1584C9[];
static Base_Class bases_S1584C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1584C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S1584C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1584C9,    ABISELECT(40,24), //bcp->offset
    28, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1584C8[];
extern void _ZN7S1584C63v10Ev();
extern void _ZN7S1584C63v11Ev();
extern void _ZN7S1584C63v12Ev();
extern void _ZN7S1584C63v13Ev();
extern void _ZN7S1584C63v14Ev();
extern void _ZN7S1584C63v15Ev();
extern void _ZN7S1584C63v16Ev();
extern void _ZN7S1584C63v17Ev();
extern void _ZN7S1584C63v18Ev();
extern void _ZN7S1584C53v19Ev();
extern void _ZN7S1584C53v20Ev();
extern void _ZN7S1584C53v21Ev();
extern void _ZN7S1584C8D1Ev();
extern void _ZN7S1584C8D0Ev();
extern void _ZN7S1584C83v31Ev();
extern void _ZN7S1584C83v32Ev();
extern void ABISELECT(_ZThn40_N7S1584C8D1Ev,_ZThn24_N7S1584C8D1Ev)();
extern void ABISELECT(_ZThn40_N7S1584C8D0Ev,_ZThn24_N7S1584C8D0Ev)();
extern void _ZN7S1584C93v29Ev();
extern void _ZN7S1584C93v30Ev();
static  VTBL_ENTRY vtc_S1584C8[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1584C8[0]),
  (VTBL_ENTRY)&_ZN7S1584C63v10Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v11Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v12Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v13Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v14Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v15Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v16Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v17Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v18Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v19Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v20Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v21Ev,
  (VTBL_ENTRY)&_ZN7S1584C8D1Ev,
  (VTBL_ENTRY)&_ZN7S1584C8D0Ev,
  (VTBL_ENTRY)&_ZN7S1584C83v31Ev,
  (VTBL_ENTRY)&_ZN7S1584C83v32Ev,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S1584C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S1584C8D1Ev,_ZThn24_N7S1584C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S1584C8D0Ev,_ZThn24_N7S1584C8D0Ev),
  (VTBL_ENTRY)&_ZN7S1584C93v29Ev,
  (VTBL_ENTRY)&_ZN7S1584C93v30Ev,
};
extern VTBL_ENTRY _ZTV7S1584C8[];
extern void _ZN7S1584C63v10Ev();
extern void _ZN7S1584C63v11Ev();
extern void _ZN7S1584C63v12Ev();
extern void _ZN7S1584C63v13Ev();
extern void _ZN7S1584C63v14Ev();
extern void _ZN7S1584C63v15Ev();
extern void _ZN7S1584C63v16Ev();
extern void _ZN7S1584C63v17Ev();
extern void _ZN7S1584C63v18Ev();
extern void _ZN7S1584C53v19Ev();
extern void _ZN7S1584C53v20Ev();
extern void _ZN7S1584C53v21Ev();
static  VTBL_ENTRY _tg__ZTV7S1584C5__7S1584C8[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1584C5[0]),
  (VTBL_ENTRY)&_ZN7S1584C63v10Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v11Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v12Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v13Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v14Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v15Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v16Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v17Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v18Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v19Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v20Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v21Ev,
};
static  VTT_ENTRY vtt_S1584C8[] = {
  {&(_ZTV7S1584C8[12]),  12,34},
  {&(_tg__ZTV7S1584C5__7S1584C8[12]),  12,24},
  {&(_tg__ZTV7S1584C5__7S1584C8[12]),  12,24},
  {&(_ZTV7S1584C8[12]),  12,34},
};
extern VTBL_ENTRY _ZTI7S1584C8[];
extern  VTBL_ENTRY _ZTV7S1584C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1584C8[];
Class_Descriptor cd_S1584C8 = {  "S1584C8", // class name
  bases_S1584C8, 3,
  &(vtc_S1584C8[0]), // expected_vtbl_contents
  &(vtt_S1584C8[0]), // expected_vtt_contents
  ABISELECT(80,44), // object size
  NSPAIRA(_ZTI7S1584C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S1584C8),34, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1584C8),4, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1584C7  : virtual S1584C8 {
  void *s1584c7f0;
  int s1584c7f1;
  virtual  ~S1584C7(); // _ZN7S1584C7D2Ev
  virtual void  v33(); // _ZN7S1584C73v33Ev
  virtual void  v34(); // _ZN7S1584C73v34Ev
  virtual void  v35(); // _ZN7S1584C73v35Ev
  virtual void  v36(); // _ZN7S1584C73v36Ev
  S1584C7(); // tgen
};
//SIG(-1 S1584C7) C1{ VBC2{ BC3{ VBC4{ v5 v6 v7 v8 v9 v10 v11 v12 v13} v14 v15 v16 Fp FD Fi} BC5{ vd v17 v18 FL Fi} vd v19 v20 Fp} vd v1 v2 v3 v4 Fp Fi}


 S1584C7 ::~S1584C7(){ note_dtor("S1584C7", this);}
void  S1584C7 ::v33(){vfunc_called(this, "_ZN7S1584C73v33Ev");}
void  S1584C7 ::v34(){vfunc_called(this, "_ZN7S1584C73v34Ev");}
void  S1584C7 ::v35(){vfunc_called(this, "_ZN7S1584C73v35Ev");}
void  S1584C7 ::v36(){vfunc_called(this, "_ZN7S1584C73v36Ev");}
S1584C7 ::S1584C7(){ note_ctor("S1584C7", this);} // tgen

static void Test_S1584C7()
{
  extern Class_Descriptor cd_S1584C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(8,15)];
    init_test(&cd_S1584C7, buf);
    S1584C7 *dp, &lv = *(dp=new (buf) S1584C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,56), "sizeof(S1584C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S1584C7)");
    check_base_class_offset(lv, (S1584C6*)(S1584C5*)(S1584C8*), 0, "S1584C7");
    check_base_class_offset(lv, (S1584C5*)(S1584C8*), ABISELECT(32,12), "S1584C7");
    check_base_class_offset(lv, (S1584C9*)(S1584C8*), ABISELECT(72,36), "S1584C7");
    check_base_class_offset(lv, (S1584C8*), ABISELECT(32,12), "S1584C7");
    check_field_offset(lv, s1584c7f0, ABISELECT(8,4), "S1584C7.s1584c7f0");
    check_field_offset(lv, s1584c7f1, ABISELECT(16,8), "S1584C7.s1584c7f1");
    test_class_info(&lv, &cd_S1584C7);
    dp->~S1584C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1584C7(Test_S1584C7, "S1584C7", ABISELECT(112,56));

#else // __cplusplus

extern void _ZN7S1584C7C1Ev();
extern void _ZN7S1584C7D2Ev();
Name_Map name_map_S1584C7[] = {
  NSPAIR(_ZN7S1584C7C1Ev),
  NSPAIR(_ZN7S1584C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S1584C6;
extern VTBL_ENTRY _ZTI7S1584C6[];
extern  VTBL_ENTRY _ZTV7S1584C6[];
extern Class_Descriptor cd_S1584C5;
extern VTBL_ENTRY _ZTI7S1584C5[];
extern  VTBL_ENTRY _ZTV7S1584C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1584C5[];
extern Class_Descriptor cd_S1584C9;
extern VTBL_ENTRY _ZTI7S1584C9[];
extern  VTBL_ENTRY _ZTV7S1584C9[];
extern Class_Descriptor cd_S1584C8;
extern VTBL_ENTRY _ZTI7S1584C8[];
extern  VTBL_ENTRY _ZTV7S1584C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1584C8[];
static Base_Class bases_S1584C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1584C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S1584C5,    ABISELECT(32,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1584C9,    ABISELECT(72,36), //bcp->offset
    64, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1584C8,    ABISELECT(32,12), //bcp->offset
    28, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S1584C7[];
extern void _ZN7S1584C63v10Ev();
extern void _ZN7S1584C63v11Ev();
extern void _ZN7S1584C63v12Ev();
extern void _ZN7S1584C63v13Ev();
extern void _ZN7S1584C63v14Ev();
extern void _ZN7S1584C63v15Ev();
extern void _ZN7S1584C63v16Ev();
extern void _ZN7S1584C63v17Ev();
extern void _ZN7S1584C63v18Ev();
extern void _ZN7S1584C7D1Ev();
extern void _ZN7S1584C7D0Ev();
extern void _ZN7S1584C73v33Ev();
extern void _ZN7S1584C73v34Ev();
extern void _ZN7S1584C73v35Ev();
extern void _ZN7S1584C73v36Ev();
extern void _ZN7S1584C63v10Ev();
extern void _ZN7S1584C63v11Ev();
extern void _ZN7S1584C63v12Ev();
extern void _ZN7S1584C63v13Ev();
extern void _ZN7S1584C63v14Ev();
extern void _ZN7S1584C63v15Ev();
extern void _ZN7S1584C63v16Ev();
extern void _ZN7S1584C63v17Ev();
extern void _ZN7S1584C63v18Ev();
extern void _ZN7S1584C53v19Ev();
extern void _ZN7S1584C53v20Ev();
extern void _ZN7S1584C53v21Ev();
extern void ABISELECT(_ZTv0_n128_N7S1584C7D1Ev,_ZTv0_n64_N7S1584C7D1Ev)();
extern void ABISELECT(_ZThn32_N7S1584C7D1Ev,_ZThn12_N7S1584C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N7S1584C7D0Ev,_ZTv0_n64_N7S1584C7D0Ev)();
extern void ABISELECT(_ZThn32_N7S1584C7D0Ev,_ZThn12_N7S1584C7D0Ev)() __attribute__((weak));
extern void _ZN7S1584C83v31Ev();
extern void _ZN7S1584C83v32Ev();
extern void ABISELECT(_ZTvn40_n128_N7S1584C7D1Ev,_ZTvn24_n64_N7S1584C7D1Ev)();
extern void ABISELECT(_ZTvn40_n128_N7S1584C7D0Ev,_ZTvn24_n64_N7S1584C7D0Ev)();
extern void _ZN7S1584C93v29Ev();
extern void _ZN7S1584C93v30Ev();
static  VTBL_ENTRY vtc_S1584C7[] = {
  0,
  ABISELECT(32,12),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1584C7[0]),
  (VTBL_ENTRY)&_ZN7S1584C63v10Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v11Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v12Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v13Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v14Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v15Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v16Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v17Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v18Ev,
  (VTBL_ENTRY)&_ZN7S1584C7D1Ev,
  (VTBL_ENTRY)&_ZN7S1584C7D0Ev,
  (VTBL_ENTRY)&_ZN7S1584C73v33Ev,
  (VTBL_ENTRY)&_ZN7S1584C73v34Ev,
  (VTBL_ENTRY)&_ZN7S1584C73v35Ev,
  (VTBL_ENTRY)&_ZN7S1584C73v36Ev,
  ABISELECT(40,24),
  ABISELECT(40,24),
  0,
  0,
  ABISELECT(-32,-12),
  0,
  0,
  0,
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI7S1584C7[0]),
  (VTBL_ENTRY)&_ZN7S1584C63v10Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v11Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v12Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v13Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v14Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v15Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v16Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v17Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v18Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v19Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v20Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v21Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S1584C7D1Ev,_ZTv0_n64_N7S1584C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S1584C7D0Ev,_ZTv0_n64_N7S1584C7D0Ev),
  (VTBL_ENTRY)&_ZN7S1584C83v31Ev,
  (VTBL_ENTRY)&_ZN7S1584C83v32Ev,
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI7S1584C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n128_N7S1584C7D1Ev,_ZTvn24_n64_N7S1584C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n128_N7S1584C7D0Ev,_ZTvn24_n64_N7S1584C7D0Ev),
  (VTBL_ENTRY)&_ZN7S1584C93v29Ev,
  (VTBL_ENTRY)&_ZN7S1584C93v30Ev,
};
extern VTBL_ENTRY _ZTV7S1584C7[];
extern void _ZN7S1584C63v10Ev();
extern void _ZN7S1584C63v11Ev();
extern void _ZN7S1584C63v12Ev();
extern void _ZN7S1584C63v13Ev();
extern void _ZN7S1584C63v14Ev();
extern void _ZN7S1584C63v15Ev();
extern void _ZN7S1584C63v16Ev();
extern void _ZN7S1584C63v17Ev();
extern void _ZN7S1584C63v18Ev();
extern void _ZN7S1584C53v19Ev();
extern void _ZN7S1584C53v20Ev();
extern void _ZN7S1584C53v21Ev();
extern void _ZN7S1584C8D1Ev();
extern void _ZN7S1584C8D0Ev();
extern void _ZN7S1584C83v31Ev();
extern void _ZN7S1584C83v32Ev();
static  VTBL_ENTRY _tg__ZTV7S1584C8__7S1584C7[] = {
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S1584C8[0]),
  (VTBL_ENTRY)&_ZN7S1584C63v10Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v11Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v12Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v13Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v14Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v15Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v16Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v17Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v18Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v19Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v20Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v21Ev,
  (VTBL_ENTRY)&_ZN7S1584C8D1Ev,
  (VTBL_ENTRY)&_ZN7S1584C8D0Ev,
  (VTBL_ENTRY)&_ZN7S1584C83v31Ev,
  (VTBL_ENTRY)&_ZN7S1584C83v32Ev,
};
extern void _ZN7S1584C63v10Ev();
extern void _ZN7S1584C63v11Ev();
extern void _ZN7S1584C63v12Ev();
extern void _ZN7S1584C63v13Ev();
extern void _ZN7S1584C63v14Ev();
extern void _ZN7S1584C63v15Ev();
extern void _ZN7S1584C63v16Ev();
extern void _ZN7S1584C63v17Ev();
extern void _ZN7S1584C63v18Ev();
extern void _ZN7S1584C53v19Ev();
extern void _ZN7S1584C53v20Ev();
extern void _ZN7S1584C53v21Ev();
static  VTBL_ENTRY _tg__ZTV7S1584C57S1584C8__7S1584C7[] = {
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S1584C5[0]),
  (VTBL_ENTRY)&_ZN7S1584C63v10Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v11Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v12Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v13Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v14Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v15Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v16Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v17Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v18Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v19Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v20Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v21Ev,
};
extern void _ZN7S1584C63v10Ev();
extern void _ZN7S1584C63v11Ev();
extern void _ZN7S1584C63v12Ev();
extern void _ZN7S1584C63v13Ev();
extern void _ZN7S1584C63v14Ev();
extern void _ZN7S1584C63v15Ev();
extern void _ZN7S1584C63v16Ev();
extern void _ZN7S1584C63v17Ev();
extern void _ZN7S1584C63v18Ev();
static  VTBL_ENTRY _tg__ZTV7S1584C6__7S1584C57S1584C8__7S1584C7[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,12),
  (VTBL_ENTRY)&(_ZTI7S1584C5[0]),
  (VTBL_ENTRY)&_ZN7S1584C63v10Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v11Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v12Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v13Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v14Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v15Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v16Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v17Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v18Ev,
};
extern void _ZN7S1584C63v10Ev();
extern void _ZN7S1584C63v11Ev();
extern void _ZN7S1584C63v12Ev();
extern void _ZN7S1584C63v13Ev();
extern void _ZN7S1584C63v14Ev();
extern void _ZN7S1584C63v15Ev();
extern void _ZN7S1584C63v16Ev();
extern void _ZN7S1584C63v17Ev();
extern void _ZN7S1584C63v18Ev();
static  VTBL_ENTRY _tg__ZTV7S1584C6__7S1584C8__7S1584C7[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,12),
  (VTBL_ENTRY)&(_ZTI7S1584C8[0]),
  (VTBL_ENTRY)&_ZN7S1584C63v10Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v11Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v12Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v13Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v14Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v15Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v16Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v17Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v18Ev,
};
static  VTT_ENTRY vtt_S1584C7[] = {
  {&(_ZTV7S1584C7[13]),  13,70},
  {&(_ZTV7S1584C7[48]),  48,70},
  {&(_ZTV7S1584C7[13]),  13,70},
  {&(_ZTV7S1584C7[66]),  66,70},
  {&(_tg__ZTV7S1584C8__7S1584C7[12]),  12,28},
  {&(_tg__ZTV7S1584C57S1584C8__7S1584C7[12]),  12,24},
  {&(_tg__ZTV7S1584C6__7S1584C57S1584C8__7S1584C7[11]),  11,20},
  {&(_tg__ZTV7S1584C6__7S1584C8__7S1584C7[11]),  11,20},
};
extern VTBL_ENTRY _ZTI7S1584C7[];
extern  VTBL_ENTRY _ZTV7S1584C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1584C7[];
static VTBL_ENTRY alt_thunk_names77[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S1584C7D0Ev,_ZTv0_n64_N7S1584C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S1584C7D0Ev,_ZThn12_N7S1584C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S1584C7D1Ev,_ZTv0_n64_N7S1584C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S1584C7D1Ev,_ZThn12_N7S1584C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1584C7 = {  "S1584C7", // class name
  bases_S1584C7, 4,
  &(vtc_S1584C7[0]), // expected_vtbl_contents
  &(vtt_S1584C7[0]), // expected_vtt_contents
  ABISELECT(112,56), // object size
  NSPAIRA(_ZTI7S1584C7),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S1584C7),70, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1584C7),8, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names77,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1584C2  : S1584C3 , S1584C7 {
  virtual  ~S1584C2(); // _ZN7S1584C2D2Ev
  virtual void  v37(); // _ZN7S1584C23v37Ev
  virtual void  v38(); // _ZN7S1584C23v38Ev
  virtual void  v39(); // _ZN7S1584C23v39Ev
  virtual void  v40(); // _ZN7S1584C23v40Ev
  S1584C2(); // tgen
};
//SIG(-1 S1584C2) C1{ BC2{ BC3{ vd v5 v6} BC4{ VBC5{ v7 v8 v9 v10 v11 v12 v13 v14 v15} v16 v17 v18 Fp FD Fi} vd v19 v20 v21 v22 v23 v24 v25 Fp} BC6{ VBC7{ BC4 BC8{ vd v26 v27 FL Fi} vd v28 v29 Fp} vd v30 v31 v32 v33 Fp Fi} vd v1 v2 v3 v4}


 S1584C2 ::~S1584C2(){ note_dtor("S1584C2", this);}
void  S1584C2 ::v37(){vfunc_called(this, "_ZN7S1584C23v37Ev");}
void  S1584C2 ::v38(){vfunc_called(this, "_ZN7S1584C23v38Ev");}
void  S1584C2 ::v39(){vfunc_called(this, "_ZN7S1584C23v39Ev");}
void  S1584C2 ::v40(){vfunc_called(this, "_ZN7S1584C23v40Ev");}
S1584C2 ::S1584C2(){ note_ctor("S1584C2", this);} // tgen

static void Test_S1584C2()
{
  extern Class_Descriptor cd_S1584C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,23)];
    init_test(&cd_S1584C2, buf);
    S1584C2 *dp, &lv = *(dp=new (buf) S1584C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,88), "sizeof(S1584C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S1584C2)");
    check_base_class_offset(lv, (S1584C4*)(S1584C3*), 0, "S1584C2");
    check_base_class_offset(lv, (S1584C6*)(S1584C5*)(S1584C3*), ABISELECT(16,4), "S1584C2");
    check_base_class_offset(lv, (S1584C6*)(S1584C5*)(S1584C8*), ABISELECT(16,4), "S1584C2");
    check_base_class_offset(lv, (S1584C5*)(S1584C3*), ABISELECT(16,4), "S1584C2");
    check_base_class_offset(lv, (S1584C3*), 0, "S1584C2");
    check_base_class_offset(lv, (S1584C5*)(S1584C8*), ABISELECT(96,44), "S1584C2");
    check_base_class_offset(lv, (S1584C9*)(S1584C8*), ABISELECT(136,68), "S1584C2");
    check_base_class_offset(lv, (S1584C8*)(S1584C7*), ABISELECT(96,44), "S1584C2");
    check_base_class_offset(lv, (S1584C7*), ABISELECT(64,32), "S1584C2");
    test_class_info(&lv, &cd_S1584C2);
    dp->~S1584C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1584C2(Test_S1584C2, "S1584C2", ABISELECT(176,88));

#else // __cplusplus

extern void _ZN7S1584C2C1Ev();
extern void _ZN7S1584C2D2Ev();
Name_Map name_map_S1584C2[] = {
  NSPAIR(_ZN7S1584C2C1Ev),
  NSPAIR(_ZN7S1584C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S1584C4;
extern VTBL_ENTRY _ZTI7S1584C4[];
extern  VTBL_ENTRY _ZTV7S1584C4[];
extern Class_Descriptor cd_S1584C6;
extern VTBL_ENTRY _ZTI7S1584C6[];
extern  VTBL_ENTRY _ZTV7S1584C6[];
extern Class_Descriptor cd_S1584C5;
extern VTBL_ENTRY _ZTI7S1584C5[];
extern  VTBL_ENTRY _ZTV7S1584C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1584C5[];
extern Class_Descriptor cd_S1584C3;
extern VTBL_ENTRY _ZTI7S1584C3[];
extern  VTBL_ENTRY _ZTV7S1584C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1584C3[];
extern Class_Descriptor cd_S1584C5;
extern VTBL_ENTRY _ZTI7S1584C5[];
extern  VTBL_ENTRY _ZTV7S1584C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1584C5[];
extern Class_Descriptor cd_S1584C9;
extern VTBL_ENTRY _ZTI7S1584C9[];
extern  VTBL_ENTRY _ZTV7S1584C9[];
extern Class_Descriptor cd_S1584C8;
extern VTBL_ENTRY _ZTI7S1584C8[];
extern  VTBL_ENTRY _ZTV7S1584C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1584C8[];
extern Class_Descriptor cd_S1584C7;
extern VTBL_ENTRY _ZTI7S1584C7[];
extern  VTBL_ENTRY _ZTV7S1584C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1584C7[];
static Base_Class bases_S1584C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1584C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1584C6,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S1584C5,    ABISELECT(16,4), //bcp->offset
    19, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1584C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1584C5,    ABISELECT(96,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S1584C9,    ABISELECT(136,68), //bcp->offset
    107, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S1584C8,    ABISELECT(96,44), //bcp->offset
    71, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S1584C7,    ABISELECT(64,32), //bcp->offset
    43, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1584C2[];
extern void _ZN7S1584C2D1Ev();
extern void _ZN7S1584C2D0Ev();
extern void _ZN7S1584C42v8Ev();
extern void _ZN7S1584C42v9Ev();
extern void _ZN7S1584C33v22Ev();
extern void _ZN7S1584C33v23Ev();
extern void _ZN7S1584C33v24Ev();
extern void _ZN7S1584C33v25Ev();
extern void _ZN7S1584C33v26Ev();
extern void _ZN7S1584C33v27Ev();
extern void _ZN7S1584C33v28Ev();
extern void _ZN7S1584C23v37Ev();
extern void _ZN7S1584C23v38Ev();
extern void _ZN7S1584C23v39Ev();
extern void _ZN7S1584C23v40Ev();
extern void _ZN7S1584C63v10Ev();
extern void _ZN7S1584C63v11Ev();
extern void _ZN7S1584C63v12Ev();
extern void _ZN7S1584C63v13Ev();
extern void _ZN7S1584C63v14Ev();
extern void _ZN7S1584C63v15Ev();
extern void _ZN7S1584C63v16Ev();
extern void _ZN7S1584C63v17Ev();
extern void _ZN7S1584C63v18Ev();
extern void _ZN7S1584C53v19Ev();
extern void _ZN7S1584C53v20Ev();
extern void _ZN7S1584C53v21Ev();
extern void _ZN7S1584C63v10Ev();
extern void _ZN7S1584C63v11Ev();
extern void _ZN7S1584C63v12Ev();
extern void _ZN7S1584C63v13Ev();
extern void _ZN7S1584C63v14Ev();
extern void _ZN7S1584C63v15Ev();
extern void _ZN7S1584C63v16Ev();
extern void _ZN7S1584C63v17Ev();
extern void _ZN7S1584C63v18Ev();
extern void ABISELECT(_ZThn64_N7S1584C2D1Ev,_ZThn32_N7S1584C2D1Ev)();
extern void ABISELECT(_ZThn64_N7S1584C2D0Ev,_ZThn32_N7S1584C2D0Ev)();
extern void _ZN7S1584C73v33Ev();
extern void _ZN7S1584C73v34Ev();
extern void _ZN7S1584C73v35Ev();
extern void _ZN7S1584C73v36Ev();
extern void _ZN7S1584C63v10Ev();
extern void _ZN7S1584C63v11Ev();
extern void _ZN7S1584C63v12Ev();
extern void _ZN7S1584C63v13Ev();
extern void _ZN7S1584C63v14Ev();
extern void _ZN7S1584C63v15Ev();
extern void _ZN7S1584C63v16Ev();
extern void _ZN7S1584C63v17Ev();
extern void _ZN7S1584C63v18Ev();
extern void _ZN7S1584C53v19Ev();
extern void _ZN7S1584C53v20Ev();
extern void _ZN7S1584C53v21Ev();
extern void ABISELECT(_ZTv0_n128_N7S1584C2D1Ev,_ZTv0_n64_N7S1584C2D1Ev)();
extern void ABISELECT(_ZThn96_N7S1584C2D1Ev,_ZThn44_N7S1584C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N7S1584C2D0Ev,_ZTv0_n64_N7S1584C2D0Ev)();
extern void ABISELECT(_ZThn96_N7S1584C2D0Ev,_ZThn44_N7S1584C2D0Ev)() __attribute__((weak));
extern void _ZN7S1584C83v31Ev();
extern void _ZN7S1584C83v32Ev();
extern void ABISELECT(_ZTvn40_n128_N7S1584C2D1Ev,_ZTvn24_n64_N7S1584C2D1Ev)();
extern void ABISELECT(_ZTvn40_n128_N7S1584C2D0Ev,_ZTvn24_n64_N7S1584C2D0Ev)();
extern void _ZN7S1584C93v29Ev();
extern void _ZN7S1584C93v30Ev();
static  VTBL_ENTRY vtc_S1584C2[] = {
  ABISELECT(96,44),
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S1584C2[0]),
  (VTBL_ENTRY)&_ZN7S1584C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1584C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1584C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1584C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1584C33v22Ev,
  (VTBL_ENTRY)&_ZN7S1584C33v23Ev,
  (VTBL_ENTRY)&_ZN7S1584C33v24Ev,
  (VTBL_ENTRY)&_ZN7S1584C33v25Ev,
  (VTBL_ENTRY)&_ZN7S1584C33v26Ev,
  (VTBL_ENTRY)&_ZN7S1584C33v27Ev,
  (VTBL_ENTRY)&_ZN7S1584C33v28Ev,
  (VTBL_ENTRY)&_ZN7S1584C23v37Ev,
  (VTBL_ENTRY)&_ZN7S1584C23v38Ev,
  (VTBL_ENTRY)&_ZN7S1584C23v39Ev,
  (VTBL_ENTRY)&_ZN7S1584C23v40Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI7S1584C2[0]),
  (VTBL_ENTRY)&_ZN7S1584C63v10Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v11Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v12Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v13Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v14Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v15Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v16Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v17Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v18Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v19Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v20Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v21Ev,
  ABISELECT(-48,-28),
  ABISELECT(32,12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S1584C2[0]),
  (VTBL_ENTRY)&_ZN7S1584C63v10Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v11Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v12Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v13Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v14Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v15Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v16Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v17Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S1584C2D1Ev,_ZThn32_N7S1584C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S1584C2D0Ev,_ZThn32_N7S1584C2D0Ev),
  (VTBL_ENTRY)&_ZN7S1584C73v33Ev,
  (VTBL_ENTRY)&_ZN7S1584C73v34Ev,
  (VTBL_ENTRY)&_ZN7S1584C73v35Ev,
  (VTBL_ENTRY)&_ZN7S1584C73v36Ev,
  ABISELECT(40,24),
  ABISELECT(40,24),
  0,
  0,
  ABISELECT(-96,-44),
  0,
  0,
  0,
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-96,-44),
  (VTBL_ENTRY)&(_ZTI7S1584C2[0]),
  (VTBL_ENTRY)&_ZN7S1584C63v10Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v11Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v12Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v13Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v14Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v15Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v16Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v17Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v18Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v19Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v20Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v21Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S1584C2D1Ev,_ZTv0_n64_N7S1584C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S1584C2D0Ev,_ZTv0_n64_N7S1584C2D0Ev),
  (VTBL_ENTRY)&_ZN7S1584C83v31Ev,
  (VTBL_ENTRY)&_ZN7S1584C83v32Ev,
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI7S1584C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n128_N7S1584C2D1Ev,_ZTvn24_n64_N7S1584C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n128_N7S1584C2D0Ev,_ZTvn24_n64_N7S1584C2D0Ev),
  (VTBL_ENTRY)&_ZN7S1584C93v29Ev,
  (VTBL_ENTRY)&_ZN7S1584C93v30Ev,
};
extern VTBL_ENTRY _ZTV7S1584C2[];
extern void _ZN7S1584C3D1Ev();
extern void _ZN7S1584C3D0Ev();
extern void _ZN7S1584C42v8Ev();
extern void _ZN7S1584C42v9Ev();
extern void _ZN7S1584C33v22Ev();
extern void _ZN7S1584C33v23Ev();
extern void _ZN7S1584C33v24Ev();
extern void _ZN7S1584C33v25Ev();
extern void _ZN7S1584C33v26Ev();
extern void _ZN7S1584C33v27Ev();
extern void _ZN7S1584C33v28Ev();
static  VTBL_ENTRY _tg__ZTV7S1584C3__7S1584C2[] = {
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S1584C3[0]),
  (VTBL_ENTRY)&_ZN7S1584C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1584C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1584C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1584C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1584C33v22Ev,
  (VTBL_ENTRY)&_ZN7S1584C33v23Ev,
  (VTBL_ENTRY)&_ZN7S1584C33v24Ev,
  (VTBL_ENTRY)&_ZN7S1584C33v25Ev,
  (VTBL_ENTRY)&_ZN7S1584C33v26Ev,
  (VTBL_ENTRY)&_ZN7S1584C33v27Ev,
  (VTBL_ENTRY)&_ZN7S1584C33v28Ev,
};
extern void _ZN7S1584C63v10Ev();
extern void _ZN7S1584C63v11Ev();
extern void _ZN7S1584C63v12Ev();
extern void _ZN7S1584C63v13Ev();
extern void _ZN7S1584C63v14Ev();
extern void _ZN7S1584C63v15Ev();
extern void _ZN7S1584C63v16Ev();
extern void _ZN7S1584C63v17Ev();
extern void _ZN7S1584C63v18Ev();
extern void _ZN7S1584C53v19Ev();
extern void _ZN7S1584C53v20Ev();
extern void _ZN7S1584C53v21Ev();
static  VTBL_ENTRY _tg__ZTV7S1584C57S1584C3__7S1584C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1584C5[0]),
  (VTBL_ENTRY)&_ZN7S1584C63v10Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v11Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v12Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v13Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v14Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v15Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v16Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v17Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v18Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v19Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v20Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v21Ev,
};
extern void _ZN7S1584C63v10Ev();
extern void _ZN7S1584C63v11Ev();
extern void _ZN7S1584C63v12Ev();
extern void _ZN7S1584C63v13Ev();
extern void _ZN7S1584C63v14Ev();
extern void _ZN7S1584C63v15Ev();
extern void _ZN7S1584C63v16Ev();
extern void _ZN7S1584C63v17Ev();
extern void _ZN7S1584C63v18Ev();
extern void _ZN7S1584C53v19Ev();
extern void _ZN7S1584C53v20Ev();
extern void _ZN7S1584C53v21Ev();
static  VTBL_ENTRY _tg__ZTV7S1584C5__7S1584C3__7S1584C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI7S1584C3[0]),
  (VTBL_ENTRY)&_ZN7S1584C63v10Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v11Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v12Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v13Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v14Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v15Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v16Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v17Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v18Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v19Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v20Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v21Ev,
};
extern void _ZN7S1584C63v10Ev();
extern void _ZN7S1584C63v11Ev();
extern void _ZN7S1584C63v12Ev();
extern void _ZN7S1584C63v13Ev();
extern void _ZN7S1584C63v14Ev();
extern void _ZN7S1584C63v15Ev();
extern void _ZN7S1584C63v16Ev();
extern void _ZN7S1584C63v17Ev();
extern void _ZN7S1584C63v18Ev();
extern void _ZN7S1584C7D1Ev();
extern void _ZN7S1584C7D0Ev();
extern void _ZN7S1584C73v33Ev();
extern void _ZN7S1584C73v34Ev();
extern void _ZN7S1584C73v35Ev();
extern void _ZN7S1584C73v36Ev();
static  VTBL_ENTRY _tg__ZTV7S1584C7__7S1584C2[] = {
  ABISELECT(-48,-28),
  ABISELECT(32,12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1584C7[0]),
  (VTBL_ENTRY)&_ZN7S1584C63v10Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v11Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v12Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v13Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v14Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v15Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v16Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v17Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v18Ev,
  (VTBL_ENTRY)&_ZN7S1584C7D1Ev,
  (VTBL_ENTRY)&_ZN7S1584C7D0Ev,
  (VTBL_ENTRY)&_ZN7S1584C73v33Ev,
  (VTBL_ENTRY)&_ZN7S1584C73v34Ev,
  (VTBL_ENTRY)&_ZN7S1584C73v35Ev,
  (VTBL_ENTRY)&_ZN7S1584C73v36Ev,
};
extern void _ZN7S1584C63v10Ev();
extern void _ZN7S1584C63v11Ev();
extern void _ZN7S1584C63v12Ev();
extern void _ZN7S1584C63v13Ev();
extern void _ZN7S1584C63v14Ev();
extern void _ZN7S1584C63v15Ev();
extern void _ZN7S1584C63v16Ev();
extern void _ZN7S1584C63v17Ev();
extern void _ZN7S1584C63v18Ev();
extern void _ZN7S1584C53v19Ev();
extern void _ZN7S1584C53v20Ev();
extern void _ZN7S1584C53v21Ev();
extern void ABISELECT(_ZTv0_n128_N7S1584C7D1Ev,_ZTv0_n64_N7S1584C7D1Ev)();
extern void ABISELECT(_ZThn32_N7S1584C7D1Ev,_ZThn12_N7S1584C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N7S1584C7D0Ev,_ZTv0_n64_N7S1584C7D0Ev)();
extern void ABISELECT(_ZThn32_N7S1584C7D0Ev,_ZThn12_N7S1584C7D0Ev)() __attribute__((weak));
extern void _ZN7S1584C83v31Ev();
extern void _ZN7S1584C83v32Ev();
static  VTBL_ENTRY _tg__ZTV7S1584C8__7S1584C7__7S1584C2[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  0,
  0,
  ABISELECT(-32,-12),
  0,
  0,
  0,
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI7S1584C7[0]),
  (VTBL_ENTRY)&_ZN7S1584C63v10Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v11Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v12Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v13Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v14Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v15Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v16Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v17Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v18Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v19Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v20Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v21Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S1584C7D1Ev,_ZTv0_n64_N7S1584C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S1584C7D0Ev,_ZTv0_n64_N7S1584C7D0Ev),
  (VTBL_ENTRY)&_ZN7S1584C83v31Ev,
  (VTBL_ENTRY)&_ZN7S1584C83v32Ev,
};
extern void _ZN7S1584C63v10Ev();
extern void _ZN7S1584C63v11Ev();
extern void _ZN7S1584C63v12Ev();
extern void _ZN7S1584C63v13Ev();
extern void _ZN7S1584C63v14Ev();
extern void _ZN7S1584C63v15Ev();
extern void _ZN7S1584C63v16Ev();
extern void _ZN7S1584C63v17Ev();
extern void _ZN7S1584C63v18Ev();
static  VTBL_ENTRY _tg__ZTV7S1584C6__7S1584C7__7S1584C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S1584C7[0]),
  (VTBL_ENTRY)&_ZN7S1584C63v10Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v11Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v12Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v13Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v14Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v15Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v16Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v17Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v18Ev,
};
extern void ABISELECT(_ZTvn40_n128_N7S1584C7D1Ev,_ZTvn24_n64_N7S1584C7D1Ev)();
extern void ABISELECT(_ZTvn40_n128_N7S1584C7D0Ev,_ZTvn24_n64_N7S1584C7D0Ev)();
extern void _ZN7S1584C93v29Ev();
extern void _ZN7S1584C93v30Ev();
static  VTBL_ENTRY _tg__ZTV7S1584C97S1584C8__7S1584C7__7S1584C2[] = {
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI7S1584C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n128_N7S1584C7D1Ev,_ZTvn24_n64_N7S1584C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n128_N7S1584C7D0Ev,_ZTvn24_n64_N7S1584C7D0Ev),
  (VTBL_ENTRY)&_ZN7S1584C93v29Ev,
  (VTBL_ENTRY)&_ZN7S1584C93v30Ev,
};
extern void _ZN7S1584C63v10Ev();
extern void _ZN7S1584C63v11Ev();
extern void _ZN7S1584C63v12Ev();
extern void _ZN7S1584C63v13Ev();
extern void _ZN7S1584C63v14Ev();
extern void _ZN7S1584C63v15Ev();
extern void _ZN7S1584C63v16Ev();
extern void _ZN7S1584C63v17Ev();
extern void _ZN7S1584C63v18Ev();
extern void _ZN7S1584C53v19Ev();
extern void _ZN7S1584C53v20Ev();
extern void _ZN7S1584C53v21Ev();
extern void _ZN7S1584C8D1Ev();
extern void _ZN7S1584C8D0Ev();
extern void _ZN7S1584C83v31Ev();
extern void _ZN7S1584C83v32Ev();
static  VTBL_ENTRY _tg__ZTV7S1584C8__7S1584C2[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S1584C8[0]),
  (VTBL_ENTRY)&_ZN7S1584C63v10Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v11Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v12Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v13Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v14Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v15Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v16Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v17Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v18Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v19Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v20Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v21Ev,
  (VTBL_ENTRY)&_ZN7S1584C8D1Ev,
  (VTBL_ENTRY)&_ZN7S1584C8D0Ev,
  (VTBL_ENTRY)&_ZN7S1584C83v31Ev,
  (VTBL_ENTRY)&_ZN7S1584C83v32Ev,
};
extern void _ZN7S1584C63v10Ev();
extern void _ZN7S1584C63v11Ev();
extern void _ZN7S1584C63v12Ev();
extern void _ZN7S1584C63v13Ev();
extern void _ZN7S1584C63v14Ev();
extern void _ZN7S1584C63v15Ev();
extern void _ZN7S1584C63v16Ev();
extern void _ZN7S1584C63v17Ev();
extern void _ZN7S1584C63v18Ev();
extern void _ZN7S1584C53v19Ev();
extern void _ZN7S1584C53v20Ev();
extern void _ZN7S1584C53v21Ev();
static  VTBL_ENTRY _tg__ZTV7S1584C57S1584C8__A1__7S1584C2[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S1584C5[0]),
  (VTBL_ENTRY)&_ZN7S1584C63v10Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v11Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v12Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v13Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v14Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v15Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v16Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v17Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v18Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v19Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v20Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v21Ev,
};
extern void _ZN7S1584C63v10Ev();
extern void _ZN7S1584C63v11Ev();
extern void _ZN7S1584C63v12Ev();
extern void _ZN7S1584C63v13Ev();
extern void _ZN7S1584C63v14Ev();
extern void _ZN7S1584C63v15Ev();
extern void _ZN7S1584C63v16Ev();
extern void _ZN7S1584C63v17Ev();
extern void _ZN7S1584C63v18Ev();
static  VTBL_ENTRY _tg__ZTV7S1584C6__7S1584C57S1584C8__A1__7S1584C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI7S1584C5[0]),
  (VTBL_ENTRY)&_ZN7S1584C63v10Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v11Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v12Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v13Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v14Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v15Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v16Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v17Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v18Ev,
};
extern void _ZN7S1584C63v10Ev();
extern void _ZN7S1584C63v11Ev();
extern void _ZN7S1584C63v12Ev();
extern void _ZN7S1584C63v13Ev();
extern void _ZN7S1584C63v14Ev();
extern void _ZN7S1584C63v15Ev();
extern void _ZN7S1584C63v16Ev();
extern void _ZN7S1584C63v17Ev();
extern void _ZN7S1584C63v18Ev();
static  VTBL_ENTRY _tg__ZTV7S1584C6__7S1584C8__7S1584C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI7S1584C8[0]),
  (VTBL_ENTRY)&_ZN7S1584C63v10Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v11Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v12Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v13Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v14Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v15Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v16Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v17Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v18Ev,
};
static  VTT_ENTRY vtt_S1584C2[] = {
  {&(_ZTV7S1584C2[4]),  4,113},
  {&(_tg__ZTV7S1584C3__7S1584C2[3]),  3,14},
  {&(_tg__ZTV7S1584C57S1584C3__7S1584C2[12]),  12,24},
  {&(_tg__ZTV7S1584C57S1584C3__7S1584C2[12]),  12,24},
  {&(_tg__ZTV7S1584C5__7S1584C3__7S1584C2[12]),  12,24},
  {&(_tg__ZTV7S1584C5__7S1584C3__7S1584C2[12]),  12,24},
  {&(_tg__ZTV7S1584C7__7S1584C2[13]),  13,28},
  {&(_tg__ZTV7S1584C8__7S1584C7__7S1584C2[20]),  20,36},
  {&(_tg__ZTV7S1584C6__7S1584C7__7S1584C2[11]),  11,20},
  {&(_tg__ZTV7S1584C97S1584C8__7S1584C7__7S1584C2[2]),  2,6},
  {&(_ZTV7S1584C2[31]),  31,113},
  {&(_ZTV7S1584C2[31]),  31,113},
  {&(_ZTV7S1584C2[56]),  56,113},
  {&(_ZTV7S1584C2[91]),  91,113},
  {&(_ZTV7S1584C2[109]),  109,113},
  {&(_tg__ZTV7S1584C8__7S1584C2[12]),  12,28},
  {&(_tg__ZTV7S1584C57S1584C8__A1__7S1584C2[12]),  12,24},
  {&(_tg__ZTV7S1584C6__7S1584C57S1584C8__A1__7S1584C2[11]),  11,20},
  {&(_tg__ZTV7S1584C6__7S1584C8__7S1584C2[11]),  11,20},
};
extern VTBL_ENTRY _ZTI7S1584C2[];
extern  VTBL_ENTRY _ZTV7S1584C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1584C2[];
static VTBL_ENTRY alt_thunk_names78[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S1584C7D0Ev,_ZTv0_n64_N7S1584C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S1584C7D0Ev,_ZThn12_N7S1584C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S1584C7D1Ev,_ZTv0_n64_N7S1584C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S1584C7D1Ev,_ZThn12_N7S1584C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S1584C2D0Ev,_ZTv0_n64_N7S1584C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S1584C2D0Ev,_ZThn44_N7S1584C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S1584C2D1Ev,_ZTv0_n64_N7S1584C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S1584C2D1Ev,_ZThn44_N7S1584C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1584C2 = {  "S1584C2", // class name
  bases_S1584C2, 8,
  &(vtc_S1584C2[0]), // expected_vtbl_contents
  &(vtt_S1584C2[0]), // expected_vtt_contents
  ABISELECT(176,88), // object size
  NSPAIRA(_ZTI7S1584C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S1584C2),113, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1584C2),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names78,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1584C1  : S1584C2 , S1584C6 {
  int s1584c1f0;
  ::S5266C29 s1584c1f1;
  long double s1584c1f2[2];
  virtual void  v1(); // _ZN7S1584C12v1Ev
  virtual void  v2(); // _ZN7S1584C12v2Ev
  virtual void  v3(); // _ZN7S1584C12v3Ev
  virtual void  v4(); // _ZN7S1584C12v4Ev
  virtual void  v5(); // _ZN7S1584C12v5Ev
  virtual void  v6(); // _ZN7S1584C12v6Ev
  virtual void  v7(); // _ZN7S1584C12v7Ev
  ~S1584C1(); // tgen
  S1584C1(); // tgen
};
//SIG(1 S1584C1) C1{ BC2{ BC3{ BC4{ vd v8 v9} BC5{ VBC6{ v10 v11 v12 v13 v14 v15 v16 v17 v18} v19 v20 v21 Fp FD Fi} vd v22 v23 v24 v25 v26 v27 v28 Fp} BC7{ VBC8{ BC5 BC9{ vd v29 v30 FL Fi} vd v31 v32 Fp} vd v33 v34 v35 v36 Fp Fi} vd v37 v38 v39 v40} BC6 v1 v2 v3 v4 v5 v6 v7 Fi FC10{ m} FD[2]}


void  S1584C1 ::v1(){vfunc_called(this, "_ZN7S1584C12v1Ev");}
void  S1584C1 ::v2(){vfunc_called(this, "_ZN7S1584C12v2Ev");}
void  S1584C1 ::v3(){vfunc_called(this, "_ZN7S1584C12v3Ev");}
void  S1584C1 ::v4(){vfunc_called(this, "_ZN7S1584C12v4Ev");}
void  S1584C1 ::v5(){vfunc_called(this, "_ZN7S1584C12v5Ev");}
void  S1584C1 ::v6(){vfunc_called(this, "_ZN7S1584C12v6Ev");}
void  S1584C1 ::v7(){vfunc_called(this, "_ZN7S1584C12v7Ev");}
S1584C1 ::~S1584C1(){ note_dtor("S1584C1", this);} // tgen
S1584C1 ::S1584C1(){ note_ctor("S1584C1", this);} // tgen

static void Test_S1584C1()
{
  extern Class_Descriptor cd_S1584C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(15,32)];
    init_test(&cd_S1584C1, buf);
    S1584C1 *dp, &lv = *(dp=new (buf) S1584C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,124), "sizeof(S1584C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S1584C1)");
    check_base_class_offset(lv, (S1584C4*)(S1584C3*)(S1584C2*), 0, "S1584C1");
    check_base_class_offset(lv, (S1584C6*)(S1584C5*)(S1584C3*)(S1584C2*), ABISELECT(16,4), "S1584C1");
    check_base_class_offset(lv, (S1584C6*)(S1584C5*)(S1584C8*), ABISELECT(16,4), "S1584C1");
    check_base_class_offset(lv, (S1584C5*)(S1584C3*)(S1584C2*), ABISELECT(16,4), "S1584C1");
    check_base_class_offset(lv, (S1584C3*)(S1584C2*), 0, "S1584C1");
    check_base_class_offset(lv, (S1584C5*)(S1584C8*), ABISELECT(144,80), "S1584C1");
    check_base_class_offset(lv, (S1584C9*)(S1584C8*), ABISELECT(184,104), "S1584C1");
    check_base_class_offset(lv, (S1584C8*)(S1584C7*)(S1584C2*), ABISELECT(144,80), "S1584C1");
    check_base_class_offset(lv, (S1584C7*)(S1584C2*), ABISELECT(64,32), "S1584C1");
    check_base_class_offset(lv, (S1584C2*), 0, "S1584C1");
    /*is_ambiguous_... S1584C1::S1584C6 */ AMB_check_base_class_offset(lv, (S1584C6*), ABISELECT(88,44), "S1584C1");
    check_field_offset(lv, s1584c1f0, ABISELECT(96,48), "S1584C1.s1584c1f0");
    check_field_offset(lv, s1584c1f1, ABISELECT(100,52), "S1584C1.s1584c1f1");
    check_field_offset(lv, s1584c1f2, ABISELECT(112,56), "S1584C1.s1584c1f2");
    test_class_info(&lv, &cd_S1584C1);
    dp->~S1584C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1584C1(Test_S1584C1, "S1584C1", ABISELECT(224,124));

#else // __cplusplus

extern void _ZN7S1584C1C1Ev();
extern void _ZN7S1584C1D1Ev();
Name_Map name_map_S1584C1[] = {
  NSPAIR(_ZN7S1584C1C1Ev),
  NSPAIR(_ZN7S1584C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1584C4;
extern VTBL_ENTRY _ZTI7S1584C4[];
extern  VTBL_ENTRY _ZTV7S1584C4[];
extern Class_Descriptor cd_S1584C6;
extern VTBL_ENTRY _ZTI7S1584C6[];
extern  VTBL_ENTRY _ZTV7S1584C6[];
extern Class_Descriptor cd_S1584C5;
extern VTBL_ENTRY _ZTI7S1584C5[];
extern  VTBL_ENTRY _ZTV7S1584C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1584C5[];
extern Class_Descriptor cd_S1584C3;
extern VTBL_ENTRY _ZTI7S1584C3[];
extern  VTBL_ENTRY _ZTV7S1584C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1584C3[];
extern Class_Descriptor cd_S1584C5;
extern VTBL_ENTRY _ZTI7S1584C5[];
extern  VTBL_ENTRY _ZTV7S1584C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1584C5[];
extern Class_Descriptor cd_S1584C9;
extern VTBL_ENTRY _ZTI7S1584C9[];
extern  VTBL_ENTRY _ZTV7S1584C9[];
extern Class_Descriptor cd_S1584C8;
extern VTBL_ENTRY _ZTI7S1584C8[];
extern  VTBL_ENTRY _ZTV7S1584C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1584C8[];
extern Class_Descriptor cd_S1584C7;
extern VTBL_ENTRY _ZTI7S1584C7[];
extern  VTBL_ENTRY _ZTV7S1584C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1584C7[];
extern Class_Descriptor cd_S1584C2;
extern VTBL_ENTRY _ZTI7S1584C2[];
extern  VTBL_ENTRY _ZTV7S1584C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1584C2[];
extern Class_Descriptor cd_S1584C6;
extern VTBL_ENTRY _ZTI7S1584C6[];
extern  VTBL_ENTRY _ZTV7S1584C6[];
static Base_Class bases_S1584C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1584C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1584C6,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S1584C5,    ABISELECT(16,4), //bcp->offset
    26, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S1584C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S1584C5,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S1584C9,    ABISELECT(184,104), //bcp->offset
    125, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S1584C8,    ABISELECT(144,80), //bcp->offset
    89, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S1584C7,    ABISELECT(64,32), //bcp->offset
    50, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S1584C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1584C6,    ABISELECT(88,44), //bcp->offset
    78, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1584C1[];
extern void _ZN7S1584C1D1Ev();
extern void _ZN7S1584C1D0Ev();
extern void _ZN7S1584C42v8Ev();
extern void _ZN7S1584C42v9Ev();
extern void _ZN7S1584C33v22Ev();
extern void _ZN7S1584C33v23Ev();
extern void _ZN7S1584C33v24Ev();
extern void _ZN7S1584C33v25Ev();
extern void _ZN7S1584C33v26Ev();
extern void _ZN7S1584C33v27Ev();
extern void _ZN7S1584C33v28Ev();
extern void _ZN7S1584C23v37Ev();
extern void _ZN7S1584C23v38Ev();
extern void _ZN7S1584C23v39Ev();
extern void _ZN7S1584C23v40Ev();
extern void _ZN7S1584C12v1Ev();
extern void _ZN7S1584C12v2Ev();
extern void _ZN7S1584C12v3Ev();
extern void _ZN7S1584C12v4Ev();
extern void _ZN7S1584C12v5Ev();
extern void _ZN7S1584C12v6Ev();
extern void _ZN7S1584C12v7Ev();
extern void _ZN7S1584C63v10Ev();
extern void _ZN7S1584C63v11Ev();
extern void _ZN7S1584C63v12Ev();
extern void _ZN7S1584C63v13Ev();
extern void _ZN7S1584C63v14Ev();
extern void _ZN7S1584C63v15Ev();
extern void _ZN7S1584C63v16Ev();
extern void _ZN7S1584C63v17Ev();
extern void _ZN7S1584C63v18Ev();
extern void _ZN7S1584C53v19Ev();
extern void _ZN7S1584C53v20Ev();
extern void _ZN7S1584C53v21Ev();
extern void _ZN7S1584C63v10Ev();
extern void _ZN7S1584C63v11Ev();
extern void _ZN7S1584C63v12Ev();
extern void _ZN7S1584C63v13Ev();
extern void _ZN7S1584C63v14Ev();
extern void _ZN7S1584C63v15Ev();
extern void _ZN7S1584C63v16Ev();
extern void _ZN7S1584C63v17Ev();
extern void _ZN7S1584C63v18Ev();
extern void ABISELECT(_ZThn64_N7S1584C1D1Ev,_ZThn32_N7S1584C1D1Ev)();
extern void ABISELECT(_ZThn64_N7S1584C1D0Ev,_ZThn32_N7S1584C1D0Ev)();
extern void _ZN7S1584C73v33Ev();
extern void _ZN7S1584C73v34Ev();
extern void _ZN7S1584C73v35Ev();
extern void _ZN7S1584C73v36Ev();
extern void _ZN7S1584C63v10Ev();
extern void _ZN7S1584C63v11Ev();
extern void _ZN7S1584C63v12Ev();
extern void _ZN7S1584C63v13Ev();
extern void _ZN7S1584C63v14Ev();
extern void _ZN7S1584C63v15Ev();
extern void _ZN7S1584C63v16Ev();
extern void _ZN7S1584C63v17Ev();
extern void _ZN7S1584C63v18Ev();
extern void _ZN7S1584C63v10Ev();
extern void _ZN7S1584C63v11Ev();
extern void _ZN7S1584C63v12Ev();
extern void _ZN7S1584C63v13Ev();
extern void _ZN7S1584C63v14Ev();
extern void _ZN7S1584C63v15Ev();
extern void _ZN7S1584C63v16Ev();
extern void _ZN7S1584C63v17Ev();
extern void _ZN7S1584C63v18Ev();
extern void _ZN7S1584C53v19Ev();
extern void _ZN7S1584C53v20Ev();
extern void _ZN7S1584C53v21Ev();
extern void ABISELECT(_ZTv0_n128_N7S1584C1D1Ev,_ZTv0_n64_N7S1584C1D1Ev)();
extern void ABISELECT(_ZThn144_N7S1584C1D1Ev,_ZThn80_N7S1584C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N7S1584C1D0Ev,_ZTv0_n64_N7S1584C1D0Ev)();
extern void ABISELECT(_ZThn144_N7S1584C1D0Ev,_ZThn80_N7S1584C1D0Ev)() __attribute__((weak));
extern void _ZN7S1584C83v31Ev();
extern void _ZN7S1584C83v32Ev();
extern void ABISELECT(_ZTvn40_n128_N7S1584C1D1Ev,_ZTvn24_n64_N7S1584C1D1Ev)();
extern void ABISELECT(_ZTvn40_n128_N7S1584C1D0Ev,_ZTvn24_n64_N7S1584C1D0Ev)();
extern void _ZN7S1584C93v29Ev();
extern void _ZN7S1584C93v30Ev();
static  VTBL_ENTRY vtc_S1584C1[] = {
  ABISELECT(144,80),
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S1584C1[0]),
  (VTBL_ENTRY)&_ZN7S1584C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1584C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1584C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1584C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1584C33v22Ev,
  (VTBL_ENTRY)&_ZN7S1584C33v23Ev,
  (VTBL_ENTRY)&_ZN7S1584C33v24Ev,
  (VTBL_ENTRY)&_ZN7S1584C33v25Ev,
  (VTBL_ENTRY)&_ZN7S1584C33v26Ev,
  (VTBL_ENTRY)&_ZN7S1584C33v27Ev,
  (VTBL_ENTRY)&_ZN7S1584C33v28Ev,
  (VTBL_ENTRY)&_ZN7S1584C23v37Ev,
  (VTBL_ENTRY)&_ZN7S1584C23v38Ev,
  (VTBL_ENTRY)&_ZN7S1584C23v39Ev,
  (VTBL_ENTRY)&_ZN7S1584C23v40Ev,
  (VTBL_ENTRY)&_ZN7S1584C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1584C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1584C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1584C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1584C12v5Ev,
  (VTBL_ENTRY)&_ZN7S1584C12v6Ev,
  (VTBL_ENTRY)&_ZN7S1584C12v7Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI7S1584C1[0]),
  (VTBL_ENTRY)&_ZN7S1584C63v10Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v11Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v12Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v13Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v14Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v15Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v16Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v17Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v18Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v19Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v20Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v21Ev,
  ABISELECT(-48,-28),
  ABISELECT(80,48),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S1584C1[0]),
  (VTBL_ENTRY)&_ZN7S1584C63v10Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v11Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v12Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v13Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v14Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v15Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v16Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v17Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S1584C1D1Ev,_ZThn32_N7S1584C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S1584C1D0Ev,_ZThn32_N7S1584C1D0Ev),
  (VTBL_ENTRY)&_ZN7S1584C73v33Ev,
  (VTBL_ENTRY)&_ZN7S1584C73v34Ev,
  (VTBL_ENTRY)&_ZN7S1584C73v35Ev,
  (VTBL_ENTRY)&_ZN7S1584C73v36Ev,
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI7S1584C1[0]),
  (VTBL_ENTRY)&_ZN7S1584C63v10Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v11Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v12Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v13Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v14Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v15Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v16Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v17Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v18Ev,
  ABISELECT(40,24),
  ABISELECT(40,24),
  0,
  0,
  ABISELECT(-144,-80),
  0,
  0,
  0,
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI7S1584C1[0]),
  (VTBL_ENTRY)&_ZN7S1584C63v10Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v11Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v12Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v13Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v14Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v15Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v16Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v17Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v18Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v19Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v20Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v21Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S1584C1D1Ev,_ZTv0_n64_N7S1584C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S1584C1D0Ev,_ZTv0_n64_N7S1584C1D0Ev),
  (VTBL_ENTRY)&_ZN7S1584C83v31Ev,
  (VTBL_ENTRY)&_ZN7S1584C83v32Ev,
  ABISELECT(-184,-104),
  (VTBL_ENTRY)&(_ZTI7S1584C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n128_N7S1584C1D1Ev,_ZTvn24_n64_N7S1584C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n128_N7S1584C1D0Ev,_ZTvn24_n64_N7S1584C1D0Ev),
  (VTBL_ENTRY)&_ZN7S1584C93v29Ev,
  (VTBL_ENTRY)&_ZN7S1584C93v30Ev,
};
extern VTBL_ENTRY _ZTV7S1584C1[];
extern void _ZN7S1584C2D1Ev();
extern void _ZN7S1584C2D0Ev();
extern void _ZN7S1584C42v8Ev();
extern void _ZN7S1584C42v9Ev();
extern void _ZN7S1584C33v22Ev();
extern void _ZN7S1584C33v23Ev();
extern void _ZN7S1584C33v24Ev();
extern void _ZN7S1584C33v25Ev();
extern void _ZN7S1584C33v26Ev();
extern void _ZN7S1584C33v27Ev();
extern void _ZN7S1584C33v28Ev();
extern void _ZN7S1584C23v37Ev();
extern void _ZN7S1584C23v38Ev();
extern void _ZN7S1584C23v39Ev();
extern void _ZN7S1584C23v40Ev();
static  VTBL_ENTRY _tg__ZTV7S1584C2__7S1584C1[] = {
  ABISELECT(144,80),
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S1584C2[0]),
  (VTBL_ENTRY)&_ZN7S1584C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1584C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1584C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1584C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1584C33v22Ev,
  (VTBL_ENTRY)&_ZN7S1584C33v23Ev,
  (VTBL_ENTRY)&_ZN7S1584C33v24Ev,
  (VTBL_ENTRY)&_ZN7S1584C33v25Ev,
  (VTBL_ENTRY)&_ZN7S1584C33v26Ev,
  (VTBL_ENTRY)&_ZN7S1584C33v27Ev,
  (VTBL_ENTRY)&_ZN7S1584C33v28Ev,
  (VTBL_ENTRY)&_ZN7S1584C23v37Ev,
  (VTBL_ENTRY)&_ZN7S1584C23v38Ev,
  (VTBL_ENTRY)&_ZN7S1584C23v39Ev,
  (VTBL_ENTRY)&_ZN7S1584C23v40Ev,
};
extern void _ZN7S1584C3D1Ev();
extern void _ZN7S1584C3D0Ev();
extern void _ZN7S1584C42v8Ev();
extern void _ZN7S1584C42v9Ev();
extern void _ZN7S1584C33v22Ev();
extern void _ZN7S1584C33v23Ev();
extern void _ZN7S1584C33v24Ev();
extern void _ZN7S1584C33v25Ev();
extern void _ZN7S1584C33v26Ev();
extern void _ZN7S1584C33v27Ev();
extern void _ZN7S1584C33v28Ev();
static  VTBL_ENTRY _tg__ZTV7S1584C37S1584C2__7S1584C1[] = {
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S1584C3[0]),
  (VTBL_ENTRY)&_ZN7S1584C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1584C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1584C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1584C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1584C33v22Ev,
  (VTBL_ENTRY)&_ZN7S1584C33v23Ev,
  (VTBL_ENTRY)&_ZN7S1584C33v24Ev,
  (VTBL_ENTRY)&_ZN7S1584C33v25Ev,
  (VTBL_ENTRY)&_ZN7S1584C33v26Ev,
  (VTBL_ENTRY)&_ZN7S1584C33v27Ev,
  (VTBL_ENTRY)&_ZN7S1584C33v28Ev,
};
extern void _ZN7S1584C63v10Ev();
extern void _ZN7S1584C63v11Ev();
extern void _ZN7S1584C63v12Ev();
extern void _ZN7S1584C63v13Ev();
extern void _ZN7S1584C63v14Ev();
extern void _ZN7S1584C63v15Ev();
extern void _ZN7S1584C63v16Ev();
extern void _ZN7S1584C63v17Ev();
extern void _ZN7S1584C63v18Ev();
extern void _ZN7S1584C53v19Ev();
extern void _ZN7S1584C53v20Ev();
extern void _ZN7S1584C53v21Ev();
static  VTBL_ENTRY _tg__ZTV7S1584C57S1584C37S1584C2__7S1584C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S1584C5[0]),
  (VTBL_ENTRY)&_ZN7S1584C63v10Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v11Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v12Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v13Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v14Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v15Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v16Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v17Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v18Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v19Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v20Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v21Ev,
};
extern void _ZN7S1584C63v10Ev();
extern void _ZN7S1584C63v11Ev();
extern void _ZN7S1584C63v12Ev();
extern void _ZN7S1584C63v13Ev();
extern void _ZN7S1584C63v14Ev();
extern void _ZN7S1584C63v15Ev();
extern void _ZN7S1584C63v16Ev();
extern void _ZN7S1584C63v17Ev();
extern void _ZN7S1584C63v18Ev();
extern void _ZN7S1584C53v19Ev();
extern void _ZN7S1584C53v20Ev();
extern void _ZN7S1584C53v21Ev();
static  VTBL_ENTRY _tg__ZTV7S1584C5__7S1584C37S1584C2__7S1584C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI7S1584C3[0]),
  (VTBL_ENTRY)&_ZN7S1584C63v10Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v11Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v12Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v13Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v14Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v15Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v16Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v17Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v18Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v19Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v20Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v21Ev,
};
extern void _ZN7S1584C63v10Ev();
extern void _ZN7S1584C63v11Ev();
extern void _ZN7S1584C63v12Ev();
extern void _ZN7S1584C63v13Ev();
extern void _ZN7S1584C63v14Ev();
extern void _ZN7S1584C63v15Ev();
extern void _ZN7S1584C63v16Ev();
extern void _ZN7S1584C63v17Ev();
extern void _ZN7S1584C63v18Ev();
extern void _ZN7S1584C7D1Ev();
extern void _ZN7S1584C7D0Ev();
extern void _ZN7S1584C73v33Ev();
extern void _ZN7S1584C73v34Ev();
extern void _ZN7S1584C73v35Ev();
extern void _ZN7S1584C73v36Ev();
static  VTBL_ENTRY _tg__ZTV7S1584C77S1584C2__7S1584C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(80,48),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S1584C7[0]),
  (VTBL_ENTRY)&_ZN7S1584C63v10Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v11Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v12Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v13Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v14Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v15Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v16Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v17Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v18Ev,
  (VTBL_ENTRY)&_ZN7S1584C7D1Ev,
  (VTBL_ENTRY)&_ZN7S1584C7D0Ev,
  (VTBL_ENTRY)&_ZN7S1584C73v33Ev,
  (VTBL_ENTRY)&_ZN7S1584C73v34Ev,
  (VTBL_ENTRY)&_ZN7S1584C73v35Ev,
  (VTBL_ENTRY)&_ZN7S1584C73v36Ev,
};
extern void _ZN7S1584C63v10Ev();
extern void _ZN7S1584C63v11Ev();
extern void _ZN7S1584C63v12Ev();
extern void _ZN7S1584C63v13Ev();
extern void _ZN7S1584C63v14Ev();
extern void _ZN7S1584C63v15Ev();
extern void _ZN7S1584C63v16Ev();
extern void _ZN7S1584C63v17Ev();
extern void _ZN7S1584C63v18Ev();
extern void _ZN7S1584C53v19Ev();
extern void _ZN7S1584C53v20Ev();
extern void _ZN7S1584C53v21Ev();
extern void ABISELECT(_ZTv0_n128_N7S1584C7D1Ev,_ZTv0_n64_N7S1584C7D1Ev)();
extern void ABISELECT(_ZThn80_N7S1584C7D1Ev,_ZThn48_N7S1584C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N7S1584C7D0Ev,_ZTv0_n64_N7S1584C7D0Ev)();
extern void ABISELECT(_ZThn80_N7S1584C7D0Ev,_ZThn48_N7S1584C7D0Ev)() __attribute__((weak));
extern void _ZN7S1584C83v31Ev();
extern void _ZN7S1584C83v32Ev();
static  VTBL_ENTRY _tg__ZTV7S1584C8__7S1584C77S1584C2__7S1584C1[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  0,
  0,
  ABISELECT(-80,-48),
  0,
  0,
  0,
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S1584C7[0]),
  (VTBL_ENTRY)&_ZN7S1584C63v10Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v11Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v12Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v13Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v14Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v15Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v16Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v17Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v18Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v19Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v20Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v21Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S1584C7D1Ev,_ZTv0_n64_N7S1584C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S1584C7D0Ev,_ZTv0_n64_N7S1584C7D0Ev),
  (VTBL_ENTRY)&_ZN7S1584C83v31Ev,
  (VTBL_ENTRY)&_ZN7S1584C83v32Ev,
};
extern void _ZN7S1584C63v10Ev();
extern void _ZN7S1584C63v11Ev();
extern void _ZN7S1584C63v12Ev();
extern void _ZN7S1584C63v13Ev();
extern void _ZN7S1584C63v14Ev();
extern void _ZN7S1584C63v15Ev();
extern void _ZN7S1584C63v16Ev();
extern void _ZN7S1584C63v17Ev();
extern void _ZN7S1584C63v18Ev();
static  VTBL_ENTRY _tg__ZTV7S1584C6__7S1584C77S1584C2__7S1584C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S1584C7[0]),
  (VTBL_ENTRY)&_ZN7S1584C63v10Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v11Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v12Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v13Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v14Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v15Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v16Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v17Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v18Ev,
};
extern void ABISELECT(_ZTvn40_n128_N7S1584C7D1Ev,_ZTvn24_n64_N7S1584C7D1Ev)();
extern void ABISELECT(_ZTvn40_n128_N7S1584C7D0Ev,_ZTvn24_n64_N7S1584C7D0Ev)();
extern void _ZN7S1584C93v29Ev();
extern void _ZN7S1584C93v30Ev();
static  VTBL_ENTRY _tg__ZTV7S1584C97S1584C8__7S1584C77S1584C2__7S1584C1[] = {
  ABISELECT(-120,-72),
  (VTBL_ENTRY)&(_ZTI7S1584C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n128_N7S1584C7D1Ev,_ZTvn24_n64_N7S1584C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n128_N7S1584C7D0Ev,_ZTvn24_n64_N7S1584C7D0Ev),
  (VTBL_ENTRY)&_ZN7S1584C93v29Ev,
  (VTBL_ENTRY)&_ZN7S1584C93v30Ev,
};
extern void _ZN7S1584C63v10Ev();
extern void _ZN7S1584C63v11Ev();
extern void _ZN7S1584C63v12Ev();
extern void _ZN7S1584C63v13Ev();
extern void _ZN7S1584C63v14Ev();
extern void _ZN7S1584C63v15Ev();
extern void _ZN7S1584C63v16Ev();
extern void _ZN7S1584C63v17Ev();
extern void _ZN7S1584C63v18Ev();
extern void _ZN7S1584C53v19Ev();
extern void _ZN7S1584C53v20Ev();
extern void _ZN7S1584C53v21Ev();
static  VTBL_ENTRY _tg__ZTV7S1584C57S1584C3__7S1584C2__7S1584C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI7S1584C2[0]),
  (VTBL_ENTRY)&_ZN7S1584C63v10Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v11Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v12Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v13Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v14Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v15Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v16Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v17Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v18Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v19Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v20Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v21Ev,
};
extern void _ZN7S1584C63v10Ev();
extern void _ZN7S1584C63v11Ev();
extern void _ZN7S1584C63v12Ev();
extern void _ZN7S1584C63v13Ev();
extern void _ZN7S1584C63v14Ev();
extern void _ZN7S1584C63v15Ev();
extern void _ZN7S1584C63v16Ev();
extern void _ZN7S1584C63v17Ev();
extern void _ZN7S1584C63v18Ev();
extern void ABISELECT(_ZThn64_N7S1584C2D1Ev,_ZThn32_N7S1584C2D1Ev)();
extern void ABISELECT(_ZThn64_N7S1584C2D0Ev,_ZThn32_N7S1584C2D0Ev)();
extern void _ZN7S1584C73v33Ev();
extern void _ZN7S1584C73v34Ev();
extern void _ZN7S1584C73v35Ev();
extern void _ZN7S1584C73v36Ev();
static  VTBL_ENTRY _tg__ZTV7S1584C7__7S1584C2__7S1584C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(80,48),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S1584C2[0]),
  (VTBL_ENTRY)&_ZN7S1584C63v10Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v11Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v12Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v13Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v14Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v15Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v16Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v17Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S1584C2D1Ev,_ZThn32_N7S1584C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S1584C2D0Ev,_ZThn32_N7S1584C2D0Ev),
  (VTBL_ENTRY)&_ZN7S1584C73v33Ev,
  (VTBL_ENTRY)&_ZN7S1584C73v34Ev,
  (VTBL_ENTRY)&_ZN7S1584C73v35Ev,
  (VTBL_ENTRY)&_ZN7S1584C73v36Ev,
};
extern void _ZN7S1584C63v10Ev();
extern void _ZN7S1584C63v11Ev();
extern void _ZN7S1584C63v12Ev();
extern void _ZN7S1584C63v13Ev();
extern void _ZN7S1584C63v14Ev();
extern void _ZN7S1584C63v15Ev();
extern void _ZN7S1584C63v16Ev();
extern void _ZN7S1584C63v17Ev();
extern void _ZN7S1584C63v18Ev();
extern void _ZN7S1584C53v19Ev();
extern void _ZN7S1584C53v20Ev();
extern void _ZN7S1584C53v21Ev();
extern void ABISELECT(_ZTv0_n128_N7S1584C2D1Ev,_ZTv0_n64_N7S1584C2D1Ev)();
extern void ABISELECT(_ZThn144_N7S1584C2D1Ev,_ZThn80_N7S1584C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n128_N7S1584C2D0Ev,_ZTv0_n64_N7S1584C2D0Ev)();
extern void ABISELECT(_ZThn144_N7S1584C2D0Ev,_ZThn80_N7S1584C2D0Ev)() __attribute__((weak));
extern void _ZN7S1584C83v31Ev();
extern void _ZN7S1584C83v32Ev();
static  VTBL_ENTRY _tg__ZTV7S1584C8__7S1584C2__7S1584C1[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  0,
  0,
  ABISELECT(-144,-80),
  0,
  0,
  0,
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI7S1584C2[0]),
  (VTBL_ENTRY)&_ZN7S1584C63v10Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v11Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v12Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v13Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v14Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v15Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v16Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v17Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v18Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v19Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v20Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v21Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S1584C2D1Ev,_ZTv0_n64_N7S1584C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n128_N7S1584C2D0Ev,_ZTv0_n64_N7S1584C2D0Ev),
  (VTBL_ENTRY)&_ZN7S1584C83v31Ev,
  (VTBL_ENTRY)&_ZN7S1584C83v32Ev,
};
extern void ABISELECT(_ZTvn40_n128_N7S1584C2D1Ev,_ZTvn24_n64_N7S1584C2D1Ev)();
extern void ABISELECT(_ZTvn40_n128_N7S1584C2D0Ev,_ZTvn24_n64_N7S1584C2D0Ev)();
extern void _ZN7S1584C93v29Ev();
extern void _ZN7S1584C93v30Ev();
static  VTBL_ENTRY _tg__ZTV7S1584C97S1584C8__7S1584C2__7S1584C1[] = {
  ABISELECT(-184,-104),
  (VTBL_ENTRY)&(_ZTI7S1584C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n128_N7S1584C2D1Ev,_ZTvn24_n64_N7S1584C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n128_N7S1584C2D0Ev,_ZTvn24_n64_N7S1584C2D0Ev),
  (VTBL_ENTRY)&_ZN7S1584C93v29Ev,
  (VTBL_ENTRY)&_ZN7S1584C93v30Ev,
};
extern void _ZN7S1584C63v10Ev();
extern void _ZN7S1584C63v11Ev();
extern void _ZN7S1584C63v12Ev();
extern void _ZN7S1584C63v13Ev();
extern void _ZN7S1584C63v14Ev();
extern void _ZN7S1584C63v15Ev();
extern void _ZN7S1584C63v16Ev();
extern void _ZN7S1584C63v17Ev();
extern void _ZN7S1584C63v18Ev();
extern void _ZN7S1584C53v19Ev();
extern void _ZN7S1584C53v20Ev();
extern void _ZN7S1584C53v21Ev();
extern void _ZN7S1584C8D1Ev();
extern void _ZN7S1584C8D0Ev();
extern void _ZN7S1584C83v31Ev();
extern void _ZN7S1584C83v32Ev();
static  VTBL_ENTRY _tg__ZTV7S1584C8__7S1584C1[] = {
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  0,
  (VTBL_ENTRY)&(_ZTI7S1584C8[0]),
  (VTBL_ENTRY)&_ZN7S1584C63v10Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v11Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v12Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v13Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v14Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v15Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v16Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v17Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v18Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v19Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v20Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v21Ev,
  (VTBL_ENTRY)&_ZN7S1584C8D1Ev,
  (VTBL_ENTRY)&_ZN7S1584C8D0Ev,
  (VTBL_ENTRY)&_ZN7S1584C83v31Ev,
  (VTBL_ENTRY)&_ZN7S1584C83v32Ev,
};
extern void _ZN7S1584C63v10Ev();
extern void _ZN7S1584C63v11Ev();
extern void _ZN7S1584C63v12Ev();
extern void _ZN7S1584C63v13Ev();
extern void _ZN7S1584C63v14Ev();
extern void _ZN7S1584C63v15Ev();
extern void _ZN7S1584C63v16Ev();
extern void _ZN7S1584C63v17Ev();
extern void _ZN7S1584C63v18Ev();
extern void _ZN7S1584C53v19Ev();
extern void _ZN7S1584C53v20Ev();
extern void _ZN7S1584C53v21Ev();
static  VTBL_ENTRY _tg__ZTV7S1584C57S1584C8__A1__7S1584C1[] = {
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  0,
  (VTBL_ENTRY)&(_ZTI7S1584C5[0]),
  (VTBL_ENTRY)&_ZN7S1584C63v10Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v11Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v12Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v13Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v14Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v15Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v16Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v17Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v18Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v19Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v20Ev,
  (VTBL_ENTRY)&_ZN7S1584C53v21Ev,
};
extern void _ZN7S1584C63v10Ev();
extern void _ZN7S1584C63v11Ev();
extern void _ZN7S1584C63v12Ev();
extern void _ZN7S1584C63v13Ev();
extern void _ZN7S1584C63v14Ev();
extern void _ZN7S1584C63v15Ev();
extern void _ZN7S1584C63v16Ev();
extern void _ZN7S1584C63v17Ev();
extern void _ZN7S1584C63v18Ev();
static  VTBL_ENTRY _tg__ZTV7S1584C6__7S1584C57S1584C8__A1__7S1584C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(128,76),
  (VTBL_ENTRY)&(_ZTI7S1584C5[0]),
  (VTBL_ENTRY)&_ZN7S1584C63v10Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v11Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v12Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v13Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v14Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v15Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v16Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v17Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v18Ev,
};
extern void _ZN7S1584C63v10Ev();
extern void _ZN7S1584C63v11Ev();
extern void _ZN7S1584C63v12Ev();
extern void _ZN7S1584C63v13Ev();
extern void _ZN7S1584C63v14Ev();
extern void _ZN7S1584C63v15Ev();
extern void _ZN7S1584C63v16Ev();
extern void _ZN7S1584C63v17Ev();
extern void _ZN7S1584C63v18Ev();
static  VTBL_ENTRY _tg__ZTV7S1584C6__7S1584C8__7S1584C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(128,76),
  (VTBL_ENTRY)&(_ZTI7S1584C8[0]),
  (VTBL_ENTRY)&_ZN7S1584C63v10Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v11Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v12Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v13Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v14Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v15Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v16Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v17Ev,
  (VTBL_ENTRY)&_ZN7S1584C63v18Ev,
};
static  VTT_ENTRY vtt_S1584C1[] = {
  {&(_ZTV7S1584C1[4]),  4,131},
  {&(_tg__ZTV7S1584C2__7S1584C1[4]),  4,19},
  {&(_tg__ZTV7S1584C37S1584C2__7S1584C1[3]),  3,14},
  {&(_tg__ZTV7S1584C57S1584C37S1584C2__7S1584C1[12]),  12,24},
  {&(_tg__ZTV7S1584C57S1584C37S1584C2__7S1584C1[12]),  12,24},
  {&(_tg__ZTV7S1584C5__7S1584C37S1584C2__7S1584C1[12]),  12,24},
  {&(_tg__ZTV7S1584C5__7S1584C37S1584C2__7S1584C1[12]),  12,24},
  {&(_tg__ZTV7S1584C77S1584C2__7S1584C1[13]),  13,28},
  {&(_tg__ZTV7S1584C8__7S1584C77S1584C2__7S1584C1[20]),  20,36},
  {&(_tg__ZTV7S1584C6__7S1584C77S1584C2__7S1584C1[11]),  11,20},
  {&(_tg__ZTV7S1584C97S1584C8__7S1584C77S1584C2__7S1584C1[2]),  2,6},
  {&(_tg__ZTV7S1584C57S1584C3__7S1584C2__7S1584C1[12]),  12,24},
  {&(_tg__ZTV7S1584C57S1584C3__7S1584C2__7S1584C1[12]),  12,24},
  {&(_tg__ZTV7S1584C7__7S1584C2__7S1584C1[13]),  13,28},
  {&(_tg__ZTV7S1584C8__7S1584C2__7S1584C1[20]),  20,36},
  {&(_tg__ZTV7S1584C97S1584C8__7S1584C2__7S1584C1[2]),  2,6},
  {&(_ZTV7S1584C1[38]),  38,131},
  {&(_ZTV7S1584C1[38]),  38,131},
  {&(_ZTV7S1584C1[63]),  63,131},
  {&(_ZTV7S1584C1[109]),  109,131},
  {&(_ZTV7S1584C1[127]),  127,131},
  {&(_tg__ZTV7S1584C8__7S1584C1[12]),  12,28},
  {&(_tg__ZTV7S1584C57S1584C8__A1__7S1584C1[12]),  12,24},
  {&(_tg__ZTV7S1584C6__7S1584C57S1584C8__A1__7S1584C1[11]),  11,20},
  {&(_tg__ZTV7S1584C6__7S1584C8__7S1584C1[11]),  11,20},
};
extern VTBL_ENTRY _ZTI7S1584C1[];
extern  VTBL_ENTRY _ZTV7S1584C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S1584C1[];
static VTBL_ENTRY alt_thunk_names79[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S1584C2D0Ev,_ZTv0_n64_N7S1584C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S1584C2D0Ev,_ZThn80_N7S1584C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S1584C2D1Ev,_ZTv0_n64_N7S1584C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S1584C2D1Ev,_ZThn80_N7S1584C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S1584C7D0Ev,_ZTv0_n64_N7S1584C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S1584C7D0Ev,_ZThn48_N7S1584C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S1584C7D1Ev,_ZTv0_n64_N7S1584C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S1584C7D1Ev,_ZThn48_N7S1584C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S1584C1D0Ev,_ZTv0_n64_N7S1584C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S1584C1D0Ev,_ZThn80_N7S1584C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n128_N7S1584C1D1Ev,_ZTv0_n64_N7S1584C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S1584C1D1Ev,_ZThn80_N7S1584C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S1584C1 = {  "S1584C1", // class name
  bases_S1584C1, 10,
  &(vtc_S1584C1[0]), // expected_vtbl_contents
  &(vtt_S1584C1[0]), // expected_vtt_contents
  ABISELECT(224,124), // object size
  NSPAIRA(_ZTI7S1584C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S1584C1),131, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S1584C1),25, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names79,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1673C3  : S1679C4_nt {
  virtual void  v3(); // _ZN7S1673C32v3Ev
  virtual void  v4(); // _ZN7S1673C32v4Ev
  virtual void  v5(); // _ZN7S1673C32v5Ev
  virtual void  v6(); // _ZN7S1673C32v6Ev
  virtual void  v7(); // _ZN7S1673C32v7Ev
  virtual void  v8(); // _ZN7S1673C32v8Ev
  virtual void  v9(); // _ZN7S1673C32v9Ev
  virtual void  v10(); // _ZN7S1673C33v10Ev
  virtual void  v11(); // _ZN7S1673C33v11Ev
  virtual void  v12(); // _ZN7S1673C33v12Ev
  virtual void  v13(); // _ZN7S1673C33v13Ev
  virtual void  v14(); // _ZN7S1673C33v14Ev
  ~S1673C3(); // tgen
  S1673C3(); // tgen
};
//SIG(-1 S1673C3) C1{ BC2{ vd m Fi} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


void  S1673C3 ::v3(){vfunc_called(this, "_ZN7S1673C32v3Ev");}
void  S1673C3 ::v4(){vfunc_called(this, "_ZN7S1673C32v4Ev");}
void  S1673C3 ::v5(){vfunc_called(this, "_ZN7S1673C32v5Ev");}
void  S1673C3 ::v6(){vfunc_called(this, "_ZN7S1673C32v6Ev");}
void  S1673C3 ::v7(){vfunc_called(this, "_ZN7S1673C32v7Ev");}
void  S1673C3 ::v8(){vfunc_called(this, "_ZN7S1673C32v8Ev");}
void  S1673C3 ::v9(){vfunc_called(this, "_ZN7S1673C32v9Ev");}
void  S1673C3 ::v10(){vfunc_called(this, "_ZN7S1673C33v10Ev");}
void  S1673C3 ::v11(){vfunc_called(this, "_ZN7S1673C33v11Ev");}
void  S1673C3 ::v12(){vfunc_called(this, "_ZN7S1673C33v12Ev");}
void  S1673C3 ::v13(){vfunc_called(this, "_ZN7S1673C33v13Ev");}
void  S1673C3 ::v14(){vfunc_called(this, "_ZN7S1673C33v14Ev");}
S1673C3 ::~S1673C3(){ note_dtor("S1673C3", this);} // tgen
S1673C3 ::S1673C3(){ note_ctor("S1673C3", this);} // tgen

static void Test_S1673C3()
{
  extern Class_Descriptor cd_S1673C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1673C3, buf);
    S1673C3 *dp, &lv = *(dp=new (buf) S1673C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1673C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1673C3)");
    check_base_class_offset(lv, (S1679C4_nt*), 0, "S1673C3");
    test_class_info(&lv, &cd_S1673C3);
    dp->~S1673C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1673C3(Test_S1673C3, "S1673C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S1673C3C1Ev();
extern void _ZN7S1673C3D1Ev();
Name_Map name_map_S1673C3[] = {
  NSPAIR(_ZN7S1673C3C1Ev),
  NSPAIR(_ZN7S1673C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
static Base_Class bases_S1673C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1673C3[];
extern void _ZN7S1673C3D1Ev();
extern void _ZN7S1673C3D0Ev();
extern void _ZN7S1673C32v3Ev();
extern void _ZN7S1673C32v4Ev();
extern void _ZN7S1673C32v5Ev();
extern void _ZN7S1673C32v6Ev();
extern void _ZN7S1673C32v7Ev();
extern void _ZN7S1673C32v8Ev();
extern void _ZN7S1673C32v9Ev();
extern void _ZN7S1673C33v10Ev();
extern void _ZN7S1673C33v11Ev();
extern void _ZN7S1673C33v12Ev();
extern void _ZN7S1673C33v13Ev();
extern void _ZN7S1673C33v14Ev();
static  VTBL_ENTRY vtc_S1673C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1673C3[0]),
  (VTBL_ENTRY)&_ZN7S1673C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1673C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1673C32v3Ev,
  (VTBL_ENTRY)&_ZN7S1673C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1673C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1673C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1673C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1673C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1673C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1673C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1673C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1673C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1673C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1673C33v14Ev,
};
extern VTBL_ENTRY _ZTI7S1673C3[];
extern  VTBL_ENTRY _ZTV7S1673C3[];
Class_Descriptor cd_S1673C3 = {  "S1673C3", // class name
  bases_S1673C3, 1,
  &(vtc_S1673C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S1673C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1673C3),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1673C2  : S1673C3 {
  ::S79C38_nt s1673c2f0;
  ::S17777C6_nt s1673c2f1;
  ::S1679C8_nt s1673c2f2;
  int s1673c2f3[4];
  ::S4533C11_nt s1673c2f4;
  void *s1673c2f5[4];
  virtual  ~S1673C2(); // _ZN7S1673C2D1Ev
  virtual void  v15(); // _ZN7S1673C23v15Ev
  virtual void  v16(); // _ZN7S1673C23v16Ev
  virtual void  v17(); // _ZN7S1673C23v17Ev
  virtual void  v18(); // _ZN7S1673C23v18Ev
  virtual void  v19(); // _ZN7S1673C23v19Ev
  virtual void  v20(); // _ZN7S1673C23v20Ev
  virtual void  v21(); // _ZN7S1673C23v21Ev
  virtual void  v22(); // _ZN7S1673C23v22Ev
  virtual void  v23(); // _ZN7S1673C23v23Ev
  virtual void  v24(); // _ZN7S1673C23v24Ev
  virtual void  v25(); // _ZN7S1673C23v25Ev
  virtual void  v26(); // _ZN7S1673C23v26Ev
  virtual void  v27(); // _ZN7S1673C23v27Ev
  S1673C2(); // tgen
};
//SIG(-1 S1673C2) C1{ BC2{ BC3{ vd m Fi} v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 FC4{ m Fp[2]} FC5{ m Fp} FC6{ m FC7{ m Fp Fi[2] FC8{ m}} Fp[2]} Fi[4] FC9{ m Fp} Fp[4]}


 S1673C2 ::~S1673C2(){ note_dtor("S1673C2", this);}
void  S1673C2 ::v15(){vfunc_called(this, "_ZN7S1673C23v15Ev");}
void  S1673C2 ::v16(){vfunc_called(this, "_ZN7S1673C23v16Ev");}
void  S1673C2 ::v17(){vfunc_called(this, "_ZN7S1673C23v17Ev");}
void  S1673C2 ::v18(){vfunc_called(this, "_ZN7S1673C23v18Ev");}
void  S1673C2 ::v19(){vfunc_called(this, "_ZN7S1673C23v19Ev");}
void  S1673C2 ::v20(){vfunc_called(this, "_ZN7S1673C23v20Ev");}
void  S1673C2 ::v21(){vfunc_called(this, "_ZN7S1673C23v21Ev");}
void  S1673C2 ::v22(){vfunc_called(this, "_ZN7S1673C23v22Ev");}
void  S1673C2 ::v23(){vfunc_called(this, "_ZN7S1673C23v23Ev");}
void  S1673C2 ::v24(){vfunc_called(this, "_ZN7S1673C23v24Ev");}
void  S1673C2 ::v25(){vfunc_called(this, "_ZN7S1673C23v25Ev");}
void  S1673C2 ::v26(){vfunc_called(this, "_ZN7S1673C23v26Ev");}
void  S1673C2 ::v27(){vfunc_called(this, "_ZN7S1673C23v27Ev");}
S1673C2 ::S1673C2(){ note_ctor("S1673C2", this);} // tgen

static void Test_S1673C2()
{
  extern Class_Descriptor cd_S1673C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,21)];
    init_test(&cd_S1673C2, buf);
    S1673C2 *dp, &lv = *(dp=new (buf) S1673C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,80), "sizeof(S1673C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1673C2)");
    check_base_class_offset(lv, (S1679C4_nt*)(S1673C3*), 0, "S1673C2");
    check_base_class_offset(lv, (S1673C3*), 0, "S1673C2");
    check_field_offset(lv, s1673c2f0, ABISELECT(16,8), "S1673C2.s1673c2f0");
    check_field_offset(lv, s1673c2f1, ABISELECT(32,16), "S1673C2.s1673c2f1");
    check_field_offset(lv, s1673c2f2, ABISELECT(40,20), "S1673C2.s1673c2f2");
    check_field_offset(lv, s1673c2f3, ABISELECT(80,44), "S1673C2.s1673c2f3");
    check_field_offset(lv, s1673c2f4, ABISELECT(96,60), "S1673C2.s1673c2f4");
    check_field_offset(lv, s1673c2f5, ABISELECT(104,64), "S1673C2.s1673c2f5");
    test_class_info(&lv, &cd_S1673C2);
    dp->~S1673C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1673C2(Test_S1673C2, "S1673C2", ABISELECT(136,80));

#else // __cplusplus

extern void _ZN7S1673C2C1Ev();
extern void _ZN7S1673C2D1Ev();
Name_Map name_map_S1673C2[] = {
  NSPAIR(_ZN7S1673C2C1Ev),
  NSPAIR(_ZN7S1673C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
extern Class_Descriptor cd_S1673C3;
extern VTBL_ENTRY _ZTI7S1673C3[];
extern  VTBL_ENTRY _ZTV7S1673C3[];
static Base_Class bases_S1673C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1673C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1673C2[];
extern void _ZN7S1673C2D1Ev();
extern void _ZN7S1673C2D0Ev();
extern void _ZN7S1673C32v3Ev();
extern void _ZN7S1673C32v4Ev();
extern void _ZN7S1673C32v5Ev();
extern void _ZN7S1673C32v6Ev();
extern void _ZN7S1673C32v7Ev();
extern void _ZN7S1673C32v8Ev();
extern void _ZN7S1673C32v9Ev();
extern void _ZN7S1673C33v10Ev();
extern void _ZN7S1673C33v11Ev();
extern void _ZN7S1673C33v12Ev();
extern void _ZN7S1673C33v13Ev();
extern void _ZN7S1673C33v14Ev();
extern void _ZN7S1673C23v15Ev();
extern void _ZN7S1673C23v16Ev();
extern void _ZN7S1673C23v17Ev();
extern void _ZN7S1673C23v18Ev();
extern void _ZN7S1673C23v19Ev();
extern void _ZN7S1673C23v20Ev();
extern void _ZN7S1673C23v21Ev();
extern void _ZN7S1673C23v22Ev();
extern void _ZN7S1673C23v23Ev();
extern void _ZN7S1673C23v24Ev();
extern void _ZN7S1673C23v25Ev();
extern void _ZN7S1673C23v26Ev();
extern void _ZN7S1673C23v27Ev();
static  VTBL_ENTRY vtc_S1673C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1673C2[0]),
  (VTBL_ENTRY)&_ZN7S1673C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1673C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1673C32v3Ev,
  (VTBL_ENTRY)&_ZN7S1673C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1673C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1673C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1673C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1673C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1673C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1673C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1673C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1673C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1673C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1673C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1673C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1673C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1673C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1673C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1673C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1673C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1673C23v21Ev,
  (VTBL_ENTRY)&_ZN7S1673C23v22Ev,
  (VTBL_ENTRY)&_ZN7S1673C23v23Ev,
  (VTBL_ENTRY)&_ZN7S1673C23v24Ev,
  (VTBL_ENTRY)&_ZN7S1673C23v25Ev,
  (VTBL_ENTRY)&_ZN7S1673C23v26Ev,
  (VTBL_ENTRY)&_ZN7S1673C23v27Ev,
};
extern VTBL_ENTRY _ZTI7S1673C2[];
extern  VTBL_ENTRY _ZTV7S1673C2[];
Class_Descriptor cd_S1673C2 = {  "S1673C2", // class name
  bases_S1673C2, 2,
  &(vtc_S1673C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,80), // object size
  NSPAIRA(_ZTI7S1673C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1673C2),29, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1673C15_nt  {
  __tsi64 s1673c15f0[4];
  void  mf1673c15(); // _ZN11S1673C15_nt9mf1673c15Ev
};
//SIG(-1 S1673C15_nt) C1{ m FL[4]}


void  S1673C15_nt ::mf1673c15(){}

//skip512 S1673C15_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1673C1  : S1673C2 {
  ::S1679C8_nt s1673c1f0;
  ::S5266C24 s1673c1f1;
  ::S1673C15_nt s1673c1f2;
  virtual  ~S1673C1(); // _ZN7S1673C1D1Ev
  virtual void  v1(); // _ZN7S1673C12v1Ev
  virtual void  v2(); // _ZN7S1673C12v2Ev
  S1673C1(); // tgen
};
//SIG(1 S1673C1) C1{ BC2{ BC3{ BC4{ vd m Fi} v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14} vd v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 FC5{ m Fp[2]} FC6{ m Fp} FC7{ m FC8{ m Fp Fi[2] FC9{ m}} Fp[2]} Fi[4] FC10{ m Fp} Fp[4]} vd v1 v2 FC7 FC11{ BC12{ m Fp Fi FC13{ m} FC13}} FC14{ m FL[4]}}


 S1673C1 ::~S1673C1(){ note_dtor("S1673C1", this);}
void  S1673C1 ::v1(){vfunc_called(this, "_ZN7S1673C12v1Ev");}
void  S1673C1 ::v2(){vfunc_called(this, "_ZN7S1673C12v2Ev");}
S1673C1 ::S1673C1(){ note_ctor("S1673C1", this);} // tgen

static void Test_S1673C1()
{
  extern Class_Descriptor cd_S1673C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(29,38)];
    init_test(&cd_S1673C1, buf);
    S1673C1 *dp, &lv = *(dp=new (buf) S1673C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,148), "sizeof(S1673C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1673C1)");
    check_base_class_offset(lv, (S1679C4_nt*)(S1673C3*)(S1673C2*), 0, "S1673C1");
    check_base_class_offset(lv, (S1673C3*)(S1673C2*), 0, "S1673C1");
    check_base_class_offset(lv, (S1673C2*), 0, "S1673C1");
    check_field_offset(lv, s1673c1f0, ABISELECT(136,80), "S1673C1.s1673c1f0");
    check_field_offset(lv, s1673c1f1, ABISELECT(176,104), "S1673C1.s1673c1f1");
    check_field_offset(lv, s1673c1f2, ABISELECT(192,116), "S1673C1.s1673c1f2");
    test_class_info(&lv, &cd_S1673C1);
    dp->~S1673C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1673C1(Test_S1673C1, "S1673C1", ABISELECT(224,148));

#else // __cplusplus

extern void _ZN7S1673C1C1Ev();
extern void _ZN7S1673C1D1Ev();
Name_Map name_map_S1673C1[] = {
  NSPAIR(_ZN7S1673C1C1Ev),
  NSPAIR(_ZN7S1673C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
extern Class_Descriptor cd_S1673C3;
extern VTBL_ENTRY _ZTI7S1673C3[];
extern  VTBL_ENTRY _ZTV7S1673C3[];
extern Class_Descriptor cd_S1673C2;
extern VTBL_ENTRY _ZTI7S1673C2[];
extern  VTBL_ENTRY _ZTV7S1673C2[];
static Base_Class bases_S1673C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1673C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1673C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1673C1[];
extern void _ZN7S1673C1D1Ev();
extern void _ZN7S1673C1D0Ev();
extern void _ZN7S1673C32v3Ev();
extern void _ZN7S1673C32v4Ev();
extern void _ZN7S1673C32v5Ev();
extern void _ZN7S1673C32v6Ev();
extern void _ZN7S1673C32v7Ev();
extern void _ZN7S1673C32v8Ev();
extern void _ZN7S1673C32v9Ev();
extern void _ZN7S1673C33v10Ev();
extern void _ZN7S1673C33v11Ev();
extern void _ZN7S1673C33v12Ev();
extern void _ZN7S1673C33v13Ev();
extern void _ZN7S1673C33v14Ev();
extern void _ZN7S1673C23v15Ev();
extern void _ZN7S1673C23v16Ev();
extern void _ZN7S1673C23v17Ev();
extern void _ZN7S1673C23v18Ev();
extern void _ZN7S1673C23v19Ev();
extern void _ZN7S1673C23v20Ev();
extern void _ZN7S1673C23v21Ev();
extern void _ZN7S1673C23v22Ev();
extern void _ZN7S1673C23v23Ev();
extern void _ZN7S1673C23v24Ev();
extern void _ZN7S1673C23v25Ev();
extern void _ZN7S1673C23v26Ev();
extern void _ZN7S1673C23v27Ev();
extern void _ZN7S1673C12v1Ev();
extern void _ZN7S1673C12v2Ev();
static  VTBL_ENTRY vtc_S1673C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1673C1[0]),
  (VTBL_ENTRY)&_ZN7S1673C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1673C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1673C32v3Ev,
  (VTBL_ENTRY)&_ZN7S1673C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1673C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1673C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1673C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1673C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1673C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1673C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1673C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1673C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1673C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1673C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1673C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1673C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1673C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1673C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1673C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1673C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1673C23v21Ev,
  (VTBL_ENTRY)&_ZN7S1673C23v22Ev,
  (VTBL_ENTRY)&_ZN7S1673C23v23Ev,
  (VTBL_ENTRY)&_ZN7S1673C23v24Ev,
  (VTBL_ENTRY)&_ZN7S1673C23v25Ev,
  (VTBL_ENTRY)&_ZN7S1673C23v26Ev,
  (VTBL_ENTRY)&_ZN7S1673C23v27Ev,
  (VTBL_ENTRY)&_ZN7S1673C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1673C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S1673C1[];
extern  VTBL_ENTRY _ZTV7S1673C1[];
Class_Descriptor cd_S1673C1 = {  "S1673C1", // class name
  bases_S1673C1, 3,
  &(vtc_S1673C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(224,148), // object size
  NSPAIRA(_ZTI7S1673C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1673C1),31, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1681C3  : S1679C4_nt {
  virtual void  v4(); // _ZN7S1681C32v4Ev
  virtual void  v5(); // _ZN7S1681C32v5Ev
  virtual void  v6(); // _ZN7S1681C32v6Ev
  virtual void  v7(); // _ZN7S1681C32v7Ev
  virtual void  v8(); // _ZN7S1681C32v8Ev
  virtual void  v9(); // _ZN7S1681C32v9Ev
  virtual void  v10(); // _ZN7S1681C33v10Ev
  virtual void  v11(); // _ZN7S1681C33v11Ev
  virtual void  v12(); // _ZN7S1681C33v12Ev
  virtual void  v13(); // _ZN7S1681C33v13Ev
  virtual void  v14(); // _ZN7S1681C33v14Ev
  virtual void  v15(); // _ZN7S1681C33v15Ev
  ~S1681C3(); // tgen
  S1681C3(); // tgen
};
//SIG(-1 S1681C3) C1{ BC2{ vd m Fi} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


void  S1681C3 ::v4(){vfunc_called(this, "_ZN7S1681C32v4Ev");}
void  S1681C3 ::v5(){vfunc_called(this, "_ZN7S1681C32v5Ev");}
void  S1681C3 ::v6(){vfunc_called(this, "_ZN7S1681C32v6Ev");}
void  S1681C3 ::v7(){vfunc_called(this, "_ZN7S1681C32v7Ev");}
void  S1681C3 ::v8(){vfunc_called(this, "_ZN7S1681C32v8Ev");}
void  S1681C3 ::v9(){vfunc_called(this, "_ZN7S1681C32v9Ev");}
void  S1681C3 ::v10(){vfunc_called(this, "_ZN7S1681C33v10Ev");}
void  S1681C3 ::v11(){vfunc_called(this, "_ZN7S1681C33v11Ev");}
void  S1681C3 ::v12(){vfunc_called(this, "_ZN7S1681C33v12Ev");}
void  S1681C3 ::v13(){vfunc_called(this, "_ZN7S1681C33v13Ev");}
void  S1681C3 ::v14(){vfunc_called(this, "_ZN7S1681C33v14Ev");}
void  S1681C3 ::v15(){vfunc_called(this, "_ZN7S1681C33v15Ev");}
S1681C3 ::~S1681C3(){ note_dtor("S1681C3", this);} // tgen
S1681C3 ::S1681C3(){ note_ctor("S1681C3", this);} // tgen

static void Test_S1681C3()
{
  extern Class_Descriptor cd_S1681C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1681C3, buf);
    S1681C3 *dp, &lv = *(dp=new (buf) S1681C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1681C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1681C3)");
    check_base_class_offset(lv, (S1679C4_nt*), 0, "S1681C3");
    test_class_info(&lv, &cd_S1681C3);
    dp->~S1681C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1681C3(Test_S1681C3, "S1681C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S1681C3C1Ev();
extern void _ZN7S1681C3D1Ev();
Name_Map name_map_S1681C3[] = {
  NSPAIR(_ZN7S1681C3C1Ev),
  NSPAIR(_ZN7S1681C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
static Base_Class bases_S1681C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1681C3[];
extern void _ZN7S1681C3D1Ev();
extern void _ZN7S1681C3D0Ev();
extern void _ZN7S1681C32v4Ev();
extern void _ZN7S1681C32v5Ev();
extern void _ZN7S1681C32v6Ev();
extern void _ZN7S1681C32v7Ev();
extern void _ZN7S1681C32v8Ev();
extern void _ZN7S1681C32v9Ev();
extern void _ZN7S1681C33v10Ev();
extern void _ZN7S1681C33v11Ev();
extern void _ZN7S1681C33v12Ev();
extern void _ZN7S1681C33v13Ev();
extern void _ZN7S1681C33v14Ev();
extern void _ZN7S1681C33v15Ev();
static  VTBL_ENTRY vtc_S1681C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1681C3[0]),
  (VTBL_ENTRY)&_ZN7S1681C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1681C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1681C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1681C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1681C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1681C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1681C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1681C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1681C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1681C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1681C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1681C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1681C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1681C33v15Ev,
};
extern VTBL_ENTRY _ZTI7S1681C3[];
extern  VTBL_ENTRY _ZTV7S1681C3[];
Class_Descriptor cd_S1681C3 = {  "S1681C3", // class name
  bases_S1681C3, 1,
  &(vtc_S1681C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S1681C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1681C3),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1681C2  : S1681C3 {
  ::S79C38_nt s1681c2f0;
  ::S17777C6_nt s1681c2f1;
  ::S1679C8_nt s1681c2f2;
  int s1681c2f3[4];
  ::S4533C11_nt s1681c2f4;
  void *s1681c2f5[4];
  virtual  ~S1681C2(); // _ZN7S1681C2D1Ev
  virtual void  v16(); // _ZN7S1681C23v16Ev
  virtual void  v17(); // _ZN7S1681C23v17Ev
  virtual void  v18(); // _ZN7S1681C23v18Ev
  virtual void  v19(); // _ZN7S1681C23v19Ev
  virtual void  v20(); // _ZN7S1681C23v20Ev
  virtual void  v21(); // _ZN7S1681C23v21Ev
  virtual void  v22(); // _ZN7S1681C23v22Ev
  virtual void  v23(); // _ZN7S1681C23v23Ev
  virtual void  v24(); // _ZN7S1681C23v24Ev
  virtual void  v25(); // _ZN7S1681C23v25Ev
  virtual void  v26(); // _ZN7S1681C23v26Ev
  virtual void  v27(); // _ZN7S1681C23v27Ev
  virtual void  v28(); // _ZN7S1681C23v28Ev
  S1681C2(); // tgen
};
//SIG(-1 S1681C2) C1{ BC2{ BC3{ vd m Fi} v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 FC4{ m Fp[2]} FC5{ m Fp} FC6{ m FC7{ m Fp Fi[2] FC8{ m}} Fp[2]} Fi[4] FC9{ m Fp} Fp[4]}


 S1681C2 ::~S1681C2(){ note_dtor("S1681C2", this);}
void  S1681C2 ::v16(){vfunc_called(this, "_ZN7S1681C23v16Ev");}
void  S1681C2 ::v17(){vfunc_called(this, "_ZN7S1681C23v17Ev");}
void  S1681C2 ::v18(){vfunc_called(this, "_ZN7S1681C23v18Ev");}
void  S1681C2 ::v19(){vfunc_called(this, "_ZN7S1681C23v19Ev");}
void  S1681C2 ::v20(){vfunc_called(this, "_ZN7S1681C23v20Ev");}
void  S1681C2 ::v21(){vfunc_called(this, "_ZN7S1681C23v21Ev");}
void  S1681C2 ::v22(){vfunc_called(this, "_ZN7S1681C23v22Ev");}
void  S1681C2 ::v23(){vfunc_called(this, "_ZN7S1681C23v23Ev");}
void  S1681C2 ::v24(){vfunc_called(this, "_ZN7S1681C23v24Ev");}
void  S1681C2 ::v25(){vfunc_called(this, "_ZN7S1681C23v25Ev");}
void  S1681C2 ::v26(){vfunc_called(this, "_ZN7S1681C23v26Ev");}
void  S1681C2 ::v27(){vfunc_called(this, "_ZN7S1681C23v27Ev");}
void  S1681C2 ::v28(){vfunc_called(this, "_ZN7S1681C23v28Ev");}
S1681C2 ::S1681C2(){ note_ctor("S1681C2", this);} // tgen

static void Test_S1681C2()
{
  extern Class_Descriptor cd_S1681C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,21)];
    init_test(&cd_S1681C2, buf);
    S1681C2 *dp, &lv = *(dp=new (buf) S1681C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,80), "sizeof(S1681C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1681C2)");
    check_base_class_offset(lv, (S1679C4_nt*)(S1681C3*), 0, "S1681C2");
    check_base_class_offset(lv, (S1681C3*), 0, "S1681C2");
    check_field_offset(lv, s1681c2f0, ABISELECT(16,8), "S1681C2.s1681c2f0");
    check_field_offset(lv, s1681c2f1, ABISELECT(32,16), "S1681C2.s1681c2f1");
    check_field_offset(lv, s1681c2f2, ABISELECT(40,20), "S1681C2.s1681c2f2");
    check_field_offset(lv, s1681c2f3, ABISELECT(80,44), "S1681C2.s1681c2f3");
    check_field_offset(lv, s1681c2f4, ABISELECT(96,60), "S1681C2.s1681c2f4");
    check_field_offset(lv, s1681c2f5, ABISELECT(104,64), "S1681C2.s1681c2f5");
    test_class_info(&lv, &cd_S1681C2);
    dp->~S1681C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1681C2(Test_S1681C2, "S1681C2", ABISELECT(136,80));

#else // __cplusplus

extern void _ZN7S1681C2C1Ev();
extern void _ZN7S1681C2D1Ev();
Name_Map name_map_S1681C2[] = {
  NSPAIR(_ZN7S1681C2C1Ev),
  NSPAIR(_ZN7S1681C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
extern Class_Descriptor cd_S1681C3;
extern VTBL_ENTRY _ZTI7S1681C3[];
extern  VTBL_ENTRY _ZTV7S1681C3[];
static Base_Class bases_S1681C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1681C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1681C2[];
extern void _ZN7S1681C2D1Ev();
extern void _ZN7S1681C2D0Ev();
extern void _ZN7S1681C32v4Ev();
extern void _ZN7S1681C32v5Ev();
extern void _ZN7S1681C32v6Ev();
extern void _ZN7S1681C32v7Ev();
extern void _ZN7S1681C32v8Ev();
extern void _ZN7S1681C32v9Ev();
extern void _ZN7S1681C33v10Ev();
extern void _ZN7S1681C33v11Ev();
extern void _ZN7S1681C33v12Ev();
extern void _ZN7S1681C33v13Ev();
extern void _ZN7S1681C33v14Ev();
extern void _ZN7S1681C33v15Ev();
extern void _ZN7S1681C23v16Ev();
extern void _ZN7S1681C23v17Ev();
extern void _ZN7S1681C23v18Ev();
extern void _ZN7S1681C23v19Ev();
extern void _ZN7S1681C23v20Ev();
extern void _ZN7S1681C23v21Ev();
extern void _ZN7S1681C23v22Ev();
extern void _ZN7S1681C23v23Ev();
extern void _ZN7S1681C23v24Ev();
extern void _ZN7S1681C23v25Ev();
extern void _ZN7S1681C23v26Ev();
extern void _ZN7S1681C23v27Ev();
extern void _ZN7S1681C23v28Ev();
static  VTBL_ENTRY vtc_S1681C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1681C2[0]),
  (VTBL_ENTRY)&_ZN7S1681C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1681C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1681C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1681C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1681C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1681C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1681C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1681C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1681C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1681C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1681C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1681C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1681C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1681C33v15Ev,
  (VTBL_ENTRY)&_ZN7S1681C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1681C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1681C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1681C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1681C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1681C23v21Ev,
  (VTBL_ENTRY)&_ZN7S1681C23v22Ev,
  (VTBL_ENTRY)&_ZN7S1681C23v23Ev,
  (VTBL_ENTRY)&_ZN7S1681C23v24Ev,
  (VTBL_ENTRY)&_ZN7S1681C23v25Ev,
  (VTBL_ENTRY)&_ZN7S1681C23v26Ev,
  (VTBL_ENTRY)&_ZN7S1681C23v27Ev,
  (VTBL_ENTRY)&_ZN7S1681C23v28Ev,
};
extern VTBL_ENTRY _ZTI7S1681C2[];
extern  VTBL_ENTRY _ZTV7S1681C2[];
Class_Descriptor cd_S1681C2 = {  "S1681C2", // class name
  bases_S1681C2, 2,
  &(vtc_S1681C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,80), // object size
  NSPAIRA(_ZTI7S1681C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1681C2),29, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1681C11  {
  void *s1681c11f0[2];
  ::S5266C19_nt s1681c11f1;
  ::S5266C19_nt s1681c11f2;
  void  mf1681c11(); // _ZN8S1681C119mf1681c11Ev
};
//SIG(-1 S1681C11) C1{ m Fp[2] FC2{ m Fp Fi FC3{ m}} FC2}


void  S1681C11 ::mf1681c11(){}

static void Test_S1681C11()
{
  {
    init_simple_test("S1681C11");
    S1681C11 lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S1681C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1681C11)");
    check_field_offset(lv, s1681c11f0, 0, "S1681C11.s1681c11f0");
    check_field_offset(lv, s1681c11f1, ABISELECT(16,8), "S1681C11.s1681c11f1");
    check_field_offset(lv, s1681c11f2, ABISELECT(32,20), "S1681C11.s1681c11f2");
  }
}
static Arrange_To_Call_Me vS1681C11(Test_S1681C11, "S1681C11", ABISELECT(48,32));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1681C1  : S1681C2 {
  void *s1681c1f0;
  ::S1681C11 s1681c1f1;
  virtual  ~S1681C1(); // _ZN7S1681C1D1Ev
  virtual void  v1(); // _ZN7S1681C12v1Ev
  virtual void  v2(); // _ZN7S1681C12v2Ev
  virtual void  v3(); // _ZN7S1681C12v3Ev
  S1681C1(); // tgen
};
//SIG(1 S1681C1) C1{ BC2{ BC3{ BC4{ vd m Fi} v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15} vd v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 FC5{ m Fp[2]} FC6{ m Fp} FC7{ m FC8{ m Fp Fi[2] FC9{ m}} Fp[2]} Fi[4] FC10{ m Fp} Fp[4]} vd v1 v2 v3 Fp FC11{ m Fp[2] FC12{ m Fp Fi FC13{ m}} FC12}}


 S1681C1 ::~S1681C1(){ note_dtor("S1681C1", this);}
void  S1681C1 ::v1(){vfunc_called(this, "_ZN7S1681C12v1Ev");}
void  S1681C1 ::v2(){vfunc_called(this, "_ZN7S1681C12v2Ev");}
void  S1681C1 ::v3(){vfunc_called(this, "_ZN7S1681C12v3Ev");}
S1681C1 ::S1681C1(){ note_ctor("S1681C1", this);} // tgen

static void Test_S1681C1()
{
  extern Class_Descriptor cd_S1681C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,30)];
    init_test(&cd_S1681C1, buf);
    S1681C1 *dp, &lv = *(dp=new (buf) S1681C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,116), "sizeof(S1681C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1681C1)");
    check_base_class_offset(lv, (S1679C4_nt*)(S1681C3*)(S1681C2*), 0, "S1681C1");
    check_base_class_offset(lv, (S1681C3*)(S1681C2*), 0, "S1681C1");
    check_base_class_offset(lv, (S1681C2*), 0, "S1681C1");
    check_field_offset(lv, s1681c1f0, ABISELECT(136,80), "S1681C1.s1681c1f0");
    check_field_offset(lv, s1681c1f1, ABISELECT(144,84), "S1681C1.s1681c1f1");
    test_class_info(&lv, &cd_S1681C1);
    dp->~S1681C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1681C1(Test_S1681C1, "S1681C1", ABISELECT(192,116));

#else // __cplusplus

extern void _ZN7S1681C1C1Ev();
extern void _ZN7S1681C1D1Ev();
Name_Map name_map_S1681C1[] = {
  NSPAIR(_ZN7S1681C1C1Ev),
  NSPAIR(_ZN7S1681C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
extern Class_Descriptor cd_S1681C3;
extern VTBL_ENTRY _ZTI7S1681C3[];
extern  VTBL_ENTRY _ZTV7S1681C3[];
extern Class_Descriptor cd_S1681C2;
extern VTBL_ENTRY _ZTI7S1681C2[];
extern  VTBL_ENTRY _ZTV7S1681C2[];
static Base_Class bases_S1681C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1681C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1681C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1681C1[];
extern void _ZN7S1681C1D1Ev();
extern void _ZN7S1681C1D0Ev();
extern void _ZN7S1681C32v4Ev();
extern void _ZN7S1681C32v5Ev();
extern void _ZN7S1681C32v6Ev();
extern void _ZN7S1681C32v7Ev();
extern void _ZN7S1681C32v8Ev();
extern void _ZN7S1681C32v9Ev();
extern void _ZN7S1681C33v10Ev();
extern void _ZN7S1681C33v11Ev();
extern void _ZN7S1681C33v12Ev();
extern void _ZN7S1681C33v13Ev();
extern void _ZN7S1681C33v14Ev();
extern void _ZN7S1681C33v15Ev();
extern void _ZN7S1681C23v16Ev();
extern void _ZN7S1681C23v17Ev();
extern void _ZN7S1681C23v18Ev();
extern void _ZN7S1681C23v19Ev();
extern void _ZN7S1681C23v20Ev();
extern void _ZN7S1681C23v21Ev();
extern void _ZN7S1681C23v22Ev();
extern void _ZN7S1681C23v23Ev();
extern void _ZN7S1681C23v24Ev();
extern void _ZN7S1681C23v25Ev();
extern void _ZN7S1681C23v26Ev();
extern void _ZN7S1681C23v27Ev();
extern void _ZN7S1681C23v28Ev();
extern void _ZN7S1681C12v1Ev();
extern void _ZN7S1681C12v2Ev();
extern void _ZN7S1681C12v3Ev();
static  VTBL_ENTRY vtc_S1681C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1681C1[0]),
  (VTBL_ENTRY)&_ZN7S1681C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1681C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1681C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1681C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1681C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1681C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1681C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1681C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1681C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1681C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1681C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1681C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1681C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1681C33v15Ev,
  (VTBL_ENTRY)&_ZN7S1681C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1681C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1681C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1681C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1681C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1681C23v21Ev,
  (VTBL_ENTRY)&_ZN7S1681C23v22Ev,
  (VTBL_ENTRY)&_ZN7S1681C23v23Ev,
  (VTBL_ENTRY)&_ZN7S1681C23v24Ev,
  (VTBL_ENTRY)&_ZN7S1681C23v25Ev,
  (VTBL_ENTRY)&_ZN7S1681C23v26Ev,
  (VTBL_ENTRY)&_ZN7S1681C23v27Ev,
  (VTBL_ENTRY)&_ZN7S1681C23v28Ev,
  (VTBL_ENTRY)&_ZN7S1681C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1681C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1681C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S1681C1[];
extern  VTBL_ENTRY _ZTV7S1681C1[];
Class_Descriptor cd_S1681C1 = {  "S1681C1", // class name
  bases_S1681C1, 3,
  &(vtc_S1681C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,116), // object size
  NSPAIRA(_ZTI7S1681C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1681C1),32, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20360C2  {
  virtual void  v7(); // _ZN8S20360C22v7Ev
  virtual void  v8(); // _ZN8S20360C22v8Ev
  virtual void  v9(); // _ZN8S20360C22v9Ev
  virtual void  v10(); // _ZN8S20360C23v10Ev
  virtual void  v11(); // _ZN8S20360C23v11Ev
  ~S20360C2(); // tgen
  S20360C2(); // tgen
};
//SIG(-1 S20360C2) C1{ v1 v2 v3 v4 v5}


void  S20360C2 ::v7(){vfunc_called(this, "_ZN8S20360C22v7Ev");}
void  S20360C2 ::v8(){vfunc_called(this, "_ZN8S20360C22v8Ev");}
void  S20360C2 ::v9(){vfunc_called(this, "_ZN8S20360C22v9Ev");}
void  S20360C2 ::v10(){vfunc_called(this, "_ZN8S20360C23v10Ev");}
void  S20360C2 ::v11(){vfunc_called(this, "_ZN8S20360C23v11Ev");}
S20360C2 ::~S20360C2(){ note_dtor("S20360C2", this);} // tgen
S20360C2 ::S20360C2(){ note_ctor("S20360C2", this);} // tgen

static void Test_S20360C2()
{
  extern Class_Descriptor cd_S20360C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20360C2, buf);
    S20360C2 *dp, &lv = *(dp=new (buf) S20360C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20360C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20360C2)");
    test_class_info(&lv, &cd_S20360C2);
    dp->~S20360C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20360C2(Test_S20360C2, "S20360C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S20360C2C1Ev();
extern void _ZN8S20360C2D1Ev();
Name_Map name_map_S20360C2[] = {
  NSPAIR(_ZN8S20360C2C1Ev),
  NSPAIR(_ZN8S20360C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20360C2[];
extern void _ZN8S20360C22v7Ev();
extern void _ZN8S20360C22v8Ev();
extern void _ZN8S20360C22v9Ev();
extern void _ZN8S20360C23v10Ev();
extern void _ZN8S20360C23v11Ev();
static  VTBL_ENTRY vtc_S20360C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20360C2[0]),
  (VTBL_ENTRY)&_ZN8S20360C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20360C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20360C22v9Ev,
  (VTBL_ENTRY)&_ZN8S20360C23v10Ev,
  (VTBL_ENTRY)&_ZN8S20360C23v11Ev,
};
extern VTBL_ENTRY _ZTI8S20360C2[];
extern  VTBL_ENTRY _ZTV8S20360C2[];
Class_Descriptor cd_S20360C2 = {  "S20360C2", // class name
  0,0,//no base classes
  &(vtc_S20360C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20360C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20360C2),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20360C4  {
  virtual void  v12(); // _ZN8S20360C43v12Ev
  ~S20360C4(); // tgen
  S20360C4(); // tgen
};
//SIG(-1 S20360C4) C1{ v1}


void  S20360C4 ::v12(){vfunc_called(this, "_ZN8S20360C43v12Ev");}
S20360C4 ::~S20360C4(){ note_dtor("S20360C4", this);} // tgen
S20360C4 ::S20360C4(){ note_ctor("S20360C4", this);} // tgen

static void Test_S20360C4()
{
  extern Class_Descriptor cd_S20360C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20360C4, buf);
    S20360C4 *dp, &lv = *(dp=new (buf) S20360C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20360C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20360C4)");
    test_class_info(&lv, &cd_S20360C4);
    dp->~S20360C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20360C4(Test_S20360C4, "S20360C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S20360C4C1Ev();
extern void _ZN8S20360C4D1Ev();
Name_Map name_map_S20360C4[] = {
  NSPAIR(_ZN8S20360C4C1Ev),
  NSPAIR(_ZN8S20360C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20360C4[];
extern void _ZN8S20360C43v12Ev();
static  VTBL_ENTRY vtc_S20360C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20360C4[0]),
  (VTBL_ENTRY)&_ZN8S20360C43v12Ev,
};
extern VTBL_ENTRY _ZTI8S20360C4[];
extern  VTBL_ENTRY _ZTV8S20360C4[];
Class_Descriptor cd_S20360C4 = {  "S20360C4", // class name
  0,0,//no base classes
  &(vtc_S20360C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20360C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20360C4),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20360C5  {
  int s20360c5f0;
  virtual void  v13(); // _ZN8S20360C53v13Ev
  virtual void  v14(); // _ZN8S20360C53v14Ev
  virtual void  v15(); // _ZN8S20360C53v15Ev
  ~S20360C5(); // tgen
  S20360C5(); // tgen
};
//SIG(-1 S20360C5) C1{ v1 v2 v3 Fi}


void  S20360C5 ::v13(){vfunc_called(this, "_ZN8S20360C53v13Ev");}
void  S20360C5 ::v14(){vfunc_called(this, "_ZN8S20360C53v14Ev");}
void  S20360C5 ::v15(){vfunc_called(this, "_ZN8S20360C53v15Ev");}
S20360C5 ::~S20360C5(){ note_dtor("S20360C5", this);} // tgen
S20360C5 ::S20360C5(){ note_ctor("S20360C5", this);} // tgen

static void Test_S20360C5()
{
  extern Class_Descriptor cd_S20360C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20360C5, buf);
    S20360C5 *dp, &lv = *(dp=new (buf) S20360C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20360C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20360C5)");
    check_field_offset(lv, s20360c5f0, ABISELECT(8,4), "S20360C5.s20360c5f0");
    test_class_info(&lv, &cd_S20360C5);
    dp->~S20360C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20360C5(Test_S20360C5, "S20360C5", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S20360C5C1Ev();
extern void _ZN8S20360C5D1Ev();
Name_Map name_map_S20360C5[] = {
  NSPAIR(_ZN8S20360C5C1Ev),
  NSPAIR(_ZN8S20360C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20360C5[];
extern void _ZN8S20360C53v13Ev();
extern void _ZN8S20360C53v14Ev();
extern void _ZN8S20360C53v15Ev();
static  VTBL_ENTRY vtc_S20360C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20360C5[0]),
  (VTBL_ENTRY)&_ZN8S20360C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20360C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20360C53v15Ev,
};
extern VTBL_ENTRY _ZTI8S20360C5[];
extern  VTBL_ENTRY _ZTV8S20360C5[];
Class_Descriptor cd_S20360C5 = {  "S20360C5", // class name
  0,0,//no base classes
  &(vtc_S20360C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20360C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20360C5),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20360C8  {
  virtual void  v16(); // _ZN8S20360C83v16Ev
  ~S20360C8(); // tgen
  S20360C8(); // tgen
};
//SIG(-1 S20360C8) C1{ v1}


void  S20360C8 ::v16(){vfunc_called(this, "_ZN8S20360C83v16Ev");}
S20360C8 ::~S20360C8(){ note_dtor("S20360C8", this);} // tgen
S20360C8 ::S20360C8(){ note_ctor("S20360C8", this);} // tgen

static void Test_S20360C8()
{
  extern Class_Descriptor cd_S20360C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20360C8, buf);
    S20360C8 *dp, &lv = *(dp=new (buf) S20360C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20360C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20360C8)");
    test_class_info(&lv, &cd_S20360C8);
    dp->~S20360C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20360C8(Test_S20360C8, "S20360C8", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S20360C8C1Ev();
extern void _ZN8S20360C8D1Ev();
Name_Map name_map_S20360C8[] = {
  NSPAIR(_ZN8S20360C8C1Ev),
  NSPAIR(_ZN8S20360C8D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20360C8[];
extern void _ZN8S20360C83v16Ev();
static  VTBL_ENTRY vtc_S20360C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20360C8[0]),
  (VTBL_ENTRY)&_ZN8S20360C83v16Ev,
};
extern VTBL_ENTRY _ZTI8S20360C8[];
extern  VTBL_ENTRY _ZTV8S20360C8[];
Class_Descriptor cd_S20360C8 = {  "S20360C8", // class name
  0,0,//no base classes
  &(vtc_S20360C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20360C8),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20360C8),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20360C7  : S20360C8 {
  virtual void  v17(); // _ZN8S20360C73v17Ev
  virtual void  v18(); // _ZN8S20360C73v18Ev
  virtual void  v19(); // _ZN8S20360C73v19Ev
  ~S20360C7(); // tgen
  S20360C7(); // tgen
};
//SIG(-1 S20360C7) C1{ BC2{ v4} v1 v2 v3}


void  S20360C7 ::v17(){vfunc_called(this, "_ZN8S20360C73v17Ev");}
void  S20360C7 ::v18(){vfunc_called(this, "_ZN8S20360C73v18Ev");}
void  S20360C7 ::v19(){vfunc_called(this, "_ZN8S20360C73v19Ev");}
S20360C7 ::~S20360C7(){ note_dtor("S20360C7", this);} // tgen
S20360C7 ::S20360C7(){ note_ctor("S20360C7", this);} // tgen

static void Test_S20360C7()
{
  extern Class_Descriptor cd_S20360C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20360C7, buf);
    S20360C7 *dp, &lv = *(dp=new (buf) S20360C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20360C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20360C7)");
    check_base_class_offset(lv, (S20360C8*), 0, "S20360C7");
    test_class_info(&lv, &cd_S20360C7);
    dp->~S20360C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20360C7(Test_S20360C7, "S20360C7", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S20360C7C1Ev();
extern void _ZN8S20360C7D1Ev();
Name_Map name_map_S20360C7[] = {
  NSPAIR(_ZN8S20360C7C1Ev),
  NSPAIR(_ZN8S20360C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20360C8;
extern VTBL_ENTRY _ZTI8S20360C8[];
extern  VTBL_ENTRY _ZTV8S20360C8[];
static Base_Class bases_S20360C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20360C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20360C7[];
extern void _ZN8S20360C83v16Ev();
extern void _ZN8S20360C73v17Ev();
extern void _ZN8S20360C73v18Ev();
extern void _ZN8S20360C73v19Ev();
static  VTBL_ENTRY vtc_S20360C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20360C7[0]),
  (VTBL_ENTRY)&_ZN8S20360C83v16Ev,
  (VTBL_ENTRY)&_ZN8S20360C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20360C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20360C73v19Ev,
};
extern VTBL_ENTRY _ZTI8S20360C7[];
extern  VTBL_ENTRY _ZTV8S20360C7[];
Class_Descriptor cd_S20360C7 = {  "S20360C7", // class name
  bases_S20360C7, 1,
  &(vtc_S20360C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20360C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20360C7),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20360C6  : virtual S20360C7 , S20360C8 {
  int s20360c6f0;
  virtual void  v20(); // _ZN8S20360C63v20Ev
  virtual void  v21(); // _ZN8S20360C63v21Ev
  virtual void  v22(); // _ZN8S20360C63v22Ev
  virtual void  v23(); // _ZN8S20360C63v23Ev
  virtual void  v24(); // _ZN8S20360C63v24Ev
  virtual void  v25(); // _ZN8S20360C63v25Ev
  ~S20360C6(); // tgen
  S20360C6(); // tgen
};
//SIG(-1 S20360C6) C1{ VBC2{ BC3{ v7} v8 v9 v10} BC3 v1 v2 v3 v4 v5 v6 Fi}


void  S20360C6 ::v20(){vfunc_called(this, "_ZN8S20360C63v20Ev");}
void  S20360C6 ::v21(){vfunc_called(this, "_ZN8S20360C63v21Ev");}
void  S20360C6 ::v22(){vfunc_called(this, "_ZN8S20360C63v22Ev");}
void  S20360C6 ::v23(){vfunc_called(this, "_ZN8S20360C63v23Ev");}
void  S20360C6 ::v24(){vfunc_called(this, "_ZN8S20360C63v24Ev");}
void  S20360C6 ::v25(){vfunc_called(this, "_ZN8S20360C63v25Ev");}
S20360C6 ::~S20360C6(){ note_dtor("S20360C6", this);} // tgen
S20360C6 ::S20360C6(){ note_ctor("S20360C6", this);} // tgen

static void Test_S20360C6()
{
  extern Class_Descriptor cd_S20360C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20360C6, buf);
    S20360C6 *dp, &lv = *(dp=new (buf) S20360C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20360C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20360C6)");
    check_base_class_offset(lv, (S20360C8*)(S20360C7*), ABISELECT(16,8), "S20360C6");
    check_base_class_offset(lv, (S20360C7*), ABISELECT(16,8), "S20360C6");
    /*is_ambiguous_... S20360C6::S20360C8 */ AMB_check_base_class_offset(lv, (S20360C8*), 0, "S20360C6");
    check_field_offset(lv, s20360c6f0, ABISELECT(8,4), "S20360C6.s20360c6f0");
    test_class_info(&lv, &cd_S20360C6);
    dp->~S20360C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20360C6(Test_S20360C6, "S20360C6", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S20360C6C1Ev();
extern void _ZN8S20360C6D1Ev();
Name_Map name_map_S20360C6[] = {
  NSPAIR(_ZN8S20360C6C1Ev),
  NSPAIR(_ZN8S20360C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20360C8;
extern VTBL_ENTRY _ZTI8S20360C8[];
extern  VTBL_ENTRY _ZTV8S20360C8[];
extern Class_Descriptor cd_S20360C7;
extern VTBL_ENTRY _ZTI8S20360C7[];
extern  VTBL_ENTRY _ZTV8S20360C7[];
extern Class_Descriptor cd_S20360C8;
extern VTBL_ENTRY _ZTI8S20360C8[];
extern  VTBL_ENTRY _ZTV8S20360C8[];
static Base_Class bases_S20360C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20360C8,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20360C7,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20360C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20360C6[];
extern void _ZN8S20360C83v16Ev();
extern void _ZN8S20360C63v20Ev();
extern void _ZN8S20360C63v21Ev();
extern void _ZN8S20360C63v22Ev();
extern void _ZN8S20360C63v23Ev();
extern void _ZN8S20360C63v24Ev();
extern void _ZN8S20360C63v25Ev();
extern void _ZN8S20360C83v16Ev();
extern void _ZN8S20360C73v17Ev();
extern void _ZN8S20360C73v18Ev();
extern void _ZN8S20360C73v19Ev();
static  VTBL_ENTRY vtc_S20360C6[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20360C6[0]),
  (VTBL_ENTRY)&_ZN8S20360C83v16Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v22Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v23Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v24Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v25Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20360C6[0]),
  (VTBL_ENTRY)&_ZN8S20360C83v16Ev,
  (VTBL_ENTRY)&_ZN8S20360C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20360C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20360C73v19Ev,
};
extern VTBL_ENTRY _ZTV8S20360C6[];
static  VTT_ENTRY vtt_S20360C6[] = {
  {&(_ZTV8S20360C6[3]),  3,20},
  {&(_ZTV8S20360C6[16]),  16,20},
};
extern VTBL_ENTRY _ZTI8S20360C6[];
extern  VTBL_ENTRY _ZTV8S20360C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20360C6[];
Class_Descriptor cd_S20360C6 = {  "S20360C6", // class name
  bases_S20360C6, 3,
  &(vtc_S20360C6[0]), // expected_vtbl_contents
  &(vtt_S20360C6[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S20360C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20360C6),20, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20360C6),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20360C3  : virtual S20360C2 , S20360C4 , S20360C5 , S20360C6 {
  int s20360c3f0;
  __tsi64 s20360c3f1;
  virtual void  v26(); // _ZN8S20360C33v26Ev
  virtual void  v27(); // _ZN8S20360C33v27Ev
  virtual void  v28(); // _ZN8S20360C33v28Ev
  virtual void  v29(); // _ZN8S20360C33v29Ev
  virtual void  v30(); // _ZN8S20360C33v30Ev
  virtual void  v31(); // _ZN8S20360C33v31Ev
  ~S20360C3(); // tgen
  S20360C3(); // tgen
};
//SIG(-1 S20360C3) C1{ VBC2{ v7 v8 v9 v10 v11} BC3{ v12} BC4{ v13 v14 v15 Fi} BC5{ VBC6{ BC7{ v16} v17 v18 v19} BC7 v20 v21 v22 v23 v24 v25 Fi} v1 v2 v3 v4 v5 v6 Fi FL}


void  S20360C3 ::v26(){vfunc_called(this, "_ZN8S20360C33v26Ev");}
void  S20360C3 ::v27(){vfunc_called(this, "_ZN8S20360C33v27Ev");}
void  S20360C3 ::v28(){vfunc_called(this, "_ZN8S20360C33v28Ev");}
void  S20360C3 ::v29(){vfunc_called(this, "_ZN8S20360C33v29Ev");}
void  S20360C3 ::v30(){vfunc_called(this, "_ZN8S20360C33v30Ev");}
void  S20360C3 ::v31(){vfunc_called(this, "_ZN8S20360C33v31Ev");}
S20360C3 ::~S20360C3(){ note_dtor("S20360C3", this);} // tgen
S20360C3 ::S20360C3(){ note_ctor("S20360C3", this);} // tgen

static void Test_S20360C3()
{
  extern Class_Descriptor cd_S20360C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,11)];
    init_test(&cd_S20360C3, buf);
    S20360C3 *dp, &lv = *(dp=new (buf) S20360C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,40), "sizeof(S20360C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20360C3)");
    check_base_class_offset(lv, (S20360C2*), ABISELECT(48,32), "S20360C3");
    check_base_class_offset(lv, (S20360C4*), 0, "S20360C3");
    check_base_class_offset(lv, (S20360C5*), ABISELECT(8,4), "S20360C3");
    check_base_class_offset(lv, (S20360C8*)(S20360C7*), ABISELECT(56,36), "S20360C3");
    check_base_class_offset(lv, (S20360C7*)(S20360C6*), ABISELECT(56,36), "S20360C3");
    /*is_ambiguous_... S20360C6::S20360C8 */ AMB_check_base_class_offset(lv, (S20360C8*)(S20360C6*), ABISELECT(24,12), "S20360C3");
    check_base_class_offset(lv, (S20360C6*), ABISELECT(24,12), "S20360C3");
    check_field_offset(lv, s20360c3f0, ABISELECT(36,20), "S20360C3.s20360c3f0");
    check_field_offset(lv, s20360c3f1, ABISELECT(40,24), "S20360C3.s20360c3f1");
    test_class_info(&lv, &cd_S20360C3);
    dp->~S20360C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20360C3(Test_S20360C3, "S20360C3", ABISELECT(64,40));

#else // __cplusplus

extern void _ZN8S20360C3C1Ev();
extern void _ZN8S20360C3D1Ev();
Name_Map name_map_S20360C3[] = {
  NSPAIR(_ZN8S20360C3C1Ev),
  NSPAIR(_ZN8S20360C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20360C2;
extern VTBL_ENTRY _ZTI8S20360C2[];
extern  VTBL_ENTRY _ZTV8S20360C2[];
extern Class_Descriptor cd_S20360C4;
extern VTBL_ENTRY _ZTI8S20360C4[];
extern  VTBL_ENTRY _ZTV8S20360C4[];
extern Class_Descriptor cd_S20360C5;
extern VTBL_ENTRY _ZTI8S20360C5[];
extern  VTBL_ENTRY _ZTV8S20360C5[];
extern Class_Descriptor cd_S20360C8;
extern VTBL_ENTRY _ZTI8S20360C8[];
extern  VTBL_ENTRY _ZTV8S20360C8[];
extern Class_Descriptor cd_S20360C7;
extern VTBL_ENTRY _ZTI8S20360C7[];
extern  VTBL_ENTRY _ZTV8S20360C7[];
extern Class_Descriptor cd_S20360C8;
extern VTBL_ENTRY _ZTI8S20360C8[];
extern  VTBL_ENTRY _ZTV8S20360C8[];
extern Class_Descriptor cd_S20360C6;
extern VTBL_ENTRY _ZTI8S20360C6[];
extern  VTBL_ENTRY _ZTV8S20360C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20360C6[];
static Base_Class bases_S20360C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20360C2,    ABISELECT(48,32), //bcp->offset
    26, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20360C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20360C5,    ABISELECT(8,4), //bcp->offset
    11, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20360C8,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20360C7,    ABISELECT(56,36), //bcp->offset
    38, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20360C8,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20360C6,    ABISELECT(24,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20360C3[];
extern void _ZN8S20360C43v12Ev();
extern void _ZN8S20360C33v26Ev();
extern void _ZN8S20360C33v27Ev();
extern void _ZN8S20360C33v28Ev();
extern void _ZN8S20360C33v29Ev();
extern void _ZN8S20360C33v30Ev();
extern void _ZN8S20360C33v31Ev();
extern void _ZN8S20360C53v13Ev();
extern void _ZN8S20360C53v14Ev();
extern void _ZN8S20360C53v15Ev();
extern void _ZN8S20360C83v16Ev();
extern void _ZN8S20360C63v20Ev();
extern void _ZN8S20360C63v21Ev();
extern void _ZN8S20360C63v22Ev();
extern void _ZN8S20360C63v23Ev();
extern void _ZN8S20360C63v24Ev();
extern void _ZN8S20360C63v25Ev();
extern void _ZN8S20360C22v7Ev();
extern void _ZN8S20360C22v8Ev();
extern void _ZN8S20360C22v9Ev();
extern void _ZN8S20360C23v10Ev();
extern void _ZN8S20360C23v11Ev();
extern void _ZN8S20360C83v16Ev();
extern void _ZN8S20360C73v17Ev();
extern void _ZN8S20360C73v18Ev();
extern void _ZN8S20360C73v19Ev();
static  VTBL_ENTRY vtc_S20360C3[] = {
  ABISELECT(56,36),
  ABISELECT(48,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S20360C3[0]),
  (VTBL_ENTRY)&_ZN8S20360C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20360C33v26Ev,
  (VTBL_ENTRY)&_ZN8S20360C33v27Ev,
  (VTBL_ENTRY)&_ZN8S20360C33v28Ev,
  (VTBL_ENTRY)&_ZN8S20360C33v29Ev,
  (VTBL_ENTRY)&_ZN8S20360C33v30Ev,
  (VTBL_ENTRY)&_ZN8S20360C33v31Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20360C3[0]),
  (VTBL_ENTRY)&_ZN8S20360C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20360C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20360C53v15Ev,
  ABISELECT(32,24),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20360C3[0]),
  (VTBL_ENTRY)&_ZN8S20360C83v16Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v22Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v23Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v24Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v25Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S20360C3[0]),
  (VTBL_ENTRY)&_ZN8S20360C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20360C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20360C22v9Ev,
  (VTBL_ENTRY)&_ZN8S20360C23v10Ev,
  (VTBL_ENTRY)&_ZN8S20360C23v11Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S20360C3[0]),
  (VTBL_ENTRY)&_ZN8S20360C83v16Ev,
  (VTBL_ENTRY)&_ZN8S20360C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20360C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20360C73v19Ev,
};
extern VTBL_ENTRY _ZTV8S20360C3[];
extern void _ZN8S20360C83v16Ev();
extern void _ZN8S20360C63v20Ev();
extern void _ZN8S20360C63v21Ev();
extern void _ZN8S20360C63v22Ev();
extern void _ZN8S20360C63v23Ev();
extern void _ZN8S20360C63v24Ev();
extern void _ZN8S20360C63v25Ev();
static  VTBL_ENTRY _tg__ZTV8S20360C6__8S20360C3[] = {
  ABISELECT(32,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20360C6[0]),
  (VTBL_ENTRY)&_ZN8S20360C83v16Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v22Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v23Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v24Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v25Ev,
};
extern void _ZN8S20360C83v16Ev();
extern void _ZN8S20360C73v17Ev();
extern void _ZN8S20360C73v18Ev();
extern void _ZN8S20360C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20360C7__8S20360C6__8S20360C3[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S20360C6[0]),
  (VTBL_ENTRY)&_ZN8S20360C83v16Ev,
  (VTBL_ENTRY)&_ZN8S20360C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20360C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20360C73v19Ev,
};
static  VTT_ENTRY vtt_S20360C3[] = {
  {&(_ZTV8S20360C3[4]),  4,48},
  {&(_tg__ZTV8S20360C6__8S20360C3[3]),  3,10},
  {&(_tg__ZTV8S20360C7__8S20360C6__8S20360C3[6]),  6,10},
  {&(_ZTV8S20360C3[33]),  33,48},
  {&(_ZTV8S20360C3[19]),  19,48},
  {&(_ZTV8S20360C3[44]),  44,48},
};
extern VTBL_ENTRY _ZTI8S20360C3[];
extern  VTBL_ENTRY _ZTV8S20360C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20360C3[];
Class_Descriptor cd_S20360C3 = {  "S20360C3", // class name
  bases_S20360C3, 7,
  &(vtc_S20360C3[0]), // expected_vtbl_contents
  &(vtt_S20360C3[0]), // expected_vtt_contents
  ABISELECT(64,40), // object size
  NSPAIRA(_ZTI8S20360C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20360C3),48, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20360C3),6, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20360C9  : S20360C8 , virtual S20360C7 , S20360C6 {
  char s20360c9f0;
  virtual void  v32(); // _ZN8S20360C93v32Ev
  virtual void  v33(); // _ZN8S20360C93v33Ev
  virtual void  v34(); // _ZN8S20360C93v34Ev
  virtual void  v35(); // _ZN8S20360C93v35Ev
  virtual void  v36(); // _ZN8S20360C93v36Ev
  virtual void  v37(); // _ZN8S20360C93v37Ev
  virtual void  v38(); // _ZN8S20360C93v38Ev
  ~S20360C9(); // tgen
  S20360C9(); // tgen
};
//SIG(-1 S20360C9) C1{ BC2{ v8} VBC3{ BC2 v9 v10 v11} BC4{ VBC3 BC2 v12 v13 v14 v15 v16 v17 Fi} v1 v2 v3 v4 v5 v6 v7 Fc}


void  S20360C9 ::v32(){vfunc_called(this, "_ZN8S20360C93v32Ev");}
void  S20360C9 ::v33(){vfunc_called(this, "_ZN8S20360C93v33Ev");}
void  S20360C9 ::v34(){vfunc_called(this, "_ZN8S20360C93v34Ev");}
void  S20360C9 ::v35(){vfunc_called(this, "_ZN8S20360C93v35Ev");}
void  S20360C9 ::v36(){vfunc_called(this, "_ZN8S20360C93v36Ev");}
void  S20360C9 ::v37(){vfunc_called(this, "_ZN8S20360C93v37Ev");}
void  S20360C9 ::v38(){vfunc_called(this, "_ZN8S20360C93v38Ev");}
S20360C9 ::~S20360C9(){ note_dtor("S20360C9", this);} // tgen
S20360C9 ::S20360C9(){ note_ctor("S20360C9", this);} // tgen

static void Test_S20360C9()
{
  extern Class_Descriptor cd_S20360C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S20360C9, buf);
    S20360C9 *dp, &lv = *(dp=new (buf) S20360C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S20360C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20360C9)");
    /*is_ambiguous_... S20360C9::S20360C8 */ AMB_check_base_class_offset(lv, (S20360C8*), 0, "S20360C9");
    check_base_class_offset(lv, (S20360C8*)(S20360C7*), ABISELECT(24,16), "S20360C9");
    check_base_class_offset(lv, (S20360C7*), ABISELECT(24,16), "S20360C9");
    check_base_class_offset(lv, (S20360C7*)(S20360C6*), ABISELECT(24,16), "S20360C9");
    /*is_ambiguous_... S20360C6::S20360C8 */ AMB_check_base_class_offset(lv, (S20360C8*)(S20360C6*), ABISELECT(8,4), "S20360C9");
    check_base_class_offset(lv, (S20360C6*), ABISELECT(8,4), "S20360C9");
    check_field_offset(lv, s20360c9f0, ABISELECT(20,12), "S20360C9.s20360c9f0");
    test_class_info(&lv, &cd_S20360C9);
    dp->~S20360C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20360C9(Test_S20360C9, "S20360C9", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S20360C9C1Ev();
extern void _ZN8S20360C9D1Ev();
Name_Map name_map_S20360C9[] = {
  NSPAIR(_ZN8S20360C9C1Ev),
  NSPAIR(_ZN8S20360C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20360C8;
extern VTBL_ENTRY _ZTI8S20360C8[];
extern  VTBL_ENTRY _ZTV8S20360C8[];
extern Class_Descriptor cd_S20360C8;
extern VTBL_ENTRY _ZTI8S20360C8[];
extern  VTBL_ENTRY _ZTV8S20360C8[];
extern Class_Descriptor cd_S20360C7;
extern VTBL_ENTRY _ZTI8S20360C7[];
extern  VTBL_ENTRY _ZTV8S20360C7[];
extern Class_Descriptor cd_S20360C8;
extern VTBL_ENTRY _ZTI8S20360C8[];
extern  VTBL_ENTRY _ZTV8S20360C8[];
extern Class_Descriptor cd_S20360C6;
extern VTBL_ENTRY _ZTI8S20360C6[];
extern  VTBL_ENTRY _ZTV8S20360C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20360C6[];
static Base_Class bases_S20360C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20360C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20360C8,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20360C7,    ABISELECT(24,16), //bcp->offset
    21, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20360C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20360C6,    ABISELECT(8,4), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20360C9[];
extern void _ZN8S20360C83v16Ev();
extern void _ZN8S20360C93v32Ev();
extern void _ZN8S20360C93v33Ev();
extern void _ZN8S20360C93v34Ev();
extern void _ZN8S20360C93v35Ev();
extern void _ZN8S20360C93v36Ev();
extern void _ZN8S20360C93v37Ev();
extern void _ZN8S20360C93v38Ev();
extern void _ZN8S20360C83v16Ev();
extern void _ZN8S20360C63v20Ev();
extern void _ZN8S20360C63v21Ev();
extern void _ZN8S20360C63v22Ev();
extern void _ZN8S20360C63v23Ev();
extern void _ZN8S20360C63v24Ev();
extern void _ZN8S20360C63v25Ev();
extern void _ZN8S20360C83v16Ev();
extern void _ZN8S20360C73v17Ev();
extern void _ZN8S20360C73v18Ev();
extern void _ZN8S20360C73v19Ev();
static  VTBL_ENTRY vtc_S20360C9[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20360C9[0]),
  (VTBL_ENTRY)&_ZN8S20360C83v16Ev,
  (VTBL_ENTRY)&_ZN8S20360C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20360C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20360C93v34Ev,
  (VTBL_ENTRY)&_ZN8S20360C93v35Ev,
  (VTBL_ENTRY)&_ZN8S20360C93v36Ev,
  (VTBL_ENTRY)&_ZN8S20360C93v37Ev,
  (VTBL_ENTRY)&_ZN8S20360C93v38Ev,
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20360C9[0]),
  (VTBL_ENTRY)&_ZN8S20360C83v16Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v22Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v23Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v24Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v25Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20360C9[0]),
  (VTBL_ENTRY)&_ZN8S20360C83v16Ev,
  (VTBL_ENTRY)&_ZN8S20360C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20360C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20360C73v19Ev,
};
extern VTBL_ENTRY _ZTV8S20360C9[];
extern void _ZN8S20360C83v16Ev();
extern void _ZN8S20360C63v20Ev();
extern void _ZN8S20360C63v21Ev();
extern void _ZN8S20360C63v22Ev();
extern void _ZN8S20360C63v23Ev();
extern void _ZN8S20360C63v24Ev();
extern void _ZN8S20360C63v25Ev();
static  VTBL_ENTRY _tg__ZTV8S20360C6__8S20360C9[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20360C6[0]),
  (VTBL_ENTRY)&_ZN8S20360C83v16Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v22Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v23Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v24Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v25Ev,
};
extern void _ZN8S20360C83v16Ev();
extern void _ZN8S20360C73v17Ev();
extern void _ZN8S20360C73v18Ev();
extern void _ZN8S20360C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20360C7__8S20360C6__8S20360C9[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20360C6[0]),
  (VTBL_ENTRY)&_ZN8S20360C83v16Ev,
  (VTBL_ENTRY)&_ZN8S20360C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20360C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20360C73v19Ev,
};
static  VTT_ENTRY vtt_S20360C9[] = {
  {&(_ZTV8S20360C9[3]),  3,31},
  {&(_tg__ZTV8S20360C6__8S20360C9[3]),  3,10},
  {&(_tg__ZTV8S20360C7__8S20360C6__8S20360C9[6]),  6,10},
  {&(_ZTV8S20360C9[27]),  27,31},
  {&(_ZTV8S20360C9[14]),  14,31},
};
extern VTBL_ENTRY _ZTI8S20360C9[];
extern  VTBL_ENTRY _ZTV8S20360C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20360C9[];
Class_Descriptor cd_S20360C9 = {  "S20360C9", // class name
  bases_S20360C9, 5,
  &(vtc_S20360C9[0]), // expected_vtbl_contents
  &(vtt_S20360C9[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S20360C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20360C9),31, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20360C9),5, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20360C10  : virtual S20360C8 {
  virtual  ~S20360C10(); // _ZN9S20360C10D2Ev
  virtual void  v39(); // _ZN9S20360C103v39Ev
  S20360C10(); // tgen
};
//SIG(-1 S20360C10) C1{ VBC2{ v2} vd v1}


 S20360C10 ::~S20360C10(){ note_dtor("S20360C10", this);}
void  S20360C10 ::v39(){vfunc_called(this, "_ZN9S20360C103v39Ev");}
S20360C10 ::S20360C10(){ note_ctor("S20360C10", this);} // tgen

static void Test_S20360C10()
{
  extern Class_Descriptor cd_S20360C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20360C10, buf);
    S20360C10 *dp, &lv = *(dp=new (buf) S20360C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20360C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20360C10)");
    check_base_class_offset(lv, (S20360C8*), 0, "S20360C10");
    test_class_info(&lv, &cd_S20360C10);
    dp->~S20360C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20360C10(Test_S20360C10, "S20360C10", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN9S20360C10C1Ev();
extern void _ZN9S20360C10D2Ev();
Name_Map name_map_S20360C10[] = {
  NSPAIR(_ZN9S20360C10C1Ev),
  NSPAIR(_ZN9S20360C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20360C8;
extern VTBL_ENTRY _ZTI8S20360C8[];
extern  VTBL_ENTRY _ZTV8S20360C8[];
static Base_Class bases_S20360C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20360C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20360C10[];
extern void _ZN8S20360C83v16Ev();
extern void _ZN9S20360C10D1Ev();
extern void _ZN9S20360C10D0Ev();
extern void _ZN9S20360C103v39Ev();
static  VTBL_ENTRY vtc_S20360C10[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20360C10[0]),
  (VTBL_ENTRY)&_ZN8S20360C83v16Ev,
  (VTBL_ENTRY)&_ZN9S20360C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20360C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20360C103v39Ev,
};
extern VTBL_ENTRY _ZTV9S20360C10[];
static  VTT_ENTRY vtt_S20360C10[] = {
  {&(_ZTV9S20360C10[4]),  4,8},
  {&(_ZTV9S20360C10[4]),  4,8},
};
extern VTBL_ENTRY _ZTI9S20360C10[];
extern  VTBL_ENTRY _ZTV9S20360C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20360C10[];
Class_Descriptor cd_S20360C10 = {  "S20360C10", // class name
  bases_S20360C10, 1,
  &(vtc_S20360C10[0]), // expected_vtbl_contents
  &(vtt_S20360C10[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S20360C10),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20360C10),8, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20360C10),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20360C1  : virtual S20360C2 , S20360C3 , S20360C9 , virtual S20360C10 {
  ::S20360C2 s20360c1f0;
  __tsi64 s20360c1f1;
  virtual  ~S20360C1(); // _ZN8S20360C1D2Ev
  virtual void  v1(); // _ZN8S20360C12v1Ev
  virtual void  v2(); // _ZN8S20360C12v2Ev
  virtual void  v3(); // _ZN8S20360C12v3Ev
  virtual void  v4(); // _ZN8S20360C12v4Ev
  virtual void  v5(); // _ZN8S20360C12v5Ev
  virtual void  v6(); // _ZN8S20360C12v6Ev
  S20360C1(); // tgen
};
//SIG(1 S20360C1) C1{ VBC2{ v7 v8 v9 v10 v11} BC3{ VBC2 BC4{ v12} BC5{ v13 v14 v15 Fi} BC6{ VBC7{ BC8{ v16} v17 v18 v19} BC8 v20 v21 v22 v23 v24 v25 Fi} v26 v27 v28 v29 v30 v31 Fi FL} BC9{ BC8 VBC7 BC6 v32 v33 v34 v35 v36 v37 v38 Fc} VBC10{ VBC8 vd v39} vd v1 v2 v3 v4 v5 v6 FC2 FL}


 S20360C1 ::~S20360C1(){ note_dtor("S20360C1", this);}
void  S20360C1 ::v1(){vfunc_called(this, "_ZN8S20360C12v1Ev");}
void  S20360C1 ::v2(){vfunc_called(this, "_ZN8S20360C12v2Ev");}
void  S20360C1 ::v3(){vfunc_called(this, "_ZN8S20360C12v3Ev");}
void  S20360C1 ::v4(){vfunc_called(this, "_ZN8S20360C12v4Ev");}
void  S20360C1 ::v5(){vfunc_called(this, "_ZN8S20360C12v5Ev");}
void  S20360C1 ::v6(){vfunc_called(this, "_ZN8S20360C12v6Ev");}
S20360C1 ::S20360C1(){ note_ctor("S20360C1", this);} // tgen

static void Test_S20360C1()
{
  extern Class_Descriptor cd_S20360C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,19)];
    init_test(&cd_S20360C1, buf);
    S20360C1 *dp, &lv = *(dp=new (buf) S20360C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,72), "sizeof(S20360C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20360C1)");
    check_base_class_offset(lv, (S20360C2*), ABISELECT(88,60), "S20360C1");
    check_base_class_offset(lv, (S20360C2*)(S20360C3*), ABISELECT(88,60), "S20360C1");
    check_base_class_offset(lv, (S20360C4*)(S20360C3*), 0, "S20360C1");
    check_base_class_offset(lv, (S20360C5*)(S20360C3*), ABISELECT(8,4), "S20360C1");
    check_base_class_offset(lv, (S20360C8*)(S20360C7*), ABISELECT(96,64), "S20360C1");
    check_base_class_offset(lv, (S20360C7*)(S20360C6*)(S20360C3*), ABISELECT(96,64), "S20360C1");
    check_base_class_offset(lv, (S20360C7*)(S20360C9*), ABISELECT(96,64), "S20360C1");
    check_base_class_offset(lv, (S20360C7*)(S20360C6*)(S20360C9*), ABISELECT(96,64), "S20360C1");
    /*is_ambiguous_... S20360C6::S20360C8 */ AMB_check_base_class_offset(lv, (S20360C8*)(S20360C6*)(S20360C3*), ABISELECT(24,12), "S20360C1");
    check_base_class_offset(lv, (S20360C6*)(S20360C3*), ABISELECT(24,12), "S20360C1");
    check_base_class_offset(lv, (S20360C3*), 0, "S20360C1");
    /*is_ambiguous_... S20360C9::S20360C8 */ AMB_check_base_class_offset(lv, (S20360C8*)(S20360C9*), ABISELECT(48,32), "S20360C1");
    /*is_ambiguous_... S20360C6::S20360C8 */ AMB_check_base_class_offset(lv, (S20360C8*)(S20360C6*)(S20360C9*), ABISELECT(56,36), "S20360C1");
    check_base_class_offset(lv, (S20360C6*)(S20360C9*), ABISELECT(56,36), "S20360C1");
    check_base_class_offset(lv, (S20360C9*), ABISELECT(48,32), "S20360C1");
    check_base_class_offset(lv, (S20360C8*)(S20360C10*), ABISELECT(104,68), "S20360C1");
    check_base_class_offset(lv, (S20360C10*), ABISELECT(104,68), "S20360C1");
    check_field_offset(lv, s20360c1f0, ABISELECT(72,48), "S20360C1.s20360c1f0");
    check_field_offset(lv, s20360c1f1, ABISELECT(80,52), "S20360C1.s20360c1f1");
    test_class_info(&lv, &cd_S20360C1);
    dp->~S20360C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20360C1(Test_S20360C1, "S20360C1", ABISELECT(112,72));

#else // __cplusplus

extern void _ZN8S20360C1C1Ev();
extern void _ZN8S20360C1D2Ev();
Name_Map name_map_S20360C1[] = {
  NSPAIR(_ZN8S20360C1C1Ev),
  NSPAIR(_ZN8S20360C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20360C2;
extern VTBL_ENTRY _ZTI8S20360C2[];
extern  VTBL_ENTRY _ZTV8S20360C2[];
extern Class_Descriptor cd_S20360C4;
extern VTBL_ENTRY _ZTI8S20360C4[];
extern  VTBL_ENTRY _ZTV8S20360C4[];
extern Class_Descriptor cd_S20360C5;
extern VTBL_ENTRY _ZTI8S20360C5[];
extern  VTBL_ENTRY _ZTV8S20360C5[];
extern Class_Descriptor cd_S20360C8;
extern VTBL_ENTRY _ZTI8S20360C8[];
extern  VTBL_ENTRY _ZTV8S20360C8[];
extern Class_Descriptor cd_S20360C7;
extern VTBL_ENTRY _ZTI8S20360C7[];
extern  VTBL_ENTRY _ZTV8S20360C7[];
extern Class_Descriptor cd_S20360C8;
extern VTBL_ENTRY _ZTI8S20360C8[];
extern  VTBL_ENTRY _ZTV8S20360C8[];
extern Class_Descriptor cd_S20360C6;
extern VTBL_ENTRY _ZTI8S20360C6[];
extern  VTBL_ENTRY _ZTV8S20360C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20360C6[];
extern Class_Descriptor cd_S20360C3;
extern VTBL_ENTRY _ZTI8S20360C3[];
extern  VTBL_ENTRY _ZTV8S20360C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20360C3[];
extern Class_Descriptor cd_S20360C8;
extern VTBL_ENTRY _ZTI8S20360C8[];
extern  VTBL_ENTRY _ZTV8S20360C8[];
extern Class_Descriptor cd_S20360C8;
extern VTBL_ENTRY _ZTI8S20360C8[];
extern  VTBL_ENTRY _ZTV8S20360C8[];
extern Class_Descriptor cd_S20360C6;
extern VTBL_ENTRY _ZTI8S20360C6[];
extern  VTBL_ENTRY _ZTV8S20360C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20360C6[];
extern Class_Descriptor cd_S20360C9;
extern VTBL_ENTRY _ZTI8S20360C9[];
extern  VTBL_ENTRY _ZTV8S20360C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20360C9[];
extern Class_Descriptor cd_S20360C8;
extern VTBL_ENTRY _ZTI8S20360C8[];
extern  VTBL_ENTRY _ZTV8S20360C8[];
extern Class_Descriptor cd_S20360C10;
extern VTBL_ENTRY _ZTI9S20360C10[];
extern  VTBL_ENTRY _ZTV9S20360C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20360C10[];
static Base_Class bases_S20360C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20360C2,    ABISELECT(88,60), //bcp->offset
    57, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20360C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20360C5,    ABISELECT(8,4), //bcp->offset
    21, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20360C8,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20360C7,    ABISELECT(96,64), //bcp->offset
    69, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20360C8,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20360C6,    ABISELECT(24,12), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20360C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20360C8,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20360C8,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20360C6,    ABISELECT(56,36), //bcp->offset
    47, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20360C9,    ABISELECT(48,32), //bcp->offset
    36, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20360C8,    ABISELECT(104,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20360C10,    ABISELECT(104,68), //bcp->offset
    79, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20360C1[];
extern void _ZN8S20360C43v12Ev();
extern void _ZN8S20360C33v26Ev();
extern void _ZN8S20360C33v27Ev();
extern void _ZN8S20360C33v28Ev();
extern void _ZN8S20360C33v29Ev();
extern void _ZN8S20360C33v30Ev();
extern void _ZN8S20360C33v31Ev();
extern void _ZN8S20360C1D1Ev();
extern void _ZN8S20360C1D0Ev();
extern void _ZN8S20360C12v1Ev();
extern void _ZN8S20360C12v2Ev();
extern void _ZN8S20360C12v3Ev();
extern void _ZN8S20360C12v4Ev();
extern void _ZN8S20360C12v5Ev();
extern void _ZN8S20360C12v6Ev();
extern void _ZN8S20360C53v13Ev();
extern void _ZN8S20360C53v14Ev();
extern void _ZN8S20360C53v15Ev();
extern void _ZN8S20360C83v16Ev();
extern void _ZN8S20360C63v20Ev();
extern void _ZN8S20360C63v21Ev();
extern void _ZN8S20360C63v22Ev();
extern void _ZN8S20360C63v23Ev();
extern void _ZN8S20360C63v24Ev();
extern void _ZN8S20360C63v25Ev();
extern void _ZN8S20360C83v16Ev();
extern void _ZN8S20360C93v32Ev();
extern void _ZN8S20360C93v33Ev();
extern void _ZN8S20360C93v34Ev();
extern void _ZN8S20360C93v35Ev();
extern void _ZN8S20360C93v36Ev();
extern void _ZN8S20360C93v37Ev();
extern void _ZN8S20360C93v38Ev();
extern void _ZN8S20360C83v16Ev();
extern void _ZN8S20360C63v20Ev();
extern void _ZN8S20360C63v21Ev();
extern void _ZN8S20360C63v22Ev();
extern void _ZN8S20360C63v23Ev();
extern void _ZN8S20360C63v24Ev();
extern void _ZN8S20360C63v25Ev();
extern void _ZN8S20360C22v7Ev();
extern void _ZN8S20360C22v8Ev();
extern void _ZN8S20360C22v9Ev();
extern void _ZN8S20360C23v10Ev();
extern void _ZN8S20360C23v11Ev();
extern void _ZN8S20360C83v16Ev();
extern void _ZN8S20360C73v17Ev();
extern void _ZN8S20360C73v18Ev();
extern void _ZN8S20360C73v19Ev();
extern void _ZN8S20360C83v16Ev();
extern void ABISELECT(_ZTv0_n40_N8S20360C1D1Ev,_ZTv0_n20_N8S20360C1D1Ev)();
extern void ABISELECT(_ZThn104_N8S20360C1D1Ev,_ZThn68_N8S20360C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20360C1D0Ev,_ZTv0_n20_N8S20360C1D0Ev)();
extern void ABISELECT(_ZThn104_N8S20360C1D0Ev,_ZThn68_N8S20360C1D0Ev)() __attribute__((weak));
extern void _ZN9S20360C103v39Ev();
static  VTBL_ENTRY vtc_S20360C1[] = {
  ABISELECT(104,68),
  ABISELECT(104,68),
  ABISELECT(96,64),
  ABISELECT(88,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S20360C1[0]),
  (VTBL_ENTRY)&_ZN8S20360C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20360C33v26Ev,
  (VTBL_ENTRY)&_ZN8S20360C33v27Ev,
  (VTBL_ENTRY)&_ZN8S20360C33v28Ev,
  (VTBL_ENTRY)&_ZN8S20360C33v29Ev,
  (VTBL_ENTRY)&_ZN8S20360C33v30Ev,
  (VTBL_ENTRY)&_ZN8S20360C33v31Ev,
  (VTBL_ENTRY)&_ZN8S20360C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20360C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20360C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20360C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20360C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20360C12v4Ev,
  (VTBL_ENTRY)&_ZN8S20360C12v5Ev,
  (VTBL_ENTRY)&_ZN8S20360C12v6Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20360C1[0]),
  (VTBL_ENTRY)&_ZN8S20360C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20360C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20360C53v15Ev,
  ABISELECT(72,52),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20360C1[0]),
  (VTBL_ENTRY)&_ZN8S20360C83v16Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v22Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v23Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v24Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v25Ev,
  ABISELECT(48,32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S20360C1[0]),
  (VTBL_ENTRY)&_ZN8S20360C83v16Ev,
  (VTBL_ENTRY)&_ZN8S20360C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20360C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20360C93v34Ev,
  (VTBL_ENTRY)&_ZN8S20360C93v35Ev,
  (VTBL_ENTRY)&_ZN8S20360C93v36Ev,
  (VTBL_ENTRY)&_ZN8S20360C93v37Ev,
  (VTBL_ENTRY)&_ZN8S20360C93v38Ev,
  ABISELECT(40,28),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S20360C1[0]),
  (VTBL_ENTRY)&_ZN8S20360C83v16Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v22Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v23Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v24Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v25Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI8S20360C1[0]),
  (VTBL_ENTRY)&_ZN8S20360C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20360C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20360C22v9Ev,
  (VTBL_ENTRY)&_ZN8S20360C23v10Ev,
  (VTBL_ENTRY)&_ZN8S20360C23v11Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S20360C1[0]),
  (VTBL_ENTRY)&_ZN8S20360C83v16Ev,
  (VTBL_ENTRY)&_ZN8S20360C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20360C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20360C73v19Ev,
  0,
  ABISELECT(-104,-68),
  0,
  0,
  ABISELECT(-104,-68),
  (VTBL_ENTRY)&(_ZTI8S20360C1[0]),
  (VTBL_ENTRY)&_ZN8S20360C83v16Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20360C1D1Ev,_ZTv0_n20_N8S20360C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20360C1D0Ev,_ZTv0_n20_N8S20360C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20360C103v39Ev,
};
extern VTBL_ENTRY _ZTV8S20360C1[];
extern void _ZN8S20360C43v12Ev();
extern void _ZN8S20360C33v26Ev();
extern void _ZN8S20360C33v27Ev();
extern void _ZN8S20360C33v28Ev();
extern void _ZN8S20360C33v29Ev();
extern void _ZN8S20360C33v30Ev();
extern void _ZN8S20360C33v31Ev();
static  VTBL_ENTRY _tg__ZTV8S20360C3__8S20360C1[] = {
  ABISELECT(96,64),
  ABISELECT(88,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S20360C3[0]),
  (VTBL_ENTRY)&_ZN8S20360C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20360C33v26Ev,
  (VTBL_ENTRY)&_ZN8S20360C33v27Ev,
  (VTBL_ENTRY)&_ZN8S20360C33v28Ev,
  (VTBL_ENTRY)&_ZN8S20360C33v29Ev,
  (VTBL_ENTRY)&_ZN8S20360C33v30Ev,
  (VTBL_ENTRY)&_ZN8S20360C33v31Ev,
};
extern void _ZN8S20360C83v16Ev();
extern void _ZN8S20360C63v20Ev();
extern void _ZN8S20360C63v21Ev();
extern void _ZN8S20360C63v22Ev();
extern void _ZN8S20360C63v23Ev();
extern void _ZN8S20360C63v24Ev();
extern void _ZN8S20360C63v25Ev();
static  VTBL_ENTRY _tg__ZTV8S20360C68S20360C3__8S20360C1[] = {
  ABISELECT(72,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S20360C6[0]),
  (VTBL_ENTRY)&_ZN8S20360C83v16Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v22Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v23Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v24Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v25Ev,
};
extern void _ZN8S20360C83v16Ev();
extern void _ZN8S20360C73v17Ev();
extern void _ZN8S20360C73v18Ev();
extern void _ZN8S20360C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20360C7__8S20360C68S20360C3__8S20360C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-72,-52),
  (VTBL_ENTRY)&(_ZTI8S20360C6[0]),
  (VTBL_ENTRY)&_ZN8S20360C83v16Ev,
  (VTBL_ENTRY)&_ZN8S20360C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20360C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20360C73v19Ev,
};
extern void _ZN8S20360C22v7Ev();
extern void _ZN8S20360C22v8Ev();
extern void _ZN8S20360C22v9Ev();
extern void _ZN8S20360C23v10Ev();
extern void _ZN8S20360C23v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20360C2__8S20360C3__8S20360C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI8S20360C3[0]),
  (VTBL_ENTRY)&_ZN8S20360C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20360C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20360C22v9Ev,
  (VTBL_ENTRY)&_ZN8S20360C23v10Ev,
  (VTBL_ENTRY)&_ZN8S20360C23v11Ev,
};
extern void _ZN8S20360C83v16Ev();
extern void _ZN8S20360C63v20Ev();
extern void _ZN8S20360C63v21Ev();
extern void _ZN8S20360C63v22Ev();
extern void _ZN8S20360C63v23Ev();
extern void _ZN8S20360C63v24Ev();
extern void _ZN8S20360C63v25Ev();
static  VTBL_ENTRY _tg__ZTV8S20360C6__8S20360C3__8S20360C1[] = {
  ABISELECT(72,52),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20360C3[0]),
  (VTBL_ENTRY)&_ZN8S20360C83v16Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v22Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v23Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v24Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v25Ev,
};
extern void _ZN8S20360C83v16Ev();
extern void _ZN8S20360C73v17Ev();
extern void _ZN8S20360C73v18Ev();
extern void _ZN8S20360C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20360C7__8S20360C3__8S20360C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S20360C3[0]),
  (VTBL_ENTRY)&_ZN8S20360C83v16Ev,
  (VTBL_ENTRY)&_ZN8S20360C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20360C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20360C73v19Ev,
};
extern void _ZN8S20360C83v16Ev();
extern void _ZN8S20360C93v32Ev();
extern void _ZN8S20360C93v33Ev();
extern void _ZN8S20360C93v34Ev();
extern void _ZN8S20360C93v35Ev();
extern void _ZN8S20360C93v36Ev();
extern void _ZN8S20360C93v37Ev();
extern void _ZN8S20360C93v38Ev();
static  VTBL_ENTRY _tg__ZTV8S20360C9__8S20360C1[] = {
  ABISELECT(48,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S20360C9[0]),
  (VTBL_ENTRY)&_ZN8S20360C83v16Ev,
  (VTBL_ENTRY)&_ZN8S20360C93v32Ev,
  (VTBL_ENTRY)&_ZN8S20360C93v33Ev,
  (VTBL_ENTRY)&_ZN8S20360C93v34Ev,
  (VTBL_ENTRY)&_ZN8S20360C93v35Ev,
  (VTBL_ENTRY)&_ZN8S20360C93v36Ev,
  (VTBL_ENTRY)&_ZN8S20360C93v37Ev,
  (VTBL_ENTRY)&_ZN8S20360C93v38Ev,
};
extern void _ZN8S20360C83v16Ev();
extern void _ZN8S20360C63v20Ev();
extern void _ZN8S20360C63v21Ev();
extern void _ZN8S20360C63v22Ev();
extern void _ZN8S20360C63v23Ev();
extern void _ZN8S20360C63v24Ev();
extern void _ZN8S20360C63v25Ev();
static  VTBL_ENTRY _tg__ZTV8S20360C68S20360C9__A1__8S20360C1[] = {
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20360C6[0]),
  (VTBL_ENTRY)&_ZN8S20360C83v16Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v22Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v23Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v24Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v25Ev,
};
extern void _ZN8S20360C83v16Ev();
extern void _ZN8S20360C73v17Ev();
extern void _ZN8S20360C73v18Ev();
extern void _ZN8S20360C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20360C7__8S20360C68S20360C9__A1__8S20360C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S20360C6[0]),
  (VTBL_ENTRY)&_ZN8S20360C83v16Ev,
  (VTBL_ENTRY)&_ZN8S20360C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20360C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20360C73v19Ev,
};
extern void _ZN8S20360C83v16Ev();
extern void _ZN8S20360C73v17Ev();
extern void _ZN8S20360C73v18Ev();
extern void _ZN8S20360C73v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20360C7__8S20360C9__8S20360C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S20360C9[0]),
  (VTBL_ENTRY)&_ZN8S20360C83v16Ev,
  (VTBL_ENTRY)&_ZN8S20360C73v17Ev,
  (VTBL_ENTRY)&_ZN8S20360C73v18Ev,
  (VTBL_ENTRY)&_ZN8S20360C73v19Ev,
};
extern void _ZN8S20360C83v16Ev();
extern void _ZN8S20360C63v20Ev();
extern void _ZN8S20360C63v21Ev();
extern void _ZN8S20360C63v22Ev();
extern void _ZN8S20360C63v23Ev();
extern void _ZN8S20360C63v24Ev();
extern void _ZN8S20360C63v25Ev();
static  VTBL_ENTRY _tg__ZTV8S20360C6__8S20360C9__8S20360C1[] = {
  ABISELECT(40,28),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20360C9[0]),
  (VTBL_ENTRY)&_ZN8S20360C83v16Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v20Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v21Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v22Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v23Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v24Ev,
  (VTBL_ENTRY)&_ZN8S20360C63v25Ev,
};
extern void _ZN8S20360C83v16Ev();
extern void _ZN9S20360C10D1Ev();
extern void _ZN9S20360C10D0Ev();
extern void _ZN9S20360C103v39Ev();
static  VTBL_ENTRY _tg__ZTV9S20360C10__8S20360C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20360C10[0]),
  (VTBL_ENTRY)&_ZN8S20360C83v16Ev,
  (VTBL_ENTRY)&_ZN9S20360C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20360C10D0Ev,
  (VTBL_ENTRY)&_ZN9S20360C103v39Ev,
};
static  VTT_ENTRY vtt_S20360C1[] = {
  {&(_ZTV8S20360C1[6]),  6,89},
  {&(_tg__ZTV8S20360C3__8S20360C1[4]),  4,11},
  {&(_tg__ZTV8S20360C68S20360C3__8S20360C1[3]),  3,10},
  {&(_tg__ZTV8S20360C7__8S20360C68S20360C3__8S20360C1[6]),  6,10},
  {&(_tg__ZTV8S20360C2__8S20360C3__8S20360C1[7]),  7,12},
  {&(_tg__ZTV8S20360C6__8S20360C3__8S20360C1[3]),  3,10},
  {&(_tg__ZTV8S20360C7__8S20360C3__8S20360C1[6]),  6,10},
  {&(_tg__ZTV8S20360C9__8S20360C1[3]),  3,11},
  {&(_tg__ZTV8S20360C68S20360C9__A1__8S20360C1[3]),  3,10},
  {&(_tg__ZTV8S20360C7__8S20360C68S20360C9__A1__8S20360C1[6]),  6,10},
  {&(_tg__ZTV8S20360C7__8S20360C9__8S20360C1[6]),  6,10},
  {&(_tg__ZTV8S20360C6__8S20360C9__8S20360C1[3]),  3,10},
  {&(_ZTV8S20360C1[64]),  64,89},
  {&(_ZTV8S20360C1[29]),  29,89},
  {&(_ZTV8S20360C1[75]),  75,89},
  {&(_ZTV8S20360C1[39]),  39,89},
  {&(_ZTV8S20360C1[50]),  50,89},
  {&(_ZTV8S20360C1[85]),  85,89},
  {&(_ZTV8S20360C1[85]),  85,89},
  {&(_tg__ZTV9S20360C10__8S20360C1[4]),  4,8},
  {&(_tg__ZTV9S20360C10__8S20360C1[4]),  4,8},
};
extern VTBL_ENTRY _ZTI8S20360C1[];
extern  VTBL_ENTRY _ZTV8S20360C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20360C1[];
static VTBL_ENTRY alt_thunk_names80[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20360C1D0Ev,_ZTv0_n20_N8S20360C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S20360C1D0Ev,_ZThn68_N8S20360C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20360C1D1Ev,_ZTv0_n20_N8S20360C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S20360C1D1Ev,_ZThn68_N8S20360C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20360C1 = {  "S20360C1", // class name
  bases_S20360C1, 14,
  &(vtc_S20360C1[0]), // expected_vtbl_contents
  &(vtt_S20360C1[0]), // expected_vtt_contents
  ABISELECT(112,72), // object size
  NSPAIRA(_ZTI8S20360C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20360C1),89, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20360C1),21, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names80,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21037C9  : virtual S19905C19 {
  long double s21037c9f0;
  char s21037c9f1;
  short s21037c9f2[4];
  ~S21037C9(); // tgen
  S21037C9(); // tgen
};
//SIG(-1 S21037C9) C1{ VBC2{ vd m} FD Fc Fs[4]}


S21037C9 ::~S21037C9(){ note_dtor("S21037C9", this);} // tgen
S21037C9 ::S21037C9(){ note_ctor("S21037C9", this);} // tgen

static void Test_S21037C9()
{
  extern Class_Descriptor cd_S21037C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,8)];
    init_test(&cd_S21037C9, buf);
    S21037C9 *dp, &lv = *(dp=new (buf) S21037C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S21037C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21037C9)");
    check_base_class_offset(lv, (S19905C19*), 0, "S21037C9");
    check_field_offset(lv, s21037c9f0, ABISELECT(16,4), "S21037C9.s21037c9f0");
    check_field_offset(lv, s21037c9f1, ABISELECT(32,16), "S21037C9.s21037c9f1");
    check_field_offset(lv, s21037c9f2, ABISELECT(34,18), "S21037C9.s21037c9f2");
    test_class_info(&lv, &cd_S21037C9);
    dp->~S21037C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21037C9(Test_S21037C9, "S21037C9", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN8S21037C9C1Ev();
extern void _ZN8S21037C9D1Ev();
Name_Map name_map_S21037C9[] = {
  NSPAIR(_ZN8S21037C9C1Ev),
  NSPAIR(_ZN8S21037C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
static Base_Class bases_S21037C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19905C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21037C9[];
extern void _ZN8S21037C9D1Ev();
extern void _ZN8S21037C9D0Ev();
static  VTBL_ENTRY vtc_S21037C9[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C9[0]),
  (VTBL_ENTRY)&_ZN8S21037C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21037C9D0Ev,
};
extern VTBL_ENTRY _ZTV8S21037C9[];
static  VTT_ENTRY vtt_S21037C9[] = {
  {&(_ZTV8S21037C9[4]),  4,6},
  {&(_ZTV8S21037C9[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S21037C9[];
extern  VTBL_ENTRY _ZTV8S21037C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C9[];
Class_Descriptor cd_S21037C9 = {  "S21037C9", // class name
  bases_S21037C9, 1,
  &(vtc_S21037C9[0]), // expected_vtbl_contents
  &(vtt_S21037C9[0]), // expected_vtt_contents
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI8S21037C9),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21037C9),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21037C9),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21037C8  : virtual S19905C19 , virtual S21037C9 {
  int s21037c8f0;
  virtual  ~S21037C8(); // _ZN8S21037C8D2Ev
  S21037C8(); // tgen
};
//SIG(-1 S21037C8) C1{ VBC2{ vd m} VBC3{ VBC2 FD Fc Fs[4]} vd Fi}


 S21037C8 ::~S21037C8(){ note_dtor("S21037C8", this);}
S21037C8 ::S21037C8(){ note_ctor("S21037C8", this);} // tgen

static void Test_S21037C8()
{
  extern Class_Descriptor cd_S21037C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,10)];
    init_test(&cd_S21037C8, buf);
    S21037C8 *dp, &lv = *(dp=new (buf) S21037C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S21037C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21037C8)");
    check_base_class_offset(lv, (S19905C19*), 0, "S21037C8");
    check_base_class_offset(lv, (S19905C19*)(S21037C9*), 0, "S21037C8");
    check_base_class_offset(lv, (S21037C9*), ABISELECT(16,8), "S21037C8");
    check_field_offset(lv, s21037c8f0, ABISELECT(8,4), "S21037C8.s21037c8f0");
    test_class_info(&lv, &cd_S21037C8);
    dp->~S21037C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21037C8(Test_S21037C8, "S21037C8", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN8S21037C8C1Ev();
extern void _ZN8S21037C8D2Ev();
Name_Map name_map_S21037C8[] = {
  NSPAIR(_ZN8S21037C8C1Ev),
  NSPAIR(_ZN8S21037C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S21037C9;
extern VTBL_ENTRY _ZTI8S21037C9[];
extern  VTBL_ENTRY _ZTV8S21037C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C9[];
static Base_Class bases_S21037C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19905C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21037C9,    ABISELECT(16,8), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21037C8[];
extern void _ZN8S21037C8D1Ev();
extern void _ZN8S21037C8D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S21037C8D1Ev,_ZThn8_N8S21037C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S21037C8D0Ev,_ZThn8_N8S21037C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21037C8[] = {
  ABISELECT(16,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C8[0]),
  (VTBL_ENTRY)&_ZN8S21037C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21037C8D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21037C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S21037C8[];
extern void ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev)();
extern void _ZN8S21037C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev)();
extern void _ZN8S21037C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C9__8S21037C8[] = {
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S21037C9__8S21037C8[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S21037C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev),
};
static  VTT_ENTRY vtt_S21037C8[] = {
  {&(_ZTV8S21037C8[5]),  5,13},
  {&(_ZTV8S21037C8[5]),  5,13},
  {&(_ZTV8S21037C8[11]),  11,13},
  {&(_tg__ZTV8S21037C9__8S21037C8[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S21037C9__8S21037C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21037C8[];
extern  VTBL_ENTRY _ZTV8S21037C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C8[];
static VTBL_ENTRY alt_thunk_names81[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev), // 
  (VTBL_ENTRY)_ZN8S21037C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev), // 
  (VTBL_ENTRY)_ZN8S21037C9D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21037C8D0Ev,_ZThn8_N8S21037C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21037C8D1Ev,_ZThn8_N8S21037C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21037C8 = {  "S21037C8", // class name
  bases_S21037C8, 2,
  &(vtc_S21037C8[0]), // expected_vtbl_contents
  &(vtt_S21037C8[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI8S21037C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21037C8),13, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21037C8),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names81,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21037C6  : virtual S19905C19 , S21037C8 , S17777C6_nt {
  short s21037c6f0;
  __tsi64 s21037c6f1;
  void *s21037c6f2;
  __tsi64 s21037c6f3;
  virtual  ~S21037C6(); // _ZN8S21037C6D2Ev
  S21037C6(); // tgen
};
//SIG(-1 S21037C6) C1{ VBC2{ vd m} BC3{ VBC2 VBC4{ VBC2 FD Fc Fs[4]} vd Fi} BC5{ m Fp} vd Fs FL Fp FL}


 S21037C6 ::~S21037C6(){ note_dtor("S21037C6", this);}
S21037C6 ::S21037C6(){ note_ctor("S21037C6", this);} // tgen

static void Test_S21037C6()
{
  extern Class_Descriptor cd_S21037C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(8,17)];
    init_test(&cd_S21037C6, buf);
    S21037C6 *dp, &lv = *(dp=new (buf) S21037C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,64), "sizeof(S21037C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21037C6)");
    check_base_class_offset(lv, (S19905C19*), 0, "S21037C6");
    check_base_class_offset(lv, (S19905C19*)(S21037C8*), 0, "S21037C6");
    check_base_class_offset(lv, (S19905C19*)(S21037C9*), 0, "S21037C6");
    check_base_class_offset(lv, (S21037C9*)(S21037C8*), ABISELECT(64,36), "S21037C6");
    check_base_class_offset(lv, (S21037C8*), 0, "S21037C6");
    check_base_class_offset(lv, (S17777C6_nt*), ABISELECT(16,8), "S21037C6");
    check_field_offset(lv, s21037c6f0, ABISELECT(24,12), "S21037C6.s21037c6f0");
    check_field_offset(lv, s21037c6f1, ABISELECT(32,16), "S21037C6.s21037c6f1");
    check_field_offset(lv, s21037c6f2, ABISELECT(40,24), "S21037C6.s21037c6f2");
    check_field_offset(lv, s21037c6f3, ABISELECT(48,28), "S21037C6.s21037c6f3");
    test_class_info(&lv, &cd_S21037C6);
    dp->~S21037C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21037C6(Test_S21037C6, "S21037C6", ABISELECT(112,64));

#else // __cplusplus

extern void _ZN8S21037C6C1Ev();
extern void _ZN8S21037C6D2Ev();
Name_Map name_map_S21037C6[] = {
  NSPAIR(_ZN8S21037C6C1Ev),
  NSPAIR(_ZN8S21037C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S21037C9;
extern VTBL_ENTRY _ZTI8S21037C9[];
extern  VTBL_ENTRY _ZTV8S21037C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C9[];
extern Class_Descriptor cd_S21037C8;
extern VTBL_ENTRY _ZTI8S21037C8[];
extern  VTBL_ENTRY _ZTV8S21037C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C8[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
static Base_Class bases_S21037C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19905C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21037C9,    ABISELECT(64,36), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21037C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S17777C6_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21037C6[];
extern void _ZN8S21037C6D1Ev();
extern void _ZN8S21037C6D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev)();
extern void ABISELECT(_ZThn64_N8S21037C6D1Ev,_ZThn36_N8S21037C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev)();
extern void ABISELECT(_ZThn64_N8S21037C6D0Ev,_ZThn36_N8S21037C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21037C6[] = {
  ABISELECT(64,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C6[0]),
  (VTBL_ENTRY)&_ZN8S21037C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21037C6D0Ev,
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S21037C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S21037C6[];
extern void ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev)();
extern void _ZN8S21037C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev)();
extern void _ZN8S21037C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C8__8S21037C6[] = {
  ABISELECT(64,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev)();
extern void ABISELECT(_ZThn64_N8S21037C8D1Ev,_ZThn36_N8S21037C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev)();
extern void ABISELECT(_ZThn64_N8S21037C8D0Ev,_ZThn36_N8S21037C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C9__8S21037C8__8S21037C6[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S21037C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev)();
extern void _ZN8S21037C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev)();
extern void _ZN8S21037C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C9__8S21037C6[] = {
  ABISELECT(-64,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S21037C9__8S21037C6[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S21037C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev),
};
static  VTT_ENTRY vtt_S21037C6[] = {
  {&(_ZTV8S21037C6[5]),  5,13},
  {&(_tg__ZTV8S21037C8__8S21037C6[5]),  5,7},
  {&(_tg__ZTV8S21037C8__8S21037C6[5]),  5,7},
  {&(_tg__ZTV8S21037C9__8S21037C8__8S21037C6[4]),  4,6},
  {&(_ZTV8S21037C6[5]),  5,13},
  {&(_ZTV8S21037C6[11]),  11,13},
  {&(_tg__ZTV8S21037C9__8S21037C6[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S21037C9__8S21037C6[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21037C6[];
extern  VTBL_ENTRY _ZTV8S21037C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C6[];
static VTBL_ENTRY alt_thunk_names82[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev), // 
  (VTBL_ENTRY)_ZN8S21037C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev), // 
  (VTBL_ENTRY)_ZN8S21037C9D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21037C8D0Ev,_ZThn36_N8S21037C8D0Ev),
  (VTBL_ENTRY)_ZN8S21037C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21037C8D1Ev,_ZThn36_N8S21037C8D1Ev),
  (VTBL_ENTRY)_ZN8S21037C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21037C6D0Ev,_ZThn36_N8S21037C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21037C6D1Ev,_ZThn36_N8S21037C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21037C6 = {  "S21037C6", // class name
  bases_S21037C6, 4,
  &(vtc_S21037C6[0]), // expected_vtbl_contents
  &(vtt_S21037C6[0]), // expected_vtt_contents
  ABISELECT(112,64), // object size
  NSPAIRA(_ZTI8S21037C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21037C6),13, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21037C6),8, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names82,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21037C5  : virtual S21037C6 , S17777C6_nt , S19905C19 , S21037C9 {
  int s21037c5f0;
  virtual  ~S21037C5(); // _ZN8S21037C5D2Ev
  S21037C5(); // tgen
};
//SIG(-1 S21037C5) C1{ VBC2{ VBC3{ vd m} BC4{ VBC3 VBC5{ VBC3 FD Fc Fs[4]} vd Fi} BC6{ m Fp} vd Fs FL Fp FL} BC6 BC3 BC5 vd Fi}


 S21037C5 ::~S21037C5(){ note_dtor("S21037C5", this);}
S21037C5 ::S21037C5(){ note_ctor("S21037C5", this);} // tgen

static void Test_S21037C5()
{
  extern Class_Descriptor cd_S21037C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,27)];
    init_test(&cd_S21037C5, buf);
    S21037C5 *dp, &lv = *(dp=new (buf) S21037C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,104), "sizeof(S21037C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21037C5)");
    check_base_class_offset(lv, (S19905C19*)(S21037C6*), ABISELECT(64,40), "S21037C5");
    check_base_class_offset(lv, (S19905C19*)(S21037C8*)(S21037C6*), ABISELECT(64,40), "S21037C5");
    /*is_ambiguous_... S21037C5::S21037C9 */ AMB_check_base_class_offset(lv, (S19905C19*)(S21037C9*), ABISELECT(64,40), "S21037C5");
    /*is_ambiguous_... S21037C5::S21037C9 */ AMB_check_base_class_offset(lv, (S19905C19*)(S21037C9*), ABISELECT(64,40), "S21037C5");
    check_base_class_offset(lv, (S21037C9*)(S21037C8*)(S21037C6*), ABISELECT(128,76), "S21037C5");
    check_base_class_offset(lv, (S21037C8*)(S21037C6*), ABISELECT(64,40), "S21037C5");
    check_base_class_offset(lv, (S17777C6_nt*)(S21037C6*), ABISELECT(80,48), "S21037C5");
    check_base_class_offset(lv, (S21037C6*), ABISELECT(64,40), "S21037C5");
    /*is_ambiguous_... S21037C5::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*), ABISELECT(8,4), "S21037C5");
    /*is_ambiguous_... S21037C5::S19905C19 */ AMB_check_base_class_offset(lv, (S19905C19*), 0, "S21037C5");
    /*is_ambiguous_... S21037C5::S21037C9 */ AMB_check_base_class_offset(lv, (S21037C9*), ABISELECT(16,8), "S21037C5");
    check_field_offset(lv, s21037c5f0, ABISELECT(60,36), "S21037C5.s21037c5f0");
    test_class_info(&lv, &cd_S21037C5);
    dp->~S21037C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21037C5(Test_S21037C5, "S21037C5", ABISELECT(176,104));

#else // __cplusplus

extern void _ZN8S21037C5C1Ev();
extern void _ZN8S21037C5D2Ev();
Name_Map name_map_S21037C5[] = {
  NSPAIR(_ZN8S21037C5C1Ev),
  NSPAIR(_ZN8S21037C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S21037C9;
extern VTBL_ENTRY _ZTI8S21037C9[];
extern  VTBL_ENTRY _ZTV8S21037C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C9[];
extern Class_Descriptor cd_S21037C8;
extern VTBL_ENTRY _ZTI8S21037C8[];
extern  VTBL_ENTRY _ZTV8S21037C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C8[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S21037C6;
extern VTBL_ENTRY _ZTI8S21037C6[];
extern  VTBL_ENTRY _ZTV8S21037C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C6[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S21037C9;
extern VTBL_ENTRY _ZTI8S21037C9[];
extern  VTBL_ENTRY _ZTV8S21037C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C9[];
static Base_Class bases_S21037C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19905C19,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S21037C9,    ABISELECT(128,76), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21037C8,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21037C6,    ABISELECT(64,40), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S17777C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19905C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21037C9,    ABISELECT(16,8), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21037C5[];
extern void _ZN8S21037C5D1Ev();
extern void _ZN8S21037C5D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21037C5D1Ev,_ZTv0_n12_N8S21037C5D1Ev)();
extern void ABISELECT(_ZThn16_N8S21037C5D1Ev,_ZThn8_N8S21037C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C5D0Ev,_ZTv0_n12_N8S21037C5D0Ev)();
extern void ABISELECT(_ZThn16_N8S21037C5D0Ev,_ZThn8_N8S21037C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C5D1Ev,_ZTv0_n12_N8S21037C5D1Ev)();
extern void ABISELECT(_ZThn64_N8S21037C5D1Ev,_ZThn40_N8S21037C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C5D0Ev,_ZTv0_n12_N8S21037C5D0Ev)();
extern void ABISELECT(_ZThn64_N8S21037C5D0Ev,_ZThn40_N8S21037C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C5D1Ev,_ZTv0_n12_N8S21037C5D1Ev)();
extern void ABISELECT(_ZThn128_N8S21037C5D1Ev,_ZThn76_N8S21037C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C5D0Ev,_ZTv0_n12_N8S21037C5D0Ev)();
extern void ABISELECT(_ZThn128_N8S21037C5D0Ev,_ZThn76_N8S21037C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21037C5[] = {
  ABISELECT(128,76),
  ABISELECT(64,40),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C5[0]),
  (VTBL_ENTRY)&_ZN8S21037C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21037C5D0Ev,
  ABISELECT(48,32),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21037C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C5D1Ev,_ZTv0_n12_N8S21037C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C5D0Ev,_ZTv0_n12_N8S21037C5D0Ev),
  ABISELECT(64,36),
  0,
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S21037C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C5D1Ev,_ZTv0_n12_N8S21037C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C5D0Ev,_ZTv0_n12_N8S21037C5D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S21037C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C5D1Ev,_ZTv0_n12_N8S21037C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C5D0Ev,_ZTv0_n12_N8S21037C5D0Ev),
};
extern VTBL_ENTRY _ZTV8S21037C5[];
extern void ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev)();
extern void _ZN8S21037C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev)();
extern void _ZN8S21037C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C9__A__8S21037C5[] = {
  ABISELECT(48,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev)();
extern void ABISELECT(_ZThn48_N8S21037C9D1Ev,_ZThn32_N8S21037C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev)();
extern void ABISELECT(_ZThn48_N8S21037C9D0Ev,_ZThn32_N8S21037C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S21037C9__A__8S21037C5[] = {
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S21037C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev)();
extern void _ZN8S21037C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev)();
extern void _ZN8S21037C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C6__8S21037C5[] = {
  ABISELECT(64,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev)();
extern void _ZN8S21037C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev)();
extern void _ZN8S21037C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C88S21037C6__8S21037C5[] = {
  ABISELECT(64,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev)();
extern void ABISELECT(_ZThn64_N8S21037C8D1Ev,_ZThn36_N8S21037C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev)();
extern void ABISELECT(_ZThn64_N8S21037C8D0Ev,_ZThn36_N8S21037C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C9__8S21037C88S21037C6__8S21037C5[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S21037C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev)();
extern void ABISELECT(_ZThn64_N8S21037C6D1Ev,_ZThn36_N8S21037C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev)();
extern void ABISELECT(_ZThn64_N8S21037C6D0Ev,_ZThn36_N8S21037C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C9__8S21037C6__8S21037C5[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S21037C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev)();
extern void _ZN8S21037C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev)();
extern void _ZN8S21037C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C9__8S21037C5[] = {
  ABISELECT(-64,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S21037C9__8S21037C5[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S21037C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev),
};
static  VTT_ENTRY vtt_S21037C5[] = {
  {&(_ZTV8S21037C5[5]),  5,26},
  {&(_tg__ZTV8S21037C9__A__8S21037C5[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S21037C9__A__8S21037C5[3]),  3,5},
  {&(_ZTV8S21037C5[18]),  18,26},
  {&(_ZTV8S21037C5[18]),  18,26},
  {&(_ZTV8S21037C5[24]),  24,26},
  {&(_ZTV8S21037C5[11]),  11,26},
  {&(_tg__ZTV8S21037C6__8S21037C5[5]),  5,7},
  {&(_tg__ZTV8S21037C88S21037C6__8S21037C5[5]),  5,7},
  {&(_tg__ZTV8S21037C88S21037C6__8S21037C5[5]),  5,7},
  {&(_tg__ZTV8S21037C9__8S21037C88S21037C6__8S21037C5[4]),  4,6},
  {&(_tg__ZTV8S21037C6__8S21037C5[5]),  5,7},
  {&(_tg__ZTV8S21037C9__8S21037C6__8S21037C5[4]),  4,6},
  {&(_tg__ZTV8S21037C9__8S21037C5[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S21037C9__8S21037C5[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21037C5[];
extern  VTBL_ENTRY _ZTV8S21037C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C5[];
static VTBL_ENTRY alt_thunk_names83[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21037C8D0Ev,_ZThn36_N8S21037C8D0Ev),
  (VTBL_ENTRY)_ZN8S21037C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21037C8D1Ev,_ZThn36_N8S21037C8D1Ev),
  (VTBL_ENTRY)_ZN8S21037C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21037C6D0Ev,_ZThn36_N8S21037C6D0Ev),
  (VTBL_ENTRY)_ZN8S21037C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21037C6D1Ev,_ZThn36_N8S21037C6D1Ev),
  (VTBL_ENTRY)_ZN8S21037C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev), // 
  (VTBL_ENTRY)_ZN8S21037C9D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21037C9D0Ev,_ZThn32_N8S21037C9D0Ev),
  (VTBL_ENTRY)_ZN8S21037C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev), // 
  (VTBL_ENTRY)_ZN8S21037C9D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21037C9D1Ev,_ZThn32_N8S21037C9D1Ev),
  (VTBL_ENTRY)_ZN8S21037C9D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C5D0Ev,_ZTv0_n12_N8S21037C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21037C5D0Ev,_ZThn76_N8S21037C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21037C5D0Ev,_ZThn40_N8S21037C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21037C5D0Ev,_ZThn8_N8S21037C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C5D1Ev,_ZTv0_n12_N8S21037C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21037C5D1Ev,_ZThn76_N8S21037C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21037C5D1Ev,_ZThn40_N8S21037C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21037C5D1Ev,_ZThn8_N8S21037C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21037C5 = {  "S21037C5", // class name
  bases_S21037C5, 8,
  &(vtc_S21037C5[0]), // expected_vtbl_contents
  &(vtt_S21037C5[0]), // expected_vtt_contents
  ABISELECT(176,104), // object size
  NSPAIRA(_ZTI8S21037C5),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S21037C5),26, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21037C5),15, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names83,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21037C3  : virtual S5266C29 , virtual S21037C5 , S21037C9 {
  short s21037c3f0;
  virtual  ~S21037C3(); // _ZN8S21037C3D2Ev
  S21037C3(); // tgen
};
//SIG(-1 S21037C3) C1{ VBC2{ m} VBC3{ VBC4{ VBC5{ vd m} BC6{ VBC5 VBC7{ VBC5 FD Fc Fs[4]} vd Fi} BC8{ m Fp} vd Fs FL Fp FL} BC8 BC5 BC7 vd Fi} BC7 vd Fs}


 S21037C3 ::~S21037C3(){ note_dtor("S21037C3", this);}
S21037C3 ::S21037C3(){ note_ctor("S21037C3", this);} // tgen

static void Test_S21037C3()
{
  extern Class_Descriptor cd_S21037C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(15,34)];
    init_test(&cd_S21037C3, buf);
    S21037C3 *dp, &lv = *(dp=new (buf) S21037C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,132), "sizeof(S21037C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21037C3)");
    check_base_class_offset(lv, (S5266C29*), 0, "S21037C3");
    check_base_class_offset(lv, (S19905C19*)(S21037C6*), ABISELECT(112,68), "S21037C3");
    check_base_class_offset(lv, (S19905C19*)(S21037C8*)(S21037C6*), ABISELECT(112,68), "S21037C3");
    /*is_ambiguous_... S21037C3::S21037C9 */ AMB_check_base_class_offset(lv, (S19905C19*)(S21037C9*), ABISELECT(112,68), "S21037C3");
    /*is_ambiguous_... S21037C5::S21037C9 */ AMB_check_base_class_offset(lv, (S19905C19*)(S21037C9*)(S21037C5*), ABISELECT(112,68), "S21037C3");
    /*is_ambiguous_... S21037C3::S21037C9 */ AMB_check_base_class_offset(lv, (S19905C19*)(S21037C9*), ABISELECT(112,68), "S21037C3");
    check_base_class_offset(lv, (S21037C9*)(S21037C8*)(S21037C6*), ABISELECT(176,104), "S21037C3");
    check_base_class_offset(lv, (S21037C8*)(S21037C6*), ABISELECT(112,68), "S21037C3");
    check_base_class_offset(lv, (S17777C6_nt*)(S21037C6*), ABISELECT(128,76), "S21037C3");
    check_base_class_offset(lv, (S21037C6*)(S21037C5*), ABISELECT(112,68), "S21037C3");
    /*is_ambiguous_... S21037C5::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S21037C5*), ABISELECT(56,32), "S21037C3");
    /*is_ambiguous_... S21037C5::S19905C19 */ AMB_check_base_class_offset(lv, (S19905C19*)(S21037C5*), ABISELECT(48,28), "S21037C3");
    /*is_ambiguous_... S21037C5::S21037C9 */ AMB_check_base_class_offset(lv, (S21037C9*)(S21037C5*), ABISELECT(64,36), "S21037C3");
    check_base_class_offset(lv, (S21037C5*), ABISELECT(48,28), "S21037C3");
    /*is_ambiguous_... S21037C3::S21037C9 */ AMB_check_base_class_offset(lv, (S21037C9*), 0, "S21037C3");
    check_field_offset(lv, s21037c3f0, ABISELECT(42,26), "S21037C3.s21037c3f0");
    test_class_info(&lv, &cd_S21037C3);
    dp->~S21037C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21037C3(Test_S21037C3, "S21037C3", ABISELECT(224,132));

#else // __cplusplus

extern void _ZN8S21037C3C1Ev();
extern void _ZN8S21037C3D2Ev();
Name_Map name_map_S21037C3[] = {
  NSPAIR(_ZN8S21037C3C1Ev),
  NSPAIR(_ZN8S21037C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S21037C9;
extern VTBL_ENTRY _ZTI8S21037C9[];
extern  VTBL_ENTRY _ZTV8S21037C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C9[];
extern Class_Descriptor cd_S21037C8;
extern VTBL_ENTRY _ZTI8S21037C8[];
extern  VTBL_ENTRY _ZTV8S21037C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C8[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S21037C6;
extern VTBL_ENTRY _ZTI8S21037C6[];
extern  VTBL_ENTRY _ZTV8S21037C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C6[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S21037C9;
extern VTBL_ENTRY _ZTI8S21037C9[];
extern  VTBL_ENTRY _ZTV8S21037C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C9[];
extern Class_Descriptor cd_S21037C5;
extern VTBL_ENTRY _ZTI8S21037C5[];
extern  VTBL_ENTRY _ZTV8S21037C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C5[];
extern Class_Descriptor cd_S21037C9;
extern VTBL_ENTRY _ZTI8S21037C9[];
extern  VTBL_ENTRY _ZTV8S21037C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C9[];
static Base_Class bases_S21037C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19905C19,    ABISELECT(112,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21037C9,    ABISELECT(176,104), //bcp->offset
    31, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21037C8,    ABISELECT(112,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(128,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21037C6,    ABISELECT(112,68), //bcp->offset
    24, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S17777C6_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19905C19,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21037C9,    ABISELECT(64,36), //bcp->offset
    18, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21037C5,    ABISELECT(48,28), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21037C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21037C3[];
extern void ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev)();
extern void _ZN8S21037C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev)();
extern void _ZN8S21037C3D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21037C3D1Ev,_ZTv0_n24_N8S21037C3D1Ev)();
extern void ABISELECT(_ZThn48_N8S21037C3D1Ev,_ZThn28_N8S21037C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21037C3D0Ev,_ZTv0_n24_N8S21037C3D0Ev)();
extern void ABISELECT(_ZThn48_N8S21037C3D0Ev,_ZThn28_N8S21037C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev)();
extern void ABISELECT(_ZThn64_N8S21037C3D1Ev,_ZThn36_N8S21037C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev)();
extern void ABISELECT(_ZThn64_N8S21037C3D0Ev,_ZThn36_N8S21037C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev)();
extern void ABISELECT(_ZThn112_N8S21037C3D1Ev,_ZThn68_N8S21037C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev)();
extern void ABISELECT(_ZThn112_N8S21037C3D0Ev,_ZThn68_N8S21037C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev)();
extern void ABISELECT(_ZThn176_N8S21037C3D1Ev,_ZThn104_N8S21037C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev)();
extern void ABISELECT(_ZThn176_N8S21037C3D0Ev,_ZThn104_N8S21037C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21037C3[] = {
  ABISELECT(176,104),
  ABISELECT(112,68),
  ABISELECT(48,28),
  0,
  ABISELECT(112,68),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(128,76),
  ABISELECT(64,40),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S21037C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21037C3D1Ev,_ZTv0_n24_N8S21037C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21037C3D0Ev,_ZTv0_n24_N8S21037C3D0Ev),
  ABISELECT(48,32),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S21037C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev),
  ABISELECT(64,36),
  0,
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S21037C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI8S21037C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S21037C3[];
extern void ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev)();
extern void _ZN8S21037C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev)();
extern void _ZN8S21037C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C9__A__8S21037C3[] = {
  ABISELECT(112,68),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev)();
extern void ABISELECT(_ZThn112_N8S21037C9D1Ev,_ZThn68_N8S21037C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev)();
extern void ABISELECT(_ZThn112_N8S21037C9D0Ev,_ZThn68_N8S21037C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S21037C9__A__8S21037C3[] = {
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S21037C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev),
};
extern void _ZN8S21037C5D1Ev();
extern void _ZN8S21037C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21037C5__8S21037C3[] = {
  ABISELECT(128,76),
  ABISELECT(64,40),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C5[0]),
  (VTBL_ENTRY)&_ZN8S21037C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21037C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev)();
extern void _ZN8S21037C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev)();
extern void _ZN8S21037C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C98S21037C5__A1__8S21037C3[] = {
  ABISELECT(48,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev)();
extern void ABISELECT(_ZThn48_N8S21037C9D1Ev,_ZThn32_N8S21037C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev)();
extern void ABISELECT(_ZThn48_N8S21037C9D0Ev,_ZThn32_N8S21037C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S21037C98S21037C5__A1__8S21037C3[] = {
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S21037C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C5D1Ev,_ZTv0_n12_N8S21037C5D1Ev)();
extern void ABISELECT(_ZThn64_N8S21037C5D1Ev,_ZThn40_N8S21037C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C5D0Ev,_ZTv0_n12_N8S21037C5D0Ev)();
extern void ABISELECT(_ZThn64_N8S21037C5D0Ev,_ZThn40_N8S21037C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C6__8S21037C5__8S21037C3[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S21037C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C5D1Ev,_ZTv0_n12_N8S21037C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C5D0Ev,_ZTv0_n12_N8S21037C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C5D1Ev,_ZTv0_n12_N8S21037C5D1Ev)();
extern void ABISELECT(_ZThn128_N8S21037C5D1Ev,_ZThn76_N8S21037C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C5D0Ev,_ZTv0_n12_N8S21037C5D0Ev)();
extern void ABISELECT(_ZThn128_N8S21037C5D0Ev,_ZThn76_N8S21037C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C9__8S21037C5__8S21037C3[] = {
  ABISELECT(-64,-36),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S21037C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C5D1Ev,_ZTv0_n12_N8S21037C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C5D0Ev,_ZTv0_n12_N8S21037C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C5D1Ev,_ZTv0_n12_N8S21037C5D1Ev)();
extern void ABISELECT(_ZThn16_N8S21037C5D1Ev,_ZThn8_N8S21037C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C5D0Ev,_ZTv0_n12_N8S21037C5D0Ev)();
extern void ABISELECT(_ZThn16_N8S21037C5D0Ev,_ZThn8_N8S21037C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C9__A__8S21037C5__8S21037C3[] = {
  ABISELECT(48,32),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21037C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C5D1Ev,_ZTv0_n12_N8S21037C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C5D0Ev,_ZTv0_n12_N8S21037C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev)();
extern void _ZN8S21037C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev)();
extern void _ZN8S21037C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C6__8S21037C3[] = {
  ABISELECT(64,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev)();
extern void _ZN8S21037C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev)();
extern void _ZN8S21037C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C88S21037C6__8S21037C3[] = {
  ABISELECT(64,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev)();
extern void ABISELECT(_ZThn64_N8S21037C8D1Ev,_ZThn36_N8S21037C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev)();
extern void ABISELECT(_ZThn64_N8S21037C8D0Ev,_ZThn36_N8S21037C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C9__8S21037C88S21037C6__8S21037C3[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S21037C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev)();
extern void ABISELECT(_ZThn64_N8S21037C6D1Ev,_ZThn36_N8S21037C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev)();
extern void ABISELECT(_ZThn64_N8S21037C6D0Ev,_ZThn36_N8S21037C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C9__8S21037C6__8S21037C3[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S21037C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev)();
extern void _ZN8S21037C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev)();
extern void _ZN8S21037C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C9__8S21037C3[] = {
  ABISELECT(-64,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S21037C9__8S21037C3[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S21037C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev),
};
static  VTT_ENTRY vtt_S21037C3[] = {
  {&(_ZTV8S21037C3[8]),  8,37},
  {&(_tg__ZTV8S21037C9__A__8S21037C3[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S21037C9__A__8S21037C3[3]),  3,5},
  {&(_ZTV8S21037C3[16]),  16,37},
  {&(_ZTV8S21037C3[29]),  29,37},
  {&(_ZTV8S21037C3[29]),  29,37},
  {&(_ZTV8S21037C3[35]),  35,37},
  {&(_ZTV8S21037C3[22]),  22,37},
  {&(_tg__ZTV8S21037C5__8S21037C3[5]),  5,7},
  {&(_tg__ZTV8S21037C98S21037C5__A1__8S21037C3[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S21037C98S21037C5__A1__8S21037C3[3]),  3,5},
  {&(_tg__ZTV8S21037C6__8S21037C5__8S21037C3[5]),  5,7},
  {&(_tg__ZTV8S21037C6__8S21037C5__8S21037C3[5]),  5,7},
  {&(_tg__ZTV8S21037C9__8S21037C5__8S21037C3[4]),  4,6},
  {&(_tg__ZTV8S21037C9__A__8S21037C5__8S21037C3[4]),  4,6},
  {&(_tg__ZTV8S21037C6__8S21037C3[5]),  5,7},
  {&(_tg__ZTV8S21037C88S21037C6__8S21037C3[5]),  5,7},
  {&(_tg__ZTV8S21037C88S21037C6__8S21037C3[5]),  5,7},
  {&(_tg__ZTV8S21037C9__8S21037C88S21037C6__8S21037C3[4]),  4,6},
  {&(_tg__ZTV8S21037C6__8S21037C3[5]),  5,7},
  {&(_tg__ZTV8S21037C9__8S21037C6__8S21037C3[4]),  4,6},
  {&(_tg__ZTV8S21037C9__8S21037C3[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S21037C9__8S21037C3[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21037C3[];
extern  VTBL_ENTRY _ZTV8S21037C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C3[];
static VTBL_ENTRY alt_thunk_names84[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21037C8D0Ev,_ZThn36_N8S21037C8D0Ev),
  (VTBL_ENTRY)_ZN8S21037C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21037C8D1Ev,_ZThn36_N8S21037C8D1Ev),
  (VTBL_ENTRY)_ZN8S21037C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21037C6D0Ev,_ZThn36_N8S21037C6D0Ev),
  (VTBL_ENTRY)_ZN8S21037C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21037C6D1Ev,_ZThn36_N8S21037C6D1Ev),
  (VTBL_ENTRY)_ZN8S21037C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C5D0Ev,_ZTv0_n12_N8S21037C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21037C5D0Ev,_ZThn8_N8S21037C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21037C5D0Ev,_ZThn76_N8S21037C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21037C5D0Ev,_ZThn40_N8S21037C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C5D1Ev,_ZTv0_n12_N8S21037C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21037C5D1Ev,_ZThn8_N8S21037C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21037C5D1Ev,_ZThn76_N8S21037C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21037C5D1Ev,_ZThn40_N8S21037C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev), // 
  (VTBL_ENTRY)_ZN8S21037C9D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21037C9D0Ev,_ZThn32_N8S21037C9D0Ev),
  (VTBL_ENTRY)_ZN8S21037C9D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21037C9D0Ev,_ZThn68_N8S21037C9D0Ev),
  (VTBL_ENTRY)_ZN8S21037C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev), // 
  (VTBL_ENTRY)_ZN8S21037C9D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21037C9D1Ev,_ZThn32_N8S21037C9D1Ev),
  (VTBL_ENTRY)_ZN8S21037C9D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21037C9D1Ev,_ZThn68_N8S21037C9D1Ev),
  (VTBL_ENTRY)_ZN8S21037C9D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21037C3D0Ev,_ZTv0_n24_N8S21037C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21037C3D0Ev,_ZThn28_N8S21037C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21037C3D1Ev,_ZTv0_n24_N8S21037C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21037C3D1Ev,_ZThn28_N8S21037C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S21037C3D0Ev,_ZThn104_N8S21037C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21037C3D0Ev,_ZThn68_N8S21037C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21037C3D0Ev,_ZThn36_N8S21037C3D0Ev),
  (VTBL_ENTRY)_ZN8S21037C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S21037C3D1Ev,_ZThn104_N8S21037C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21037C3D1Ev,_ZThn68_N8S21037C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21037C3D1Ev,_ZThn36_N8S21037C3D1Ev),
  (VTBL_ENTRY)_ZN8S21037C3D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21037C3 = {  "S21037C3", // class name
  bases_S21037C3, 11,
  &(vtc_S21037C3[0]), // expected_vtbl_contents
  &(vtt_S21037C3[0]), // expected_vtt_contents
  ABISELECT(224,132), // object size
  NSPAIRA(_ZTI8S21037C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21037C3),37, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21037C3),23, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names84,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21037C12  : virtual S19905C19 , S21037C9 , virtual S21037C3 , S21037C6 {
  void *s21037c12f0;
  ~S21037C12(); // tgen
  S21037C12(); // tgen
};
//SIG(-1 S21037C12) C1{ VBC2{ vd m} BC3{ VBC2 FD Fc Fs[4]} VBC4{ VBC5{ m} VBC6{ VBC7{ VBC2 BC8{ VBC2 VBC3 vd Fi} BC9{ m Fp} vd Fs FL Fp FL} BC9 BC2 BC3 vd Fi} BC3 vd Fs} BC7 Fp}


S21037C12 ::~S21037C12(){ note_dtor("S21037C12", this);} // tgen
S21037C12 ::S21037C12(){ note_ctor("S21037C12", this);} // tgen

static void Test_S21037C12()
{
  extern Class_Descriptor cd_S21037C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(22,51)];
    init_test(&cd_S21037C12, buf);
    S21037C12 *dp, &lv = *(dp=new (buf) S21037C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(336,200), "sizeof(S21037C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21037C12)");
    /*is_ambiguous_... S21037C12::S19905C19 */ AMB_check_base_class_offset(lv, (S19905C19*), 0, "S21037C12");
    /*is_ambiguous_... S21037C12::S21037C9 */ AMB_check_base_class_offset(lv, (S19905C19*)(S21037C9*), 0, "S21037C12");
    /*is_ambiguous_... S21037C12::S21037C6 */ AMB_check_base_class_offset(lv, (S19905C19*)(S21037C6*), 0, "S21037C12");
    /*is_ambiguous_... S21037C12::S21037C6 */ AMB_check_base_class_offset(lv, (S19905C19*)(S21037C8*)(S21037C6*), 0, "S21037C12");
    /*is_ambiguous_... S21037C12::S21037C9 */ AMB_check_base_class_offset(lv, (S19905C19*)(S21037C9*), 0, "S21037C12");
    /*is_ambiguous_... S21037C5::S21037C9 */ AMB_check_base_class_offset(lv, (S19905C19*)(S21037C9*)(S21037C5*), 0, "S21037C12");
    /*is_ambiguous_... S21037C3::S21037C9 */ AMB_check_base_class_offset(lv, (S19905C19*)(S21037C9*)(S21037C3*), 0, "S21037C12");
    /*is_ambiguous_... S21037C12::S21037C6 */ AMB_check_base_class_offset(lv, (S19905C19*)(S21037C6*), 0, "S21037C12");
    /*is_ambiguous_... S21037C12::S21037C6 */ AMB_check_base_class_offset(lv, (S19905C19*)(S21037C8*)(S21037C6*), 0, "S21037C12");
    /*is_ambiguous_... S21037C12::S21037C9 */ AMB_check_base_class_offset(lv, (S21037C9*), 0, "S21037C12");
    check_base_class_offset(lv, (S5266C29*)(S21037C3*), 0, "S21037C12");
    /*is_ambiguous_... S21037C12::S21037C6 */ AMB_check_base_class_offset(lv, (S21037C9*)(S21037C8*)(S21037C6*), ABISELECT(288,172), "S21037C12");
    /*is_ambiguous_... S21037C12::S21037C6 */ AMB_check_base_class_offset(lv, (S21037C9*)(S21037C8*)(S21037C6*), ABISELECT(288,172), "S21037C12");
    /*is_ambiguous_... S21037C12::S21037C6 */ AMB_check_base_class_offset(lv, (S21037C8*)(S21037C6*), ABISELECT(224,136), "S21037C12");
    /*is_ambiguous_... S21037C12::S21037C6 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S21037C6*), ABISELECT(240,144), "S21037C12");
    check_base_class_offset(lv, (S21037C6*)(S21037C5*), ABISELECT(224,136), "S21037C12");
    /*is_ambiguous_... S21037C5::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S21037C5*), ABISELECT(168,100), "S21037C12");
    /*is_ambiguous_... S21037C5::S19905C19 */ AMB_check_base_class_offset(lv, (S19905C19*)(S21037C5*), ABISELECT(160,96), "S21037C12");
    /*is_ambiguous_... S21037C5::S21037C9 */ AMB_check_base_class_offset(lv, (S21037C9*)(S21037C5*), ABISELECT(176,104), "S21037C12");
    check_base_class_offset(lv, (S21037C5*)(S21037C3*), ABISELECT(160,96), "S21037C12");
    /*is_ambiguous_... S21037C3::S21037C9 */ AMB_check_base_class_offset(lv, (S21037C9*)(S21037C3*), ABISELECT(112,68), "S21037C12");
    check_base_class_offset(lv, (S21037C3*), ABISELECT(112,68), "S21037C12");
    /*is_ambiguous_... S21037C12::S21037C6 */ AMB_check_base_class_offset(lv, (S21037C8*)(S21037C6*), ABISELECT(48,28), "S21037C12");
    /*is_ambiguous_... S21037C12::S21037C6 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S21037C6*), ABISELECT(64,36), "S21037C12");
    /*is_ambiguous_... S21037C12::S21037C6 */ AMB_check_base_class_offset(lv, (S21037C6*), ABISELECT(48,28), "S21037C12");
    check_field_offset(lv, s21037c12f0, ABISELECT(104,64), "S21037C12.s21037c12f0");
    test_class_info(&lv, &cd_S21037C12);
    dp->~S21037C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21037C12(Test_S21037C12, "S21037C12", ABISELECT(336,200));

#else // __cplusplus

extern void _ZN9S21037C12C1Ev();
extern void _ZN9S21037C12D1Ev();
Name_Map name_map_S21037C12[] = {
  NSPAIR(_ZN9S21037C12C1Ev),
  NSPAIR(_ZN9S21037C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S21037C9;
extern VTBL_ENTRY _ZTI8S21037C9[];
extern  VTBL_ENTRY _ZTV8S21037C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C9[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S21037C9;
extern VTBL_ENTRY _ZTI8S21037C9[];
extern  VTBL_ENTRY _ZTV8S21037C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C9[];
extern Class_Descriptor cd_S21037C8;
extern VTBL_ENTRY _ZTI8S21037C8[];
extern  VTBL_ENTRY _ZTV8S21037C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C8[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S21037C6;
extern VTBL_ENTRY _ZTI8S21037C6[];
extern  VTBL_ENTRY _ZTV8S21037C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C6[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S21037C9;
extern VTBL_ENTRY _ZTI8S21037C9[];
extern  VTBL_ENTRY _ZTV8S21037C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C9[];
extern Class_Descriptor cd_S21037C5;
extern VTBL_ENTRY _ZTI8S21037C5[];
extern  VTBL_ENTRY _ZTV8S21037C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C5[];
extern Class_Descriptor cd_S21037C9;
extern VTBL_ENTRY _ZTI8S21037C9[];
extern  VTBL_ENTRY _ZTV8S21037C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C9[];
extern Class_Descriptor cd_S21037C3;
extern VTBL_ENTRY _ZTI8S21037C3[];
extern  VTBL_ENTRY _ZTV8S21037C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C3[];
extern Class_Descriptor cd_S21037C8;
extern VTBL_ENTRY _ZTI8S21037C8[];
extern  VTBL_ENTRY _ZTV8S21037C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C8[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S21037C6;
extern VTBL_ENTRY _ZTI8S21037C6[];
extern  VTBL_ENTRY _ZTV8S21037C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C6[];
static Base_Class bases_S21037C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19905C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21037C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S21037C9,    ABISELECT(288,172), //bcp->offset
    49, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S21037C8,    ABISELECT(224,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(240,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21037C6,    ABISELECT(224,136), //bcp->offset
    42, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S17777C6_nt,    ABISELECT(168,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19905C19,    ABISELECT(160,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21037C9,    ABISELECT(176,104), //bcp->offset
    36, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21037C5,    ABISELECT(160,96), //bcp->offset
    28, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S21037C9,    ABISELECT(112,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21037C3,    ABISELECT(112,68), //bcp->offset
    18, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21037C8,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21037C6,    ABISELECT(48,28), //bcp->offset
    11, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21037C12[];
extern void ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev)();
extern void _ZN9S21037C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev)();
extern void _ZN9S21037C12D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev)();
extern void ABISELECT(_ZThn48_N9S21037C12D1Ev,_ZThn28_N9S21037C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev)();
extern void ABISELECT(_ZThn48_N9S21037C12D0Ev,_ZThn28_N9S21037C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev)();
extern void ABISELECT(_ZThn112_N9S21037C12D1Ev,_ZThn68_N9S21037C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev)();
extern void ABISELECT(_ZThn112_N9S21037C12D0Ev,_ZThn68_N9S21037C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21037C12D1Ev,_ZTv0_n24_N9S21037C12D1Ev)();
extern void ABISELECT(_ZThn160_N9S21037C12D1Ev,_ZThn96_N9S21037C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21037C12D0Ev,_ZTv0_n24_N9S21037C12D0Ev)();
extern void ABISELECT(_ZThn160_N9S21037C12D0Ev,_ZThn96_N9S21037C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev)();
extern void ABISELECT(_ZThn176_N9S21037C12D1Ev,_ZThn104_N9S21037C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev)();
extern void ABISELECT(_ZThn176_N9S21037C12D0Ev,_ZThn104_N9S21037C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev)();
extern void ABISELECT(_ZThn224_N9S21037C12D1Ev,_ZThn136_N9S21037C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev)();
extern void ABISELECT(_ZThn224_N9S21037C12D0Ev,_ZThn136_N9S21037C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev)();
extern void ABISELECT(_ZThn288_N9S21037C12D1Ev,_ZThn172_N9S21037C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev)();
extern void ABISELECT(_ZThn288_N9S21037C12D0Ev,_ZThn172_N9S21037C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21037C12[] = {
  ABISELECT(288,172),
  ABISELECT(224,136),
  ABISELECT(160,96),
  0,
  ABISELECT(112,68),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21037C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev),
  ABISELECT(240,144),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S21037C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev),
  ABISELECT(176,104),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI9S21037C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev),
  ABISELECT(-160,-96),
  ABISELECT(128,76),
  ABISELECT(-160,-96),
  ABISELECT(64,40),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI9S21037C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21037C12D1Ev,_ZTv0_n24_N9S21037C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21037C12D0Ev,_ZTv0_n24_N9S21037C12D0Ev),
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI9S21037C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev),
  ABISELECT(64,36),
  ABISELECT(-224,-136),
  ABISELECT(-224,-136),
  ABISELECT(-224,-136),
  (VTBL_ENTRY)&(_ZTI9S21037C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev),
  ABISELECT(-288,-172),
  ABISELECT(-288,-172),
  ABISELECT(-288,-172),
  (VTBL_ENTRY)&(_ZTI9S21037C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev),
};
extern VTBL_ENTRY _ZTV9S21037C12[];
extern void ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev)();
extern void _ZN8S21037C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev)();
extern void _ZN8S21037C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C9__A__9S21037C12[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev)();
extern void _ZN8S21037C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev)();
extern void _ZN8S21037C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C6__A__9S21037C12[] = {
  ABISELECT(240,144),
  ABISELECT(-48,-28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev)();
extern void _ZN8S21037C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev)();
extern void _ZN8S21037C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C88S21037C6__A1__9S21037C12[] = {
  ABISELECT(240,144),
  ABISELECT(-48,-28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S21037C88S21037C6__A1__9S21037C12[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S21037C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev)();
extern void ABISELECT(_ZThn240_N8S21037C8D1Ev,_ZThn144_N8S21037C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev)();
extern void ABISELECT(_ZThn240_N8S21037C8D0Ev,_ZThn144_N8S21037C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C9__8S21037C88S21037C6__A1__9S21037C12[] = {
  ABISELECT(-288,-172),
  ABISELECT(-240,-144),
  ABISELECT(-240,-144),
  (VTBL_ENTRY)&(_ZTI8S21037C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S21037C6__A__9S21037C12[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S21037C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev)();
extern void ABISELECT(_ZThn240_N8S21037C6D1Ev,_ZThn144_N8S21037C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev)();
extern void ABISELECT(_ZThn240_N8S21037C6D0Ev,_ZThn144_N8S21037C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C9__8S21037C6__A__9S21037C12[] = {
  ABISELECT(-288,-172),
  ABISELECT(-240,-144),
  ABISELECT(-240,-144),
  (VTBL_ENTRY)&(_ZTI8S21037C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev)();
extern void _ZN8S21037C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev)();
extern void _ZN8S21037C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C3__9S21037C12[] = {
  ABISELECT(176,104),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev)();
extern void _ZN8S21037C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev)();
extern void _ZN8S21037C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C98S21037C3__A3__9S21037C12[] = {
  ABISELECT(-112,-68),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S21037C98S21037C3__A3__9S21037C12[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI8S21037C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S21037C3D1Ev,_ZTv0_n24_N8S21037C3D1Ev)();
extern void ABISELECT(_ZThn48_N8S21037C3D1Ev,_ZThn28_N8S21037C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21037C3D0Ev,_ZTv0_n24_N8S21037C3D0Ev)();
extern void ABISELECT(_ZThn48_N8S21037C3D0Ev,_ZThn28_N8S21037C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C5__8S21037C3__9S21037C12[] = {
  ABISELECT(-48,-28),
  ABISELECT(128,76),
  ABISELECT(-160,-96),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S21037C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21037C3D1Ev,_ZTv0_n24_N8S21037C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21037C3D0Ev,_ZTv0_n24_N8S21037C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev)();
extern void ABISELECT(_ZThn112_N8S21037C3D1Ev,_ZThn68_N8S21037C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev)();
extern void ABISELECT(_ZThn112_N8S21037C3D0Ev,_ZThn68_N8S21037C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C6__8S21037C3__9S21037C12[] = {
  ABISELECT(64,36),
  ABISELECT(-224,-136),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S21037C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S21037C3__9S21037C12[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI8S21037C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev)();
extern void ABISELECT(_ZThn176_N8S21037C3D1Ev,_ZThn104_N8S21037C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev)();
extern void ABISELECT(_ZThn176_N8S21037C3D0Ev,_ZThn104_N8S21037C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C9__8S21037C3__9S21037C12[] = {
  ABISELECT(-288,-172),
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI8S21037C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev)();
extern void ABISELECT(_ZThn64_N8S21037C3D1Ev,_ZThn36_N8S21037C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev)();
extern void ABISELECT(_ZThn64_N8S21037C3D0Ev,_ZThn36_N8S21037C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C98S21037C5__A1__8S21037C3__9S21037C12[] = {
  ABISELECT(-176,-104),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S21037C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev),
};
extern void _ZN8S21037C5D1Ev();
extern void _ZN8S21037C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21037C5__9S21037C12[] = {
  ABISELECT(128,76),
  ABISELECT(-160,-96),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C5[0]),
  (VTBL_ENTRY)&_ZN8S21037C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21037C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev)();
extern void _ZN8S21037C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev)();
extern void _ZN8S21037C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C98S21037C5__A2__9S21037C12[] = {
  ABISELECT(-176,-104),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S21037C98S21037C5__A2__9S21037C12[] = {
  ABISELECT(176,104),
  ABISELECT(176,104),
  (VTBL_ENTRY)&(_ZTI8S21037C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C5D1Ev,_ZTv0_n12_N8S21037C5D1Ev)();
extern void ABISELECT(_ZThn64_N8S21037C5D1Ev,_ZThn40_N8S21037C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C5D0Ev,_ZTv0_n12_N8S21037C5D0Ev)();
extern void ABISELECT(_ZThn64_N8S21037C5D0Ev,_ZThn40_N8S21037C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C6__8S21037C5__9S21037C12[] = {
  ABISELECT(64,36),
  ABISELECT(-224,-136),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S21037C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C5D1Ev,_ZTv0_n12_N8S21037C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C5D0Ev,_ZTv0_n12_N8S21037C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C5D1Ev,_ZTv0_n12_N8S21037C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21037C5D0Ev,_ZTv0_n12_N8S21037C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S21037C5__9S21037C12[] = {
  ABISELECT(160,96),
  ABISELECT(160,96),
  (VTBL_ENTRY)&(_ZTI8S21037C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C5D1Ev,_ZTv0_n12_N8S21037C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C5D0Ev,_ZTv0_n12_N8S21037C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C5D1Ev,_ZTv0_n12_N8S21037C5D1Ev)();
extern void ABISELECT(_ZThn128_N8S21037C5D1Ev,_ZThn76_N8S21037C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C5D0Ev,_ZTv0_n12_N8S21037C5D0Ev)();
extern void ABISELECT(_ZThn128_N8S21037C5D0Ev,_ZThn76_N8S21037C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C9__8S21037C5__9S21037C12[] = {
  ABISELECT(-288,-172),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S21037C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C5D1Ev,_ZTv0_n12_N8S21037C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C5D0Ev,_ZTv0_n12_N8S21037C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C5D1Ev,_ZTv0_n12_N8S21037C5D1Ev)();
extern void ABISELECT(_ZThn16_N8S21037C5D1Ev,_ZThn8_N8S21037C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C5D0Ev,_ZTv0_n12_N8S21037C5D0Ev)();
extern void ABISELECT(_ZThn16_N8S21037C5D0Ev,_ZThn8_N8S21037C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C9__A__8S21037C5__9S21037C12[] = {
  ABISELECT(-176,-104),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21037C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C5D1Ev,_ZTv0_n12_N8S21037C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C5D0Ev,_ZTv0_n12_N8S21037C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev)();
extern void _ZN8S21037C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev)();
extern void _ZN8S21037C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C6__9S21037C12[] = {
  ABISELECT(64,36),
  ABISELECT(-224,-136),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev)();
extern void _ZN8S21037C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev)();
extern void _ZN8S21037C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C88S21037C6__9S21037C12[] = {
  ABISELECT(64,36),
  ABISELECT(-224,-136),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S21037C88S21037C6__9S21037C12[] = {
  ABISELECT(224,136),
  ABISELECT(224,136),
  (VTBL_ENTRY)&(_ZTI8S21037C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev)();
extern void ABISELECT(_ZThn64_N8S21037C8D1Ev,_ZThn36_N8S21037C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev)();
extern void ABISELECT(_ZThn64_N8S21037C8D0Ev,_ZThn36_N8S21037C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C9__8S21037C88S21037C6__9S21037C12[] = {
  ABISELECT(-288,-172),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S21037C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S21037C6__9S21037C12[] = {
  ABISELECT(224,136),
  ABISELECT(224,136),
  (VTBL_ENTRY)&(_ZTI8S21037C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev)();
extern void ABISELECT(_ZThn64_N8S21037C6D1Ev,_ZThn36_N8S21037C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev)();
extern void ABISELECT(_ZThn64_N8S21037C6D0Ev,_ZThn36_N8S21037C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C9__8S21037C6__9S21037C12[] = {
  ABISELECT(-288,-172),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S21037C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev)();
extern void _ZN8S21037C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev)();
extern void _ZN8S21037C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C9__A1__9S21037C12[] = {
  ABISELECT(-288,-172),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S21037C9__A1__9S21037C12[] = {
  ABISELECT(288,172),
  ABISELECT(288,172),
  (VTBL_ENTRY)&(_ZTI8S21037C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev),
};
static  VTT_ENTRY vtt_S21037C12[] = {
  {&(_ZTV9S21037C12[9]),  9,55},
  {&(_tg__ZTV8S21037C9__A__9S21037C12[4]),  4,6},
  {&(_tg__ZTV8S21037C9__A__9S21037C12[4]),  4,6},
  {&(_tg__ZTV8S21037C6__A__9S21037C12[5]),  5,7},
  {&(_tg__ZTV8S21037C88S21037C6__A1__9S21037C12[5]),  5,7},
  {&(_tg__ZTV9S19905C19__8S21037C88S21037C6__A1__9S21037C12[3]),  3,5},
  {&(_tg__ZTV8S21037C9__8S21037C88S21037C6__A1__9S21037C12[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S21037C6__A__9S21037C12[3]),  3,5},
  {&(_tg__ZTV8S21037C9__8S21037C6__A__9S21037C12[4]),  4,6},
  {&(_ZTV9S21037C12[9]),  9,55},
  {&(_ZTV9S21037C12[26]),  26,55},
  {&(_ZTV9S21037C12[34]),  34,55},
  {&(_ZTV9S21037C12[47]),  47,55},
  {&(_ZTV9S21037C12[53]),  53,55},
  {&(_ZTV9S21037C12[40]),  40,55},
  {&(_ZTV9S21037C12[16]),  16,55},
  {&(_tg__ZTV8S21037C3__9S21037C12[8]),  8,10},
  {&(_tg__ZTV8S21037C98S21037C3__A3__9S21037C12[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S21037C98S21037C3__A3__9S21037C12[3]),  3,5},
  {&(_tg__ZTV8S21037C5__8S21037C3__9S21037C12[6]),  6,8},
  {&(_tg__ZTV8S21037C6__8S21037C3__9S21037C12[5]),  5,7},
  {&(_tg__ZTV9S19905C19__8S21037C3__9S21037C12[3]),  3,5},
  {&(_tg__ZTV8S21037C9__8S21037C3__9S21037C12[4]),  4,6},
  {&(_tg__ZTV8S21037C98S21037C5__A1__8S21037C3__9S21037C12[4]),  4,6},
  {&(_tg__ZTV8S21037C5__9S21037C12[5]),  5,7},
  {&(_tg__ZTV8S21037C98S21037C5__A2__9S21037C12[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S21037C98S21037C5__A2__9S21037C12[3]),  3,5},
  {&(_tg__ZTV8S21037C6__8S21037C5__9S21037C12[5]),  5,7},
  {&(_tg__ZTV9S19905C19__8S21037C5__9S21037C12[3]),  3,5},
  {&(_tg__ZTV8S21037C9__8S21037C5__9S21037C12[4]),  4,6},
  {&(_tg__ZTV8S21037C9__A__8S21037C5__9S21037C12[4]),  4,6},
  {&(_tg__ZTV8S21037C6__9S21037C12[5]),  5,7},
  {&(_tg__ZTV8S21037C88S21037C6__9S21037C12[5]),  5,7},
  {&(_tg__ZTV9S19905C19__8S21037C88S21037C6__9S21037C12[3]),  3,5},
  {&(_tg__ZTV8S21037C9__8S21037C88S21037C6__9S21037C12[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S21037C6__9S21037C12[3]),  3,5},
  {&(_tg__ZTV8S21037C9__8S21037C6__9S21037C12[4]),  4,6},
  {&(_tg__ZTV8S21037C9__A1__9S21037C12[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S21037C9__A1__9S21037C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21037C12[];
extern  VTBL_ENTRY _ZTV9S21037C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21037C12[];
static VTBL_ENTRY alt_thunk_names85[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C5D0Ev,_ZTv0_n12_N8S21037C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21037C5D0Ev,_ZThn8_N8S21037C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21037C5D0Ev,_ZThn76_N8S21037C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21037C5D0Ev,_ZThn40_N8S21037C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C5D1Ev,_ZTv0_n12_N8S21037C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21037C5D1Ev,_ZThn8_N8S21037C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21037C5D1Ev,_ZThn76_N8S21037C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21037C5D1Ev,_ZThn40_N8S21037C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21037C3D0Ev,_ZTv0_n24_N8S21037C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21037C3D0Ev,_ZThn28_N8S21037C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21037C3D1Ev,_ZTv0_n24_N8S21037C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21037C3D1Ev,_ZThn28_N8S21037C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21037C3D0Ev,_ZThn36_N8S21037C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S21037C3D0Ev,_ZThn104_N8S21037C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21037C3D0Ev,_ZThn68_N8S21037C3D0Ev),
  (VTBL_ENTRY)_ZN8S21037C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21037C3D1Ev,_ZThn36_N8S21037C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S21037C3D1Ev,_ZThn104_N8S21037C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21037C3D1Ev,_ZThn68_N8S21037C3D1Ev),
  (VTBL_ENTRY)_ZN8S21037C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21037C8D0Ev,_ZThn36_N8S21037C8D0Ev),
  (VTBL_ENTRY)_ZN8S21037C8D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S21037C8D0Ev,_ZThn144_N8S21037C8D0Ev),
  (VTBL_ENTRY)_ZN8S21037C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21037C8D1Ev,_ZThn36_N8S21037C8D1Ev),
  (VTBL_ENTRY)_ZN8S21037C8D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S21037C8D1Ev,_ZThn144_N8S21037C8D1Ev),
  (VTBL_ENTRY)_ZN8S21037C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21037C6D0Ev,_ZThn36_N8S21037C6D0Ev),
  (VTBL_ENTRY)_ZN8S21037C6D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S21037C6D0Ev,_ZThn144_N8S21037C6D0Ev),
  (VTBL_ENTRY)_ZN8S21037C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21037C6D1Ev,_ZThn36_N8S21037C6D1Ev),
  (VTBL_ENTRY)_ZN8S21037C6D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S21037C6D1Ev,_ZThn144_N8S21037C6D1Ev),
  (VTBL_ENTRY)_ZN8S21037C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev), // 
  (VTBL_ENTRY)_ZN8S21037C9D0Ev,
  (VTBL_ENTRY)_ZN8S21037C9D0Ev,
  (VTBL_ENTRY)_ZN8S21037C9D0Ev,
  (VTBL_ENTRY)_ZN8S21037C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev), // 
  (VTBL_ENTRY)_ZN8S21037C9D1Ev,
  (VTBL_ENTRY)_ZN8S21037C9D1Ev,
  (VTBL_ENTRY)_ZN8S21037C9D1Ev,
  (VTBL_ENTRY)_ZN8S21037C9D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21037C12D0Ev,_ZTv0_n24_N9S21037C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S21037C12D0Ev,_ZThn96_N9S21037C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21037C12D1Ev,_ZTv0_n24_N9S21037C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S21037C12D1Ev,_ZThn96_N9S21037C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S21037C12D0Ev,_ZThn172_N9S21037C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21037C12D0Ev,_ZThn136_N9S21037C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S21037C12D0Ev,_ZThn104_N9S21037C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S21037C12D0Ev,_ZThn68_N9S21037C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21037C12D0Ev,_ZThn28_N9S21037C12D0Ev),
  (VTBL_ENTRY)_ZN9S21037C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S21037C12D1Ev,_ZThn172_N9S21037C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21037C12D1Ev,_ZThn136_N9S21037C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S21037C12D1Ev,_ZThn104_N9S21037C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S21037C12D1Ev,_ZThn68_N9S21037C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21037C12D1Ev,_ZThn28_N9S21037C12D1Ev),
  (VTBL_ENTRY)_ZN9S21037C12D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21037C12 = {  "S21037C12", // class name
  bases_S21037C12, 16,
  &(vtc_S21037C12[0]), // expected_vtbl_contents
  &(vtt_S21037C12[0]), // expected_vtt_contents
  ABISELECT(336,200), // object size
  NSPAIRA(_ZTI9S21037C12),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S21037C12),55, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21037C12),39, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names85,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21037C13  : S5266C26 , virtual S21037C6 , S17777C6_nt , virtual S5266C29 {
  ::S21037C8 s21037c13f0;
  short s21037c13f1;
  virtual  ~S21037C13(); // _ZN9S21037C13D2Ev
  S21037C13(); // tgen
};
//SIG(-1 S21037C13) C1{ BC2{ m} VBC3{ VBC4{ vd m} BC5{ VBC4 VBC6{ VBC4 FD Fc Fs[4]} vd Fi} BC7{ m Fp} vd Fs FL Fp FL} BC7 VBC8{ m} vd FC5 Fs}


 S21037C13 ::~S21037C13(){ note_dtor("S21037C13", this);}
S21037C13 ::S21037C13(){ note_ctor("S21037C13", this);} // tgen

static void Test_S21037C13()
{
  extern Class_Descriptor cd_S21037C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,29)];
    init_test(&cd_S21037C13, buf);
    S21037C13 *dp, &lv = *(dp=new (buf) S21037C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,112), "sizeof(S21037C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21037C13)");
    check_base_class_offset(lv, (S5266C26*), 0, "S21037C13");
    check_base_class_offset(lv, (S19905C19*)(S21037C6*), 0, "S21037C13");
    check_base_class_offset(lv, (S19905C19*)(S21037C8*)(S21037C6*), 0, "S21037C13");
    check_base_class_offset(lv, (S19905C19*)(S21037C9*), 0, "S21037C13");
    check_base_class_offset(lv, (S21037C9*)(S21037C8*)(S21037C6*), ABISELECT(144,84), "S21037C13");
    check_base_class_offset(lv, (S21037C8*)(S21037C6*), ABISELECT(88,48), "S21037C13");
    check_base_class_offset(lv, (S17777C6_nt*)(S21037C6*), ABISELECT(104,56), "S21037C13");
    check_base_class_offset(lv, (S21037C6*), ABISELECT(88,48), "S21037C13");
    /*is_ambiguous_... S21037C13::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*), ABISELECT(8,4), "S21037C13");
    check_base_class_offset(lv, (S5266C29*), 0, "S21037C13");
    check_field_offset(lv, s21037c13f0, ABISELECT(16,8), "S21037C13.s21037c13f0");
    check_field_offset(lv, s21037c13f1, ABISELECT(80,44), "S21037C13.s21037c13f1");
    test_class_info(&lv, &cd_S21037C13);
    dp->~S21037C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21037C13(Test_S21037C13, "S21037C13", ABISELECT(192,112));

#else // __cplusplus

extern void _ZN9S21037C13C1Ev();
extern void _ZN9S21037C13D2Ev();
Name_Map name_map_S21037C13[] = {
  NSPAIR(_ZN9S21037C13C1Ev),
  NSPAIR(_ZN9S21037C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S21037C9;
extern VTBL_ENTRY _ZTI8S21037C9[];
extern  VTBL_ENTRY _ZTV8S21037C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C9[];
extern Class_Descriptor cd_S21037C8;
extern VTBL_ENTRY _ZTI8S21037C8[];
extern  VTBL_ENTRY _ZTV8S21037C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C8[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S21037C6;
extern VTBL_ENTRY _ZTI8S21037C6[];
extern  VTBL_ENTRY _ZTV8S21037C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C6[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
static Base_Class bases_S21037C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19905C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21037C9,    ABISELECT(144,84), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21037C8,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21037C6,    ABISELECT(88,48), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S17777C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21037C13[];
extern void _ZN9S21037C13D1Ev();
extern void _ZN9S21037C13D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S21037C13D1Ev,_ZTv0_n12_N9S21037C13D1Ev)();
extern void ABISELECT(_ZThn88_N9S21037C13D1Ev,_ZThn48_N9S21037C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C13D0Ev,_ZTv0_n12_N9S21037C13D0Ev)();
extern void ABISELECT(_ZThn88_N9S21037C13D0Ev,_ZThn48_N9S21037C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C13D1Ev,_ZTv0_n12_N9S21037C13D1Ev)();
extern void ABISELECT(_ZThn144_N9S21037C13D1Ev,_ZThn84_N9S21037C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C13D0Ev,_ZTv0_n12_N9S21037C13D0Ev)();
extern void ABISELECT(_ZThn144_N9S21037C13D0Ev,_ZThn84_N9S21037C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21037C13[] = {
  0,
  ABISELECT(144,84),
  0,
  ABISELECT(88,48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21037C13[0]),
  (VTBL_ENTRY)&_ZN9S21037C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21037C13D0Ev,
  ABISELECT(56,36),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S21037C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C13D1Ev,_ZTv0_n12_N9S21037C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C13D0Ev,_ZTv0_n12_N9S21037C13D0Ev),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S21037C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C13D1Ev,_ZTv0_n12_N9S21037C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C13D0Ev,_ZTv0_n12_N9S21037C13D0Ev),
};
extern VTBL_ENTRY _ZTV9S21037C13[];
extern void ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev)();
extern void _ZN8S21037C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev)();
extern void _ZN8S21037C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C6__9S21037C13[] = {
  ABISELECT(56,36),
  ABISELECT(-88,-48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev)();
extern void _ZN8S21037C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev)();
extern void _ZN8S21037C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C88S21037C6__9S21037C13[] = {
  ABISELECT(56,36),
  ABISELECT(-88,-48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S21037C88S21037C6__9S21037C13[] = {
  ABISELECT(88,48),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S21037C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev)();
extern void ABISELECT(_ZThn56_N8S21037C8D1Ev,_ZThn36_N8S21037C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev)();
extern void ABISELECT(_ZThn56_N8S21037C8D0Ev,_ZThn36_N8S21037C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C9__8S21037C88S21037C6__9S21037C13[] = {
  ABISELECT(-144,-84),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S21037C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S21037C6__9S21037C13[] = {
  ABISELECT(88,48),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S21037C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev)();
extern void ABISELECT(_ZThn56_N8S21037C6D1Ev,_ZThn36_N8S21037C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev)();
extern void ABISELECT(_ZThn56_N8S21037C6D0Ev,_ZThn36_N8S21037C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C9__8S21037C6__9S21037C13[] = {
  ABISELECT(-144,-84),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S21037C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev)();
extern void _ZN8S21037C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev)();
extern void _ZN8S21037C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C9__9S21037C13[] = {
  ABISELECT(-144,-84),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S21037C9__9S21037C13[] = {
  ABISELECT(144,84),
  ABISELECT(144,84),
  (VTBL_ENTRY)&(_ZTI8S21037C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev),
};
static  VTT_ENTRY vtt_S21037C13[] = {
  {&(_ZTV9S21037C13[7]),  7,22},
  {&(_ZTV9S21037C13[14]),  14,22},
  {&(_ZTV9S21037C13[7]),  7,22},
  {&(_ZTV9S21037C13[20]),  20,22},
  {&(_tg__ZTV8S21037C6__9S21037C13[5]),  5,7},
  {&(_tg__ZTV8S21037C88S21037C6__9S21037C13[5]),  5,7},
  {&(_tg__ZTV9S19905C19__8S21037C88S21037C6__9S21037C13[3]),  3,5},
  {&(_tg__ZTV8S21037C9__8S21037C88S21037C6__9S21037C13[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S21037C6__9S21037C13[3]),  3,5},
  {&(_tg__ZTV8S21037C9__8S21037C6__9S21037C13[4]),  4,6},
  {&(_tg__ZTV8S21037C9__9S21037C13[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S21037C9__9S21037C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21037C13[];
extern  VTBL_ENTRY _ZTV9S21037C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21037C13[];
static VTBL_ENTRY alt_thunk_names86[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev), // 
  (VTBL_ENTRY)_ZN8S21037C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev), // 
  (VTBL_ENTRY)_ZN8S21037C9D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21037C8D0Ev,_ZThn36_N8S21037C8D0Ev),
  (VTBL_ENTRY)_ZN8S21037C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21037C8D1Ev,_ZThn36_N8S21037C8D1Ev),
  (VTBL_ENTRY)_ZN8S21037C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21037C6D0Ev,_ZThn36_N8S21037C6D0Ev),
  (VTBL_ENTRY)_ZN8S21037C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21037C6D1Ev,_ZThn36_N8S21037C6D1Ev),
  (VTBL_ENTRY)_ZN8S21037C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21037C13D0Ev,_ZTv0_n12_N9S21037C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S21037C13D0Ev,_ZThn84_N9S21037C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S21037C13D0Ev,_ZThn48_N9S21037C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21037C13D1Ev,_ZTv0_n12_N9S21037C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S21037C13D1Ev,_ZThn84_N9S21037C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S21037C13D1Ev,_ZThn48_N9S21037C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21037C13 = {  "S21037C13", // class name
  bases_S21037C13, 8,
  &(vtc_S21037C13[0]), // expected_vtbl_contents
  &(vtt_S21037C13[0]), // expected_vtt_contents
  ABISELECT(192,112), // object size
  NSPAIRA(_ZTI9S21037C13),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S21037C13),22, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21037C13),12, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names86,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21037C11  : virtual S21037C9 , virtual S21037C12 , virtual S17777C6_nt , S21037C13 {
  int s21037c11f0;
  ::S19905C17_nt s21037c11f1;
  virtual  ~S21037C11(); // _ZN9S21037C11D2Ev
  S21037C11(); // tgen
};
//SIG(-1 S21037C11) C1{ VBC2{ VBC3{ vd m} FD Fc Fs[4]} VBC4{ VBC3 BC2 VBC5{ VBC6{ m} VBC7{ VBC8{ VBC3 BC9{ VBC3 VBC2 vd Fi} BC10{ m Fp} vd Fs FL Fp FL} BC10 BC3 BC2 vd Fi} BC2 vd Fs} BC8 Fp} VBC10 BC11{ BC12{ m} VBC8 BC10 VBC6 vd FC9 Fs} vd Fi FC13{}}


 S21037C11 ::~S21037C11(){ note_dtor("S21037C11", this);}
S21037C11 ::S21037C11(){ note_ctor("S21037C11", this);} // tgen

static void Test_S21037C11()
{
  extern Class_Descriptor cd_S21037C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(28,66)];
    init_test(&cd_S21037C11, buf);
    S21037C11 *dp, &lv = *(dp=new (buf) S21037C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(432,260), "sizeof(S21037C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21037C11)");
    /*is_ambiguous_... S21037C11::S21037C9 */ AMB_check_base_class_offset(lv, (S19905C19*)(S21037C9*), ABISELECT(96,56), "S21037C11");
    /*is_ambiguous_... S21037C12::S19905C19 */ AMB_check_base_class_offset(lv, (S19905C19*)(S21037C12*), ABISELECT(96,56), "S21037C11");
    /*is_ambiguous_... S21037C12::S21037C9 */ AMB_check_base_class_offset(lv, (S19905C19*)(S21037C9*)(S21037C12*), ABISELECT(96,56), "S21037C11");
    /*is_ambiguous_... S21037C11::S21037C6 */ AMB_check_base_class_offset(lv, (S19905C19*)(S21037C6*), ABISELECT(96,56), "S21037C11");
    /*is_ambiguous_... S21037C11::S21037C6 */ AMB_check_base_class_offset(lv, (S19905C19*)(S21037C8*)(S21037C6*), ABISELECT(96,56), "S21037C11");
    /*is_ambiguous_... S21037C5::S21037C9 */ AMB_check_base_class_offset(lv, (S19905C19*)(S21037C9*)(S21037C5*), ABISELECT(96,56), "S21037C11");
    /*is_ambiguous_... S21037C3::S21037C9 */ AMB_check_base_class_offset(lv, (S19905C19*)(S21037C9*)(S21037C3*), ABISELECT(96,56), "S21037C11");
    /*is_ambiguous_... S21037C12::S21037C6 */ AMB_check_base_class_offset(lv, (S19905C19*)(S21037C6*)(S21037C12*), ABISELECT(96,56), "S21037C11");
    /*is_ambiguous_... S21037C12::S21037C6 */ AMB_check_base_class_offset(lv, (S19905C19*)(S21037C8*)(S21037C6*)(S21037C12*), ABISELECT(96,56), "S21037C11");
    /*is_ambiguous_... S21037C11::S21037C9 */ AMB_check_base_class_offset(lv, (S21037C9*), ABISELECT(96,56), "S21037C11");
    /*is_ambiguous_... S21037C11::S21037C6 */ AMB_check_base_class_offset(lv, (S21037C9*)(S21037C8*)(S21037C6*), ABISELECT(96,56), "S21037C11");
    /*is_ambiguous_... S21037C12::S21037C6 */ AMB_check_base_class_offset(lv, (S21037C9*)(S21037C8*)(S21037C6*)(S21037C12*), ABISELECT(96,56), "S21037C11");
    /*is_ambiguous_... S21037C12::S21037C9 */ AMB_check_base_class_offset(lv, (S21037C9*)(S21037C12*), ABISELECT(144,84), "S21037C11");
    check_base_class_offset(lv, (S5266C29*)(S21037C3*), 0, "S21037C11");
    check_base_class_offset(lv, (S5266C29*)(S21037C13*), 0, "S21037C11");
    /*is_ambiguous_... S21037C11::S21037C6 */ AMB_check_base_class_offset(lv, (S21037C8*)(S21037C6*), ABISELECT(368,220), "S21037C11");
    /*is_ambiguous_... S21037C11::S21037C6 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S21037C6*), ABISELECT(384,228), "S21037C11");
    check_base_class_offset(lv, (S21037C6*)(S21037C5*), ABISELECT(368,220), "S21037C11");
    check_base_class_offset(lv, (S21037C6*)(S21037C13*), ABISELECT(368,220), "S21037C11");
    /*is_ambiguous_... S21037C5::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S21037C5*), ABISELECT(312,184), "S21037C11");
    /*is_ambiguous_... S21037C5::S19905C19 */ AMB_check_base_class_offset(lv, (S19905C19*)(S21037C5*), ABISELECT(304,180), "S21037C11");
    /*is_ambiguous_... S21037C5::S21037C9 */ AMB_check_base_class_offset(lv, (S21037C9*)(S21037C5*), ABISELECT(320,188), "S21037C11");
    check_base_class_offset(lv, (S21037C5*)(S21037C3*), ABISELECT(304,180), "S21037C11");
    /*is_ambiguous_... S21037C3::S21037C9 */ AMB_check_base_class_offset(lv, (S21037C9*)(S21037C3*), ABISELECT(256,152), "S21037C11");
    check_base_class_offset(lv, (S21037C3*)(S21037C12*), ABISELECT(256,152), "S21037C11");
    /*is_ambiguous_... S21037C12::S21037C6 */ AMB_check_base_class_offset(lv, (S21037C8*)(S21037C6*)(S21037C12*), ABISELECT(192,112), "S21037C11");
    /*is_ambiguous_... S21037C12::S21037C6 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S21037C6*)(S21037C12*), ABISELECT(208,120), "S21037C11");
    /*is_ambiguous_... S21037C12::S21037C6 */ AMB_check_base_class_offset(lv, (S21037C6*)(S21037C12*), ABISELECT(192,112), "S21037C11");
    check_base_class_offset(lv, (S21037C12*), ABISELECT(144,84), "S21037C11");
    /*is_ambiguous_... S21037C11::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*), ABISELECT(424,256), "S21037C11");
    check_base_class_offset(lv, (S5266C26*)(S21037C13*), 0, "S21037C11");
    /*is_ambiguous_... S21037C13::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S21037C13*), ABISELECT(8,4), "S21037C11");
    check_base_class_offset(lv, (S21037C13*), 0, "S21037C11");
    check_field_offset(lv, s21037c11f0, ABISELECT(84,48), "S21037C11.s21037c11f0");
    check_field_offset(lv, s21037c11f1, ABISELECT(88,52), "S21037C11.s21037c11f1");
    test_class_info(&lv, &cd_S21037C11);
    dp->~S21037C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21037C11(Test_S21037C11, "S21037C11", ABISELECT(432,260));

#else // __cplusplus

extern void _ZN9S21037C11C1Ev();
extern void _ZN9S21037C11D2Ev();
Name_Map name_map_S21037C11[] = {
  NSPAIR(_ZN9S21037C11C1Ev),
  NSPAIR(_ZN9S21037C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S21037C9;
extern VTBL_ENTRY _ZTI8S21037C9[];
extern  VTBL_ENTRY _ZTV8S21037C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C9[];
extern Class_Descriptor cd_S21037C9;
extern VTBL_ENTRY _ZTI8S21037C9[];
extern  VTBL_ENTRY _ZTV8S21037C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C9[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S21037C8;
extern VTBL_ENTRY _ZTI8S21037C8[];
extern  VTBL_ENTRY _ZTV8S21037C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C8[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S21037C6;
extern VTBL_ENTRY _ZTI8S21037C6[];
extern  VTBL_ENTRY _ZTV8S21037C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C6[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S21037C9;
extern VTBL_ENTRY _ZTI8S21037C9[];
extern  VTBL_ENTRY _ZTV8S21037C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C9[];
extern Class_Descriptor cd_S21037C5;
extern VTBL_ENTRY _ZTI8S21037C5[];
extern  VTBL_ENTRY _ZTV8S21037C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C5[];
extern Class_Descriptor cd_S21037C9;
extern VTBL_ENTRY _ZTI8S21037C9[];
extern  VTBL_ENTRY _ZTV8S21037C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C9[];
extern Class_Descriptor cd_S21037C3;
extern VTBL_ENTRY _ZTI8S21037C3[];
extern  VTBL_ENTRY _ZTV8S21037C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C3[];
extern Class_Descriptor cd_S21037C8;
extern VTBL_ENTRY _ZTI8S21037C8[];
extern  VTBL_ENTRY _ZTV8S21037C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C8[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S21037C6;
extern VTBL_ENTRY _ZTI8S21037C6[];
extern  VTBL_ENTRY _ZTV8S21037C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C6[];
extern Class_Descriptor cd_S21037C12;
extern VTBL_ENTRY _ZTI9S21037C12[];
extern  VTBL_ENTRY _ZTV9S21037C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21037C12[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S21037C13;
extern VTBL_ENTRY _ZTI9S21037C13[];
extern  VTBL_ENTRY _ZTV9S21037C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21037C13[];
static Base_Class bases_S21037C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19905C19,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S21037C9,    ABISELECT(96,56), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21037C9,    ABISELECT(144,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S21037C8,    ABISELECT(368,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(384,228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21037C6,    ABISELECT(368,220), //bcp->offset
    61, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S17777C6_nt,    ABISELECT(312,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19905C19,    ABISELECT(304,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21037C9,    ABISELECT(320,188), //bcp->offset
    55, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21037C5,    ABISELECT(304,180), //bcp->offset
    47, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S21037C9,    ABISELECT(256,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21037C3,    ABISELECT(256,152), //bcp->offset
    37, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S21037C8,    ABISELECT(192,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(208,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21037C6,    ABISELECT(192,112), //bcp->offset
    30, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21037C12,    ABISELECT(144,84), //bcp->offset
    19, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S17777C6_nt,    ABISELECT(424,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21037C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21037C11[];
extern void ABISELECT(_ZTv0_n24_N9S21037C11D1Ev,_ZTv0_n12_N9S21037C11D1Ev)();
extern void _ZN9S21037C11D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C11D0Ev,_ZTv0_n12_N9S21037C11D0Ev)();
extern void _ZN9S21037C11D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C11D1Ev,_ZTv0_n12_N9S21037C11D1Ev)();
extern void ABISELECT(_ZThn96_N9S21037C11D1Ev,_ZThn56_N9S21037C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C11D0Ev,_ZTv0_n12_N9S21037C11D0Ev)();
extern void ABISELECT(_ZThn96_N9S21037C11D0Ev,_ZThn56_N9S21037C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C11D1Ev,_ZTv0_n12_N9S21037C11D1Ev)();
extern void ABISELECT(_ZThn144_N9S21037C11D1Ev,_ZThn84_N9S21037C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C11D0Ev,_ZTv0_n12_N9S21037C11D0Ev)();
extern void ABISELECT(_ZThn144_N9S21037C11D0Ev,_ZThn84_N9S21037C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C11D1Ev,_ZTv0_n12_N9S21037C11D1Ev)();
extern void ABISELECT(_ZThn192_N9S21037C11D1Ev,_ZThn112_N9S21037C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C11D0Ev,_ZTv0_n12_N9S21037C11D0Ev)();
extern void ABISELECT(_ZThn192_N9S21037C11D0Ev,_ZThn112_N9S21037C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C11D1Ev,_ZTv0_n12_N9S21037C11D1Ev)();
extern void ABISELECT(_ZThn256_N9S21037C11D1Ev,_ZThn152_N9S21037C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C11D0Ev,_ZTv0_n12_N9S21037C11D0Ev)();
extern void ABISELECT(_ZThn256_N9S21037C11D0Ev,_ZThn152_N9S21037C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21037C11D1Ev,_ZTv0_n24_N9S21037C11D1Ev)();
extern void ABISELECT(_ZThn304_N9S21037C11D1Ev,_ZThn180_N9S21037C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21037C11D0Ev,_ZTv0_n24_N9S21037C11D0Ev)();
extern void ABISELECT(_ZThn304_N9S21037C11D0Ev,_ZThn180_N9S21037C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C11D1Ev,_ZTv0_n12_N9S21037C11D1Ev)();
extern void ABISELECT(_ZThn320_N9S21037C11D1Ev,_ZThn188_N9S21037C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C11D0Ev,_ZTv0_n12_N9S21037C11D0Ev)();
extern void ABISELECT(_ZThn320_N9S21037C11D0Ev,_ZThn188_N9S21037C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C11D1Ev,_ZTv0_n12_N9S21037C11D1Ev)();
extern void ABISELECT(_ZThn368_N9S21037C11D1Ev,_ZThn220_N9S21037C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C11D0Ev,_ZTv0_n12_N9S21037C11D0Ev)();
extern void ABISELECT(_ZThn368_N9S21037C11D0Ev,_ZThn220_N9S21037C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21037C11[] = {
  ABISELECT(424,256),
  ABISELECT(304,180),
  ABISELECT(256,152),
  ABISELECT(144,84),
  0,
  ABISELECT(96,56),
  ABISELECT(96,56),
  ABISELECT(368,220),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21037C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C11D1Ev,_ZTv0_n12_N9S21037C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C11D0Ev,_ZTv0_n12_N9S21037C11D0Ev),
  0,
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S21037C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C11D1Ev,_ZTv0_n12_N9S21037C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C11D0Ev,_ZTv0_n12_N9S21037C11D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(224,136),
  ABISELECT(160,96),
  ABISELECT(-144,-84),
  ABISELECT(112,68),
  ABISELECT(-48,-28),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S21037C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C11D1Ev,_ZTv0_n12_N9S21037C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C11D0Ev,_ZTv0_n12_N9S21037C11D0Ev),
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI9S21037C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C11D1Ev,_ZTv0_n12_N9S21037C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C11D0Ev,_ZTv0_n12_N9S21037C11D0Ev),
  ABISELECT(-160,-96),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-256,-152),
  ABISELECT(-160,-96),
  ABISELECT(-256,-152),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI9S21037C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C11D1Ev,_ZTv0_n12_N9S21037C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C11D0Ev,_ZTv0_n12_N9S21037C11D0Ev),
  ABISELECT(-304,-180),
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  ABISELECT(64,40),
  ABISELECT(-304,-180),
  (VTBL_ENTRY)&(_ZTI9S21037C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21037C11D1Ev,_ZTv0_n24_N9S21037C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21037C11D0Ev,_ZTv0_n24_N9S21037C11D0Ev),
  ABISELECT(-224,-132),
  ABISELECT(-320,-188),
  ABISELECT(-320,-188),
  (VTBL_ENTRY)&(_ZTI9S21037C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C11D1Ev,_ZTv0_n12_N9S21037C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C11D0Ev,_ZTv0_n12_N9S21037C11D0Ev),
  ABISELECT(-272,-164),
  ABISELECT(-272,-164),
  ABISELECT(-368,-220),
  ABISELECT(-368,-220),
  (VTBL_ENTRY)&(_ZTI9S21037C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C11D1Ev,_ZTv0_n12_N9S21037C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C11D0Ev,_ZTv0_n12_N9S21037C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S21037C11[];
extern void ABISELECT(_ZTv0_n24_N9S21037C13D1Ev,_ZTv0_n12_N9S21037C13D1Ev)();
extern void _ZN9S21037C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C13D0Ev,_ZTv0_n12_N9S21037C13D0Ev)();
extern void _ZN9S21037C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21037C13__9S21037C11[] = {
  0,
  ABISELECT(96,56),
  ABISELECT(96,56),
  ABISELECT(368,220),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21037C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C13D1Ev,_ZTv0_n12_N9S21037C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C13D0Ev,_ZTv0_n12_N9S21037C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21037C13D1Ev,_ZTv0_n12_N9S21037C13D1Ev)();
extern void ABISELECT(_ZThn368_N9S21037C13D1Ev,_ZThn220_N9S21037C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C13D0Ev,_ZTv0_n12_N9S21037C13D0Ev)();
extern void ABISELECT(_ZThn368_N9S21037C13D0Ev,_ZThn220_N9S21037C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C6__9S21037C13__9S21037C11[] = {
  ABISELECT(-272,-164),
  ABISELECT(-272,-164),
  ABISELECT(-368,-220),
  ABISELECT(-368,-220),
  (VTBL_ENTRY)&(_ZTI9S21037C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C13D1Ev,_ZTv0_n12_N9S21037C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C13D0Ev,_ZTv0_n12_N9S21037C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21037C13D1Ev,_ZTv0_n12_N9S21037C13D1Ev)();
extern void ABISELECT(_ZThn96_N9S21037C13D1Ev,_ZThn56_N9S21037C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C13D0Ev,_ZTv0_n12_N9S21037C13D0Ev)();
extern void ABISELECT(_ZThn96_N9S21037C13D0Ev,_ZThn56_N9S21037C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C9__9S21037C13__9S21037C11[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S21037C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C13D1Ev,_ZTv0_n12_N9S21037C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C13D0Ev,_ZTv0_n12_N9S21037C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev)();
extern void _ZN8S21037C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev)();
extern void _ZN8S21037C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C9__9S21037C11[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev)();
extern void _ZN9S21037C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev)();
extern void _ZN9S21037C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21037C12__9S21037C11[] = {
  ABISELECT(-48,-28),
  ABISELECT(224,136),
  ABISELECT(160,96),
  ABISELECT(-144,-84),
  ABISELECT(112,68),
  ABISELECT(-48,-28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21037C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev)();
extern void _ZN8S21037C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev)();
extern void _ZN8S21037C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C99S21037C12__A1__9S21037C11[] = {
  ABISELECT(-48,-28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S21037C99S21037C12__A1__9S21037C11[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S21037C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev)();
extern void _ZN8S21037C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev)();
extern void _ZN8S21037C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C69S21037C12__A1__9S21037C11[] = {
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev)();
extern void _ZN8S21037C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev)();
extern void _ZN8S21037C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C88S21037C69S21037C12__A1__9S21037C11[] = {
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21037C9__8S21037C88S21037C69S21037C12__A1__9S21037C11[] = {
  0,
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S21037C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21037C9__8S21037C69S21037C12__A1__9S21037C11[] = {
  0,
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S21037C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21037C9__A1__9S21037C12__9S21037C11[] = {
  0,
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S21037C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev)();
extern void ABISELECT(_ZThn112_N9S21037C12D1Ev,_ZThn68_N9S21037C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev)();
extern void ABISELECT(_ZThn112_N9S21037C12D0Ev,_ZThn68_N9S21037C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C3__9S21037C12__9S21037C11[] = {
  ABISELECT(-160,-96),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-256,-152),
  ABISELECT(-160,-96),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI9S21037C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S21037C12D1Ev,_ZTv0_n24_N9S21037C12D1Ev)();
extern void ABISELECT(_ZThn160_N9S21037C12D1Ev,_ZThn96_N9S21037C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21037C12D0Ev,_ZTv0_n24_N9S21037C12D0Ev)();
extern void ABISELECT(_ZThn160_N9S21037C12D0Ev,_ZThn96_N9S21037C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C5__9S21037C12__9S21037C11[] = {
  ABISELECT(-160,-96),
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  ABISELECT(64,40),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI9S21037C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21037C12D1Ev,_ZTv0_n24_N9S21037C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21037C12D0Ev,_ZTv0_n24_N9S21037C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev)();
extern void ABISELECT(_ZThn224_N9S21037C12D1Ev,_ZThn136_N9S21037C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev)();
extern void ABISELECT(_ZThn224_N9S21037C12D0Ev,_ZThn136_N9S21037C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C6__9S21037C12__9S21037C11[] = {
  ABISELECT(-272,-164),
  ABISELECT(-272,-164),
  ABISELECT(-224,-136),
  ABISELECT(-224,-136),
  (VTBL_ENTRY)&(_ZTI9S21037C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev)();
extern void ABISELECT(_ZThn176_N9S21037C12D1Ev,_ZThn104_N9S21037C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev)();
extern void ABISELECT(_ZThn176_N9S21037C12D0Ev,_ZThn104_N9S21037C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C98S21037C5__A2__9S21037C12__9S21037C11[] = {
  ABISELECT(-224,-132),
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI9S21037C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev)();
extern void ABISELECT(_ZThn48_N9S21037C12D1Ev,_ZThn28_N9S21037C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev)();
extern void ABISELECT(_ZThn48_N9S21037C12D0Ev,_ZThn28_N9S21037C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C6__A__9S21037C12__9S21037C11[] = {
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S21037C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev)();
extern void _ZN8S21037C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev)();
extern void _ZN8S21037C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C3__9S21037C11[] = {
  ABISELECT(-160,-96),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-256,-152),
  ABISELECT(-160,-96),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev)();
extern void _ZN8S21037C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev)();
extern void _ZN8S21037C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C98S21037C3__A3__9S21037C11[] = {
  ABISELECT(-160,-96),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S21037C98S21037C3__A3__9S21037C11[] = {
  ABISELECT(160,96),
  ABISELECT(160,96),
  (VTBL_ENTRY)&(_ZTI8S21037C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S21037C3D1Ev,_ZTv0_n24_N8S21037C3D1Ev)();
extern void ABISELECT(_ZThn48_N8S21037C3D1Ev,_ZThn28_N8S21037C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21037C3D0Ev,_ZTv0_n24_N8S21037C3D0Ev)();
extern void ABISELECT(_ZThn48_N8S21037C3D0Ev,_ZThn28_N8S21037C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C5__8S21037C3__9S21037C11[] = {
  ABISELECT(-48,-28),
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S21037C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21037C3D1Ev,_ZTv0_n24_N8S21037C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21037C3D0Ev,_ZTv0_n24_N8S21037C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev)();
extern void ABISELECT(_ZThn112_N8S21037C3D1Ev,_ZThn68_N8S21037C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev)();
extern void ABISELECT(_ZThn112_N8S21037C3D0Ev,_ZThn68_N8S21037C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C6__8S21037C3__9S21037C11[] = {
  ABISELECT(-272,-164),
  ABISELECT(-272,-164),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S21037C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21037C9__8S21037C3__9S21037C11[] = {
  0,
  ABISELECT(160,96),
  ABISELECT(160,96),
  (VTBL_ENTRY)&(_ZTI8S21037C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev)();
extern void ABISELECT(_ZThn64_N8S21037C3D1Ev,_ZThn36_N8S21037C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev)();
extern void ABISELECT(_ZThn64_N8S21037C3D0Ev,_ZThn36_N8S21037C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C98S21037C5__A1__8S21037C3__9S21037C11[] = {
  ABISELECT(-224,-132),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S21037C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev),
};
extern void _ZN8S21037C5D1Ev();
extern void _ZN8S21037C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21037C5__9S21037C11[] = {
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C5[0]),
  (VTBL_ENTRY)&_ZN8S21037C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21037C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev)();
extern void _ZN8S21037C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev)();
extern void _ZN8S21037C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C98S21037C5__A2__9S21037C11[] = {
  ABISELECT(-224,-132),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S21037C98S21037C5__A2__9S21037C11[] = {
  ABISELECT(224,132),
  ABISELECT(224,132),
  (VTBL_ENTRY)&(_ZTI8S21037C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C5D1Ev,_ZTv0_n12_N8S21037C5D1Ev)();
extern void ABISELECT(_ZThn64_N8S21037C5D1Ev,_ZThn40_N8S21037C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C5D0Ev,_ZTv0_n12_N8S21037C5D0Ev)();
extern void ABISELECT(_ZThn64_N8S21037C5D0Ev,_ZThn40_N8S21037C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C6__8S21037C5__9S21037C11[] = {
  ABISELECT(-272,-164),
  ABISELECT(-272,-164),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S21037C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C5D1Ev,_ZTv0_n12_N8S21037C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C5D0Ev,_ZTv0_n12_N8S21037C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C5D1Ev,_ZTv0_n12_N8S21037C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21037C5D0Ev,_ZTv0_n12_N8S21037C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21037C9__8S21037C5__9S21037C11[] = {
  0,
  ABISELECT(208,124),
  ABISELECT(208,124),
  (VTBL_ENTRY)&(_ZTI8S21037C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C5D1Ev,_ZTv0_n12_N8S21037C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C5D0Ev,_ZTv0_n12_N8S21037C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C5D1Ev,_ZTv0_n12_N8S21037C5D1Ev)();
extern void ABISELECT(_ZThn16_N8S21037C5D1Ev,_ZThn8_N8S21037C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C5D0Ev,_ZTv0_n12_N8S21037C5D0Ev)();
extern void ABISELECT(_ZThn16_N8S21037C5D0Ev,_ZThn8_N8S21037C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C9__A__8S21037C5__9S21037C11[] = {
  ABISELECT(-224,-132),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21037C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C5D1Ev,_ZTv0_n12_N8S21037C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C5D0Ev,_ZTv0_n12_N8S21037C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev)();
extern void _ZN8S21037C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev)();
extern void _ZN8S21037C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C6__9S21037C11[] = {
  ABISELECT(-272,-164),
  ABISELECT(-272,-164),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev)();
extern void _ZN8S21037C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev)();
extern void _ZN8S21037C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C88S21037C6__9S21037C11[] = {
  ABISELECT(-272,-164),
  ABISELECT(-272,-164),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21037C9__8S21037C88S21037C6__9S21037C11[] = {
  0,
  ABISELECT(272,164),
  ABISELECT(272,164),
  (VTBL_ENTRY)&(_ZTI8S21037C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21037C9__8S21037C6__9S21037C11[] = {
  0,
  ABISELECT(272,164),
  ABISELECT(272,164),
  (VTBL_ENTRY)&(_ZTI8S21037C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev),
};
static  VTT_ENTRY vtt_S21037C11[] = {
  {&(_ZTV9S21037C11[11]),  11,68},
  {&(_tg__ZTV9S21037C13__9S21037C11[7]),  7,9},
  {&(_tg__ZTV8S21037C6__9S21037C13__9S21037C11[5]),  5,7},
  {&(_tg__ZTV8S21037C9__9S21037C13__9S21037C11[4]),  4,6},
  {&(_tg__ZTV8S21037C9__9S21037C13__9S21037C11[4]),  4,6},
  {&(_ZTV9S21037C11[17]),  17,68},
  {&(_ZTV9S21037C11[17]),  17,68},
  {&(_ZTV9S21037C11[28]),  28,68},
  {&(_ZTV9S21037C11[45]),  45,68},
  {&(_ZTV9S21037C11[53]),  53,68},
  {&(_ZTV9S21037C11[66]),  66,68},
  {&(_ZTV9S21037C11[59]),  59,68},
  {&(_ZTV9S21037C11[35]),  35,68},
  {&(_tg__ZTV8S21037C9__9S21037C11[4]),  4,6},
  {&(_tg__ZTV8S21037C9__9S21037C11[4]),  4,6},
  {&(_tg__ZTV9S21037C12__9S21037C11[9]),  9,11},
  {&(_tg__ZTV8S21037C99S21037C12__A1__9S21037C11[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S21037C99S21037C12__A1__9S21037C11[3]),  3,5},
  {&(_tg__ZTV8S21037C69S21037C12__A1__9S21037C11[5]),  5,7},
  {&(_tg__ZTV8S21037C88S21037C69S21037C12__A1__9S21037C11[5]),  5,7},
  {&(_tg__ZTV8S21037C9__8S21037C88S21037C69S21037C12__A1__9S21037C11[4]),  4,6},
  {&(_tg__ZTV8S21037C9__8S21037C88S21037C69S21037C12__A1__9S21037C11[4]),  4,6},
  {&(_tg__ZTV8S21037C9__8S21037C69S21037C12__A1__9S21037C11[4]),  4,6},
  {&(_tg__ZTV8S21037C9__8S21037C69S21037C12__A1__9S21037C11[4]),  4,6},
  {&(_tg__ZTV8S21037C9__A1__9S21037C12__9S21037C11[4]),  4,6},
  {&(_tg__ZTV8S21037C3__9S21037C12__9S21037C11[8]),  8,10},
  {&(_tg__ZTV8S21037C5__9S21037C12__9S21037C11[6]),  6,8},
  {&(_tg__ZTV8S21037C6__9S21037C12__9S21037C11[5]),  5,7},
  {&(_tg__ZTV8S21037C9__A1__9S21037C12__9S21037C11[4]),  4,6},
  {&(_tg__ZTV8S21037C98S21037C5__A2__9S21037C12__9S21037C11[4]),  4,6},
  {&(_tg__ZTV8S21037C6__A__9S21037C12__9S21037C11[5]),  5,7},
  {&(_tg__ZTV8S21037C3__9S21037C11[8]),  8,10},
  {&(_tg__ZTV8S21037C98S21037C3__A3__9S21037C11[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S21037C98S21037C3__A3__9S21037C11[3]),  3,5},
  {&(_tg__ZTV8S21037C5__8S21037C3__9S21037C11[6]),  6,8},
  {&(_tg__ZTV8S21037C6__8S21037C3__9S21037C11[5]),  5,7},
  {&(_tg__ZTV8S21037C9__8S21037C3__9S21037C11[4]),  4,6},
  {&(_tg__ZTV8S21037C9__8S21037C3__9S21037C11[4]),  4,6},
  {&(_tg__ZTV8S21037C98S21037C5__A1__8S21037C3__9S21037C11[4]),  4,6},
  {&(_tg__ZTV8S21037C5__9S21037C11[5]),  5,7},
  {&(_tg__ZTV8S21037C98S21037C5__A2__9S21037C11[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S21037C98S21037C5__A2__9S21037C11[3]),  3,5},
  {&(_tg__ZTV8S21037C6__8S21037C5__9S21037C11[5]),  5,7},
  {&(_tg__ZTV8S21037C9__8S21037C5__9S21037C11[4]),  4,6},
  {&(_tg__ZTV8S21037C9__8S21037C5__9S21037C11[4]),  4,6},
  {&(_tg__ZTV8S21037C9__A__8S21037C5__9S21037C11[4]),  4,6},
  {&(_tg__ZTV8S21037C6__9S21037C11[5]),  5,7},
  {&(_tg__ZTV8S21037C88S21037C6__9S21037C11[5]),  5,7},
  {&(_tg__ZTV8S21037C9__8S21037C88S21037C6__9S21037C11[4]),  4,6},
  {&(_tg__ZTV8S21037C9__8S21037C88S21037C6__9S21037C11[4]),  4,6},
  {&(_tg__ZTV8S21037C9__8S21037C6__9S21037C11[4]),  4,6},
  {&(_tg__ZTV8S21037C9__8S21037C6__9S21037C11[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S21037C11[];
extern  VTBL_ENTRY _ZTV9S21037C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21037C11[];
static VTBL_ENTRY alt_thunk_names87[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C5D0Ev,_ZTv0_n12_N8S21037C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21037C5D0Ev,_ZThn8_N8S21037C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21037C5D0Ev,_ZThn40_N8S21037C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C5D1Ev,_ZTv0_n12_N8S21037C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21037C5D1Ev,_ZThn8_N8S21037C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21037C5D1Ev,_ZThn40_N8S21037C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21037C3D0Ev,_ZTv0_n24_N8S21037C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21037C3D0Ev,_ZThn28_N8S21037C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21037C3D1Ev,_ZTv0_n24_N8S21037C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21037C3D1Ev,_ZThn28_N8S21037C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21037C3D0Ev,_ZThn36_N8S21037C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21037C3D0Ev,_ZThn68_N8S21037C3D0Ev),
  (VTBL_ENTRY)_ZN8S21037C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21037C3D1Ev,_ZThn36_N8S21037C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21037C3D1Ev,_ZThn68_N8S21037C3D1Ev),
  (VTBL_ENTRY)_ZN8S21037C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21037C12D0Ev,_ZTv0_n24_N9S21037C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S21037C12D0Ev,_ZThn96_N9S21037C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21037C12D1Ev,_ZTv0_n24_N9S21037C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S21037C12D1Ev,_ZThn96_N9S21037C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev), // 
  (VTBL_ENTRY)_ZN8S21037C8D0Ev,
  (VTBL_ENTRY)_ZN8S21037C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev), // 
  (VTBL_ENTRY)_ZN8S21037C8D1Ev,
  (VTBL_ENTRY)_ZN8S21037C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev), // 
  (VTBL_ENTRY)_ZN8S21037C6D0Ev,
  (VTBL_ENTRY)_ZN8S21037C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev), // 
  (VTBL_ENTRY)_ZN8S21037C6D1Ev,
  (VTBL_ENTRY)_ZN8S21037C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21037C12D0Ev,_ZThn28_N9S21037C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S21037C12D0Ev,_ZThn104_N9S21037C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21037C12D0Ev,_ZThn136_N9S21037C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S21037C12D0Ev,_ZThn68_N9S21037C12D0Ev),
  (VTBL_ENTRY)_ZN9S21037C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21037C12D1Ev,_ZThn28_N9S21037C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S21037C12D1Ev,_ZThn104_N9S21037C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21037C12D1Ev,_ZThn136_N9S21037C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S21037C12D1Ev,_ZThn68_N9S21037C12D1Ev),
  (VTBL_ENTRY)_ZN9S21037C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev), // 
  (VTBL_ENTRY)_ZN8S21037C9D0Ev,
  (VTBL_ENTRY)_ZN8S21037C9D0Ev,
  (VTBL_ENTRY)_ZN8S21037C9D0Ev,
  (VTBL_ENTRY)_ZN8S21037C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev), // 
  (VTBL_ENTRY)_ZN8S21037C9D1Ev,
  (VTBL_ENTRY)_ZN8S21037C9D1Ev,
  (VTBL_ENTRY)_ZN8S21037C9D1Ev,
  (VTBL_ENTRY)_ZN8S21037C9D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21037C13D0Ev,_ZTv0_n12_N9S21037C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21037C13D0Ev,_ZThn56_N9S21037C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S21037C13D0Ev,_ZThn220_N9S21037C13D0Ev),
  (VTBL_ENTRY)_ZN9S21037C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21037C13D1Ev,_ZTv0_n12_N9S21037C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21037C13D1Ev,_ZThn56_N9S21037C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S21037C13D1Ev,_ZThn220_N9S21037C13D1Ev),
  (VTBL_ENTRY)_ZN9S21037C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21037C11D0Ev,_ZTv0_n24_N9S21037C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S21037C11D0Ev,_ZThn180_N9S21037C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21037C11D1Ev,_ZTv0_n24_N9S21037C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S21037C11D1Ev,_ZThn180_N9S21037C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21037C11D0Ev,_ZTv0_n12_N9S21037C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S21037C11D0Ev,_ZThn220_N9S21037C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S21037C11D0Ev,_ZThn188_N9S21037C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S21037C11D0Ev,_ZThn152_N9S21037C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S21037C11D0Ev,_ZThn112_N9S21037C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S21037C11D0Ev,_ZThn84_N9S21037C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21037C11D0Ev,_ZThn56_N9S21037C11D0Ev),
  (VTBL_ENTRY)_ZN9S21037C11D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21037C11D1Ev,_ZTv0_n12_N9S21037C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S21037C11D1Ev,_ZThn220_N9S21037C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S21037C11D1Ev,_ZThn188_N9S21037C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S21037C11D1Ev,_ZThn152_N9S21037C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S21037C11D1Ev,_ZThn112_N9S21037C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S21037C11D1Ev,_ZThn84_N9S21037C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21037C11D1Ev,_ZThn56_N9S21037C11D1Ev),
  (VTBL_ENTRY)_ZN9S21037C11D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21037C11 = {  "S21037C11", // class name
  bases_S21037C11, 21,
  &(vtc_S21037C11[0]), // expected_vtbl_contents
  &(vtt_S21037C11[0]), // expected_vtt_contents
  ABISELECT(432,260), // object size
  NSPAIRA(_ZTI9S21037C11),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S21037C11),68, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21037C11),52, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names87,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21037C2  : virtual S21037C3 , S21037C11 , S19905C5_nt {
  int s21037c2f0;
  virtual  ~S21037C2(); // _ZN8S21037C2D2Ev
  S21037C2(); // tgen
};
//SIG(-1 S21037C2) C1{ VBC2{ VBC3{ m} VBC4{ VBC5{ VBC6{ vd m} BC7{ VBC6 VBC8{ VBC6 FD Fc Fs[4]} vd Fi} BC9{ m Fp} vd Fs FL Fp FL} BC9 BC6 BC8 vd Fi} BC8 vd Fs} BC10{ VBC8 VBC11{ VBC6 BC8 VBC2 BC5 Fp} VBC9 BC12{ BC13{ m} VBC5 BC9 VBC3 vd FC7 Fs} vd Fi FC14{}} BC15{ vd m} vd Fi}


 S21037C2 ::~S21037C2(){ note_dtor("S21037C2", this);}
S21037C2 ::S21037C2(){ note_ctor("S21037C2", this);} // tgen

static void Test_S21037C2()
{
  extern Class_Descriptor cd_S21037C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(30,68)];
    init_test(&cd_S21037C2, buf);
    S21037C2 *dp, &lv = *(dp=new (buf) S21037C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,268), "sizeof(S21037C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21037C2)");
    check_base_class_offset(lv, (S5266C29*)(S21037C3*), 0, "S21037C2");
    check_base_class_offset(lv, (S5266C29*)(S21037C13*)(S21037C11*), 0, "S21037C2");
    /*is_ambiguous_... S21037C2::S21037C6 */ AMB_check_base_class_offset(lv, (S19905C19*)(S21037C6*), ABISELECT(224,132), "S21037C2");
    /*is_ambiguous_... S21037C2::S21037C6 */ AMB_check_base_class_offset(lv, (S19905C19*)(S21037C8*)(S21037C6*), ABISELECT(224,132), "S21037C2");
    /*is_ambiguous_... S21037C2::S21037C9 */ AMB_check_base_class_offset(lv, (S19905C19*)(S21037C9*), ABISELECT(224,132), "S21037C2");
    /*is_ambiguous_... S21037C5::S21037C9 */ AMB_check_base_class_offset(lv, (S19905C19*)(S21037C9*)(S21037C5*), ABISELECT(224,132), "S21037C2");
    /*is_ambiguous_... S21037C3::S21037C9 */ AMB_check_base_class_offset(lv, (S19905C19*)(S21037C9*)(S21037C3*), ABISELECT(224,132), "S21037C2");
    /*is_ambiguous_... S21037C12::S19905C19 */ AMB_check_base_class_offset(lv, (S19905C19*)(S21037C12*), ABISELECT(224,132), "S21037C2");
    /*is_ambiguous_... S21037C12::S21037C9 */ AMB_check_base_class_offset(lv, (S19905C19*)(S21037C9*)(S21037C12*), ABISELECT(224,132), "S21037C2");
    /*is_ambiguous_... S21037C12::S21037C6 */ AMB_check_base_class_offset(lv, (S19905C19*)(S21037C6*)(S21037C12*), ABISELECT(224,132), "S21037C2");
    /*is_ambiguous_... S21037C12::S21037C6 */ AMB_check_base_class_offset(lv, (S19905C19*)(S21037C8*)(S21037C6*)(S21037C12*), ABISELECT(224,132), "S21037C2");
    /*is_ambiguous_... S21037C2::S21037C6 */ AMB_check_base_class_offset(lv, (S21037C9*)(S21037C8*)(S21037C6*), ABISELECT(288,168), "S21037C2");
    /*is_ambiguous_... S21037C11::S21037C9 */ AMB_check_base_class_offset(lv, (S21037C9*)(S21037C11*), ABISELECT(288,168), "S21037C2");
    /*is_ambiguous_... S21037C12::S21037C6 */ AMB_check_base_class_offset(lv, (S21037C9*)(S21037C8*)(S21037C6*)(S21037C12*), ABISELECT(288,168), "S21037C2");
    /*is_ambiguous_... S21037C2::S21037C6 */ AMB_check_base_class_offset(lv, (S21037C8*)(S21037C6*), ABISELECT(224,132), "S21037C2");
    /*is_ambiguous_... S21037C2::S21037C6 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S21037C6*), ABISELECT(240,140), "S21037C2");
    check_base_class_offset(lv, (S21037C6*)(S21037C5*), ABISELECT(224,132), "S21037C2");
    check_base_class_offset(lv, (S21037C6*)(S21037C13*)(S21037C11*), ABISELECT(224,132), "S21037C2");
    /*is_ambiguous_... S21037C5::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S21037C5*), ABISELECT(168,96), "S21037C2");
    /*is_ambiguous_... S21037C5::S19905C19 */ AMB_check_base_class_offset(lv, (S19905C19*)(S21037C5*), ABISELECT(160,92), "S21037C2");
    /*is_ambiguous_... S21037C5::S21037C9 */ AMB_check_base_class_offset(lv, (S21037C9*)(S21037C5*), ABISELECT(176,100), "S21037C2");
    check_base_class_offset(lv, (S21037C5*)(S21037C3*), ABISELECT(160,92), "S21037C2");
    /*is_ambiguous_... S21037C3::S21037C9 */ AMB_check_base_class_offset(lv, (S21037C9*)(S21037C3*), ABISELECT(112,64), "S21037C2");
    check_base_class_offset(lv, (S21037C3*), ABISELECT(112,64), "S21037C2");
    check_base_class_offset(lv, (S21037C3*)(S21037C12*), ABISELECT(112,64), "S21037C2");
    /*is_ambiguous_... S21037C12::S21037C9 */ AMB_check_base_class_offset(lv, (S21037C9*)(S21037C12*), ABISELECT(336,196), "S21037C2");
    /*is_ambiguous_... S21037C12::S21037C6 */ AMB_check_base_class_offset(lv, (S21037C8*)(S21037C6*)(S21037C12*), ABISELECT(384,224), "S21037C2");
    /*is_ambiguous_... S21037C12::S21037C6 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S21037C6*)(S21037C12*), ABISELECT(400,232), "S21037C2");
    /*is_ambiguous_... S21037C12::S21037C6 */ AMB_check_base_class_offset(lv, (S21037C6*)(S21037C12*), ABISELECT(384,224), "S21037C2");
    check_base_class_offset(lv, (S21037C12*)(S21037C11*), ABISELECT(336,196), "S21037C2");
    /*is_ambiguous_... S21037C11::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S21037C11*), ABISELECT(448,264), "S21037C2");
    check_base_class_offset(lv, (S5266C26*)(S21037C13*)(S21037C11*), 0, "S21037C2");
    /*is_ambiguous_... S21037C13::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S21037C13*)(S21037C11*), ABISELECT(8,4), "S21037C2");
    check_base_class_offset(lv, (S21037C13*)(S21037C11*), 0, "S21037C2");
    check_base_class_offset(lv, (S21037C11*), 0, "S21037C2");
    check_base_class_offset(lv, (S19905C5_nt*), ABISELECT(96,56), "S21037C2");
    check_field_offset(lv, s21037c2f0, ABISELECT(104,60), "S21037C2.s21037c2f0");
    test_class_info(&lv, &cd_S21037C2);
    dp->~S21037C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21037C2(Test_S21037C2, "S21037C2", ABISELECT(464,268));

#else // __cplusplus

extern void _ZN8S21037C2C1Ev();
extern void _ZN8S21037C2D2Ev();
Name_Map name_map_S21037C2[] = {
  NSPAIR(_ZN8S21037C2C1Ev),
  NSPAIR(_ZN8S21037C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S21037C9;
extern VTBL_ENTRY _ZTI8S21037C9[];
extern  VTBL_ENTRY _ZTV8S21037C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C9[];
extern Class_Descriptor cd_S21037C8;
extern VTBL_ENTRY _ZTI8S21037C8[];
extern  VTBL_ENTRY _ZTV8S21037C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C8[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S21037C6;
extern VTBL_ENTRY _ZTI8S21037C6[];
extern  VTBL_ENTRY _ZTV8S21037C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C6[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S21037C9;
extern VTBL_ENTRY _ZTI8S21037C9[];
extern  VTBL_ENTRY _ZTV8S21037C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C9[];
extern Class_Descriptor cd_S21037C5;
extern VTBL_ENTRY _ZTI8S21037C5[];
extern  VTBL_ENTRY _ZTV8S21037C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C5[];
extern Class_Descriptor cd_S21037C9;
extern VTBL_ENTRY _ZTI8S21037C9[];
extern  VTBL_ENTRY _ZTV8S21037C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C9[];
extern Class_Descriptor cd_S21037C3;
extern VTBL_ENTRY _ZTI8S21037C3[];
extern  VTBL_ENTRY _ZTV8S21037C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C3[];
extern Class_Descriptor cd_S21037C9;
extern VTBL_ENTRY _ZTI8S21037C9[];
extern  VTBL_ENTRY _ZTV8S21037C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C9[];
extern Class_Descriptor cd_S21037C8;
extern VTBL_ENTRY _ZTI8S21037C8[];
extern  VTBL_ENTRY _ZTV8S21037C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C8[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S21037C6;
extern VTBL_ENTRY _ZTI8S21037C6[];
extern  VTBL_ENTRY _ZTV8S21037C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C6[];
extern Class_Descriptor cd_S21037C12;
extern VTBL_ENTRY _ZTI9S21037C12[];
extern  VTBL_ENTRY _ZTV9S21037C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21037C12[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S21037C13;
extern VTBL_ENTRY _ZTI9S21037C13[];
extern  VTBL_ENTRY _ZTV9S21037C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21037C13[];
extern Class_Descriptor cd_S21037C11;
extern VTBL_ENTRY _ZTI9S21037C11[];
extern  VTBL_ENTRY _ZTV9S21037C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21037C11[];
extern Class_Descriptor cd_S19905C5_nt;
extern VTBL_ENTRY _ZTI11S19905C5_nt[];
extern  VTBL_ENTRY _ZTV11S19905C5_nt[];
static Base_Class bases_S21037C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19905C19,    ABISELECT(224,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21037C9,    ABISELECT(288,168), //bcp->offset
    48, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21037C8,    ABISELECT(224,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(240,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21037C6,    ABISELECT(224,132), //bcp->offset
    41, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S17777C6_nt,    ABISELECT(168,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19905C19,    ABISELECT(160,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21037C9,    ABISELECT(176,100), //bcp->offset
    35, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21037C5,    ABISELECT(160,92), //bcp->offset
    27, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S21037C9,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21037C3,    ABISELECT(112,64), //bcp->offset
    17, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21037C9,    ABISELECT(336,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21037C8,    ABISELECT(384,224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(400,232), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21037C6,    ABISELECT(384,224), //bcp->offset
    65, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21037C12,    ABISELECT(336,196), //bcp->offset
    54, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S17777C6_nt,    ABISELECT(448,264), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21037C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S21037C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19905C5_nt,    ABISELECT(96,56), //bcp->offset
    13, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21037C2[];
extern void ABISELECT(_ZTv0_n24_N8S21037C2D1Ev,_ZTv0_n12_N8S21037C2D1Ev)();
extern void _ZN8S21037C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C2D0Ev,_ZTv0_n12_N8S21037C2D0Ev)();
extern void _ZN8S21037C2D0Ev() __attribute__((weak));
extern void ABISELECT(_ZThn96_N8S21037C2D1Ev,_ZThn56_N8S21037C2D1Ev)();
extern void ABISELECT(_ZThn96_N8S21037C2D0Ev,_ZThn56_N8S21037C2D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21037C2D1Ev,_ZTv0_n12_N8S21037C2D1Ev)();
extern void ABISELECT(_ZThn112_N8S21037C2D1Ev,_ZThn64_N8S21037C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C2D0Ev,_ZTv0_n12_N8S21037C2D0Ev)();
extern void ABISELECT(_ZThn112_N8S21037C2D0Ev,_ZThn64_N8S21037C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21037C2D1Ev,_ZTv0_n24_N8S21037C2D1Ev)();
extern void ABISELECT(_ZThn160_N8S21037C2D1Ev,_ZThn92_N8S21037C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21037C2D0Ev,_ZTv0_n24_N8S21037C2D0Ev)();
extern void ABISELECT(_ZThn160_N8S21037C2D0Ev,_ZThn92_N8S21037C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C2D1Ev,_ZTv0_n12_N8S21037C2D1Ev)();
extern void ABISELECT(_ZThn176_N8S21037C2D1Ev,_ZThn100_N8S21037C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C2D0Ev,_ZTv0_n12_N8S21037C2D0Ev)();
extern void ABISELECT(_ZThn176_N8S21037C2D0Ev,_ZThn100_N8S21037C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C2D1Ev,_ZTv0_n12_N8S21037C2D1Ev)();
extern void ABISELECT(_ZThn224_N8S21037C2D1Ev,_ZThn132_N8S21037C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C2D0Ev,_ZTv0_n12_N8S21037C2D0Ev)();
extern void ABISELECT(_ZThn224_N8S21037C2D0Ev,_ZThn132_N8S21037C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C2D1Ev,_ZTv0_n12_N8S21037C2D1Ev)();
extern void ABISELECT(_ZThn288_N8S21037C2D1Ev,_ZThn168_N8S21037C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C2D0Ev,_ZTv0_n12_N8S21037C2D0Ev)();
extern void ABISELECT(_ZThn288_N8S21037C2D0Ev,_ZThn168_N8S21037C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C2D1Ev,_ZTv0_n12_N8S21037C2D1Ev)();
extern void ABISELECT(_ZThn336_N8S21037C2D1Ev,_ZThn196_N8S21037C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C2D0Ev,_ZTv0_n12_N8S21037C2D0Ev)();
extern void ABISELECT(_ZThn336_N8S21037C2D0Ev,_ZThn196_N8S21037C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C2D1Ev,_ZTv0_n12_N8S21037C2D1Ev)();
extern void ABISELECT(_ZThn384_N8S21037C2D1Ev,_ZThn224_N8S21037C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C2D0Ev,_ZTv0_n12_N8S21037C2D0Ev)();
extern void ABISELECT(_ZThn384_N8S21037C2D0Ev,_ZThn224_N8S21037C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21037C2[] = {
  ABISELECT(448,264),
  ABISELECT(160,92),
  ABISELECT(112,64),
  ABISELECT(336,196),
  0,
  ABISELECT(288,168),
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C2D1Ev,_ZTv0_n12_N8S21037C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C2D0Ev,_ZTv0_n12_N8S21037C2D0Ev),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S21037C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N8S21037C2D1Ev,_ZThn56_N8S21037C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N8S21037C2D0Ev,_ZThn56_N8S21037C2D0Ev),
  ABISELECT(176,104),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-112,-64),
  ABISELECT(112,68),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI8S21037C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C2D1Ev,_ZTv0_n12_N8S21037C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C2D0Ev,_ZTv0_n12_N8S21037C2D0Ev),
  ABISELECT(-160,-92),
  ABISELECT(128,76),
  ABISELECT(64,40),
  ABISELECT(64,40),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI8S21037C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21037C2D1Ev,_ZTv0_n24_N8S21037C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21037C2D0Ev,_ZTv0_n24_N8S21037C2D0Ev),
  ABISELECT(48,32),
  ABISELECT(-176,-100),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI8S21037C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C2D1Ev,_ZTv0_n12_N8S21037C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C2D0Ev,_ZTv0_n12_N8S21037C2D0Ev),
  ABISELECT(64,36),
  0,
  ABISELECT(-224,-132),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI8S21037C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C2D1Ev,_ZTv0_n12_N8S21037C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C2D0Ev,_ZTv0_n12_N8S21037C2D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-288,-168),
  ABISELECT(-288,-168),
  (VTBL_ENTRY)&(_ZTI8S21037C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C2D1Ev,_ZTv0_n12_N8S21037C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C2D0Ev,_ZTv0_n12_N8S21037C2D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(-112,-64),
  ABISELECT(-176,-104),
  ABISELECT(-336,-196),
  ABISELECT(-224,-132),
  ABISELECT(-112,-64),
  ABISELECT(-336,-196),
  ABISELECT(-336,-196),
  (VTBL_ENTRY)&(_ZTI8S21037C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C2D1Ev,_ZTv0_n12_N8S21037C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C2D0Ev,_ZTv0_n12_N8S21037C2D0Ev),
  ABISELECT(-96,-56),
  ABISELECT(-160,-92),
  ABISELECT(-384,-224),
  ABISELECT(-384,-224),
  (VTBL_ENTRY)&(_ZTI8S21037C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C2D1Ev,_ZTv0_n12_N8S21037C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C2D0Ev,_ZTv0_n12_N8S21037C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S21037C2[];
extern void ABISELECT(_ZTv0_n24_N9S21037C11D1Ev,_ZTv0_n12_N9S21037C11D1Ev)();
extern void _ZN9S21037C11D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C11D0Ev,_ZTv0_n12_N9S21037C11D0Ev)();
extern void _ZN9S21037C11D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21037C11__8S21037C2[] = {
  ABISELECT(448,264),
  ABISELECT(160,92),
  ABISELECT(112,64),
  ABISELECT(336,196),
  0,
  ABISELECT(288,168),
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21037C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C11D1Ev,_ZTv0_n12_N9S21037C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C11D0Ev,_ZTv0_n12_N9S21037C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21037C13D1Ev,_ZTv0_n12_N9S21037C13D1Ev)();
extern void _ZN9S21037C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C13D0Ev,_ZTv0_n12_N9S21037C13D0Ev)();
extern void _ZN9S21037C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21037C139S21037C11__8S21037C2[] = {
  0,
  ABISELECT(288,168),
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21037C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C13D1Ev,_ZTv0_n12_N9S21037C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C13D0Ev,_ZTv0_n12_N9S21037C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21037C13D1Ev,_ZTv0_n12_N9S21037C13D1Ev)();
extern void ABISELECT(_ZThn224_N9S21037C13D1Ev,_ZThn132_N9S21037C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C13D0Ev,_ZTv0_n12_N9S21037C13D0Ev)();
extern void ABISELECT(_ZThn224_N9S21037C13D0Ev,_ZThn132_N9S21037C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C6__9S21037C139S21037C11__8S21037C2[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(-224,-132),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI9S21037C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C13D1Ev,_ZTv0_n12_N9S21037C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C13D0Ev,_ZTv0_n12_N9S21037C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21037C13D1Ev,_ZTv0_n12_N9S21037C13D1Ev)();
extern void ABISELECT(_ZThn288_N9S21037C13D1Ev,_ZThn168_N9S21037C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C13D0Ev,_ZTv0_n12_N9S21037C13D0Ev)();
extern void ABISELECT(_ZThn288_N9S21037C13D0Ev,_ZThn168_N9S21037C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C9__9S21037C139S21037C11__8S21037C2[] = {
  ABISELECT(-64,-36),
  ABISELECT(-288,-168),
  ABISELECT(-288,-168),
  (VTBL_ENTRY)&(_ZTI9S21037C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C13D1Ev,_ZTv0_n12_N9S21037C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C13D0Ev,_ZTv0_n12_N9S21037C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21037C11D1Ev,_ZTv0_n12_N9S21037C11D1Ev)();
extern void ABISELECT(_ZThn288_N9S21037C11D1Ev,_ZThn168_N9S21037C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C11D0Ev,_ZTv0_n12_N9S21037C11D0Ev)();
extern void ABISELECT(_ZThn288_N9S21037C11D0Ev,_ZThn168_N9S21037C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C9__9S21037C11__8S21037C2[] = {
  ABISELECT(-64,-36),
  ABISELECT(-288,-168),
  ABISELECT(-288,-168),
  (VTBL_ENTRY)&(_ZTI9S21037C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C11D1Ev,_ZTv0_n12_N9S21037C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C11D0Ev,_ZTv0_n12_N9S21037C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21037C11D1Ev,_ZTv0_n12_N9S21037C11D1Ev)();
extern void ABISELECT(_ZThn224_N9S21037C11D1Ev,_ZThn132_N9S21037C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C11D0Ev,_ZTv0_n12_N9S21037C11D0Ev)();
extern void ABISELECT(_ZThn224_N9S21037C11D0Ev,_ZThn132_N9S21037C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C6__9S21037C11__8S21037C2[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(-224,-132),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI9S21037C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C11D1Ev,_ZTv0_n12_N9S21037C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C11D0Ev,_ZTv0_n12_N9S21037C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21037C11D1Ev,_ZTv0_n12_N9S21037C11D1Ev)();
extern void ABISELECT(_ZThn336_N9S21037C11D1Ev,_ZThn196_N9S21037C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C11D0Ev,_ZTv0_n12_N9S21037C11D0Ev)();
extern void ABISELECT(_ZThn336_N9S21037C11D0Ev,_ZThn196_N9S21037C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21037C12__9S21037C11__8S21037C2[] = {
  ABISELECT(-48,-28),
  ABISELECT(-112,-64),
  ABISELECT(-176,-104),
  ABISELECT(-336,-196),
  ABISELECT(-224,-132),
  ABISELECT(-112,-64),
  ABISELECT(-336,-196),
  ABISELECT(-336,-196),
  (VTBL_ENTRY)&(_ZTI9S21037C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C11D1Ev,_ZTv0_n12_N9S21037C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C11D0Ev,_ZTv0_n12_N9S21037C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21037C11D1Ev,_ZTv0_n12_N9S21037C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S21037C11D1Ev,_ZThn64_N9S21037C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C11D0Ev,_ZTv0_n12_N9S21037C11D0Ev)();
extern void ABISELECT(_ZThn112_N9S21037C11D0Ev,_ZThn64_N9S21037C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C3__9S21037C11__8S21037C2[] = {
  ABISELECT(176,104),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-112,-64),
  ABISELECT(112,68),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S21037C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C11D1Ev,_ZTv0_n12_N9S21037C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C11D0Ev,_ZTv0_n12_N9S21037C11D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S21037C11D1Ev,_ZTv0_n24_N9S21037C11D1Ev)();
extern void ABISELECT(_ZThn160_N9S21037C11D1Ev,_ZThn92_N9S21037C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21037C11D0Ev,_ZTv0_n24_N9S21037C11D0Ev)();
extern void ABISELECT(_ZThn160_N9S21037C11D0Ev,_ZThn92_N9S21037C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C5__9S21037C11__8S21037C2[] = {
  ABISELECT(-160,-92),
  ABISELECT(128,76),
  ABISELECT(64,40),
  ABISELECT(64,40),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI9S21037C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21037C11D1Ev,_ZTv0_n24_N9S21037C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21037C11D0Ev,_ZTv0_n24_N9S21037C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21037C11D1Ev,_ZTv0_n12_N9S21037C11D1Ev)();
extern void ABISELECT(_ZThn176_N9S21037C11D1Ev,_ZThn100_N9S21037C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C11D0Ev,_ZTv0_n12_N9S21037C11D0Ev)();
extern void ABISELECT(_ZThn176_N9S21037C11D0Ev,_ZThn100_N9S21037C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C98S21037C5__A2__9S21037C11__8S21037C2[] = {
  ABISELECT(48,32),
  ABISELECT(-176,-100),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI9S21037C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C11D1Ev,_ZTv0_n12_N9S21037C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C11D0Ev,_ZTv0_n12_N9S21037C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21037C11D1Ev,_ZTv0_n12_N9S21037C11D1Ev)();
extern void ABISELECT(_ZThn384_N9S21037C11D1Ev,_ZThn224_N9S21037C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C11D0Ev,_ZTv0_n12_N9S21037C11D0Ev)();
extern void ABISELECT(_ZThn384_N9S21037C11D0Ev,_ZThn224_N9S21037C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C69S21037C12__A1__9S21037C11__8S21037C2[] = {
  ABISELECT(-96,-56),
  ABISELECT(-160,-92),
  ABISELECT(-384,-224),
  ABISELECT(-384,-224),
  (VTBL_ENTRY)&(_ZTI9S21037C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C11D1Ev,_ZTv0_n12_N9S21037C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C11D0Ev,_ZTv0_n12_N9S21037C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev)();
extern void _ZN8S21037C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev)();
extern void _ZN8S21037C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C3__8S21037C2[] = {
  ABISELECT(176,104),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-112,-64),
  ABISELECT(112,68),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev)();
extern void _ZN8S21037C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev)();
extern void _ZN8S21037C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C98S21037C3__A2__8S21037C2[] = {
  ABISELECT(112,68),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev)();
extern void ABISELECT(_ZThn112_N8S21037C9D1Ev,_ZThn68_N8S21037C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev)();
extern void ABISELECT(_ZThn112_N8S21037C9D0Ev,_ZThn68_N8S21037C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S21037C98S21037C3__A2__8S21037C2[] = {
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S21037C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S21037C3D1Ev,_ZTv0_n24_N8S21037C3D1Ev)();
extern void ABISELECT(_ZThn48_N8S21037C3D1Ev,_ZThn28_N8S21037C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21037C3D0Ev,_ZTv0_n24_N8S21037C3D0Ev)();
extern void ABISELECT(_ZThn48_N8S21037C3D0Ev,_ZThn28_N8S21037C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C5__8S21037C3__8S21037C2[] = {
  ABISELECT(-48,-28),
  ABISELECT(128,76),
  ABISELECT(64,40),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S21037C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21037C3D1Ev,_ZTv0_n24_N8S21037C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21037C3D0Ev,_ZTv0_n24_N8S21037C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev)();
extern void ABISELECT(_ZThn112_N8S21037C3D1Ev,_ZThn68_N8S21037C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev)();
extern void ABISELECT(_ZThn112_N8S21037C3D0Ev,_ZThn68_N8S21037C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C6__8S21037C3__8S21037C2[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S21037C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev)();
extern void ABISELECT(_ZThn176_N8S21037C3D1Ev,_ZThn104_N8S21037C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev)();
extern void ABISELECT(_ZThn176_N8S21037C3D0Ev,_ZThn104_N8S21037C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C9__8S21037C3__8S21037C2[] = {
  ABISELECT(-64,-36),
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI8S21037C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev)();
extern void ABISELECT(_ZThn64_N8S21037C3D1Ev,_ZThn36_N8S21037C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev)();
extern void ABISELECT(_ZThn64_N8S21037C3D0Ev,_ZThn36_N8S21037C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C98S21037C5__A1__8S21037C3__8S21037C2[] = {
  ABISELECT(48,32),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S21037C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev),
};
extern void _ZN8S21037C5D1Ev();
extern void _ZN8S21037C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21037C5__8S21037C2[] = {
  ABISELECT(128,76),
  ABISELECT(64,40),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C5[0]),
  (VTBL_ENTRY)&_ZN8S21037C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21037C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev)();
extern void _ZN8S21037C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev)();
extern void _ZN8S21037C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C98S21037C5__A1__8S21037C2[] = {
  ABISELECT(48,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev)();
extern void ABISELECT(_ZThn48_N8S21037C9D1Ev,_ZThn32_N8S21037C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev)();
extern void ABISELECT(_ZThn48_N8S21037C9D0Ev,_ZThn32_N8S21037C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S21037C98S21037C5__A1__8S21037C2[] = {
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S21037C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C5D1Ev,_ZTv0_n12_N8S21037C5D1Ev)();
extern void ABISELECT(_ZThn64_N8S21037C5D1Ev,_ZThn40_N8S21037C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C5D0Ev,_ZTv0_n12_N8S21037C5D0Ev)();
extern void ABISELECT(_ZThn64_N8S21037C5D0Ev,_ZThn40_N8S21037C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C6__8S21037C5__8S21037C2[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S21037C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C5D1Ev,_ZTv0_n12_N8S21037C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C5D0Ev,_ZTv0_n12_N8S21037C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C5D1Ev,_ZTv0_n12_N8S21037C5D1Ev)();
extern void ABISELECT(_ZThn128_N8S21037C5D1Ev,_ZThn76_N8S21037C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C5D0Ev,_ZTv0_n12_N8S21037C5D0Ev)();
extern void ABISELECT(_ZThn128_N8S21037C5D0Ev,_ZThn76_N8S21037C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C9__8S21037C5__8S21037C2[] = {
  ABISELECT(-64,-36),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S21037C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C5D1Ev,_ZTv0_n12_N8S21037C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C5D0Ev,_ZTv0_n12_N8S21037C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C5D1Ev,_ZTv0_n12_N8S21037C5D1Ev)();
extern void ABISELECT(_ZThn16_N8S21037C5D1Ev,_ZThn8_N8S21037C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C5D0Ev,_ZTv0_n12_N8S21037C5D0Ev)();
extern void ABISELECT(_ZThn16_N8S21037C5D0Ev,_ZThn8_N8S21037C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C9__A__8S21037C5__8S21037C2[] = {
  ABISELECT(48,32),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21037C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C5D1Ev,_ZTv0_n12_N8S21037C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C5D0Ev,_ZTv0_n12_N8S21037C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev)();
extern void _ZN8S21037C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev)();
extern void _ZN8S21037C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C6__8S21037C2[] = {
  ABISELECT(64,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev)();
extern void _ZN8S21037C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev)();
extern void _ZN8S21037C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C88S21037C6__8S21037C2[] = {
  ABISELECT(64,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev)();
extern void ABISELECT(_ZThn64_N8S21037C8D1Ev,_ZThn36_N8S21037C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev)();
extern void ABISELECT(_ZThn64_N8S21037C8D0Ev,_ZThn36_N8S21037C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C9__8S21037C88S21037C6__8S21037C2[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S21037C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev)();
extern void ABISELECT(_ZThn64_N8S21037C6D1Ev,_ZThn36_N8S21037C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev)();
extern void ABISELECT(_ZThn64_N8S21037C6D0Ev,_ZThn36_N8S21037C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C9__8S21037C6__8S21037C2[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S21037C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev)();
extern void _ZN8S21037C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev)();
extern void _ZN8S21037C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C9__8S21037C2[] = {
  ABISELECT(-64,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S21037C9__8S21037C2[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S21037C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev)();
extern void _ZN9S21037C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev)();
extern void _ZN9S21037C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21037C12__8S21037C2[] = {
  ABISELECT(-48,-28),
  ABISELECT(-112,-64),
  ABISELECT(-176,-104),
  ABISELECT(-336,-196),
  ABISELECT(-224,-132),
  ABISELECT(-112,-64),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21037C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev)();
extern void _ZN8S21037C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev)();
extern void _ZN8S21037C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C99S21037C12__A3__8S21037C2[] = {
  ABISELECT(-112,-64),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S21037C99S21037C12__A3__8S21037C2[] = {
  ABISELECT(112,64),
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI8S21037C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev)();
extern void _ZN8S21037C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev)();
extern void _ZN8S21037C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C69S21037C12__A1__8S21037C2[] = {
  ABISELECT(-96,-56),
  ABISELECT(-160,-92),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev)();
extern void _ZN8S21037C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev)();
extern void _ZN8S21037C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C88S21037C69S21037C12__A1__8S21037C2[] = {
  ABISELECT(-96,-56),
  ABISELECT(-160,-92),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S21037C88S21037C69S21037C12__A1__8S21037C2[] = {
  ABISELECT(160,92),
  ABISELECT(160,92),
  (VTBL_ENTRY)&(_ZTI8S21037C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21037C9__8S21037C88S21037C69S21037C12__A1__8S21037C2[] = {
  ABISELECT(-64,-36),
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S21037C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S21037C69S21037C12__A1__8S21037C2[] = {
  ABISELECT(160,92),
  ABISELECT(160,92),
  (VTBL_ENTRY)&(_ZTI8S21037C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21037C9__8S21037C69S21037C12__A1__8S21037C2[] = {
  ABISELECT(-64,-36),
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S21037C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21037C6__9S21037C12__8S21037C2[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(112,64),
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI9S21037C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21037C3__9S21037C12__8S21037C2[] = {
  ABISELECT(176,104),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-112,-64),
  ABISELECT(112,68),
  ABISELECT(224,132),
  ABISELECT(224,132),
  (VTBL_ENTRY)&(_ZTI9S21037C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S21037C12D1Ev,_ZTv0_n24_N9S21037C12D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S21037C12D0Ev,_ZTv0_n24_N9S21037C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21037C5__9S21037C12__8S21037C2[] = {
  ABISELECT(176,104),
  ABISELECT(128,76),
  ABISELECT(64,40),
  ABISELECT(64,40),
  ABISELECT(176,104),
  (VTBL_ENTRY)&(_ZTI9S21037C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21037C12D1Ev,_ZTv0_n24_N9S21037C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21037C12D0Ev,_ZTv0_n24_N9S21037C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21037C9__A1__9S21037C12__8S21037C2[] = {
  ABISELECT(-64,-36),
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S21037C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21037C98S21037C5__A2__9S21037C12__8S21037C2[] = {
  ABISELECT(48,32),
  ABISELECT(160,96),
  ABISELECT(160,96),
  (VTBL_ENTRY)&(_ZTI9S21037C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev)();
extern void ABISELECT(_ZThn48_N9S21037C12D1Ev,_ZThn28_N9S21037C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev)();
extern void ABISELECT(_ZThn48_N9S21037C12D0Ev,_ZThn28_N9S21037C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C6__A__9S21037C12__8S21037C2[] = {
  ABISELECT(-96,-56),
  ABISELECT(-160,-92),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S21037C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev),
};
static  VTT_ENTRY vtt_S21037C2[] = {
  {&(_ZTV8S21037C2[11]),  11,72},
  {&(_tg__ZTV9S21037C11__8S21037C2[11]),  11,13},
  {&(_tg__ZTV9S21037C139S21037C11__8S21037C2[7]),  7,9},
  {&(_tg__ZTV8S21037C6__9S21037C139S21037C11__8S21037C2[5]),  5,7},
  {&(_tg__ZTV8S21037C6__9S21037C139S21037C11__8S21037C2[5]),  5,7},
  {&(_tg__ZTV8S21037C9__9S21037C139S21037C11__8S21037C2[4]),  4,6},
  {&(_tg__ZTV8S21037C9__9S21037C11__8S21037C2[4]),  4,6},
  {&(_tg__ZTV8S21037C6__9S21037C11__8S21037C2[5]),  5,7},
  {&(_tg__ZTV9S21037C12__9S21037C11__8S21037C2[9]),  9,11},
  {&(_tg__ZTV8S21037C3__9S21037C11__8S21037C2[8]),  8,10},
  {&(_tg__ZTV8S21037C5__9S21037C11__8S21037C2[6]),  6,8},
  {&(_tg__ZTV8S21037C6__9S21037C11__8S21037C2[5]),  5,7},
  {&(_tg__ZTV8S21037C98S21037C5__A2__9S21037C11__8S21037C2[4]),  4,6},
  {&(_tg__ZTV8S21037C69S21037C12__A1__9S21037C11__8S21037C2[5]),  5,7},
  {&(_ZTV8S21037C2[25]),  25,72},
  {&(_ZTV8S21037C2[33]),  33,72},
  {&(_ZTV8S21037C2[46]),  46,72},
  {&(_ZTV8S21037C2[46]),  46,72},
  {&(_ZTV8S21037C2[52]),  52,72},
  {&(_ZTV8S21037C2[39]),  39,72},
  {&(_ZTV8S21037C2[63]),  63,72},
  {&(_ZTV8S21037C2[70]),  70,72},
  {&(_tg__ZTV8S21037C3__8S21037C2[8]),  8,10},
  {&(_tg__ZTV8S21037C98S21037C3__A2__8S21037C2[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S21037C98S21037C3__A2__8S21037C2[3]),  3,5},
  {&(_tg__ZTV8S21037C5__8S21037C3__8S21037C2[6]),  6,8},
  {&(_tg__ZTV8S21037C6__8S21037C3__8S21037C2[5]),  5,7},
  {&(_tg__ZTV8S21037C6__8S21037C3__8S21037C2[5]),  5,7},
  {&(_tg__ZTV8S21037C9__8S21037C3__8S21037C2[4]),  4,6},
  {&(_tg__ZTV8S21037C98S21037C5__A1__8S21037C3__8S21037C2[4]),  4,6},
  {&(_tg__ZTV8S21037C5__8S21037C2[5]),  5,7},
  {&(_tg__ZTV8S21037C98S21037C5__A1__8S21037C2[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S21037C98S21037C5__A1__8S21037C2[3]),  3,5},
  {&(_tg__ZTV8S21037C6__8S21037C5__8S21037C2[5]),  5,7},
  {&(_tg__ZTV8S21037C6__8S21037C5__8S21037C2[5]),  5,7},
  {&(_tg__ZTV8S21037C9__8S21037C5__8S21037C2[4]),  4,6},
  {&(_tg__ZTV8S21037C9__A__8S21037C5__8S21037C2[4]),  4,6},
  {&(_tg__ZTV8S21037C6__8S21037C2[5]),  5,7},
  {&(_tg__ZTV8S21037C88S21037C6__8S21037C2[5]),  5,7},
  {&(_tg__ZTV8S21037C88S21037C6__8S21037C2[5]),  5,7},
  {&(_tg__ZTV8S21037C9__8S21037C88S21037C6__8S21037C2[4]),  4,6},
  {&(_tg__ZTV8S21037C6__8S21037C2[5]),  5,7},
  {&(_tg__ZTV8S21037C9__8S21037C6__8S21037C2[4]),  4,6},
  {&(_tg__ZTV8S21037C9__8S21037C2[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S21037C9__8S21037C2[3]),  3,5},
  {&(_tg__ZTV9S21037C12__8S21037C2[9]),  9,11},
  {&(_tg__ZTV8S21037C99S21037C12__A3__8S21037C2[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S21037C99S21037C12__A3__8S21037C2[3]),  3,5},
  {&(_tg__ZTV8S21037C69S21037C12__A1__8S21037C2[5]),  5,7},
  {&(_tg__ZTV8S21037C88S21037C69S21037C12__A1__8S21037C2[5]),  5,7},
  {&(_tg__ZTV9S19905C19__8S21037C88S21037C69S21037C12__A1__8S21037C2[3]),  3,5},
  {&(_tg__ZTV8S21037C9__8S21037C88S21037C69S21037C12__A1__8S21037C2[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S21037C69S21037C12__A1__8S21037C2[3]),  3,5},
  {&(_tg__ZTV8S21037C9__8S21037C69S21037C12__A1__8S21037C2[4]),  4,6},
  {&(_tg__ZTV8S21037C6__9S21037C12__8S21037C2[5]),  5,7},
  {&(_tg__ZTV8S21037C3__9S21037C12__8S21037C2[8]),  8,10},
  {&(_tg__ZTV8S21037C5__9S21037C12__8S21037C2[6]),  6,8},
  {&(_tg__ZTV8S21037C6__9S21037C12__8S21037C2[5]),  5,7},
  {&(_tg__ZTV8S21037C9__A1__9S21037C12__8S21037C2[4]),  4,6},
  {&(_tg__ZTV8S21037C98S21037C5__A2__9S21037C12__8S21037C2[4]),  4,6},
  {&(_tg__ZTV8S21037C6__A__9S21037C12__8S21037C2[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S21037C2[];
extern  VTBL_ENTRY _ZTV8S21037C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C2[];
static VTBL_ENTRY alt_thunk_names88[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21037C12D0Ev,_ZThn28_N9S21037C12D0Ev),
  (VTBL_ENTRY)_ZN9S21037C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21037C12D1Ev,_ZThn28_N9S21037C12D1Ev),
  (VTBL_ENTRY)_ZN9S21037C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev), // 
  (VTBL_ENTRY)_ZN8S21037C8D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21037C8D0Ev,_ZThn36_N8S21037C8D0Ev),
  (VTBL_ENTRY)_ZN8S21037C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev), // 
  (VTBL_ENTRY)_ZN8S21037C8D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21037C8D1Ev,_ZThn36_N8S21037C8D1Ev),
  (VTBL_ENTRY)_ZN8S21037C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev), // 
  (VTBL_ENTRY)_ZN8S21037C6D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21037C6D0Ev,_ZThn36_N8S21037C6D0Ev),
  (VTBL_ENTRY)_ZN8S21037C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev), // 
  (VTBL_ENTRY)_ZN8S21037C6D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21037C6D1Ev,_ZThn36_N8S21037C6D1Ev),
  (VTBL_ENTRY)_ZN8S21037C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C5D0Ev,_ZTv0_n12_N8S21037C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21037C5D0Ev,_ZThn8_N8S21037C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21037C5D0Ev,_ZThn76_N8S21037C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21037C5D0Ev,_ZThn40_N8S21037C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C5D1Ev,_ZTv0_n12_N8S21037C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21037C5D1Ev,_ZThn8_N8S21037C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21037C5D1Ev,_ZThn76_N8S21037C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21037C5D1Ev,_ZThn40_N8S21037C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21037C3D0Ev,_ZTv0_n24_N8S21037C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21037C3D0Ev,_ZThn28_N8S21037C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21037C3D1Ev,_ZTv0_n24_N8S21037C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21037C3D1Ev,_ZThn28_N8S21037C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev), // 
  (VTBL_ENTRY)_ZN8S21037C9D0Ev,
  (VTBL_ENTRY)_ZN8S21037C9D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21037C9D0Ev,_ZThn32_N8S21037C9D0Ev),
  (VTBL_ENTRY)_ZN8S21037C9D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21037C9D0Ev,_ZThn68_N8S21037C9D0Ev),
  (VTBL_ENTRY)_ZN8S21037C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev), // 
  (VTBL_ENTRY)_ZN8S21037C9D1Ev,
  (VTBL_ENTRY)_ZN8S21037C9D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21037C9D1Ev,_ZThn32_N8S21037C9D1Ev),
  (VTBL_ENTRY)_ZN8S21037C9D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21037C9D1Ev,_ZThn68_N8S21037C9D1Ev),
  (VTBL_ENTRY)_ZN8S21037C9D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21037C3D0Ev,_ZThn36_N8S21037C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S21037C3D0Ev,_ZThn104_N8S21037C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21037C3D0Ev,_ZThn68_N8S21037C3D0Ev),
  (VTBL_ENTRY)_ZN8S21037C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21037C3D1Ev,_ZThn36_N8S21037C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S21037C3D1Ev,_ZThn104_N8S21037C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21037C3D1Ev,_ZThn68_N8S21037C3D1Ev),
  (VTBL_ENTRY)_ZN8S21037C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21037C11D0Ev,_ZTv0_n24_N9S21037C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S21037C11D0Ev,_ZThn92_N9S21037C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21037C11D1Ev,_ZTv0_n24_N9S21037C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S21037C11D1Ev,_ZThn92_N9S21037C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21037C13D0Ev,_ZTv0_n12_N9S21037C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S21037C13D0Ev,_ZThn168_N9S21037C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21037C13D0Ev,_ZThn132_N9S21037C13D0Ev),
  (VTBL_ENTRY)_ZN9S21037C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21037C13D1Ev,_ZTv0_n12_N9S21037C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S21037C13D1Ev,_ZThn168_N9S21037C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21037C13D1Ev,_ZThn132_N9S21037C13D1Ev),
  (VTBL_ENTRY)_ZN9S21037C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21037C11D0Ev,_ZTv0_n12_N9S21037C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S21037C11D0Ev,_ZThn224_N9S21037C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S21037C11D0Ev,_ZThn100_N9S21037C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S21037C11D0Ev,_ZThn64_N9S21037C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S21037C11D0Ev,_ZThn196_N9S21037C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21037C11D0Ev,_ZThn132_N9S21037C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S21037C11D0Ev,_ZThn168_N9S21037C11D0Ev),
  (VTBL_ENTRY)_ZN9S21037C11D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21037C11D1Ev,_ZTv0_n12_N9S21037C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S21037C11D1Ev,_ZThn224_N9S21037C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S21037C11D1Ev,_ZThn100_N9S21037C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S21037C11D1Ev,_ZThn64_N9S21037C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S21037C11D1Ev,_ZThn196_N9S21037C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21037C11D1Ev,_ZThn132_N9S21037C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S21037C11D1Ev,_ZThn168_N9S21037C11D1Ev),
  (VTBL_ENTRY)_ZN9S21037C11D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21037C2D0Ev,_ZTv0_n24_N8S21037C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S21037C2D0Ev,_ZThn92_N8S21037C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21037C2D1Ev,_ZTv0_n24_N8S21037C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S21037C2D1Ev,_ZThn92_N8S21037C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C2D0Ev,_ZTv0_n12_N8S21037C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S21037C2D0Ev,_ZThn224_N8S21037C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S21037C2D0Ev,_ZThn196_N8S21037C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21037C2D0Ev,_ZThn168_N8S21037C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21037C2D0Ev,_ZThn132_N8S21037C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S21037C2D0Ev,_ZThn100_N8S21037C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21037C2D0Ev,_ZThn64_N8S21037C2D0Ev),
  (VTBL_ENTRY)_ZN8S21037C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C2D1Ev,_ZTv0_n12_N8S21037C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S21037C2D1Ev,_ZThn224_N8S21037C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S21037C2D1Ev,_ZThn196_N8S21037C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21037C2D1Ev,_ZThn168_N8S21037C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21037C2D1Ev,_ZThn132_N8S21037C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S21037C2D1Ev,_ZThn100_N8S21037C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21037C2D1Ev,_ZThn64_N8S21037C2D1Ev),
  (VTBL_ENTRY)_ZN8S21037C2D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21037C2 = {  "S21037C2", // class name
  bases_S21037C2, 23,
  &(vtc_S21037C2[0]), // expected_vtbl_contents
  &(vtt_S21037C2[0]), // expected_vtt_contents
  ABISELECT(464,268), // object size
  NSPAIRA(_ZTI8S21037C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21037C2),72, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21037C2),61, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names88,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21037C1  : virtual S21037C2 {
  virtual  ~S21037C1(); // _ZN8S21037C1D2Ev
  S21037C1(); // tgen
};
//SIG(1 S21037C1) C1{ VBC2{ VBC3{ VBC4{ m} VBC5{ VBC6{ VBC7{ vd m} BC8{ VBC7 VBC9{ VBC7 FD Fc Fs[4]} vd Fi} BC10{ m Fp} vd Fs FL Fp FL} BC10 BC7 BC9 vd Fi} BC9 vd Fs} BC11{ VBC9 VBC12{ VBC7 BC9 VBC3 BC6 Fp} VBC10 BC13{ BC14{ m} VBC6 BC10 VBC4 vd FC8 Fs} vd Fi FC15{}} BC16{ vd m} vd Fi} vd}


 S21037C1 ::~S21037C1(){ note_dtor("S21037C1", this);}
S21037C1 ::S21037C1(){ note_ctor("S21037C1", this);} // tgen

static void Test_S21037C1()
{
  extern Class_Descriptor cd_S21037C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(31,69)];
    init_test(&cd_S21037C1, buf);
    S21037C1 *dp, &lv = *(dp=new (buf) S21037C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(480,272), "sizeof(S21037C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21037C1)");
    check_base_class_offset(lv, (S5266C29*)(S21037C3*), 0, "S21037C1");
    check_base_class_offset(lv, (S5266C29*)(S21037C13*)(S21037C11*)(S21037C2*), 0, "S21037C1");
    /*is_ambiguous_... S21037C1::S21037C6 */ AMB_check_base_class_offset(lv, (S19905C19*)(S21037C6*), 0, "S21037C1");
    /*is_ambiguous_... S21037C1::S21037C6 */ AMB_check_base_class_offset(lv, (S19905C19*)(S21037C8*)(S21037C6*), 0, "S21037C1");
    /*is_ambiguous_... S21037C1::S21037C9 */ AMB_check_base_class_offset(lv, (S19905C19*)(S21037C9*), 0, "S21037C1");
    /*is_ambiguous_... S21037C5::S21037C9 */ AMB_check_base_class_offset(lv, (S19905C19*)(S21037C9*)(S21037C5*), 0, "S21037C1");
    /*is_ambiguous_... S21037C3::S21037C9 */ AMB_check_base_class_offset(lv, (S19905C19*)(S21037C9*)(S21037C3*), 0, "S21037C1");
    /*is_ambiguous_... S21037C12::S19905C19 */ AMB_check_base_class_offset(lv, (S19905C19*)(S21037C12*), 0, "S21037C1");
    /*is_ambiguous_... S21037C12::S21037C9 */ AMB_check_base_class_offset(lv, (S19905C19*)(S21037C9*)(S21037C12*), 0, "S21037C1");
    /*is_ambiguous_... S21037C12::S21037C6 */ AMB_check_base_class_offset(lv, (S19905C19*)(S21037C6*)(S21037C12*), 0, "S21037C1");
    /*is_ambiguous_... S21037C12::S21037C6 */ AMB_check_base_class_offset(lv, (S19905C19*)(S21037C8*)(S21037C6*)(S21037C12*), 0, "S21037C1");
    /*is_ambiguous_... S21037C1::S21037C6 */ AMB_check_base_class_offset(lv, (S21037C9*)(S21037C8*)(S21037C6*), ABISELECT(304,172), "S21037C1");
    /*is_ambiguous_... S21037C11::S21037C9 */ AMB_check_base_class_offset(lv, (S21037C9*)(S21037C11*)(S21037C2*), ABISELECT(304,172), "S21037C1");
    /*is_ambiguous_... S21037C12::S21037C6 */ AMB_check_base_class_offset(lv, (S21037C9*)(S21037C8*)(S21037C6*)(S21037C12*), ABISELECT(304,172), "S21037C1");
    /*is_ambiguous_... S21037C1::S21037C6 */ AMB_check_base_class_offset(lv, (S21037C8*)(S21037C6*), ABISELECT(240,136), "S21037C1");
    /*is_ambiguous_... S21037C1::S21037C6 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S21037C6*), ABISELECT(256,144), "S21037C1");
    check_base_class_offset(lv, (S21037C6*)(S21037C5*), ABISELECT(240,136), "S21037C1");
    check_base_class_offset(lv, (S21037C6*)(S21037C13*)(S21037C11*)(S21037C2*), ABISELECT(240,136), "S21037C1");
    /*is_ambiguous_... S21037C5::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S21037C5*), ABISELECT(184,100), "S21037C1");
    /*is_ambiguous_... S21037C5::S19905C19 */ AMB_check_base_class_offset(lv, (S19905C19*)(S21037C5*), ABISELECT(176,96), "S21037C1");
    /*is_ambiguous_... S21037C5::S21037C9 */ AMB_check_base_class_offset(lv, (S21037C9*)(S21037C5*), ABISELECT(192,104), "S21037C1");
    check_base_class_offset(lv, (S21037C5*)(S21037C3*), ABISELECT(176,96), "S21037C1");
    /*is_ambiguous_... S21037C3::S21037C9 */ AMB_check_base_class_offset(lv, (S21037C9*)(S21037C3*), ABISELECT(128,68), "S21037C1");
    check_base_class_offset(lv, (S21037C3*)(S21037C2*), ABISELECT(128,68), "S21037C1");
    check_base_class_offset(lv, (S21037C3*)(S21037C12*), ABISELECT(128,68), "S21037C1");
    /*is_ambiguous_... S21037C12::S21037C9 */ AMB_check_base_class_offset(lv, (S21037C9*)(S21037C12*), ABISELECT(352,200), "S21037C1");
    /*is_ambiguous_... S21037C12::S21037C6 */ AMB_check_base_class_offset(lv, (S21037C8*)(S21037C6*)(S21037C12*), ABISELECT(400,228), "S21037C1");
    /*is_ambiguous_... S21037C12::S21037C6 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S21037C6*)(S21037C12*), ABISELECT(416,236), "S21037C1");
    /*is_ambiguous_... S21037C12::S21037C6 */ AMB_check_base_class_offset(lv, (S21037C6*)(S21037C12*), ABISELECT(400,228), "S21037C1");
    check_base_class_offset(lv, (S21037C12*)(S21037C11*)(S21037C2*), ABISELECT(352,200), "S21037C1");
    /*is_ambiguous_... S21037C11::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S21037C11*)(S21037C2*), ABISELECT(464,268), "S21037C1");
    check_base_class_offset(lv, (S5266C26*)(S21037C13*)(S21037C11*)(S21037C2*), ABISELECT(16,4), "S21037C1");
    /*is_ambiguous_... S21037C13::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S21037C13*)(S21037C11*)(S21037C2*), ABISELECT(24,8), "S21037C1");
    check_base_class_offset(lv, (S21037C13*)(S21037C11*)(S21037C2*), ABISELECT(16,4), "S21037C1");
    check_base_class_offset(lv, (S21037C11*)(S21037C2*), ABISELECT(16,4), "S21037C1");
    check_base_class_offset(lv, (S19905C5_nt*)(S21037C2*), ABISELECT(112,60), "S21037C1");
    check_base_class_offset(lv, (S21037C2*), ABISELECT(16,4), "S21037C1");
    test_class_info(&lv, &cd_S21037C1);
    dp->~S21037C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21037C1(Test_S21037C1, "S21037C1", ABISELECT(480,272));

#else // __cplusplus

extern void _ZN8S21037C1C1Ev();
extern void _ZN8S21037C1D2Ev();
Name_Map name_map_S21037C1[] = {
  NSPAIR(_ZN8S21037C1C1Ev),
  NSPAIR(_ZN8S21037C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S21037C9;
extern VTBL_ENTRY _ZTI8S21037C9[];
extern  VTBL_ENTRY _ZTV8S21037C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C9[];
extern Class_Descriptor cd_S21037C8;
extern VTBL_ENTRY _ZTI8S21037C8[];
extern  VTBL_ENTRY _ZTV8S21037C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C8[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S21037C6;
extern VTBL_ENTRY _ZTI8S21037C6[];
extern  VTBL_ENTRY _ZTV8S21037C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C6[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S21037C9;
extern VTBL_ENTRY _ZTI8S21037C9[];
extern  VTBL_ENTRY _ZTV8S21037C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C9[];
extern Class_Descriptor cd_S21037C5;
extern VTBL_ENTRY _ZTI8S21037C5[];
extern  VTBL_ENTRY _ZTV8S21037C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C5[];
extern Class_Descriptor cd_S21037C9;
extern VTBL_ENTRY _ZTI8S21037C9[];
extern  VTBL_ENTRY _ZTV8S21037C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C9[];
extern Class_Descriptor cd_S21037C3;
extern VTBL_ENTRY _ZTI8S21037C3[];
extern  VTBL_ENTRY _ZTV8S21037C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C3[];
extern Class_Descriptor cd_S21037C9;
extern VTBL_ENTRY _ZTI8S21037C9[];
extern  VTBL_ENTRY _ZTV8S21037C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C9[];
extern Class_Descriptor cd_S21037C8;
extern VTBL_ENTRY _ZTI8S21037C8[];
extern  VTBL_ENTRY _ZTV8S21037C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C8[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S21037C6;
extern VTBL_ENTRY _ZTI8S21037C6[];
extern  VTBL_ENTRY _ZTV8S21037C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C6[];
extern Class_Descriptor cd_S21037C12;
extern VTBL_ENTRY _ZTI9S21037C12[];
extern  VTBL_ENTRY _ZTV9S21037C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21037C12[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S21037C13;
extern VTBL_ENTRY _ZTI9S21037C13[];
extern  VTBL_ENTRY _ZTV9S21037C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21037C13[];
extern Class_Descriptor cd_S21037C11;
extern VTBL_ENTRY _ZTI9S21037C11[];
extern  VTBL_ENTRY _ZTV9S21037C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21037C11[];
extern Class_Descriptor cd_S19905C5_nt;
extern VTBL_ENTRY _ZTI11S19905C5_nt[];
extern  VTBL_ENTRY _ZTV11S19905C5_nt[];
extern Class_Descriptor cd_S21037C2;
extern VTBL_ENTRY _ZTI8S21037C2[];
extern  VTBL_ENTRY _ZTV8S21037C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C2[];
static Base_Class bases_S21037C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19905C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21037C9,    ABISELECT(304,172), //bcp->offset
    62, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21037C8,    ABISELECT(240,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(256,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21037C6,    ABISELECT(240,136), //bcp->offset
    55, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S17777C6_nt,    ABISELECT(184,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19905C19,    ABISELECT(176,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21037C9,    ABISELECT(192,104), //bcp->offset
    49, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21037C5,    ABISELECT(176,96), //bcp->offset
    41, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S21037C9,    ABISELECT(128,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21037C3,    ABISELECT(128,68), //bcp->offset
    31, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S21037C9,    ABISELECT(352,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21037C8,    ABISELECT(400,228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(416,236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21037C6,    ABISELECT(400,228), //bcp->offset
    79, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21037C12,    ABISELECT(352,200), //bcp->offset
    68, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S17777C6_nt,    ABISELECT(464,268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S5266C26,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(24,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21037C13,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S21037C11,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19905C5_nt,    ABISELECT(112,60), //bcp->offset
    27, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S21037C2,    ABISELECT(16,4), //bcp->offset
    14, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21037C1[];
extern void ABISELECT(_ZTv0_n24_N8S21037C1D1Ev,_ZTv0_n12_N8S21037C1D1Ev)();
extern void _ZN8S21037C1D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C1D0Ev,_ZTv0_n12_N8S21037C1D0Ev)();
extern void _ZN8S21037C1D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C1D1Ev,_ZTv0_n12_N8S21037C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S21037C1D1Ev,_ZThn4_N8S21037C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C1D0Ev,_ZTv0_n12_N8S21037C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S21037C1D0Ev,_ZThn4_N8S21037C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn96_n24_N8S21037C1D1Ev,_ZTvn56_n12_N8S21037C1D1Ev)();
extern void ABISELECT(_ZTvn96_n24_N8S21037C1D0Ev,_ZTvn56_n12_N8S21037C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21037C1D1Ev,_ZTv0_n12_N8S21037C1D1Ev)();
extern void ABISELECT(_ZThn128_N8S21037C1D1Ev,_ZThn68_N8S21037C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C1D0Ev,_ZTv0_n12_N8S21037C1D0Ev)();
extern void ABISELECT(_ZThn128_N8S21037C1D0Ev,_ZThn68_N8S21037C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21037C1D1Ev,_ZTv0_n24_N8S21037C1D1Ev)();
extern void ABISELECT(_ZThn176_N8S21037C1D1Ev,_ZThn96_N8S21037C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21037C1D0Ev,_ZTv0_n24_N8S21037C1D0Ev)();
extern void ABISELECT(_ZThn176_N8S21037C1D0Ev,_ZThn96_N8S21037C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C1D1Ev,_ZTv0_n12_N8S21037C1D1Ev)();
extern void ABISELECT(_ZThn192_N8S21037C1D1Ev,_ZThn104_N8S21037C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C1D0Ev,_ZTv0_n12_N8S21037C1D0Ev)();
extern void ABISELECT(_ZThn192_N8S21037C1D0Ev,_ZThn104_N8S21037C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C1D1Ev,_ZTv0_n12_N8S21037C1D1Ev)();
extern void ABISELECT(_ZThn240_N8S21037C1D1Ev,_ZThn136_N8S21037C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C1D0Ev,_ZTv0_n12_N8S21037C1D0Ev)();
extern void ABISELECT(_ZThn240_N8S21037C1D0Ev,_ZThn136_N8S21037C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C1D1Ev,_ZTv0_n12_N8S21037C1D1Ev)();
extern void ABISELECT(_ZThn304_N8S21037C1D1Ev,_ZThn172_N8S21037C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C1D0Ev,_ZTv0_n12_N8S21037C1D0Ev)();
extern void ABISELECT(_ZThn304_N8S21037C1D0Ev,_ZThn172_N8S21037C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C1D1Ev,_ZTv0_n12_N8S21037C1D1Ev)();
extern void ABISELECT(_ZThn352_N8S21037C1D1Ev,_ZThn200_N8S21037C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C1D0Ev,_ZTv0_n12_N8S21037C1D0Ev)();
extern void ABISELECT(_ZThn352_N8S21037C1D0Ev,_ZThn200_N8S21037C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C1D1Ev,_ZTv0_n12_N8S21037C1D1Ev)();
extern void ABISELECT(_ZThn400_N8S21037C1D1Ev,_ZThn228_N8S21037C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C1D0Ev,_ZTv0_n12_N8S21037C1D0Ev)();
extern void ABISELECT(_ZThn400_N8S21037C1D0Ev,_ZThn228_N8S21037C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21037C1[] = {
  ABISELECT(464,268),
  ABISELECT(352,200),
  ABISELECT(304,172),
  0,
  ABISELECT(240,136),
  ABISELECT(176,96),
  0,
  ABISELECT(128,68),
  ABISELECT(16,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C1D1Ev,_ZTv0_n12_N8S21037C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C1D0Ev,_ZTv0_n12_N8S21037C1D0Ev),
  ABISELECT(448,264),
  ABISELECT(160,92),
  ABISELECT(112,64),
  ABISELECT(336,196),
  ABISELECT(-16,-4),
  ABISELECT(288,168),
  ABISELECT(-16,-4),
  ABISELECT(224,132),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S21037C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C1D1Ev,_ZTv0_n12_N8S21037C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C1D0Ev,_ZTv0_n12_N8S21037C1D0Ev),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S21037C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn96_n24_N8S21037C1D1Ev,_ZTvn56_n12_N8S21037C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn96_n24_N8S21037C1D0Ev,_ZTvn56_n12_N8S21037C1D0Ev),
  ABISELECT(176,104),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S21037C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C1D1Ev,_ZTv0_n12_N8S21037C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C1D0Ev,_ZTv0_n12_N8S21037C1D0Ev),
  ABISELECT(-176,-96),
  ABISELECT(128,76),
  ABISELECT(-176,-96),
  ABISELECT(64,40),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI8S21037C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21037C1D1Ev,_ZTv0_n24_N8S21037C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21037C1D0Ev,_ZTv0_n24_N8S21037C1D0Ev),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI8S21037C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C1D1Ev,_ZTv0_n12_N8S21037C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C1D0Ev,_ZTv0_n12_N8S21037C1D0Ev),
  ABISELECT(64,36),
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  (VTBL_ENTRY)&(_ZTI8S21037C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C1D1Ev,_ZTv0_n12_N8S21037C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C1D0Ev,_ZTv0_n12_N8S21037C1D0Ev),
  ABISELECT(-304,-172),
  ABISELECT(-304,-172),
  ABISELECT(-304,-172),
  (VTBL_ENTRY)&(_ZTI8S21037C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C1D1Ev,_ZTv0_n12_N8S21037C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C1D0Ev,_ZTv0_n12_N8S21037C1D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(-112,-64),
  ABISELECT(-176,-104),
  ABISELECT(-352,-200),
  ABISELECT(-224,-132),
  ABISELECT(-352,-200),
  ABISELECT(-352,-200),
  ABISELECT(-352,-200),
  (VTBL_ENTRY)&(_ZTI8S21037C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C1D1Ev,_ZTv0_n12_N8S21037C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C1D0Ev,_ZTv0_n12_N8S21037C1D0Ev),
  ABISELECT(-96,-56),
  ABISELECT(-400,-228),
  ABISELECT(-400,-228),
  ABISELECT(-400,-228),
  (VTBL_ENTRY)&(_ZTI8S21037C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C1D1Ev,_ZTv0_n12_N8S21037C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C1D0Ev,_ZTv0_n12_N8S21037C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S21037C1[];
extern void ABISELECT(_ZTv0_n24_N8S21037C2D1Ev,_ZTv0_n12_N8S21037C2D1Ev)();
extern void _ZN8S21037C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C2D0Ev,_ZTv0_n12_N8S21037C2D0Ev)();
extern void _ZN8S21037C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C2__8S21037C1[] = {
  ABISELECT(448,264),
  ABISELECT(160,92),
  ABISELECT(112,64),
  ABISELECT(336,196),
  ABISELECT(-16,-4),
  ABISELECT(288,168),
  ABISELECT(-16,-4),
  ABISELECT(224,132),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C2D1Ev,_ZTv0_n12_N8S21037C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C2D0Ev,_ZTv0_n12_N8S21037C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21037C11D1Ev,_ZTv0_n12_N9S21037C11D1Ev)();
extern void _ZN9S21037C11D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C11D0Ev,_ZTv0_n12_N9S21037C11D0Ev)();
extern void _ZN9S21037C11D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21037C118S21037C2__8S21037C1[] = {
  ABISELECT(448,264),
  ABISELECT(160,92),
  ABISELECT(112,64),
  ABISELECT(336,196),
  ABISELECT(-16,-4),
  ABISELECT(288,168),
  ABISELECT(-16,-4),
  ABISELECT(224,132),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21037C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C11D1Ev,_ZTv0_n12_N9S21037C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C11D0Ev,_ZTv0_n12_N9S21037C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21037C13D1Ev,_ZTv0_n12_N9S21037C13D1Ev)();
extern void _ZN9S21037C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C13D0Ev,_ZTv0_n12_N9S21037C13D0Ev)();
extern void _ZN9S21037C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21037C139S21037C118S21037C2__8S21037C1[] = {
  ABISELECT(-16,-4),
  ABISELECT(288,168),
  ABISELECT(-16,-4),
  ABISELECT(224,132),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21037C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C13D1Ev,_ZTv0_n12_N9S21037C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C13D0Ev,_ZTv0_n12_N9S21037C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21037C13D1Ev,_ZTv0_n12_N9S21037C13D1Ev)();
extern void ABISELECT(_ZThn224_N9S21037C13D1Ev,_ZThn132_N9S21037C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C13D0Ev,_ZTv0_n12_N9S21037C13D0Ev)();
extern void ABISELECT(_ZThn224_N9S21037C13D0Ev,_ZThn132_N9S21037C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C6__9S21037C139S21037C118S21037C2__8S21037C1[] = {
  ABISELECT(64,36),
  ABISELECT(-240,-136),
  ABISELECT(-224,-132),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI9S21037C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C13D1Ev,_ZTv0_n12_N9S21037C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C13D0Ev,_ZTv0_n12_N9S21037C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21037C13D1Ev,_ZTv0_n12_N9S21037C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21037C13D0Ev,_ZTv0_n12_N9S21037C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__9S21037C139S21037C118S21037C2__8S21037C1[] = {
  ABISELECT(16,4),
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI9S21037C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C13D1Ev,_ZTv0_n12_N9S21037C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C13D0Ev,_ZTv0_n12_N9S21037C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21037C13D1Ev,_ZTv0_n12_N9S21037C13D1Ev)();
extern void ABISELECT(_ZThn288_N9S21037C13D1Ev,_ZThn168_N9S21037C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C13D0Ev,_ZTv0_n12_N9S21037C13D0Ev)();
extern void ABISELECT(_ZThn288_N9S21037C13D0Ev,_ZThn168_N9S21037C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C9__9S21037C139S21037C118S21037C2__8S21037C1[] = {
  ABISELECT(-304,-172),
  ABISELECT(-288,-168),
  ABISELECT(-288,-168),
  (VTBL_ENTRY)&(_ZTI9S21037C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C13D1Ev,_ZTv0_n12_N9S21037C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C13D0Ev,_ZTv0_n12_N9S21037C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21037C11D1Ev,_ZTv0_n12_N9S21037C11D1Ev)();
extern void ABISELECT(_ZThn288_N9S21037C11D1Ev,_ZThn168_N9S21037C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C11D0Ev,_ZTv0_n12_N9S21037C11D0Ev)();
extern void ABISELECT(_ZThn288_N9S21037C11D0Ev,_ZThn168_N9S21037C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C9__9S21037C118S21037C2__8S21037C1[] = {
  ABISELECT(-304,-172),
  ABISELECT(-288,-168),
  ABISELECT(-288,-168),
  (VTBL_ENTRY)&(_ZTI9S21037C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C11D1Ev,_ZTv0_n12_N9S21037C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C11D0Ev,_ZTv0_n12_N9S21037C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21037C11D1Ev,_ZTv0_n12_N9S21037C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21037C11D0Ev,_ZTv0_n12_N9S21037C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__9S21037C118S21037C2__8S21037C1[] = {
  ABISELECT(16,4),
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI9S21037C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C11D1Ev,_ZTv0_n12_N9S21037C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C11D0Ev,_ZTv0_n12_N9S21037C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21037C11D1Ev,_ZTv0_n12_N9S21037C11D1Ev)();
extern void ABISELECT(_ZThn336_N9S21037C11D1Ev,_ZThn196_N9S21037C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C11D0Ev,_ZTv0_n12_N9S21037C11D0Ev)();
extern void ABISELECT(_ZThn336_N9S21037C11D0Ev,_ZThn196_N9S21037C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21037C12__9S21037C118S21037C2__8S21037C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-112,-64),
  ABISELECT(-176,-104),
  ABISELECT(-352,-200),
  ABISELECT(-224,-132),
  ABISELECT(-352,-200),
  ABISELECT(-336,-196),
  ABISELECT(-336,-196),
  (VTBL_ENTRY)&(_ZTI9S21037C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C11D1Ev,_ZTv0_n12_N9S21037C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C11D0Ev,_ZTv0_n12_N9S21037C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21037C11D1Ev,_ZTv0_n12_N9S21037C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S21037C11D1Ev,_ZThn64_N9S21037C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C11D0Ev,_ZTv0_n12_N9S21037C11D0Ev)();
extern void ABISELECT(_ZThn112_N9S21037C11D0Ev,_ZThn64_N9S21037C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C3__9S21037C118S21037C2__8S21037C1[] = {
  ABISELECT(176,104),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S21037C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C11D1Ev,_ZTv0_n12_N9S21037C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C11D0Ev,_ZTv0_n12_N9S21037C11D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S21037C11D1Ev,_ZTv0_n24_N9S21037C11D1Ev)();
extern void ABISELECT(_ZThn160_N9S21037C11D1Ev,_ZThn92_N9S21037C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21037C11D0Ev,_ZTv0_n24_N9S21037C11D0Ev)();
extern void ABISELECT(_ZThn160_N9S21037C11D0Ev,_ZThn92_N9S21037C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C5__9S21037C118S21037C2__8S21037C1[] = {
  ABISELECT(-160,-92),
  ABISELECT(128,76),
  ABISELECT(-176,-96),
  ABISELECT(64,40),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI9S21037C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21037C11D1Ev,_ZTv0_n24_N9S21037C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21037C11D0Ev,_ZTv0_n24_N9S21037C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21037C11D1Ev,_ZTv0_n12_N9S21037C11D1Ev)();
extern void ABISELECT(_ZThn224_N9S21037C11D1Ev,_ZThn132_N9S21037C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C11D0Ev,_ZTv0_n12_N9S21037C11D0Ev)();
extern void ABISELECT(_ZThn224_N9S21037C11D0Ev,_ZThn132_N9S21037C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C6__9S21037C118S21037C2__8S21037C1[] = {
  ABISELECT(64,36),
  ABISELECT(-240,-136),
  ABISELECT(-224,-132),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI9S21037C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C11D1Ev,_ZTv0_n12_N9S21037C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C11D0Ev,_ZTv0_n12_N9S21037C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21037C11D1Ev,_ZTv0_n12_N9S21037C11D1Ev)();
extern void ABISELECT(_ZThn176_N9S21037C11D1Ev,_ZThn100_N9S21037C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C11D0Ev,_ZTv0_n12_N9S21037C11D0Ev)();
extern void ABISELECT(_ZThn176_N9S21037C11D0Ev,_ZThn100_N9S21037C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C98S21037C5__A2__9S21037C118S21037C2__8S21037C1[] = {
  ABISELECT(-192,-104),
  ABISELECT(-176,-100),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI9S21037C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C11D1Ev,_ZTv0_n12_N9S21037C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C11D0Ev,_ZTv0_n12_N9S21037C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21037C11D1Ev,_ZTv0_n12_N9S21037C11D1Ev)();
extern void ABISELECT(_ZThn384_N9S21037C11D1Ev,_ZThn224_N9S21037C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C11D0Ev,_ZTv0_n12_N9S21037C11D0Ev)();
extern void ABISELECT(_ZThn384_N9S21037C11D0Ev,_ZThn224_N9S21037C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C69S21037C12__A1__9S21037C118S21037C2__8S21037C1[] = {
  ABISELECT(-96,-56),
  ABISELECT(-400,-228),
  ABISELECT(-384,-224),
  ABISELECT(-384,-224),
  (VTBL_ENTRY)&(_ZTI9S21037C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C11D1Ev,_ZTv0_n12_N9S21037C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C11D0Ev,_ZTv0_n12_N9S21037C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C2D1Ev,_ZTv0_n12_N8S21037C2D1Ev)();
extern void ABISELECT(_ZThn112_N8S21037C2D1Ev,_ZThn64_N8S21037C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C2D0Ev,_ZTv0_n12_N8S21037C2D0Ev)();
extern void ABISELECT(_ZThn112_N8S21037C2D0Ev,_ZThn64_N8S21037C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C3__8S21037C2__8S21037C1[] = {
  ABISELECT(176,104),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI8S21037C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C2D1Ev,_ZTv0_n12_N8S21037C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C2D0Ev,_ZTv0_n12_N8S21037C2D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S21037C2D1Ev,_ZTv0_n24_N8S21037C2D1Ev)();
extern void ABISELECT(_ZThn160_N8S21037C2D1Ev,_ZThn92_N8S21037C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21037C2D0Ev,_ZTv0_n24_N8S21037C2D0Ev)();
extern void ABISELECT(_ZThn160_N8S21037C2D0Ev,_ZThn92_N8S21037C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C5__8S21037C2__8S21037C1[] = {
  ABISELECT(-160,-92),
  ABISELECT(128,76),
  ABISELECT(-176,-96),
  ABISELECT(64,40),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI8S21037C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21037C2D1Ev,_ZTv0_n24_N8S21037C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21037C2D0Ev,_ZTv0_n24_N8S21037C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C2D1Ev,_ZTv0_n12_N8S21037C2D1Ev)();
extern void ABISELECT(_ZThn224_N8S21037C2D1Ev,_ZThn132_N8S21037C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C2D0Ev,_ZTv0_n12_N8S21037C2D0Ev)();
extern void ABISELECT(_ZThn224_N8S21037C2D0Ev,_ZThn132_N8S21037C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C6__8S21037C2__8S21037C1[] = {
  ABISELECT(64,36),
  ABISELECT(-240,-136),
  ABISELECT(-224,-132),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI8S21037C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C2D1Ev,_ZTv0_n12_N8S21037C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C2D0Ev,_ZTv0_n12_N8S21037C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C2D1Ev,_ZTv0_n12_N8S21037C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21037C2D0Ev,_ZTv0_n12_N8S21037C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S21037C2__8S21037C1[] = {
  ABISELECT(16,4),
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI8S21037C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C2D1Ev,_ZTv0_n12_N8S21037C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C2D0Ev,_ZTv0_n12_N8S21037C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C2D1Ev,_ZTv0_n12_N8S21037C2D1Ev)();
extern void ABISELECT(_ZThn288_N8S21037C2D1Ev,_ZThn168_N8S21037C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C2D0Ev,_ZTv0_n12_N8S21037C2D0Ev)();
extern void ABISELECT(_ZThn288_N8S21037C2D0Ev,_ZThn168_N8S21037C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C9__8S21037C2__8S21037C1[] = {
  ABISELECT(-304,-172),
  ABISELECT(-288,-168),
  ABISELECT(-288,-168),
  (VTBL_ENTRY)&(_ZTI8S21037C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C2D1Ev,_ZTv0_n12_N8S21037C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C2D0Ev,_ZTv0_n12_N8S21037C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C2D1Ev,_ZTv0_n12_N8S21037C2D1Ev)();
extern void ABISELECT(_ZThn176_N8S21037C2D1Ev,_ZThn100_N8S21037C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C2D0Ev,_ZTv0_n12_N8S21037C2D0Ev)();
extern void ABISELECT(_ZThn176_N8S21037C2D0Ev,_ZThn100_N8S21037C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C98S21037C5__A1__8S21037C2__8S21037C1[] = {
  ABISELECT(-192,-104),
  ABISELECT(-176,-100),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI8S21037C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C2D1Ev,_ZTv0_n12_N8S21037C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C2D0Ev,_ZTv0_n12_N8S21037C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C2D1Ev,_ZTv0_n12_N8S21037C2D1Ev)();
extern void ABISELECT(_ZThn336_N8S21037C2D1Ev,_ZThn196_N8S21037C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C2D0Ev,_ZTv0_n12_N8S21037C2D0Ev)();
extern void ABISELECT(_ZThn336_N8S21037C2D0Ev,_ZThn196_N8S21037C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21037C12__8S21037C2__8S21037C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-112,-64),
  ABISELECT(-176,-104),
  ABISELECT(-352,-200),
  ABISELECT(-224,-132),
  ABISELECT(-352,-200),
  ABISELECT(-336,-196),
  ABISELECT(-336,-196),
  (VTBL_ENTRY)&(_ZTI8S21037C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C2D1Ev,_ZTv0_n12_N8S21037C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C2D0Ev,_ZTv0_n12_N8S21037C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C2D1Ev,_ZTv0_n12_N8S21037C2D1Ev)();
extern void ABISELECT(_ZThn384_N8S21037C2D1Ev,_ZThn224_N8S21037C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C2D0Ev,_ZTv0_n12_N8S21037C2D0Ev)();
extern void ABISELECT(_ZThn384_N8S21037C2D0Ev,_ZThn224_N8S21037C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C69S21037C12__A1__8S21037C2__8S21037C1[] = {
  ABISELECT(-96,-56),
  ABISELECT(-400,-228),
  ABISELECT(-384,-224),
  ABISELECT(-384,-224),
  (VTBL_ENTRY)&(_ZTI8S21037C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C2D1Ev,_ZTv0_n12_N8S21037C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C2D0Ev,_ZTv0_n12_N8S21037C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev)();
extern void _ZN8S21037C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev)();
extern void _ZN8S21037C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C3__8S21037C1[] = {
  ABISELECT(176,104),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev)();
extern void _ZN8S21037C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev)();
extern void _ZN8S21037C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C98S21037C3__A2__8S21037C1[] = {
  ABISELECT(-128,-68),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S21037C98S21037C3__A2__8S21037C1[] = {
  ABISELECT(128,68),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S21037C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S21037C3D1Ev,_ZTv0_n24_N8S21037C3D1Ev)();
extern void ABISELECT(_ZThn48_N8S21037C3D1Ev,_ZThn28_N8S21037C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21037C3D0Ev,_ZTv0_n24_N8S21037C3D0Ev)();
extern void ABISELECT(_ZThn48_N8S21037C3D0Ev,_ZThn28_N8S21037C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C5__8S21037C3__8S21037C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(128,76),
  ABISELECT(-176,-96),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S21037C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21037C3D1Ev,_ZTv0_n24_N8S21037C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21037C3D0Ev,_ZTv0_n24_N8S21037C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev)();
extern void ABISELECT(_ZThn112_N8S21037C3D1Ev,_ZThn68_N8S21037C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev)();
extern void ABISELECT(_ZThn112_N8S21037C3D0Ev,_ZThn68_N8S21037C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C6__8S21037C3__8S21037C1[] = {
  ABISELECT(64,36),
  ABISELECT(-240,-136),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S21037C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S21037C3__8S21037C1[] = {
  ABISELECT(128,68),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI8S21037C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev)();
extern void ABISELECT(_ZThn176_N8S21037C3D1Ev,_ZThn104_N8S21037C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev)();
extern void ABISELECT(_ZThn176_N8S21037C3D0Ev,_ZThn104_N8S21037C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C9__8S21037C3__8S21037C1[] = {
  ABISELECT(-304,-172),
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI8S21037C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev)();
extern void ABISELECT(_ZThn64_N8S21037C3D1Ev,_ZThn36_N8S21037C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev)();
extern void ABISELECT(_ZThn64_N8S21037C3D0Ev,_ZThn36_N8S21037C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C98S21037C5__A1__8S21037C3__8S21037C1[] = {
  ABISELECT(-192,-104),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S21037C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev),
};
extern void _ZN8S21037C5D1Ev();
extern void _ZN8S21037C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21037C5__8S21037C1[] = {
  ABISELECT(128,76),
  ABISELECT(-176,-96),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C5[0]),
  (VTBL_ENTRY)&_ZN8S21037C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21037C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev)();
extern void _ZN8S21037C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev)();
extern void _ZN8S21037C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C98S21037C5__A1__8S21037C1[] = {
  ABISELECT(-192,-104),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S21037C98S21037C5__A1__8S21037C1[] = {
  ABISELECT(192,104),
  ABISELECT(192,104),
  (VTBL_ENTRY)&(_ZTI8S21037C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C5D1Ev,_ZTv0_n12_N8S21037C5D1Ev)();
extern void ABISELECT(_ZThn64_N8S21037C5D1Ev,_ZThn40_N8S21037C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C5D0Ev,_ZTv0_n12_N8S21037C5D0Ev)();
extern void ABISELECT(_ZThn64_N8S21037C5D0Ev,_ZThn40_N8S21037C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C6__8S21037C5__8S21037C1[] = {
  ABISELECT(64,36),
  ABISELECT(-240,-136),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S21037C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C5D1Ev,_ZTv0_n12_N8S21037C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C5D0Ev,_ZTv0_n12_N8S21037C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C5D1Ev,_ZTv0_n12_N8S21037C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21037C5D0Ev,_ZTv0_n12_N8S21037C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S21037C5__8S21037C1[] = {
  ABISELECT(176,96),
  ABISELECT(176,96),
  (VTBL_ENTRY)&(_ZTI8S21037C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C5D1Ev,_ZTv0_n12_N8S21037C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C5D0Ev,_ZTv0_n12_N8S21037C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C5D1Ev,_ZTv0_n12_N8S21037C5D1Ev)();
extern void ABISELECT(_ZThn128_N8S21037C5D1Ev,_ZThn76_N8S21037C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C5D0Ev,_ZTv0_n12_N8S21037C5D0Ev)();
extern void ABISELECT(_ZThn128_N8S21037C5D0Ev,_ZThn76_N8S21037C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C9__8S21037C5__8S21037C1[] = {
  ABISELECT(-304,-172),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S21037C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C5D1Ev,_ZTv0_n12_N8S21037C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C5D0Ev,_ZTv0_n12_N8S21037C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C5D1Ev,_ZTv0_n12_N8S21037C5D1Ev)();
extern void ABISELECT(_ZThn16_N8S21037C5D1Ev,_ZThn8_N8S21037C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C5D0Ev,_ZTv0_n12_N8S21037C5D0Ev)();
extern void ABISELECT(_ZThn16_N8S21037C5D0Ev,_ZThn8_N8S21037C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C9__A__8S21037C5__8S21037C1[] = {
  ABISELECT(-192,-104),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21037C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C5D1Ev,_ZTv0_n12_N8S21037C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C5D0Ev,_ZTv0_n12_N8S21037C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev)();
extern void _ZN8S21037C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev)();
extern void _ZN8S21037C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C6__8S21037C1[] = {
  ABISELECT(64,36),
  ABISELECT(-240,-136),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev)();
extern void _ZN8S21037C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev)();
extern void _ZN8S21037C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C88S21037C6__8S21037C1[] = {
  ABISELECT(64,36),
  ABISELECT(-240,-136),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S21037C88S21037C6__8S21037C1[] = {
  ABISELECT(240,136),
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI8S21037C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev)();
extern void ABISELECT(_ZThn64_N8S21037C8D1Ev,_ZThn36_N8S21037C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev)();
extern void ABISELECT(_ZThn64_N8S21037C8D0Ev,_ZThn36_N8S21037C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C9__8S21037C88S21037C6__8S21037C1[] = {
  ABISELECT(-304,-172),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S21037C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S21037C6__8S21037C1[] = {
  ABISELECT(240,136),
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI8S21037C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev)();
extern void ABISELECT(_ZThn64_N8S21037C6D1Ev,_ZThn36_N8S21037C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev)();
extern void ABISELECT(_ZThn64_N8S21037C6D0Ev,_ZThn36_N8S21037C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C9__8S21037C6__8S21037C1[] = {
  ABISELECT(-304,-172),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S21037C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev)();
extern void _ZN8S21037C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev)();
extern void _ZN8S21037C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C9__8S21037C1[] = {
  ABISELECT(-304,-172),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S21037C9__8S21037C1[] = {
  ABISELECT(304,172),
  ABISELECT(304,172),
  (VTBL_ENTRY)&(_ZTI8S21037C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev)();
extern void _ZN9S21037C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev)();
extern void _ZN9S21037C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21037C12__8S21037C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-112,-64),
  ABISELECT(-176,-104),
  ABISELECT(-352,-200),
  ABISELECT(-224,-132),
  ABISELECT(-352,-200),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21037C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev)();
extern void _ZN8S21037C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev)();
extern void _ZN8S21037C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C99S21037C12__A3__8S21037C1[] = {
  ABISELECT(-352,-200),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S21037C99S21037C12__A3__8S21037C1[] = {
  ABISELECT(352,200),
  ABISELECT(352,200),
  (VTBL_ENTRY)&(_ZTI8S21037C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev)();
extern void _ZN8S21037C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev)();
extern void _ZN8S21037C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C69S21037C12__A1__8S21037C1[] = {
  ABISELECT(-96,-56),
  ABISELECT(-400,-228),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev)();
extern void _ZN8S21037C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev)();
extern void _ZN8S21037C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C88S21037C69S21037C12__A1__8S21037C1[] = {
  ABISELECT(-96,-56),
  ABISELECT(-400,-228),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21037C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S21037C88S21037C69S21037C12__A1__8S21037C1[] = {
  ABISELECT(400,228),
  ABISELECT(400,228),
  (VTBL_ENTRY)&(_ZTI8S21037C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21037C9__8S21037C88S21037C69S21037C12__A1__8S21037C1[] = {
  ABISELECT(-304,-172),
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S21037C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S21037C69S21037C12__A1__8S21037C1[] = {
  ABISELECT(400,228),
  ABISELECT(400,228),
  (VTBL_ENTRY)&(_ZTI8S21037C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21037C9__8S21037C69S21037C12__A1__8S21037C1[] = {
  ABISELECT(-304,-172),
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S21037C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__9S21037C12__8S21037C1[] = {
  ABISELECT(352,200),
  ABISELECT(352,200),
  (VTBL_ENTRY)&(_ZTI9S21037C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21037C3__9S21037C12__8S21037C1[] = {
  ABISELECT(176,104),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  ABISELECT(224,132),
  ABISELECT(224,132),
  (VTBL_ENTRY)&(_ZTI9S21037C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S21037C12D1Ev,_ZTv0_n24_N9S21037C12D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S21037C12D0Ev,_ZTv0_n24_N9S21037C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21037C5__9S21037C12__8S21037C1[] = {
  ABISELECT(176,104),
  ABISELECT(128,76),
  ABISELECT(-176,-96),
  ABISELECT(64,40),
  ABISELECT(176,104),
  (VTBL_ENTRY)&(_ZTI9S21037C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21037C12D1Ev,_ZTv0_n24_N9S21037C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21037C12D0Ev,_ZTv0_n24_N9S21037C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21037C6__9S21037C12__8S21037C1[] = {
  ABISELECT(64,36),
  ABISELECT(-240,-136),
  ABISELECT(112,64),
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI9S21037C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21037C9__A1__9S21037C12__8S21037C1[] = {
  ABISELECT(-304,-172),
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S21037C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21037C98S21037C5__A2__9S21037C12__8S21037C1[] = {
  ABISELECT(-192,-104),
  ABISELECT(160,96),
  ABISELECT(160,96),
  (VTBL_ENTRY)&(_ZTI9S21037C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev)();
extern void ABISELECT(_ZThn48_N9S21037C12D1Ev,_ZThn28_N9S21037C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev)();
extern void ABISELECT(_ZThn48_N9S21037C12D0Ev,_ZThn28_N9S21037C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21037C6__A__9S21037C12__8S21037C1[] = {
  ABISELECT(-96,-56),
  ABISELECT(-400,-228),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S21037C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev),
};
static  VTT_ENTRY vtt_S21037C1[] = {
  {&(_ZTV8S21037C1[12]),  12,86},
  {&(_ZTV8S21037C1[25]),  25,86},
  {&(_ZTV8S21037C1[39]),  39,86},
  {&(_ZTV8S21037C1[47]),  47,86},
  {&(_ZTV8S21037C1[60]),  60,86},
  {&(_ZTV8S21037C1[12]),  12,86},
  {&(_ZTV8S21037C1[66]),  66,86},
  {&(_ZTV8S21037C1[53]),  53,86},
  {&(_ZTV8S21037C1[77]),  77,86},
  {&(_ZTV8S21037C1[84]),  84,86},
  {&(_ZTV8S21037C1[29]),  29,86},
  {&(_tg__ZTV8S21037C2__8S21037C1[11]),  11,13},
  {&(_tg__ZTV9S21037C118S21037C2__8S21037C1[11]),  11,13},
  {&(_tg__ZTV9S21037C139S21037C118S21037C2__8S21037C1[7]),  7,9},
  {&(_tg__ZTV8S21037C6__9S21037C139S21037C118S21037C2__8S21037C1[5]),  5,7},
  {&(_tg__ZTV9S19905C19__9S21037C139S21037C118S21037C2__8S21037C1[3]),  3,5},
  {&(_tg__ZTV8S21037C9__9S21037C139S21037C118S21037C2__8S21037C1[4]),  4,6},
  {&(_tg__ZTV8S21037C9__9S21037C118S21037C2__8S21037C1[4]),  4,6},
  {&(_tg__ZTV9S19905C19__9S21037C118S21037C2__8S21037C1[3]),  3,5},
  {&(_tg__ZTV9S21037C12__9S21037C118S21037C2__8S21037C1[9]),  9,11},
  {&(_tg__ZTV8S21037C3__9S21037C118S21037C2__8S21037C1[8]),  8,10},
  {&(_tg__ZTV8S21037C5__9S21037C118S21037C2__8S21037C1[6]),  6,8},
  {&(_tg__ZTV8S21037C6__9S21037C118S21037C2__8S21037C1[5]),  5,7},
  {&(_tg__ZTV8S21037C98S21037C5__A2__9S21037C118S21037C2__8S21037C1[4]),  4,6},
  {&(_tg__ZTV8S21037C69S21037C12__A1__9S21037C118S21037C2__8S21037C1[5]),  5,7},
  {&(_tg__ZTV8S21037C3__8S21037C2__8S21037C1[8]),  8,10},
  {&(_tg__ZTV8S21037C5__8S21037C2__8S21037C1[6]),  6,8},
  {&(_tg__ZTV8S21037C6__8S21037C2__8S21037C1[5]),  5,7},
  {&(_tg__ZTV9S19905C19__8S21037C2__8S21037C1[3]),  3,5},
  {&(_tg__ZTV8S21037C9__8S21037C2__8S21037C1[4]),  4,6},
  {&(_tg__ZTV8S21037C98S21037C5__A1__8S21037C2__8S21037C1[4]),  4,6},
  {&(_tg__ZTV9S21037C12__8S21037C2__8S21037C1[9]),  9,11},
  {&(_tg__ZTV8S21037C69S21037C12__A1__8S21037C2__8S21037C1[5]),  5,7},
  {&(_tg__ZTV8S21037C3__8S21037C1[8]),  8,10},
  {&(_tg__ZTV8S21037C98S21037C3__A2__8S21037C1[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S21037C98S21037C3__A2__8S21037C1[3]),  3,5},
  {&(_tg__ZTV8S21037C5__8S21037C3__8S21037C1[6]),  6,8},
  {&(_tg__ZTV8S21037C6__8S21037C3__8S21037C1[5]),  5,7},
  {&(_tg__ZTV9S19905C19__8S21037C3__8S21037C1[3]),  3,5},
  {&(_tg__ZTV8S21037C9__8S21037C3__8S21037C1[4]),  4,6},
  {&(_tg__ZTV8S21037C98S21037C5__A1__8S21037C3__8S21037C1[4]),  4,6},
  {&(_tg__ZTV8S21037C5__8S21037C1[5]),  5,7},
  {&(_tg__ZTV8S21037C98S21037C5__A1__8S21037C1[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S21037C98S21037C5__A1__8S21037C1[3]),  3,5},
  {&(_tg__ZTV8S21037C6__8S21037C5__8S21037C1[5]),  5,7},
  {&(_tg__ZTV9S19905C19__8S21037C5__8S21037C1[3]),  3,5},
  {&(_tg__ZTV8S21037C9__8S21037C5__8S21037C1[4]),  4,6},
  {&(_tg__ZTV8S21037C9__A__8S21037C5__8S21037C1[4]),  4,6},
  {&(_tg__ZTV8S21037C6__8S21037C1[5]),  5,7},
  {&(_tg__ZTV8S21037C88S21037C6__8S21037C1[5]),  5,7},
  {&(_tg__ZTV9S19905C19__8S21037C88S21037C6__8S21037C1[3]),  3,5},
  {&(_tg__ZTV8S21037C9__8S21037C88S21037C6__8S21037C1[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S21037C6__8S21037C1[3]),  3,5},
  {&(_tg__ZTV8S21037C9__8S21037C6__8S21037C1[4]),  4,6},
  {&(_tg__ZTV8S21037C9__8S21037C1[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S21037C9__8S21037C1[3]),  3,5},
  {&(_tg__ZTV9S21037C12__8S21037C1[9]),  9,11},
  {&(_tg__ZTV8S21037C99S21037C12__A3__8S21037C1[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S21037C99S21037C12__A3__8S21037C1[3]),  3,5},
  {&(_tg__ZTV8S21037C69S21037C12__A1__8S21037C1[5]),  5,7},
  {&(_tg__ZTV8S21037C88S21037C69S21037C12__A1__8S21037C1[5]),  5,7},
  {&(_tg__ZTV9S19905C19__8S21037C88S21037C69S21037C12__A1__8S21037C1[3]),  3,5},
  {&(_tg__ZTV8S21037C9__8S21037C88S21037C69S21037C12__A1__8S21037C1[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S21037C69S21037C12__A1__8S21037C1[3]),  3,5},
  {&(_tg__ZTV8S21037C9__8S21037C69S21037C12__A1__8S21037C1[4]),  4,6},
  {&(_tg__ZTV9S19905C19__9S21037C12__8S21037C1[3]),  3,5},
  {&(_tg__ZTV8S21037C3__9S21037C12__8S21037C1[8]),  8,10},
  {&(_tg__ZTV8S21037C5__9S21037C12__8S21037C1[6]),  6,8},
  {&(_tg__ZTV8S21037C6__9S21037C12__8S21037C1[5]),  5,7},
  {&(_tg__ZTV8S21037C9__A1__9S21037C12__8S21037C1[4]),  4,6},
  {&(_tg__ZTV8S21037C98S21037C5__A2__9S21037C12__8S21037C1[4]),  4,6},
  {&(_tg__ZTV8S21037C6__A__9S21037C12__8S21037C1[5]),  5,7},
};
extern VTBL_ENTRY _ZTI8S21037C1[];
extern  VTBL_ENTRY _ZTV8S21037C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21037C1[];
static VTBL_ENTRY alt_thunk_names89[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21037C12D0Ev,_ZTv0_n12_N9S21037C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21037C12D0Ev,_ZThn28_N9S21037C12D0Ev),
  (VTBL_ENTRY)_ZN9S21037C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21037C12D1Ev,_ZTv0_n12_N9S21037C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21037C12D1Ev,_ZThn28_N9S21037C12D1Ev),
  (VTBL_ENTRY)_ZN9S21037C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C8D0Ev,_ZTv0_n12_N8S21037C8D0Ev), // 
  (VTBL_ENTRY)_ZN8S21037C8D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21037C8D0Ev,_ZThn36_N8S21037C8D0Ev),
  (VTBL_ENTRY)_ZN8S21037C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C8D1Ev,_ZTv0_n12_N8S21037C8D1Ev), // 
  (VTBL_ENTRY)_ZN8S21037C8D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21037C8D1Ev,_ZThn36_N8S21037C8D1Ev),
  (VTBL_ENTRY)_ZN8S21037C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C6D0Ev,_ZTv0_n12_N8S21037C6D0Ev), // 
  (VTBL_ENTRY)_ZN8S21037C6D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21037C6D0Ev,_ZThn36_N8S21037C6D0Ev),
  (VTBL_ENTRY)_ZN8S21037C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C6D1Ev,_ZTv0_n12_N8S21037C6D1Ev), // 
  (VTBL_ENTRY)_ZN8S21037C6D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21037C6D1Ev,_ZThn36_N8S21037C6D1Ev),
  (VTBL_ENTRY)_ZN8S21037C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C5D0Ev,_ZTv0_n12_N8S21037C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21037C5D0Ev,_ZThn8_N8S21037C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21037C5D0Ev,_ZThn76_N8S21037C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21037C5D0Ev,_ZThn40_N8S21037C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C5D1Ev,_ZTv0_n12_N8S21037C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21037C5D1Ev,_ZThn8_N8S21037C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21037C5D1Ev,_ZThn76_N8S21037C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21037C5D1Ev,_ZThn40_N8S21037C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21037C3D0Ev,_ZTv0_n24_N8S21037C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21037C3D0Ev,_ZThn28_N8S21037C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21037C3D1Ev,_ZTv0_n24_N8S21037C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21037C3D1Ev,_ZThn28_N8S21037C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C9D0Ev,_ZTv0_n12_N8S21037C9D0Ev), // 
  (VTBL_ENTRY)_ZN8S21037C9D0Ev,
  (VTBL_ENTRY)_ZN8S21037C9D0Ev,
  (VTBL_ENTRY)_ZN8S21037C9D0Ev,
  (VTBL_ENTRY)_ZN8S21037C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C9D1Ev,_ZTv0_n12_N8S21037C9D1Ev), // 
  (VTBL_ENTRY)_ZN8S21037C9D1Ev,
  (VTBL_ENTRY)_ZN8S21037C9D1Ev,
  (VTBL_ENTRY)_ZN8S21037C9D1Ev,
  (VTBL_ENTRY)_ZN8S21037C9D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C3D0Ev,_ZTv0_n12_N8S21037C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21037C3D0Ev,_ZThn36_N8S21037C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S21037C3D0Ev,_ZThn104_N8S21037C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21037C3D0Ev,_ZThn68_N8S21037C3D0Ev),
  (VTBL_ENTRY)_ZN8S21037C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C3D1Ev,_ZTv0_n12_N8S21037C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21037C3D1Ev,_ZThn36_N8S21037C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S21037C3D1Ev,_ZThn104_N8S21037C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21037C3D1Ev,_ZThn68_N8S21037C3D1Ev),
  (VTBL_ENTRY)_ZN8S21037C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21037C2D0Ev,_ZTv0_n24_N8S21037C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S21037C2D0Ev,_ZThn92_N8S21037C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21037C2D1Ev,_ZTv0_n24_N8S21037C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S21037C2D1Ev,_ZThn92_N8S21037C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21037C11D0Ev,_ZTv0_n24_N9S21037C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S21037C11D0Ev,_ZThn92_N9S21037C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21037C11D1Ev,_ZTv0_n24_N9S21037C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S21037C11D1Ev,_ZThn92_N9S21037C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21037C13D0Ev,_ZTv0_n12_N9S21037C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S21037C13D0Ev,_ZThn168_N9S21037C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21037C13D0Ev,_ZThn132_N9S21037C13D0Ev),
  (VTBL_ENTRY)_ZN9S21037C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21037C13D1Ev,_ZTv0_n12_N9S21037C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S21037C13D1Ev,_ZThn168_N9S21037C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21037C13D1Ev,_ZThn132_N9S21037C13D1Ev),
  (VTBL_ENTRY)_ZN9S21037C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21037C11D0Ev,_ZTv0_n12_N9S21037C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S21037C11D0Ev,_ZThn224_N9S21037C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S21037C11D0Ev,_ZThn100_N9S21037C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21037C11D0Ev,_ZThn132_N9S21037C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S21037C11D0Ev,_ZThn64_N9S21037C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S21037C11D0Ev,_ZThn196_N9S21037C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S21037C11D0Ev,_ZThn168_N9S21037C11D0Ev),
  (VTBL_ENTRY)_ZN9S21037C11D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21037C11D1Ev,_ZTv0_n12_N9S21037C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S21037C11D1Ev,_ZThn224_N9S21037C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S21037C11D1Ev,_ZThn100_N9S21037C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21037C11D1Ev,_ZThn132_N9S21037C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S21037C11D1Ev,_ZThn64_N9S21037C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S21037C11D1Ev,_ZThn196_N9S21037C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S21037C11D1Ev,_ZThn168_N9S21037C11D1Ev),
  (VTBL_ENTRY)_ZN9S21037C11D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C2D0Ev,_ZTv0_n12_N8S21037C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S21037C2D0Ev,_ZThn224_N8S21037C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S21037C2D0Ev,_ZThn196_N8S21037C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S21037C2D0Ev,_ZThn100_N8S21037C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21037C2D0Ev,_ZThn168_N8S21037C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21037C2D0Ev,_ZThn132_N8S21037C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21037C2D0Ev,_ZThn64_N8S21037C2D0Ev),
  (VTBL_ENTRY)_ZN8S21037C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C2D1Ev,_ZTv0_n12_N8S21037C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S21037C2D1Ev,_ZThn224_N8S21037C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S21037C2D1Ev,_ZThn196_N8S21037C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S21037C2D1Ev,_ZThn100_N8S21037C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21037C2D1Ev,_ZThn168_N8S21037C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21037C2D1Ev,_ZThn132_N8S21037C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21037C2D1Ev,_ZThn64_N8S21037C2D1Ev),
  (VTBL_ENTRY)_ZN8S21037C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21037C1D0Ev,_ZTv0_n24_N8S21037C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S21037C1D0Ev,_ZThn96_N8S21037C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21037C1D1Ev,_ZTv0_n24_N8S21037C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S21037C1D1Ev,_ZThn96_N8S21037C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C1D0Ev,_ZTv0_n12_N8S21037C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S21037C1D0Ev,_ZThn228_N8S21037C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S21037C1D0Ev,_ZThn200_N8S21037C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S21037C1D0Ev,_ZThn172_N8S21037C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S21037C1D0Ev,_ZThn136_N8S21037C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21037C1D0Ev,_ZThn104_N8S21037C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21037C1D0Ev,_ZThn68_N8S21037C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21037C1D0Ev,_ZThn4_N8S21037C1D0Ev),
  (VTBL_ENTRY)_ZN8S21037C1D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21037C1D1Ev,_ZTv0_n12_N8S21037C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S21037C1D1Ev,_ZThn228_N8S21037C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S21037C1D1Ev,_ZThn200_N8S21037C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S21037C1D1Ev,_ZThn172_N8S21037C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S21037C1D1Ev,_ZThn136_N8S21037C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21037C1D1Ev,_ZThn104_N8S21037C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21037C1D1Ev,_ZThn68_N8S21037C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21037C1D1Ev,_ZThn4_N8S21037C1D1Ev),
  (VTBL_ENTRY)_ZN8S21037C1D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21037C1 = {  "S21037C1", // class name
  bases_S21037C1, 24,
  &(vtc_S21037C1[0]), // expected_vtbl_contents
  &(vtt_S21037C1[0]), // expected_vtt_contents
  ABISELECT(480,272), // object size
  NSPAIRA(_ZTI8S21037C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21037C1),86, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21037C1),72, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names89,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20909C3  {
  virtual void  v7(); // _ZN8S20909C32v7Ev
  virtual void  v8(); // _ZN8S20909C32v8Ev
  virtual void  v9(); // _ZN8S20909C32v9Ev
  virtual void  v10(); // _ZN8S20909C33v10Ev
  virtual void  v11(); // _ZN8S20909C33v11Ev
  virtual void  v12(); // _ZN8S20909C33v12Ev
  virtual void  v13(); // _ZN8S20909C33v13Ev
  virtual void  v14(); // _ZN8S20909C33v14Ev
  virtual void  v15(); // _ZN8S20909C33v15Ev
  ~S20909C3(); // tgen
  S20909C3(); // tgen
};
//SIG(-1 S20909C3) C1{ v1 v2 v3 v4 v5 v6 v7 v8 v9}


void  S20909C3 ::v7(){vfunc_called(this, "_ZN8S20909C32v7Ev");}
void  S20909C3 ::v8(){vfunc_called(this, "_ZN8S20909C32v8Ev");}
void  S20909C3 ::v9(){vfunc_called(this, "_ZN8S20909C32v9Ev");}
void  S20909C3 ::v10(){vfunc_called(this, "_ZN8S20909C33v10Ev");}
void  S20909C3 ::v11(){vfunc_called(this, "_ZN8S20909C33v11Ev");}
void  S20909C3 ::v12(){vfunc_called(this, "_ZN8S20909C33v12Ev");}
void  S20909C3 ::v13(){vfunc_called(this, "_ZN8S20909C33v13Ev");}
void  S20909C3 ::v14(){vfunc_called(this, "_ZN8S20909C33v14Ev");}
void  S20909C3 ::v15(){vfunc_called(this, "_ZN8S20909C33v15Ev");}
S20909C3 ::~S20909C3(){ note_dtor("S20909C3", this);} // tgen
S20909C3 ::S20909C3(){ note_ctor("S20909C3", this);} // tgen

static void Test_S20909C3()
{
  extern Class_Descriptor cd_S20909C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20909C3, buf);
    S20909C3 *dp, &lv = *(dp=new (buf) S20909C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20909C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20909C3)");
    test_class_info(&lv, &cd_S20909C3);
    dp->~S20909C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20909C3(Test_S20909C3, "S20909C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S20909C3C1Ev();
extern void _ZN8S20909C3D1Ev();
Name_Map name_map_S20909C3[] = {
  NSPAIR(_ZN8S20909C3C1Ev),
  NSPAIR(_ZN8S20909C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20909C3[];
extern void _ZN8S20909C32v7Ev();
extern void _ZN8S20909C32v8Ev();
extern void _ZN8S20909C32v9Ev();
extern void _ZN8S20909C33v10Ev();
extern void _ZN8S20909C33v11Ev();
extern void _ZN8S20909C33v12Ev();
extern void _ZN8S20909C33v13Ev();
extern void _ZN8S20909C33v14Ev();
extern void _ZN8S20909C33v15Ev();
static  VTBL_ENTRY vtc_S20909C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20909C3[0]),
  (VTBL_ENTRY)&_ZN8S20909C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v15Ev,
};
extern VTBL_ENTRY _ZTI8S20909C3[];
extern  VTBL_ENTRY _ZTV8S20909C3[];
Class_Descriptor cd_S20909C3 = {  "S20909C3", // class name
  0,0,//no base classes
  &(vtc_S20909C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20909C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20909C3),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20909C6  {
  virtual void  v16(); // _ZN8S20909C63v16Ev
  ~S20909C6(); // tgen
  S20909C6(); // tgen
};
//SIG(-1 S20909C6) C1{ v1}


void  S20909C6 ::v16(){vfunc_called(this, "_ZN8S20909C63v16Ev");}
S20909C6 ::~S20909C6(){ note_dtor("S20909C6", this);} // tgen
S20909C6 ::S20909C6(){ note_ctor("S20909C6", this);} // tgen

static void Test_S20909C6()
{
  extern Class_Descriptor cd_S20909C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20909C6, buf);
    S20909C6 *dp, &lv = *(dp=new (buf) S20909C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20909C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20909C6)");
    test_class_info(&lv, &cd_S20909C6);
    dp->~S20909C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20909C6(Test_S20909C6, "S20909C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S20909C6C1Ev();
extern void _ZN8S20909C6D1Ev();
Name_Map name_map_S20909C6[] = {
  NSPAIR(_ZN8S20909C6C1Ev),
  NSPAIR(_ZN8S20909C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20909C6[];
extern void _ZN8S20909C63v16Ev();
static  VTBL_ENTRY vtc_S20909C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20909C6[0]),
  (VTBL_ENTRY)&_ZN8S20909C63v16Ev,
};
extern VTBL_ENTRY _ZTI8S20909C6[];
extern  VTBL_ENTRY _ZTV8S20909C6[];
Class_Descriptor cd_S20909C6 = {  "S20909C6", // class name
  0,0,//no base classes
  &(vtc_S20909C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20909C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20909C6),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20909C8  : virtual S20909C3 {
  __tsi64 s20909c8f0;
  virtual void  v17(); // _ZN8S20909C83v17Ev
  virtual void  v18(); // _ZN8S20909C83v18Ev
  virtual void  v19(); // _ZN8S20909C83v19Ev
  virtual void  v20(); // _ZN8S20909C83v20Ev
  ~S20909C8(); // tgen
  S20909C8(); // tgen
};
//SIG(-1 S20909C8) C1{ VBC2{ v5 v6 v7 v8 v9 v10 v11 v12 v13} v1 v2 v3 v4 FL}


void  S20909C8 ::v17(){vfunc_called(this, "_ZN8S20909C83v17Ev");}
void  S20909C8 ::v18(){vfunc_called(this, "_ZN8S20909C83v18Ev");}
void  S20909C8 ::v19(){vfunc_called(this, "_ZN8S20909C83v19Ev");}
void  S20909C8 ::v20(){vfunc_called(this, "_ZN8S20909C83v20Ev");}
S20909C8 ::~S20909C8(){ note_dtor("S20909C8", this);} // tgen
S20909C8 ::S20909C8(){ note_ctor("S20909C8", this);} // tgen

static void Test_S20909C8()
{
  extern Class_Descriptor cd_S20909C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S20909C8, buf);
    S20909C8 *dp, &lv = *(dp=new (buf) S20909C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S20909C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20909C8)");
    check_base_class_offset(lv, (S20909C3*), 0, "S20909C8");
    check_field_offset(lv, s20909c8f0, ABISELECT(8,4), "S20909C8.s20909c8f0");
    test_class_info(&lv, &cd_S20909C8);
    dp->~S20909C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20909C8(Test_S20909C8, "S20909C8", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S20909C8C1Ev();
extern void _ZN8S20909C8D1Ev();
Name_Map name_map_S20909C8[] = {
  NSPAIR(_ZN8S20909C8C1Ev),
  NSPAIR(_ZN8S20909C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20909C3;
extern VTBL_ENTRY _ZTI8S20909C3[];
extern  VTBL_ENTRY _ZTV8S20909C3[];
static Base_Class bases_S20909C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20909C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20909C8[];
extern void _ZN8S20909C32v7Ev();
extern void _ZN8S20909C32v8Ev();
extern void _ZN8S20909C32v9Ev();
extern void _ZN8S20909C33v10Ev();
extern void _ZN8S20909C33v11Ev();
extern void _ZN8S20909C33v12Ev();
extern void _ZN8S20909C33v13Ev();
extern void _ZN8S20909C33v14Ev();
extern void _ZN8S20909C33v15Ev();
extern void _ZN8S20909C83v17Ev();
extern void _ZN8S20909C83v18Ev();
extern void _ZN8S20909C83v19Ev();
extern void _ZN8S20909C83v20Ev();
static  VTBL_ENTRY vtc_S20909C8[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20909C8[0]),
  (VTBL_ENTRY)&_ZN8S20909C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v18Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v20Ev,
};
extern VTBL_ENTRY _ZTV8S20909C8[];
static  VTT_ENTRY vtt_S20909C8[] = {
  {&(_ZTV8S20909C8[12]),  12,25},
  {&(_ZTV8S20909C8[12]),  12,25},
};
extern VTBL_ENTRY _ZTI8S20909C8[];
extern  VTBL_ENTRY _ZTV8S20909C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20909C8[];
Class_Descriptor cd_S20909C8 = {  "S20909C8", // class name
  bases_S20909C8, 1,
  &(vtc_S20909C8[0]), // expected_vtbl_contents
  &(vtt_S20909C8[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S20909C8),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20909C8),25, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20909C8),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20909C7  : S20909C3 , S20909C8 {
  virtual void  v21(); // _ZN8S20909C73v21Ev
  virtual void  v22(); // _ZN8S20909C73v22Ev
  ~S20909C7(); // tgen
  S20909C7(); // tgen
};
//SIG(-1 S20909C7) C1{ BC2{ v3 v4 v5 v6 v7 v8 v9 v10 v11} BC3{ VBC2 v12 v13 v14 v15 FL} v1 v2}


void  S20909C7 ::v21(){vfunc_called(this, "_ZN8S20909C73v21Ev");}
void  S20909C7 ::v22(){vfunc_called(this, "_ZN8S20909C73v22Ev");}
S20909C7 ::~S20909C7(){ note_dtor("S20909C7", this);} // tgen
S20909C7 ::S20909C7(){ note_ctor("S20909C7", this);} // tgen

static void Test_S20909C7()
{
  extern Class_Descriptor cd_S20909C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S20909C7, buf);
    S20909C7 *dp, &lv = *(dp=new (buf) S20909C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S20909C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20909C7)");
    /*is_ambiguous_... S20909C7::S20909C3 */ AMB_check_base_class_offset(lv, (S20909C3*), 0, "S20909C7");
    check_base_class_offset(lv, (S20909C3*)(S20909C8*), ABISELECT(8,4), "S20909C7");
    check_base_class_offset(lv, (S20909C8*), ABISELECT(8,4), "S20909C7");
    test_class_info(&lv, &cd_S20909C7);
    dp->~S20909C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20909C7(Test_S20909C7, "S20909C7", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S20909C7C1Ev();
extern void _ZN8S20909C7D1Ev();
Name_Map name_map_S20909C7[] = {
  NSPAIR(_ZN8S20909C7C1Ev),
  NSPAIR(_ZN8S20909C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20909C3;
extern VTBL_ENTRY _ZTI8S20909C3[];
extern  VTBL_ENTRY _ZTV8S20909C3[];
extern Class_Descriptor cd_S20909C3;
extern VTBL_ENTRY _ZTI8S20909C3[];
extern  VTBL_ENTRY _ZTV8S20909C3[];
extern Class_Descriptor cd_S20909C8;
extern VTBL_ENTRY _ZTI8S20909C8[];
extern  VTBL_ENTRY _ZTV8S20909C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20909C8[];
static Base_Class bases_S20909C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20909C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20909C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20909C8,    ABISELECT(8,4), //bcp->offset
    14, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20909C7[];
extern void _ZN8S20909C32v7Ev();
extern void _ZN8S20909C32v8Ev();
extern void _ZN8S20909C32v9Ev();
extern void _ZN8S20909C33v10Ev();
extern void _ZN8S20909C33v11Ev();
extern void _ZN8S20909C33v12Ev();
extern void _ZN8S20909C33v13Ev();
extern void _ZN8S20909C33v14Ev();
extern void _ZN8S20909C33v15Ev();
extern void _ZN8S20909C73v21Ev();
extern void _ZN8S20909C73v22Ev();
extern void _ZN8S20909C32v7Ev();
extern void _ZN8S20909C32v8Ev();
extern void _ZN8S20909C32v9Ev();
extern void _ZN8S20909C33v10Ev();
extern void _ZN8S20909C33v11Ev();
extern void _ZN8S20909C33v12Ev();
extern void _ZN8S20909C33v13Ev();
extern void _ZN8S20909C33v14Ev();
extern void _ZN8S20909C33v15Ev();
extern void _ZN8S20909C83v17Ev();
extern void _ZN8S20909C83v18Ev();
extern void _ZN8S20909C83v19Ev();
extern void _ZN8S20909C83v20Ev();
static  VTBL_ENTRY vtc_S20909C7[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20909C7[0]),
  (VTBL_ENTRY)&_ZN8S20909C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20909C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20909C73v22Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20909C7[0]),
  (VTBL_ENTRY)&_ZN8S20909C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v18Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v20Ev,
};
extern VTBL_ENTRY _ZTV8S20909C7[];
extern void _ZN8S20909C32v7Ev();
extern void _ZN8S20909C32v8Ev();
extern void _ZN8S20909C32v9Ev();
extern void _ZN8S20909C33v10Ev();
extern void _ZN8S20909C33v11Ev();
extern void _ZN8S20909C33v12Ev();
extern void _ZN8S20909C33v13Ev();
extern void _ZN8S20909C33v14Ev();
extern void _ZN8S20909C33v15Ev();
extern void _ZN8S20909C83v17Ev();
extern void _ZN8S20909C83v18Ev();
extern void _ZN8S20909C83v19Ev();
extern void _ZN8S20909C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20909C8__8S20909C7[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20909C8[0]),
  (VTBL_ENTRY)&_ZN8S20909C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v18Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v20Ev,
};
static  VTT_ENTRY vtt_S20909C7[] = {
  {&(_ZTV8S20909C7[3]),  3,39},
  {&(_tg__ZTV8S20909C8__8S20909C7[12]),  12,25},
  {&(_tg__ZTV8S20909C8__8S20909C7[12]),  12,25},
  {&(_ZTV8S20909C7[26]),  26,39},
  {&(_ZTV8S20909C7[26]),  26,39},
};
extern VTBL_ENTRY _ZTI8S20909C7[];
extern  VTBL_ENTRY _ZTV8S20909C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20909C7[];
Class_Descriptor cd_S20909C7 = {  "S20909C7", // class name
  bases_S20909C7, 3,
  &(vtc_S20909C7[0]), // expected_vtbl_contents
  &(vtt_S20909C7[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S20909C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20909C7),39, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20909C7),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20909C5  : S20909C6 , S20909C7 {
  virtual  ~S20909C5(); // _ZN8S20909C5D2Ev
  virtual void  v23(); // _ZN8S20909C53v23Ev
  virtual void  v24(); // _ZN8S20909C53v24Ev
  S20909C5(); // tgen
};
//SIG(-1 S20909C5) C1{ BC2{ v3} BC3{ BC4{ v4 v5 v6 v7 v8 v9 v10 v11 v12} BC5{ VBC4 v13 v14 v15 v16 FL} v17 v18} vd v1 v2}


 S20909C5 ::~S20909C5(){ note_dtor("S20909C5", this);}
void  S20909C5 ::v23(){vfunc_called(this, "_ZN8S20909C53v23Ev");}
void  S20909C5 ::v24(){vfunc_called(this, "_ZN8S20909C53v24Ev");}
S20909C5 ::S20909C5(){ note_ctor("S20909C5", this);} // tgen

static void Test_S20909C5()
{
  extern Class_Descriptor cd_S20909C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S20909C5, buf);
    S20909C5 *dp, &lv = *(dp=new (buf) S20909C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S20909C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20909C5)");
    check_base_class_offset(lv, (S20909C6*), 0, "S20909C5");
    /*is_ambiguous_... S20909C7::S20909C3 */ AMB_check_base_class_offset(lv, (S20909C3*)(S20909C7*), ABISELECT(8,4), "S20909C5");
    check_base_class_offset(lv, (S20909C3*)(S20909C8*)(S20909C7*), ABISELECT(16,8), "S20909C5");
    check_base_class_offset(lv, (S20909C8*)(S20909C7*), ABISELECT(16,8), "S20909C5");
    check_base_class_offset(lv, (S20909C7*), ABISELECT(8,4), "S20909C5");
    test_class_info(&lv, &cd_S20909C5);
    dp->~S20909C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20909C5(Test_S20909C5, "S20909C5", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S20909C5C1Ev();
extern void _ZN8S20909C5D2Ev();
Name_Map name_map_S20909C5[] = {
  NSPAIR(_ZN8S20909C5C1Ev),
  NSPAIR(_ZN8S20909C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20909C6;
extern VTBL_ENTRY _ZTI8S20909C6[];
extern  VTBL_ENTRY _ZTV8S20909C6[];
extern Class_Descriptor cd_S20909C3;
extern VTBL_ENTRY _ZTI8S20909C3[];
extern  VTBL_ENTRY _ZTV8S20909C3[];
extern Class_Descriptor cd_S20909C3;
extern VTBL_ENTRY _ZTI8S20909C3[];
extern  VTBL_ENTRY _ZTV8S20909C3[];
extern Class_Descriptor cd_S20909C8;
extern VTBL_ENTRY _ZTI8S20909C8[];
extern  VTBL_ENTRY _ZTV8S20909C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20909C8[];
extern Class_Descriptor cd_S20909C7;
extern VTBL_ENTRY _ZTI8S20909C7[];
extern  VTBL_ENTRY _ZTV8S20909C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20909C7[];
static Base_Class bases_S20909C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20909C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20909C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20909C3,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20909C8,    ABISELECT(16,8), //bcp->offset
    22, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20909C7,    ABISELECT(8,4), //bcp->offset
    8, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20909C5[];
extern void _ZN8S20909C63v16Ev();
extern void _ZN8S20909C5D1Ev();
extern void _ZN8S20909C5D0Ev();
extern void _ZN8S20909C53v23Ev();
extern void _ZN8S20909C53v24Ev();
extern void _ZN8S20909C32v7Ev();
extern void _ZN8S20909C32v8Ev();
extern void _ZN8S20909C32v9Ev();
extern void _ZN8S20909C33v10Ev();
extern void _ZN8S20909C33v11Ev();
extern void _ZN8S20909C33v12Ev();
extern void _ZN8S20909C33v13Ev();
extern void _ZN8S20909C33v14Ev();
extern void _ZN8S20909C33v15Ev();
extern void _ZN8S20909C73v21Ev();
extern void _ZN8S20909C73v22Ev();
extern void _ZN8S20909C32v7Ev();
extern void _ZN8S20909C32v8Ev();
extern void _ZN8S20909C32v9Ev();
extern void _ZN8S20909C33v10Ev();
extern void _ZN8S20909C33v11Ev();
extern void _ZN8S20909C33v12Ev();
extern void _ZN8S20909C33v13Ev();
extern void _ZN8S20909C33v14Ev();
extern void _ZN8S20909C33v15Ev();
extern void _ZN8S20909C83v17Ev();
extern void _ZN8S20909C83v18Ev();
extern void _ZN8S20909C83v19Ev();
extern void _ZN8S20909C83v20Ev();
static  VTBL_ENTRY vtc_S20909C5[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20909C5[0]),
  (VTBL_ENTRY)&_ZN8S20909C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20909C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20909C5D0Ev,
  (VTBL_ENTRY)&_ZN8S20909C53v23Ev,
  (VTBL_ENTRY)&_ZN8S20909C53v24Ev,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20909C5[0]),
  (VTBL_ENTRY)&_ZN8S20909C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20909C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20909C73v22Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20909C5[0]),
  (VTBL_ENTRY)&_ZN8S20909C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v18Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v20Ev,
};
extern VTBL_ENTRY _ZTV8S20909C5[];
extern void _ZN8S20909C32v7Ev();
extern void _ZN8S20909C32v8Ev();
extern void _ZN8S20909C32v9Ev();
extern void _ZN8S20909C33v10Ev();
extern void _ZN8S20909C33v11Ev();
extern void _ZN8S20909C33v12Ev();
extern void _ZN8S20909C33v13Ev();
extern void _ZN8S20909C33v14Ev();
extern void _ZN8S20909C33v15Ev();
extern void _ZN8S20909C73v21Ev();
extern void _ZN8S20909C73v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20909C7__8S20909C5[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20909C7[0]),
  (VTBL_ENTRY)&_ZN8S20909C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20909C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20909C73v22Ev,
};
extern void _ZN8S20909C32v7Ev();
extern void _ZN8S20909C32v8Ev();
extern void _ZN8S20909C32v9Ev();
extern void _ZN8S20909C33v10Ev();
extern void _ZN8S20909C33v11Ev();
extern void _ZN8S20909C33v12Ev();
extern void _ZN8S20909C33v13Ev();
extern void _ZN8S20909C33v14Ev();
extern void _ZN8S20909C33v15Ev();
extern void _ZN8S20909C83v17Ev();
extern void _ZN8S20909C83v18Ev();
extern void _ZN8S20909C83v19Ev();
extern void _ZN8S20909C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20909C88S20909C7__8S20909C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20909C8[0]),
  (VTBL_ENTRY)&_ZN8S20909C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v18Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v20Ev,
};
extern void _ZN8S20909C32v7Ev();
extern void _ZN8S20909C32v8Ev();
extern void _ZN8S20909C32v9Ev();
extern void _ZN8S20909C33v10Ev();
extern void _ZN8S20909C33v11Ev();
extern void _ZN8S20909C33v12Ev();
extern void _ZN8S20909C33v13Ev();
extern void _ZN8S20909C33v14Ev();
extern void _ZN8S20909C33v15Ev();
extern void _ZN8S20909C83v17Ev();
extern void _ZN8S20909C83v18Ev();
extern void _ZN8S20909C83v19Ev();
extern void _ZN8S20909C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20909C8__8S20909C7__8S20909C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20909C7[0]),
  (VTBL_ENTRY)&_ZN8S20909C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v18Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v20Ev,
};
static  VTT_ENTRY vtt_S20909C5[] = {
  {&(_ZTV8S20909C5[3]),  3,47},
  {&(_tg__ZTV8S20909C7__8S20909C5[3]),  3,14},
  {&(_tg__ZTV8S20909C88S20909C7__8S20909C5[12]),  12,25},
  {&(_tg__ZTV8S20909C88S20909C7__8S20909C5[12]),  12,25},
  {&(_tg__ZTV8S20909C8__8S20909C7__8S20909C5[12]),  12,25},
  {&(_tg__ZTV8S20909C8__8S20909C7__8S20909C5[12]),  12,25},
  {&(_ZTV8S20909C5[11]),  11,47},
  {&(_ZTV8S20909C5[34]),  34,47},
  {&(_ZTV8S20909C5[34]),  34,47},
};
extern VTBL_ENTRY _ZTI8S20909C5[];
extern  VTBL_ENTRY _ZTV8S20909C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20909C5[];
Class_Descriptor cd_S20909C5 = {  "S20909C5", // class name
  bases_S20909C5, 5,
  &(vtc_S20909C5[0]), // expected_vtbl_contents
  &(vtt_S20909C5[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S20909C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20909C5),47, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20909C5),9, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20909C9  {
  __tsi64 s20909c9f0;
  int s20909c9f1;
  virtual  ~S20909C9(); // _ZN8S20909C9D1Ev
  virtual void  v25(); // _ZN8S20909C93v25Ev
  virtual void  v26(); // _ZN8S20909C93v26Ev
  S20909C9(); // tgen
};
//SIG(-1 S20909C9) C1{ vd v1 v2 FL Fi}


 S20909C9 ::~S20909C9(){ note_dtor("S20909C9", this);}
void  S20909C9 ::v25(){vfunc_called(this, "_ZN8S20909C93v25Ev");}
void  S20909C9 ::v26(){vfunc_called(this, "_ZN8S20909C93v26Ev");}
S20909C9 ::S20909C9(){ note_ctor("S20909C9", this);} // tgen

static void Test_S20909C9()
{
  extern Class_Descriptor cd_S20909C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S20909C9, buf);
    S20909C9 *dp, &lv = *(dp=new (buf) S20909C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S20909C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20909C9)");
    check_field_offset(lv, s20909c9f0, ABISELECT(8,4), "S20909C9.s20909c9f0");
    check_field_offset(lv, s20909c9f1, ABISELECT(16,12), "S20909C9.s20909c9f1");
    test_class_info(&lv, &cd_S20909C9);
    dp->~S20909C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20909C9(Test_S20909C9, "S20909C9", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S20909C9C1Ev();
extern void _ZN8S20909C9D1Ev();
Name_Map name_map_S20909C9[] = {
  NSPAIR(_ZN8S20909C9C1Ev),
  NSPAIR(_ZN8S20909C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20909C9[];
extern void _ZN8S20909C9D1Ev();
extern void _ZN8S20909C9D0Ev();
extern void _ZN8S20909C93v25Ev();
extern void _ZN8S20909C93v26Ev();
static  VTBL_ENTRY vtc_S20909C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20909C9[0]),
  (VTBL_ENTRY)&_ZN8S20909C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20909C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20909C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20909C93v26Ev,
};
extern VTBL_ENTRY _ZTI8S20909C9[];
extern  VTBL_ENTRY _ZTV8S20909C9[];
Class_Descriptor cd_S20909C9 = {  "S20909C9", // class name
  0,0,//no base classes
  &(vtc_S20909C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S20909C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20909C9),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20909C4  : S20909C5 , virtual S20909C9 {
  int s20909c4f0;
  ::S20909C6 s20909c4f1;
  virtual  ~S20909C4(); // _ZN8S20909C4D2Ev
  virtual void  v27(); // _ZN8S20909C43v27Ev
  virtual void  v28(); // _ZN8S20909C43v28Ev
  virtual void  v29(); // _ZN8S20909C43v29Ev
  virtual void  v30(); // _ZN8S20909C43v30Ev
  virtual void  v31(); // _ZN8S20909C43v31Ev
  S20909C4(); // tgen
};
//SIG(-1 S20909C4) C1{ BC2{ BC3{ v6} BC4{ BC5{ v7 v8 v9 v10 v11 v12 v13 v14 v15} BC6{ VBC5 v16 v17 v18 v19 FL} v20 v21} vd v22 v23} VBC7{ vd v24 v25 FL Fi} vd v1 v2 v3 v4 v5 Fi FC3}


 S20909C4 ::~S20909C4(){ note_dtor("S20909C4", this);}
void  S20909C4 ::v27(){vfunc_called(this, "_ZN8S20909C43v27Ev");}
void  S20909C4 ::v28(){vfunc_called(this, "_ZN8S20909C43v28Ev");}
void  S20909C4 ::v29(){vfunc_called(this, "_ZN8S20909C43v29Ev");}
void  S20909C4 ::v30(){vfunc_called(this, "_ZN8S20909C43v30Ev");}
void  S20909C4 ::v31(){vfunc_called(this, "_ZN8S20909C43v31Ev");}
S20909C4 ::S20909C4(){ note_ctor("S20909C4", this);} // tgen

static void Test_S20909C4()
{
  extern Class_Descriptor cd_S20909C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,12)];
    init_test(&cd_S20909C4, buf);
    S20909C4 *dp, &lv = *(dp=new (buf) S20909C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S20909C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20909C4)");
    check_base_class_offset(lv, (S20909C6*)(S20909C5*), 0, "S20909C4");
    /*is_ambiguous_... S20909C7::S20909C3 */ AMB_check_base_class_offset(lv, (S20909C3*)(S20909C7*)(S20909C5*), ABISELECT(8,4), "S20909C4");
    check_base_class_offset(lv, (S20909C3*)(S20909C8*)(S20909C7*)(S20909C5*), ABISELECT(16,8), "S20909C4");
    check_base_class_offset(lv, (S20909C8*)(S20909C7*)(S20909C5*), ABISELECT(16,8), "S20909C4");
    check_base_class_offset(lv, (S20909C7*)(S20909C5*), ABISELECT(8,4), "S20909C4");
    check_base_class_offset(lv, (S20909C5*), 0, "S20909C4");
    check_base_class_offset(lv, (S20909C9*), ABISELECT(48,28), "S20909C4");
    check_field_offset(lv, s20909c4f0, ABISELECT(32,20), "S20909C4.s20909c4f0");
    check_field_offset(lv, s20909c4f1, ABISELECT(40,24), "S20909C4.s20909c4f1");
    test_class_info(&lv, &cd_S20909C4);
    dp->~S20909C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20909C4(Test_S20909C4, "S20909C4", ABISELECT(72,44));

#else // __cplusplus

extern void _ZN8S20909C4C1Ev();
extern void _ZN8S20909C4D2Ev();
Name_Map name_map_S20909C4[] = {
  NSPAIR(_ZN8S20909C4C1Ev),
  NSPAIR(_ZN8S20909C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20909C6;
extern VTBL_ENTRY _ZTI8S20909C6[];
extern  VTBL_ENTRY _ZTV8S20909C6[];
extern Class_Descriptor cd_S20909C3;
extern VTBL_ENTRY _ZTI8S20909C3[];
extern  VTBL_ENTRY _ZTV8S20909C3[];
extern Class_Descriptor cd_S20909C3;
extern VTBL_ENTRY _ZTI8S20909C3[];
extern  VTBL_ENTRY _ZTV8S20909C3[];
extern Class_Descriptor cd_S20909C8;
extern VTBL_ENTRY _ZTI8S20909C8[];
extern  VTBL_ENTRY _ZTV8S20909C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20909C8[];
extern Class_Descriptor cd_S20909C7;
extern VTBL_ENTRY _ZTI8S20909C7[];
extern  VTBL_ENTRY _ZTV8S20909C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20909C7[];
extern Class_Descriptor cd_S20909C5;
extern VTBL_ENTRY _ZTI8S20909C5[];
extern  VTBL_ENTRY _ZTV8S20909C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20909C5[];
extern Class_Descriptor cd_S20909C9;
extern VTBL_ENTRY _ZTI8S20909C9[];
extern  VTBL_ENTRY _ZTV8S20909C9[];
static Base_Class bases_S20909C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20909C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20909C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20909C3,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20909C8,    ABISELECT(16,8), //bcp->offset
    28, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20909C7,    ABISELECT(8,4), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20909C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20909C9,    ABISELECT(48,28), //bcp->offset
    53, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20909C4[];
extern void _ZN8S20909C63v16Ev();
extern void _ZN8S20909C4D1Ev();
extern void _ZN8S20909C4D0Ev();
extern void _ZN8S20909C53v23Ev();
extern void _ZN8S20909C53v24Ev();
extern void _ZN8S20909C43v27Ev();
extern void _ZN8S20909C43v28Ev();
extern void _ZN8S20909C43v29Ev();
extern void _ZN8S20909C43v30Ev();
extern void _ZN8S20909C43v31Ev();
extern void _ZN8S20909C32v7Ev();
extern void _ZN8S20909C32v8Ev();
extern void _ZN8S20909C32v9Ev();
extern void _ZN8S20909C33v10Ev();
extern void _ZN8S20909C33v11Ev();
extern void _ZN8S20909C33v12Ev();
extern void _ZN8S20909C33v13Ev();
extern void _ZN8S20909C33v14Ev();
extern void _ZN8S20909C33v15Ev();
extern void _ZN8S20909C73v21Ev();
extern void _ZN8S20909C73v22Ev();
extern void _ZN8S20909C32v7Ev();
extern void _ZN8S20909C32v8Ev();
extern void _ZN8S20909C32v9Ev();
extern void _ZN8S20909C33v10Ev();
extern void _ZN8S20909C33v11Ev();
extern void _ZN8S20909C33v12Ev();
extern void _ZN8S20909C33v13Ev();
extern void _ZN8S20909C33v14Ev();
extern void _ZN8S20909C33v15Ev();
extern void _ZN8S20909C83v17Ev();
extern void _ZN8S20909C83v18Ev();
extern void _ZN8S20909C83v19Ev();
extern void _ZN8S20909C83v20Ev();
extern void ABISELECT(_ZTv0_n24_N8S20909C4D1Ev,_ZTv0_n12_N8S20909C4D1Ev)();
extern void ABISELECT(_ZThn48_N8S20909C4D1Ev,_ZThn28_N8S20909C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20909C4D0Ev,_ZTv0_n12_N8S20909C4D0Ev)();
extern void ABISELECT(_ZThn48_N8S20909C4D0Ev,_ZThn28_N8S20909C4D0Ev)() __attribute__((weak));
extern void _ZN8S20909C93v25Ev();
extern void _ZN8S20909C93v26Ev();
static  VTBL_ENTRY vtc_S20909C4[] = {
  ABISELECT(48,28),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20909C4[0]),
  (VTBL_ENTRY)&_ZN8S20909C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20909C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20909C4D0Ev,
  (VTBL_ENTRY)&_ZN8S20909C53v23Ev,
  (VTBL_ENTRY)&_ZN8S20909C53v24Ev,
  (VTBL_ENTRY)&_ZN8S20909C43v27Ev,
  (VTBL_ENTRY)&_ZN8S20909C43v28Ev,
  (VTBL_ENTRY)&_ZN8S20909C43v29Ev,
  (VTBL_ENTRY)&_ZN8S20909C43v30Ev,
  (VTBL_ENTRY)&_ZN8S20909C43v31Ev,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20909C4[0]),
  (VTBL_ENTRY)&_ZN8S20909C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20909C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20909C73v22Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20909C4[0]),
  (VTBL_ENTRY)&_ZN8S20909C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v18Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v20Ev,
  0,
  0,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20909C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20909C4D1Ev,_ZTv0_n12_N8S20909C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20909C4D0Ev,_ZTv0_n12_N8S20909C4D0Ev),
  (VTBL_ENTRY)&_ZN8S20909C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20909C93v26Ev,
};
extern VTBL_ENTRY _ZTV8S20909C4[];
extern void _ZN8S20909C63v16Ev();
extern void _ZN8S20909C5D1Ev();
extern void _ZN8S20909C5D0Ev();
extern void _ZN8S20909C53v23Ev();
extern void _ZN8S20909C53v24Ev();
static  VTBL_ENTRY _tg__ZTV8S20909C5__8S20909C4[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20909C5[0]),
  (VTBL_ENTRY)&_ZN8S20909C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20909C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20909C5D0Ev,
  (VTBL_ENTRY)&_ZN8S20909C53v23Ev,
  (VTBL_ENTRY)&_ZN8S20909C53v24Ev,
};
extern void _ZN8S20909C32v7Ev();
extern void _ZN8S20909C32v8Ev();
extern void _ZN8S20909C32v9Ev();
extern void _ZN8S20909C33v10Ev();
extern void _ZN8S20909C33v11Ev();
extern void _ZN8S20909C33v12Ev();
extern void _ZN8S20909C33v13Ev();
extern void _ZN8S20909C33v14Ev();
extern void _ZN8S20909C33v15Ev();
extern void _ZN8S20909C73v21Ev();
extern void _ZN8S20909C73v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20909C78S20909C5__8S20909C4[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20909C7[0]),
  (VTBL_ENTRY)&_ZN8S20909C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20909C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20909C73v22Ev,
};
extern void _ZN8S20909C32v7Ev();
extern void _ZN8S20909C32v8Ev();
extern void _ZN8S20909C32v9Ev();
extern void _ZN8S20909C33v10Ev();
extern void _ZN8S20909C33v11Ev();
extern void _ZN8S20909C33v12Ev();
extern void _ZN8S20909C33v13Ev();
extern void _ZN8S20909C33v14Ev();
extern void _ZN8S20909C33v15Ev();
extern void _ZN8S20909C83v17Ev();
extern void _ZN8S20909C83v18Ev();
extern void _ZN8S20909C83v19Ev();
extern void _ZN8S20909C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20909C88S20909C78S20909C5__8S20909C4[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20909C8[0]),
  (VTBL_ENTRY)&_ZN8S20909C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v18Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v20Ev,
};
extern void _ZN8S20909C32v7Ev();
extern void _ZN8S20909C32v8Ev();
extern void _ZN8S20909C32v9Ev();
extern void _ZN8S20909C33v10Ev();
extern void _ZN8S20909C33v11Ev();
extern void _ZN8S20909C33v12Ev();
extern void _ZN8S20909C33v13Ev();
extern void _ZN8S20909C33v14Ev();
extern void _ZN8S20909C33v15Ev();
extern void _ZN8S20909C83v17Ev();
extern void _ZN8S20909C83v18Ev();
extern void _ZN8S20909C83v19Ev();
extern void _ZN8S20909C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20909C8__8S20909C78S20909C5__8S20909C4[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20909C7[0]),
  (VTBL_ENTRY)&_ZN8S20909C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v18Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v20Ev,
};
extern void _ZN8S20909C32v7Ev();
extern void _ZN8S20909C32v8Ev();
extern void _ZN8S20909C32v9Ev();
extern void _ZN8S20909C33v10Ev();
extern void _ZN8S20909C33v11Ev();
extern void _ZN8S20909C33v12Ev();
extern void _ZN8S20909C33v13Ev();
extern void _ZN8S20909C33v14Ev();
extern void _ZN8S20909C33v15Ev();
extern void _ZN8S20909C73v21Ev();
extern void _ZN8S20909C73v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20909C7__8S20909C5__8S20909C4[] = {
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20909C5[0]),
  (VTBL_ENTRY)&_ZN8S20909C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20909C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20909C73v22Ev,
};
extern void _ZN8S20909C32v7Ev();
extern void _ZN8S20909C32v8Ev();
extern void _ZN8S20909C32v9Ev();
extern void _ZN8S20909C33v10Ev();
extern void _ZN8S20909C33v11Ev();
extern void _ZN8S20909C33v12Ev();
extern void _ZN8S20909C33v13Ev();
extern void _ZN8S20909C33v14Ev();
extern void _ZN8S20909C33v15Ev();
extern void _ZN8S20909C83v17Ev();
extern void _ZN8S20909C83v18Ev();
extern void _ZN8S20909C83v19Ev();
extern void _ZN8S20909C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20909C88S20909C7__8S20909C5__8S20909C4[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20909C5[0]),
  (VTBL_ENTRY)&_ZN8S20909C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v18Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v20Ev,
};
static  VTT_ENTRY vtt_S20909C4[] = {
  {&(_ZTV8S20909C4[4]),  4,62},
  {&(_tg__ZTV8S20909C5__8S20909C4[3]),  3,8},
  {&(_tg__ZTV8S20909C78S20909C5__8S20909C4[3]),  3,14},
  {&(_tg__ZTV8S20909C88S20909C78S20909C5__8S20909C4[12]),  12,25},
  {&(_tg__ZTV8S20909C88S20909C78S20909C5__8S20909C4[12]),  12,25},
  {&(_tg__ZTV8S20909C8__8S20909C78S20909C5__8S20909C4[12]),  12,25},
  {&(_tg__ZTV8S20909C8__8S20909C78S20909C5__8S20909C4[12]),  12,25},
  {&(_tg__ZTV8S20909C7__8S20909C5__8S20909C4[3]),  3,14},
  {&(_tg__ZTV8S20909C88S20909C7__8S20909C5__8S20909C4[12]),  12,25},
  {&(_tg__ZTV8S20909C88S20909C7__8S20909C5__8S20909C4[12]),  12,25},
  {&(_ZTV8S20909C4[17]),  17,62},
  {&(_ZTV8S20909C4[40]),  40,62},
  {&(_ZTV8S20909C4[40]),  40,62},
  {&(_ZTV8S20909C4[58]),  58,62},
};
extern VTBL_ENTRY _ZTI8S20909C4[];
extern  VTBL_ENTRY _ZTV8S20909C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20909C4[];
static VTBL_ENTRY alt_thunk_names90[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20909C4D0Ev,_ZTv0_n12_N8S20909C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20909C4D0Ev,_ZThn28_N8S20909C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20909C4D1Ev,_ZTv0_n12_N8S20909C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20909C4D1Ev,_ZThn28_N8S20909C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20909C4 = {  "S20909C4", // class name
  bases_S20909C4, 7,
  &(vtc_S20909C4[0]), // expected_vtbl_contents
  &(vtt_S20909C4[0]), // expected_vtt_contents
  ABISELECT(72,44), // object size
  NSPAIRA(_ZTI8S20909C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20909C4),62, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20909C4),14, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names90,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20909C2  : virtual S20909C3 , S20909C4 {
  ::S5266C29 s20909c2f0;
  virtual  ~S20909C2(); // _ZN8S20909C2D2Ev
  virtual void  v32(); // _ZN8S20909C23v32Ev
  virtual void  v33(); // _ZN8S20909C23v33Ev
  S20909C2(); // tgen
};
//SIG(-1 S20909C2) C1{ VBC2{ v3 v4 v5 v6 v7 v8 v9 v10 v11} BC3{ BC4{ BC5{ v12} BC6{ BC2 BC7{ VBC2 v13 v14 v15 v16 FL} v17 v18} vd v19 v20} VBC8{ vd v21 v22 FL Fi} vd v23 v24 v25 v26 v27 Fi FC5} vd v1 v2 FC9{ m}}


 S20909C2 ::~S20909C2(){ note_dtor("S20909C2", this);}
void  S20909C2 ::v32(){vfunc_called(this, "_ZN8S20909C23v32Ev");}
void  S20909C2 ::v33(){vfunc_called(this, "_ZN8S20909C23v33Ev");}
S20909C2 ::S20909C2(){ note_ctor("S20909C2", this);} // tgen

static void Test_S20909C2()
{
  extern Class_Descriptor cd_S20909C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,13)];
    init_test(&cd_S20909C2, buf);
    S20909C2 *dp, &lv = *(dp=new (buf) S20909C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,48), "sizeof(S20909C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20909C2)");
    /*is_ambiguous_... S20909C2::S20909C3 */ AMB_check_base_class_offset(lv, (S20909C3*), ABISELECT(16,8), "S20909C2");
    check_base_class_offset(lv, (S20909C3*)(S20909C8*)(S20909C7*)(S20909C5*)(S20909C4*), ABISELECT(16,8), "S20909C2");
    check_base_class_offset(lv, (S20909C6*)(S20909C5*)(S20909C4*), 0, "S20909C2");
    /*is_ambiguous_... S20909C7::S20909C3 */ AMB_check_base_class_offset(lv, (S20909C3*)(S20909C7*)(S20909C5*)(S20909C4*), ABISELECT(8,4), "S20909C2");
    check_base_class_offset(lv, (S20909C8*)(S20909C7*)(S20909C5*)(S20909C4*), ABISELECT(16,8), "S20909C2");
    check_base_class_offset(lv, (S20909C7*)(S20909C5*)(S20909C4*), ABISELECT(8,4), "S20909C2");
    check_base_class_offset(lv, (S20909C5*)(S20909C4*), 0, "S20909C2");
    check_base_class_offset(lv, (S20909C9*)(S20909C4*), ABISELECT(56,32), "S20909C2");
    check_base_class_offset(lv, (S20909C4*), 0, "S20909C2");
    check_field_offset(lv, s20909c2f0, ABISELECT(48,28), "S20909C2.s20909c2f0");
    test_class_info(&lv, &cd_S20909C2);
    dp->~S20909C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20909C2(Test_S20909C2, "S20909C2", ABISELECT(80,48));

#else // __cplusplus

extern void _ZN8S20909C2C1Ev();
extern void _ZN8S20909C2D2Ev();
Name_Map name_map_S20909C2[] = {
  NSPAIR(_ZN8S20909C2C1Ev),
  NSPAIR(_ZN8S20909C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20909C3;
extern VTBL_ENTRY _ZTI8S20909C3[];
extern  VTBL_ENTRY _ZTV8S20909C3[];
extern Class_Descriptor cd_S20909C6;
extern VTBL_ENTRY _ZTI8S20909C6[];
extern  VTBL_ENTRY _ZTV8S20909C6[];
extern Class_Descriptor cd_S20909C3;
extern VTBL_ENTRY _ZTI8S20909C3[];
extern  VTBL_ENTRY _ZTV8S20909C3[];
extern Class_Descriptor cd_S20909C8;
extern VTBL_ENTRY _ZTI8S20909C8[];
extern  VTBL_ENTRY _ZTV8S20909C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20909C8[];
extern Class_Descriptor cd_S20909C7;
extern VTBL_ENTRY _ZTI8S20909C7[];
extern  VTBL_ENTRY _ZTV8S20909C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20909C7[];
extern Class_Descriptor cd_S20909C5;
extern VTBL_ENTRY _ZTI8S20909C5[];
extern  VTBL_ENTRY _ZTV8S20909C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20909C5[];
extern Class_Descriptor cd_S20909C9;
extern VTBL_ENTRY _ZTI8S20909C9[];
extern  VTBL_ENTRY _ZTV8S20909C9[];
extern Class_Descriptor cd_S20909C4;
extern VTBL_ENTRY _ZTI8S20909C4[];
extern  VTBL_ENTRY _ZTV8S20909C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20909C4[];
static Base_Class bases_S20909C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20909C3,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20909C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20909C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20909C8,    ABISELECT(16,8), //bcp->offset
    30, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20909C7,    ABISELECT(8,4), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20909C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20909C9,    ABISELECT(56,32), //bcp->offset
    55, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20909C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20909C2[];
extern void _ZN8S20909C63v16Ev();
extern void _ZN8S20909C2D1Ev();
extern void _ZN8S20909C2D0Ev();
extern void _ZN8S20909C53v23Ev();
extern void _ZN8S20909C53v24Ev();
extern void _ZN8S20909C43v27Ev();
extern void _ZN8S20909C43v28Ev();
extern void _ZN8S20909C43v29Ev();
extern void _ZN8S20909C43v30Ev();
extern void _ZN8S20909C43v31Ev();
extern void _ZN8S20909C23v32Ev();
extern void _ZN8S20909C23v33Ev();
extern void _ZN8S20909C32v7Ev();
extern void _ZN8S20909C32v8Ev();
extern void _ZN8S20909C32v9Ev();
extern void _ZN8S20909C33v10Ev();
extern void _ZN8S20909C33v11Ev();
extern void _ZN8S20909C33v12Ev();
extern void _ZN8S20909C33v13Ev();
extern void _ZN8S20909C33v14Ev();
extern void _ZN8S20909C33v15Ev();
extern void _ZN8S20909C73v21Ev();
extern void _ZN8S20909C73v22Ev();
extern void _ZN8S20909C32v7Ev();
extern void _ZN8S20909C32v8Ev();
extern void _ZN8S20909C32v9Ev();
extern void _ZN8S20909C33v10Ev();
extern void _ZN8S20909C33v11Ev();
extern void _ZN8S20909C33v12Ev();
extern void _ZN8S20909C33v13Ev();
extern void _ZN8S20909C33v14Ev();
extern void _ZN8S20909C33v15Ev();
extern void _ZN8S20909C83v17Ev();
extern void _ZN8S20909C83v18Ev();
extern void _ZN8S20909C83v19Ev();
extern void _ZN8S20909C83v20Ev();
extern void ABISELECT(_ZTv0_n24_N8S20909C2D1Ev,_ZTv0_n12_N8S20909C2D1Ev)();
extern void ABISELECT(_ZThn56_N8S20909C2D1Ev,_ZThn32_N8S20909C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20909C2D0Ev,_ZTv0_n12_N8S20909C2D0Ev)();
extern void ABISELECT(_ZThn56_N8S20909C2D0Ev,_ZThn32_N8S20909C2D0Ev)() __attribute__((weak));
extern void _ZN8S20909C93v25Ev();
extern void _ZN8S20909C93v26Ev();
static  VTBL_ENTRY vtc_S20909C2[] = {
  ABISELECT(56,32),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20909C2[0]),
  (VTBL_ENTRY)&_ZN8S20909C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20909C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20909C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20909C53v23Ev,
  (VTBL_ENTRY)&_ZN8S20909C53v24Ev,
  (VTBL_ENTRY)&_ZN8S20909C43v27Ev,
  (VTBL_ENTRY)&_ZN8S20909C43v28Ev,
  (VTBL_ENTRY)&_ZN8S20909C43v29Ev,
  (VTBL_ENTRY)&_ZN8S20909C43v30Ev,
  (VTBL_ENTRY)&_ZN8S20909C43v31Ev,
  (VTBL_ENTRY)&_ZN8S20909C23v32Ev,
  (VTBL_ENTRY)&_ZN8S20909C23v33Ev,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20909C2[0]),
  (VTBL_ENTRY)&_ZN8S20909C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20909C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20909C73v22Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20909C2[0]),
  (VTBL_ENTRY)&_ZN8S20909C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v18Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v20Ev,
  0,
  0,
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S20909C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20909C2D1Ev,_ZTv0_n12_N8S20909C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20909C2D0Ev,_ZTv0_n12_N8S20909C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20909C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20909C93v26Ev,
};
extern VTBL_ENTRY _ZTV8S20909C2[];
extern void _ZN8S20909C63v16Ev();
extern void _ZN8S20909C4D1Ev();
extern void _ZN8S20909C4D0Ev();
extern void _ZN8S20909C53v23Ev();
extern void _ZN8S20909C53v24Ev();
extern void _ZN8S20909C43v27Ev();
extern void _ZN8S20909C43v28Ev();
extern void _ZN8S20909C43v29Ev();
extern void _ZN8S20909C43v30Ev();
extern void _ZN8S20909C43v31Ev();
static  VTBL_ENTRY _tg__ZTV8S20909C4__8S20909C2[] = {
  ABISELECT(56,32),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20909C4[0]),
  (VTBL_ENTRY)&_ZN8S20909C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20909C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20909C4D0Ev,
  (VTBL_ENTRY)&_ZN8S20909C53v23Ev,
  (VTBL_ENTRY)&_ZN8S20909C53v24Ev,
  (VTBL_ENTRY)&_ZN8S20909C43v27Ev,
  (VTBL_ENTRY)&_ZN8S20909C43v28Ev,
  (VTBL_ENTRY)&_ZN8S20909C43v29Ev,
  (VTBL_ENTRY)&_ZN8S20909C43v30Ev,
  (VTBL_ENTRY)&_ZN8S20909C43v31Ev,
};
extern void _ZN8S20909C63v16Ev();
extern void _ZN8S20909C5D1Ev();
extern void _ZN8S20909C5D0Ev();
extern void _ZN8S20909C53v23Ev();
extern void _ZN8S20909C53v24Ev();
static  VTBL_ENTRY _tg__ZTV8S20909C58S20909C4__8S20909C2[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20909C5[0]),
  (VTBL_ENTRY)&_ZN8S20909C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20909C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20909C5D0Ev,
  (VTBL_ENTRY)&_ZN8S20909C53v23Ev,
  (VTBL_ENTRY)&_ZN8S20909C53v24Ev,
};
extern void _ZN8S20909C32v7Ev();
extern void _ZN8S20909C32v8Ev();
extern void _ZN8S20909C32v9Ev();
extern void _ZN8S20909C33v10Ev();
extern void _ZN8S20909C33v11Ev();
extern void _ZN8S20909C33v12Ev();
extern void _ZN8S20909C33v13Ev();
extern void _ZN8S20909C33v14Ev();
extern void _ZN8S20909C33v15Ev();
extern void _ZN8S20909C73v21Ev();
extern void _ZN8S20909C73v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20909C78S20909C58S20909C4__8S20909C2[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20909C7[0]),
  (VTBL_ENTRY)&_ZN8S20909C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20909C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20909C73v22Ev,
};
extern void _ZN8S20909C32v7Ev();
extern void _ZN8S20909C32v8Ev();
extern void _ZN8S20909C32v9Ev();
extern void _ZN8S20909C33v10Ev();
extern void _ZN8S20909C33v11Ev();
extern void _ZN8S20909C33v12Ev();
extern void _ZN8S20909C33v13Ev();
extern void _ZN8S20909C33v14Ev();
extern void _ZN8S20909C33v15Ev();
extern void _ZN8S20909C83v17Ev();
extern void _ZN8S20909C83v18Ev();
extern void _ZN8S20909C83v19Ev();
extern void _ZN8S20909C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20909C88S20909C78S20909C58S20909C4__8S20909C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20909C8[0]),
  (VTBL_ENTRY)&_ZN8S20909C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v18Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v20Ev,
};
extern void _ZN8S20909C32v7Ev();
extern void _ZN8S20909C32v8Ev();
extern void _ZN8S20909C32v9Ev();
extern void _ZN8S20909C33v10Ev();
extern void _ZN8S20909C33v11Ev();
extern void _ZN8S20909C33v12Ev();
extern void _ZN8S20909C33v13Ev();
extern void _ZN8S20909C33v14Ev();
extern void _ZN8S20909C33v15Ev();
extern void _ZN8S20909C83v17Ev();
extern void _ZN8S20909C83v18Ev();
extern void _ZN8S20909C83v19Ev();
extern void _ZN8S20909C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20909C8__8S20909C78S20909C58S20909C4__8S20909C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20909C7[0]),
  (VTBL_ENTRY)&_ZN8S20909C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v18Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v20Ev,
};
extern void _ZN8S20909C32v7Ev();
extern void _ZN8S20909C32v8Ev();
extern void _ZN8S20909C32v9Ev();
extern void _ZN8S20909C33v10Ev();
extern void _ZN8S20909C33v11Ev();
extern void _ZN8S20909C33v12Ev();
extern void _ZN8S20909C33v13Ev();
extern void _ZN8S20909C33v14Ev();
extern void _ZN8S20909C33v15Ev();
extern void _ZN8S20909C73v21Ev();
extern void _ZN8S20909C73v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20909C7__8S20909C58S20909C4__8S20909C2[] = {
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20909C5[0]),
  (VTBL_ENTRY)&_ZN8S20909C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20909C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20909C73v22Ev,
};
extern void _ZN8S20909C32v7Ev();
extern void _ZN8S20909C32v8Ev();
extern void _ZN8S20909C32v9Ev();
extern void _ZN8S20909C33v10Ev();
extern void _ZN8S20909C33v11Ev();
extern void _ZN8S20909C33v12Ev();
extern void _ZN8S20909C33v13Ev();
extern void _ZN8S20909C33v14Ev();
extern void _ZN8S20909C33v15Ev();
extern void _ZN8S20909C83v17Ev();
extern void _ZN8S20909C83v18Ev();
extern void _ZN8S20909C83v19Ev();
extern void _ZN8S20909C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20909C88S20909C7__8S20909C58S20909C4__8S20909C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20909C5[0]),
  (VTBL_ENTRY)&_ZN8S20909C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v18Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v20Ev,
};
extern void _ZN8S20909C32v7Ev();
extern void _ZN8S20909C32v8Ev();
extern void _ZN8S20909C32v9Ev();
extern void _ZN8S20909C33v10Ev();
extern void _ZN8S20909C33v11Ev();
extern void _ZN8S20909C33v12Ev();
extern void _ZN8S20909C33v13Ev();
extern void _ZN8S20909C33v14Ev();
extern void _ZN8S20909C33v15Ev();
extern void _ZN8S20909C73v21Ev();
extern void _ZN8S20909C73v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20909C78S20909C5__8S20909C4__8S20909C2[] = {
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20909C4[0]),
  (VTBL_ENTRY)&_ZN8S20909C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20909C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20909C73v22Ev,
};
extern void _ZN8S20909C32v7Ev();
extern void _ZN8S20909C32v8Ev();
extern void _ZN8S20909C32v9Ev();
extern void _ZN8S20909C33v10Ev();
extern void _ZN8S20909C33v11Ev();
extern void _ZN8S20909C33v12Ev();
extern void _ZN8S20909C33v13Ev();
extern void _ZN8S20909C33v14Ev();
extern void _ZN8S20909C33v15Ev();
extern void _ZN8S20909C83v17Ev();
extern void _ZN8S20909C83v18Ev();
extern void _ZN8S20909C83v19Ev();
extern void _ZN8S20909C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20909C88S20909C78S20909C5__8S20909C4__8S20909C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20909C4[0]),
  (VTBL_ENTRY)&_ZN8S20909C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v18Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v20Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20909C4D1Ev,_ZTv0_n12_N8S20909C4D1Ev)();
extern void ABISELECT(_ZThn56_N8S20909C4D1Ev,_ZThn32_N8S20909C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20909C4D0Ev,_ZTv0_n12_N8S20909C4D0Ev)();
extern void ABISELECT(_ZThn56_N8S20909C4D0Ev,_ZThn32_N8S20909C4D0Ev)() __attribute__((weak));
extern void _ZN8S20909C93v25Ev();
extern void _ZN8S20909C93v26Ev();
static  VTBL_ENTRY _tg__ZTV8S20909C9__8S20909C4__8S20909C2[] = {
  0,
  0,
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S20909C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20909C4D1Ev,_ZTv0_n12_N8S20909C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20909C4D0Ev,_ZTv0_n12_N8S20909C4D0Ev),
  (VTBL_ENTRY)&_ZN8S20909C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20909C93v26Ev,
};
static  VTT_ENTRY vtt_S20909C2[] = {
  {&(_ZTV8S20909C2[4]),  4,64},
  {&(_tg__ZTV8S20909C4__8S20909C2[4]),  4,14},
  {&(_tg__ZTV8S20909C58S20909C4__8S20909C2[3]),  3,8},
  {&(_tg__ZTV8S20909C78S20909C58S20909C4__8S20909C2[3]),  3,14},
  {&(_tg__ZTV8S20909C88S20909C78S20909C58S20909C4__8S20909C2[12]),  12,25},
  {&(_tg__ZTV8S20909C88S20909C78S20909C58S20909C4__8S20909C2[12]),  12,25},
  {&(_tg__ZTV8S20909C8__8S20909C78S20909C58S20909C4__8S20909C2[12]),  12,25},
  {&(_tg__ZTV8S20909C8__8S20909C78S20909C58S20909C4__8S20909C2[12]),  12,25},
  {&(_tg__ZTV8S20909C7__8S20909C58S20909C4__8S20909C2[3]),  3,14},
  {&(_tg__ZTV8S20909C88S20909C7__8S20909C58S20909C4__8S20909C2[12]),  12,25},
  {&(_tg__ZTV8S20909C88S20909C7__8S20909C58S20909C4__8S20909C2[12]),  12,25},
  {&(_tg__ZTV8S20909C78S20909C5__8S20909C4__8S20909C2[3]),  3,14},
  {&(_tg__ZTV8S20909C88S20909C78S20909C5__8S20909C4__8S20909C2[12]),  12,25},
  {&(_tg__ZTV8S20909C88S20909C78S20909C5__8S20909C4__8S20909C2[12]),  12,25},
  {&(_tg__ZTV8S20909C9__8S20909C4__8S20909C2[5]),  5,9},
  {&(_ZTV8S20909C2[42]),  42,64},
  {&(_ZTV8S20909C2[19]),  19,64},
  {&(_ZTV8S20909C2[42]),  42,64},
  {&(_ZTV8S20909C2[60]),  60,64},
};
extern VTBL_ENTRY _ZTI8S20909C2[];
extern  VTBL_ENTRY _ZTV8S20909C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20909C2[];
static VTBL_ENTRY alt_thunk_names91[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20909C4D0Ev,_ZTv0_n12_N8S20909C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20909C4D0Ev,_ZThn32_N8S20909C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20909C4D1Ev,_ZTv0_n12_N8S20909C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20909C4D1Ev,_ZThn32_N8S20909C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20909C2D0Ev,_ZTv0_n12_N8S20909C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20909C2D0Ev,_ZThn32_N8S20909C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20909C2D1Ev,_ZTv0_n12_N8S20909C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20909C2D1Ev,_ZThn32_N8S20909C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20909C2 = {  "S20909C2", // class name
  bases_S20909C2, 8,
  &(vtc_S20909C2[0]), // expected_vtbl_contents
  &(vtt_S20909C2[0]), // expected_vtt_contents
  ABISELECT(80,48), // object size
  NSPAIRA(_ZTI8S20909C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20909C2),64, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20909C2),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names91,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20909C11_nt  {
  virtual void  v34(); // _ZN12S20909C11_nt3v34Ev
  virtual void  v35(); // _ZN12S20909C11_nt3v35Ev
  virtual void  v36(); // _ZN12S20909C11_nt3v36Ev
  ~S20909C11_nt(); // tgen
  S20909C11_nt(); // tgen
};
//SIG(-1 S20909C11_nt) C1{ v1 v2 v3}


void  S20909C11_nt ::v34(){vfunc_called(this, "_ZN12S20909C11_nt3v34Ev");}
void  S20909C11_nt ::v35(){vfunc_called(this, "_ZN12S20909C11_nt3v35Ev");}
void  S20909C11_nt ::v36(){vfunc_called(this, "_ZN12S20909C11_nt3v36Ev");}
S20909C11_nt ::~S20909C11_nt(){ note_dtor("S20909C11_nt", this);} // tgen
S20909C11_nt ::S20909C11_nt(){ note_ctor("S20909C11_nt", this);} // tgen

//skip512 S20909C11_nt

#else // __cplusplus

extern void _ZN12S20909C11_ntC1Ev();
extern void _ZN12S20909C11_ntD1Ev();
Name_Map name_map_S20909C11_nt[] = {
  NSPAIR(_ZN12S20909C11_ntC1Ev),
  NSPAIR(_ZN12S20909C11_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI12S20909C11_nt[];
extern void _ZN12S20909C11_nt3v34Ev();
extern void _ZN12S20909C11_nt3v35Ev();
extern void _ZN12S20909C11_nt3v36Ev();
static  VTBL_ENTRY vtc_S20909C11_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI12S20909C11_nt[0]),
  (VTBL_ENTRY)&_ZN12S20909C11_nt3v34Ev,
  (VTBL_ENTRY)&_ZN12S20909C11_nt3v35Ev,
  (VTBL_ENTRY)&_ZN12S20909C11_nt3v36Ev,
};
extern VTBL_ENTRY _ZTI12S20909C11_nt[];
VTBL_ENTRY *P__ZTI12S20909C11_nt = _ZTI12S20909C11_nt; 
extern  VTBL_ENTRY _ZTV12S20909C11_nt[];
Class_Descriptor cd_S20909C11_nt = {  "S20909C11_nt", // class name
  0,0,//no base classes
  &(vtc_S20909C11_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI12S20909C11_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV12S20909C11_nt),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20909C1  : virtual S20909C2 , virtual S20909C11_nt {
  virtual void  v1(); // _ZN8S20909C12v1Ev
  virtual void  v2(); // _ZN8S20909C12v2Ev
  virtual void  v3(); // _ZN8S20909C12v3Ev
  virtual void  v4(); // _ZN8S20909C12v4Ev
  virtual void  v5(); // _ZN8S20909C12v5Ev
  virtual void  v6(); // _ZN8S20909C12v6Ev
  ~S20909C1(); // tgen
  S20909C1(); // tgen
};
//SIG(1 S20909C1) C1{ VBC2{ VBC3{ v7 v8 v9 v10 v11 v12 v13 v14 v15} BC4{ BC5{ BC6{ v16} BC7{ BC3 BC8{ VBC3 v17 v18 v19 v20 FL} v21 v22} vd v23 v24} VBC9{ vd v25 v26 FL Fi} vd v27 v28 v29 v30 v31 Fi FC6} vd v32 v33 FC10{ m}} VBC11{ v34 v35 v36} v1 v2 v3 v4 v5 v6}


void  S20909C1 ::v1(){vfunc_called(this, "_ZN8S20909C12v1Ev");}
void  S20909C1 ::v2(){vfunc_called(this, "_ZN8S20909C12v2Ev");}
void  S20909C1 ::v3(){vfunc_called(this, "_ZN8S20909C12v3Ev");}
void  S20909C1 ::v4(){vfunc_called(this, "_ZN8S20909C12v4Ev");}
void  S20909C1 ::v5(){vfunc_called(this, "_ZN8S20909C12v5Ev");}
void  S20909C1 ::v6(){vfunc_called(this, "_ZN8S20909C12v6Ev");}
S20909C1 ::~S20909C1(){ note_dtor("S20909C1", this);} // tgen
S20909C1 ::S20909C1(){ note_ctor("S20909C1", this);} // tgen

static void Test_S20909C1()
{
  extern Class_Descriptor cd_S20909C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,14)];
    init_test(&cd_S20909C1, buf);
    S20909C1 *dp, &lv = *(dp=new (buf) S20909C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,52), "sizeof(S20909C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20909C1)");
    /*is_ambiguous_... S20909C2::S20909C3 */ AMB_check_base_class_offset(lv, (S20909C3*)(S20909C2*), ABISELECT(24,12), "S20909C1");
    check_base_class_offset(lv, (S20909C3*)(S20909C8*)(S20909C7*)(S20909C5*)(S20909C4*)(S20909C2*), ABISELECT(24,12), "S20909C1");
    check_base_class_offset(lv, (S20909C6*)(S20909C5*)(S20909C4*)(S20909C2*), ABISELECT(8,4), "S20909C1");
    /*is_ambiguous_... S20909C7::S20909C3 */ AMB_check_base_class_offset(lv, (S20909C3*)(S20909C7*)(S20909C5*)(S20909C4*)(S20909C2*), ABISELECT(16,8), "S20909C1");
    check_base_class_offset(lv, (S20909C8*)(S20909C7*)(S20909C5*)(S20909C4*)(S20909C2*), ABISELECT(24,12), "S20909C1");
    check_base_class_offset(lv, (S20909C7*)(S20909C5*)(S20909C4*)(S20909C2*), ABISELECT(16,8), "S20909C1");
    check_base_class_offset(lv, (S20909C5*)(S20909C4*)(S20909C2*), ABISELECT(8,4), "S20909C1");
    check_base_class_offset(lv, (S20909C9*)(S20909C4*)(S20909C2*), ABISELECT(64,36), "S20909C1");
    check_base_class_offset(lv, (S20909C4*)(S20909C2*), ABISELECT(8,4), "S20909C1");
    check_base_class_offset(lv, (S20909C2*), ABISELECT(8,4), "S20909C1");
    check_base_class_offset(lv, (S20909C11_nt*), 0, "S20909C1");
    test_class_info(&lv, &cd_S20909C1);
    dp->~S20909C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20909C1(Test_S20909C1, "S20909C1", ABISELECT(88,52));

#else // __cplusplus

extern void _ZN8S20909C1C1Ev();
extern void _ZN8S20909C1D1Ev();
Name_Map name_map_S20909C1[] = {
  NSPAIR(_ZN8S20909C1C1Ev),
  NSPAIR(_ZN8S20909C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20909C3;
extern VTBL_ENTRY _ZTI8S20909C3[];
extern  VTBL_ENTRY _ZTV8S20909C3[];
extern Class_Descriptor cd_S20909C6;
extern VTBL_ENTRY _ZTI8S20909C6[];
extern  VTBL_ENTRY _ZTV8S20909C6[];
extern Class_Descriptor cd_S20909C3;
extern VTBL_ENTRY _ZTI8S20909C3[];
extern  VTBL_ENTRY _ZTV8S20909C3[];
extern Class_Descriptor cd_S20909C8;
extern VTBL_ENTRY _ZTI8S20909C8[];
extern  VTBL_ENTRY _ZTV8S20909C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20909C8[];
extern Class_Descriptor cd_S20909C7;
extern VTBL_ENTRY _ZTI8S20909C7[];
extern  VTBL_ENTRY _ZTV8S20909C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20909C7[];
extern Class_Descriptor cd_S20909C5;
extern VTBL_ENTRY _ZTI8S20909C5[];
extern  VTBL_ENTRY _ZTV8S20909C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20909C5[];
extern Class_Descriptor cd_S20909C9;
extern VTBL_ENTRY _ZTI8S20909C9[];
extern  VTBL_ENTRY _ZTV8S20909C9[];
extern Class_Descriptor cd_S20909C4;
extern VTBL_ENTRY _ZTI8S20909C4[];
extern  VTBL_ENTRY _ZTV8S20909C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20909C4[];
extern Class_Descriptor cd_S20909C2;
extern VTBL_ENTRY _ZTI8S20909C2[];
extern  VTBL_ENTRY _ZTV8S20909C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20909C2[];
extern Class_Descriptor cd_S20909C11_nt;
extern VTBL_ENTRY _ZTI12S20909C11_nt[];
extern  VTBL_ENTRY _ZTV12S20909C11_nt[];
static Base_Class bases_S20909C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20909C3,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20909C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20909C3,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20909C8,    ABISELECT(24,12), //bcp->offset
    76, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20909C7,    ABISELECT(16,8), //bcp->offset
    62, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20909C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20909C9,    ABISELECT(64,36), //bcp->offset
    101, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20909C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20909C2,    ABISELECT(8,4), //bcp->offset
    20, //bcp->virtual_function_table_offset
    30, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20909C11_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20909C1[];
extern void _ZN12S20909C11_nt3v34Ev();
extern void _ZN12S20909C11_nt3v35Ev();
extern void _ZN12S20909C11_nt3v36Ev();
extern void _ZN8S20909C12v1Ev();
extern void _ZN8S20909C12v2Ev();
extern void _ZN8S20909C12v3Ev();
extern void _ZN8S20909C12v4Ev();
extern void _ZN8S20909C12v5Ev();
extern void _ZN8S20909C12v6Ev();
extern void _ZN8S20909C1D1Ev();
extern void _ZN8S20909C1D0Ev();
extern void _ZN8S20909C63v16Ev();
extern void ABISELECT(_ZTv0_n48_N8S20909C1D1Ev,_ZTv0_n24_N8S20909C1D1Ev)();
extern void ABISELECT(_ZThn8_N8S20909C1D1Ev,_ZThn4_N8S20909C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20909C1D0Ev,_ZTv0_n24_N8S20909C1D0Ev)();
extern void ABISELECT(_ZThn8_N8S20909C1D0Ev,_ZThn4_N8S20909C1D0Ev)() __attribute__((weak));
extern void _ZN8S20909C53v23Ev();
extern void _ZN8S20909C53v24Ev();
extern void _ZN8S20909C43v27Ev();
extern void _ZN8S20909C43v28Ev();
extern void _ZN8S20909C43v29Ev();
extern void _ZN8S20909C43v30Ev();
extern void _ZN8S20909C43v31Ev();
extern void _ZN8S20909C23v32Ev();
extern void _ZN8S20909C23v33Ev();
extern void _ZN8S20909C32v7Ev();
extern void _ZN8S20909C32v8Ev();
extern void _ZN8S20909C32v9Ev();
extern void _ZN8S20909C33v10Ev();
extern void _ZN8S20909C33v11Ev();
extern void _ZN8S20909C33v12Ev();
extern void _ZN8S20909C33v13Ev();
extern void _ZN8S20909C33v14Ev();
extern void _ZN8S20909C33v15Ev();
extern void _ZN8S20909C73v21Ev();
extern void _ZN8S20909C73v22Ev();
extern void _ZN8S20909C32v7Ev();
extern void _ZN8S20909C32v8Ev();
extern void _ZN8S20909C32v9Ev();
extern void _ZN8S20909C33v10Ev();
extern void _ZN8S20909C33v11Ev();
extern void _ZN8S20909C33v12Ev();
extern void _ZN8S20909C33v13Ev();
extern void _ZN8S20909C33v14Ev();
extern void _ZN8S20909C33v15Ev();
extern void _ZN8S20909C83v17Ev();
extern void _ZN8S20909C83v18Ev();
extern void _ZN8S20909C83v19Ev();
extern void _ZN8S20909C83v20Ev();
extern void ABISELECT(_ZTv0_n24_N8S20909C1D1Ev,_ZTv0_n12_N8S20909C1D1Ev)();
extern void ABISELECT(_ZThn64_N8S20909C1D1Ev,_ZThn36_N8S20909C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20909C1D0Ev,_ZTv0_n12_N8S20909C1D0Ev)();
extern void ABISELECT(_ZThn64_N8S20909C1D0Ev,_ZThn36_N8S20909C1D0Ev)() __attribute__((weak));
extern void _ZN8S20909C93v25Ev();
extern void _ZN8S20909C93v26Ev();
static  VTBL_ENTRY vtc_S20909C1[] = {
  0,
  ABISELECT(64,36),
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20909C1[0]),
  (VTBL_ENTRY)&_ZN12S20909C11_nt3v34Ev,
  (VTBL_ENTRY)&_ZN12S20909C11_nt3v35Ev,
  (VTBL_ENTRY)&_ZN12S20909C11_nt3v36Ev,
  (VTBL_ENTRY)&_ZN8S20909C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20909C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20909C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20909C12v4Ev,
  (VTBL_ENTRY)&_ZN8S20909C12v5Ev,
  (VTBL_ENTRY)&_ZN8S20909C12v6Ev,
  (VTBL_ENTRY)&_ZN8S20909C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20909C1D0Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(-8,-4),
  0,
  ABISELECT(56,32),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20909C1[0]),
  (VTBL_ENTRY)&_ZN8S20909C63v16Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20909C1D1Ev,_ZTv0_n24_N8S20909C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20909C1D0Ev,_ZTv0_n24_N8S20909C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20909C53v23Ev,
  (VTBL_ENTRY)&_ZN8S20909C53v24Ev,
  (VTBL_ENTRY)&_ZN8S20909C43v27Ev,
  (VTBL_ENTRY)&_ZN8S20909C43v28Ev,
  (VTBL_ENTRY)&_ZN8S20909C43v29Ev,
  (VTBL_ENTRY)&_ZN8S20909C43v30Ev,
  (VTBL_ENTRY)&_ZN8S20909C43v31Ev,
  (VTBL_ENTRY)&_ZN8S20909C23v32Ev,
  (VTBL_ENTRY)&_ZN8S20909C23v33Ev,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20909C1[0]),
  (VTBL_ENTRY)&_ZN8S20909C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20909C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20909C73v22Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20909C1[0]),
  (VTBL_ENTRY)&_ZN8S20909C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v18Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v20Ev,
  0,
  0,
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S20909C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20909C1D1Ev,_ZTv0_n12_N8S20909C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20909C1D0Ev,_ZTv0_n12_N8S20909C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20909C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20909C93v26Ev,
};
extern VTBL_ENTRY _ZTV8S20909C1[];
extern void _ZN8S20909C63v16Ev();
extern void _ZN8S20909C2D1Ev();
extern void _ZN8S20909C2D0Ev();
extern void _ZN8S20909C53v23Ev();
extern void _ZN8S20909C53v24Ev();
extern void _ZN8S20909C43v27Ev();
extern void _ZN8S20909C43v28Ev();
extern void _ZN8S20909C43v29Ev();
extern void _ZN8S20909C43v30Ev();
extern void _ZN8S20909C43v31Ev();
extern void _ZN8S20909C23v32Ev();
extern void _ZN8S20909C23v33Ev();
static  VTBL_ENTRY _tg__ZTV8S20909C2__8S20909C1[] = {
  ABISELECT(56,32),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20909C2[0]),
  (VTBL_ENTRY)&_ZN8S20909C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20909C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20909C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20909C53v23Ev,
  (VTBL_ENTRY)&_ZN8S20909C53v24Ev,
  (VTBL_ENTRY)&_ZN8S20909C43v27Ev,
  (VTBL_ENTRY)&_ZN8S20909C43v28Ev,
  (VTBL_ENTRY)&_ZN8S20909C43v29Ev,
  (VTBL_ENTRY)&_ZN8S20909C43v30Ev,
  (VTBL_ENTRY)&_ZN8S20909C43v31Ev,
  (VTBL_ENTRY)&_ZN8S20909C23v32Ev,
  (VTBL_ENTRY)&_ZN8S20909C23v33Ev,
};
extern void _ZN8S20909C63v16Ev();
extern void _ZN8S20909C4D1Ev();
extern void _ZN8S20909C4D0Ev();
extern void _ZN8S20909C53v23Ev();
extern void _ZN8S20909C53v24Ev();
extern void _ZN8S20909C43v27Ev();
extern void _ZN8S20909C43v28Ev();
extern void _ZN8S20909C43v29Ev();
extern void _ZN8S20909C43v30Ev();
extern void _ZN8S20909C43v31Ev();
static  VTBL_ENTRY _tg__ZTV8S20909C48S20909C2__8S20909C1[] = {
  ABISELECT(56,32),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20909C4[0]),
  (VTBL_ENTRY)&_ZN8S20909C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20909C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20909C4D0Ev,
  (VTBL_ENTRY)&_ZN8S20909C53v23Ev,
  (VTBL_ENTRY)&_ZN8S20909C53v24Ev,
  (VTBL_ENTRY)&_ZN8S20909C43v27Ev,
  (VTBL_ENTRY)&_ZN8S20909C43v28Ev,
  (VTBL_ENTRY)&_ZN8S20909C43v29Ev,
  (VTBL_ENTRY)&_ZN8S20909C43v30Ev,
  (VTBL_ENTRY)&_ZN8S20909C43v31Ev,
};
extern void _ZN8S20909C63v16Ev();
extern void _ZN8S20909C5D1Ev();
extern void _ZN8S20909C5D0Ev();
extern void _ZN8S20909C53v23Ev();
extern void _ZN8S20909C53v24Ev();
static  VTBL_ENTRY _tg__ZTV8S20909C58S20909C48S20909C2__8S20909C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20909C5[0]),
  (VTBL_ENTRY)&_ZN8S20909C63v16Ev,
  (VTBL_ENTRY)&_ZN8S20909C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20909C5D0Ev,
  (VTBL_ENTRY)&_ZN8S20909C53v23Ev,
  (VTBL_ENTRY)&_ZN8S20909C53v24Ev,
};
extern void _ZN8S20909C32v7Ev();
extern void _ZN8S20909C32v8Ev();
extern void _ZN8S20909C32v9Ev();
extern void _ZN8S20909C33v10Ev();
extern void _ZN8S20909C33v11Ev();
extern void _ZN8S20909C33v12Ev();
extern void _ZN8S20909C33v13Ev();
extern void _ZN8S20909C33v14Ev();
extern void _ZN8S20909C33v15Ev();
extern void _ZN8S20909C73v21Ev();
extern void _ZN8S20909C73v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20909C78S20909C58S20909C48S20909C2__8S20909C1[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20909C7[0]),
  (VTBL_ENTRY)&_ZN8S20909C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20909C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20909C73v22Ev,
};
extern void _ZN8S20909C32v7Ev();
extern void _ZN8S20909C32v8Ev();
extern void _ZN8S20909C32v9Ev();
extern void _ZN8S20909C33v10Ev();
extern void _ZN8S20909C33v11Ev();
extern void _ZN8S20909C33v12Ev();
extern void _ZN8S20909C33v13Ev();
extern void _ZN8S20909C33v14Ev();
extern void _ZN8S20909C33v15Ev();
extern void _ZN8S20909C83v17Ev();
extern void _ZN8S20909C83v18Ev();
extern void _ZN8S20909C83v19Ev();
extern void _ZN8S20909C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20909C88S20909C78S20909C58S20909C48S20909C2__8S20909C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20909C8[0]),
  (VTBL_ENTRY)&_ZN8S20909C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v18Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v20Ev,
};
extern void _ZN8S20909C32v7Ev();
extern void _ZN8S20909C32v8Ev();
extern void _ZN8S20909C32v9Ev();
extern void _ZN8S20909C33v10Ev();
extern void _ZN8S20909C33v11Ev();
extern void _ZN8S20909C33v12Ev();
extern void _ZN8S20909C33v13Ev();
extern void _ZN8S20909C33v14Ev();
extern void _ZN8S20909C33v15Ev();
extern void _ZN8S20909C83v17Ev();
extern void _ZN8S20909C83v18Ev();
extern void _ZN8S20909C83v19Ev();
extern void _ZN8S20909C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20909C8__8S20909C78S20909C58S20909C48S20909C2__8S20909C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20909C7[0]),
  (VTBL_ENTRY)&_ZN8S20909C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v18Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v20Ev,
};
extern void _ZN8S20909C32v7Ev();
extern void _ZN8S20909C32v8Ev();
extern void _ZN8S20909C32v9Ev();
extern void _ZN8S20909C33v10Ev();
extern void _ZN8S20909C33v11Ev();
extern void _ZN8S20909C33v12Ev();
extern void _ZN8S20909C33v13Ev();
extern void _ZN8S20909C33v14Ev();
extern void _ZN8S20909C33v15Ev();
extern void _ZN8S20909C73v21Ev();
extern void _ZN8S20909C73v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20909C7__8S20909C58S20909C48S20909C2__8S20909C1[] = {
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20909C5[0]),
  (VTBL_ENTRY)&_ZN8S20909C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20909C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20909C73v22Ev,
};
extern void _ZN8S20909C32v7Ev();
extern void _ZN8S20909C32v8Ev();
extern void _ZN8S20909C32v9Ev();
extern void _ZN8S20909C33v10Ev();
extern void _ZN8S20909C33v11Ev();
extern void _ZN8S20909C33v12Ev();
extern void _ZN8S20909C33v13Ev();
extern void _ZN8S20909C33v14Ev();
extern void _ZN8S20909C33v15Ev();
extern void _ZN8S20909C83v17Ev();
extern void _ZN8S20909C83v18Ev();
extern void _ZN8S20909C83v19Ev();
extern void _ZN8S20909C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20909C88S20909C7__8S20909C58S20909C48S20909C2__8S20909C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20909C5[0]),
  (VTBL_ENTRY)&_ZN8S20909C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v18Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v20Ev,
};
extern void _ZN8S20909C32v7Ev();
extern void _ZN8S20909C32v8Ev();
extern void _ZN8S20909C32v9Ev();
extern void _ZN8S20909C33v10Ev();
extern void _ZN8S20909C33v11Ev();
extern void _ZN8S20909C33v12Ev();
extern void _ZN8S20909C33v13Ev();
extern void _ZN8S20909C33v14Ev();
extern void _ZN8S20909C33v15Ev();
extern void _ZN8S20909C73v21Ev();
extern void _ZN8S20909C73v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20909C78S20909C5__8S20909C48S20909C2__8S20909C1[] = {
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20909C4[0]),
  (VTBL_ENTRY)&_ZN8S20909C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20909C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20909C73v22Ev,
};
extern void _ZN8S20909C32v7Ev();
extern void _ZN8S20909C32v8Ev();
extern void _ZN8S20909C32v9Ev();
extern void _ZN8S20909C33v10Ev();
extern void _ZN8S20909C33v11Ev();
extern void _ZN8S20909C33v12Ev();
extern void _ZN8S20909C33v13Ev();
extern void _ZN8S20909C33v14Ev();
extern void _ZN8S20909C33v15Ev();
extern void _ZN8S20909C83v17Ev();
extern void _ZN8S20909C83v18Ev();
extern void _ZN8S20909C83v19Ev();
extern void _ZN8S20909C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20909C88S20909C78S20909C5__8S20909C48S20909C2__8S20909C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20909C4[0]),
  (VTBL_ENTRY)&_ZN8S20909C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v18Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v20Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20909C4D1Ev,_ZTv0_n12_N8S20909C4D1Ev)();
extern void ABISELECT(_ZThn56_N8S20909C4D1Ev,_ZThn32_N8S20909C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20909C4D0Ev,_ZTv0_n12_N8S20909C4D0Ev)();
extern void ABISELECT(_ZThn56_N8S20909C4D0Ev,_ZThn32_N8S20909C4D0Ev)() __attribute__((weak));
extern void _ZN8S20909C93v25Ev();
extern void _ZN8S20909C93v26Ev();
static  VTBL_ENTRY _tg__ZTV8S20909C9__8S20909C48S20909C2__8S20909C1[] = {
  0,
  0,
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S20909C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20909C4D1Ev,_ZTv0_n12_N8S20909C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20909C4D0Ev,_ZTv0_n12_N8S20909C4D0Ev),
  (VTBL_ENTRY)&_ZN8S20909C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20909C93v26Ev,
};
extern void _ZN8S20909C32v7Ev();
extern void _ZN8S20909C32v8Ev();
extern void _ZN8S20909C32v9Ev();
extern void _ZN8S20909C33v10Ev();
extern void _ZN8S20909C33v11Ev();
extern void _ZN8S20909C33v12Ev();
extern void _ZN8S20909C33v13Ev();
extern void _ZN8S20909C33v14Ev();
extern void _ZN8S20909C33v15Ev();
extern void _ZN8S20909C83v17Ev();
extern void _ZN8S20909C83v18Ev();
extern void _ZN8S20909C83v19Ev();
extern void _ZN8S20909C83v20Ev();
static  VTBL_ENTRY _tg__ZTV8S20909C88S20909C78S20909C58S20909C4__8S20909C2__8S20909C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20909C2[0]),
  (VTBL_ENTRY)&_ZN8S20909C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v17Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v18Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v19Ev,
  (VTBL_ENTRY)&_ZN8S20909C83v20Ev,
};
extern void _ZN8S20909C32v7Ev();
extern void _ZN8S20909C32v8Ev();
extern void _ZN8S20909C32v9Ev();
extern void _ZN8S20909C33v10Ev();
extern void _ZN8S20909C33v11Ev();
extern void _ZN8S20909C33v12Ev();
extern void _ZN8S20909C33v13Ev();
extern void _ZN8S20909C33v14Ev();
extern void _ZN8S20909C33v15Ev();
extern void _ZN8S20909C73v21Ev();
extern void _ZN8S20909C73v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20909C78S20909C58S20909C4__8S20909C2__8S20909C1[] = {
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20909C2[0]),
  (VTBL_ENTRY)&_ZN8S20909C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20909C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v14Ev,
  (VTBL_ENTRY)&_ZN8S20909C33v15Ev,
  (VTBL_ENTRY)&_ZN8S20909C73v21Ev,
  (VTBL_ENTRY)&_ZN8S20909C73v22Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20909C2D1Ev,_ZTv0_n12_N8S20909C2D1Ev)();
extern void ABISELECT(_ZThn56_N8S20909C2D1Ev,_ZThn32_N8S20909C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20909C2D0Ev,_ZTv0_n12_N8S20909C2D0Ev)();
extern void ABISELECT(_ZThn56_N8S20909C2D0Ev,_ZThn32_N8S20909C2D0Ev)() __attribute__((weak));
extern void _ZN8S20909C93v25Ev();
extern void _ZN8S20909C93v26Ev();
static  VTBL_ENTRY _tg__ZTV8S20909C9__8S20909C2__8S20909C1[] = {
  0,
  0,
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S20909C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20909C2D1Ev,_ZTv0_n12_N8S20909C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20909C2D0Ev,_ZTv0_n12_N8S20909C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20909C93v25Ev,
  (VTBL_ENTRY)&_ZN8S20909C93v26Ev,
};
static  VTT_ENTRY vtt_S20909C1[] = {
  {&(_ZTV8S20909C1[9]),  9,110},
  {&(_ZTV8S20909C1[50]),  50,110},
  {&(_ZTV8S20909C1[88]),  88,110},
  {&(_ZTV8S20909C1[65]),  65,110},
  {&(_ZTV8S20909C1[88]),  88,110},
  {&(_ZTV8S20909C1[106]),  106,110},
  {&(_ZTV8S20909C1[9]),  9,110},
  {&(_tg__ZTV8S20909C2__8S20909C1[4]),  4,16},
  {&(_tg__ZTV8S20909C48S20909C2__8S20909C1[4]),  4,14},
  {&(_tg__ZTV8S20909C58S20909C48S20909C2__8S20909C1[3]),  3,8},
  {&(_tg__ZTV8S20909C78S20909C58S20909C48S20909C2__8S20909C1[3]),  3,14},
  {&(_tg__ZTV8S20909C88S20909C78S20909C58S20909C48S20909C2__8S20909C1[12]),  12,25},
  {&(_tg__ZTV8S20909C88S20909C78S20909C58S20909C48S20909C2__8S20909C1[12]),  12,25},
  {&(_tg__ZTV8S20909C8__8S20909C78S20909C58S20909C48S20909C2__8S20909C1[12]),  12,25},
  {&(_tg__ZTV8S20909C8__8S20909C78S20909C58S20909C48S20909C2__8S20909C1[12]),  12,25},
  {&(_tg__ZTV8S20909C7__8S20909C58S20909C48S20909C2__8S20909C1[3]),  3,14},
  {&(_tg__ZTV8S20909C88S20909C7__8S20909C58S20909C48S20909C2__8S20909C1[12]),  12,25},
  {&(_tg__ZTV8S20909C88S20909C7__8S20909C58S20909C48S20909C2__8S20909C1[12]),  12,25},
  {&(_tg__ZTV8S20909C78S20909C5__8S20909C48S20909C2__8S20909C1[3]),  3,14},
  {&(_tg__ZTV8S20909C88S20909C78S20909C5__8S20909C48S20909C2__8S20909C1[12]),  12,25},
  {&(_tg__ZTV8S20909C88S20909C78S20909C5__8S20909C48S20909C2__8S20909C1[12]),  12,25},
  {&(_tg__ZTV8S20909C9__8S20909C48S20909C2__8S20909C1[5]),  5,9},
  {&(_tg__ZTV8S20909C88S20909C78S20909C58S20909C4__8S20909C2__8S20909C1[12]),  12,25},
  {&(_tg__ZTV8S20909C78S20909C58S20909C4__8S20909C2__8S20909C1[3]),  3,14},
  {&(_tg__ZTV8S20909C88S20909C78S20909C58S20909C4__8S20909C2__8S20909C1[12]),  12,25},
  {&(_tg__ZTV8S20909C9__8S20909C2__8S20909C1[5]),  5,9},
};
extern VTBL_ENTRY _ZTI8S20909C1[];
extern  VTBL_ENTRY _ZTV8S20909C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20909C1[];
static VTBL_ENTRY alt_thunk_names92[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20909C2D0Ev,_ZTv0_n12_N8S20909C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20909C2D0Ev,_ZThn32_N8S20909C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20909C2D1Ev,_ZTv0_n12_N8S20909C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20909C2D1Ev,_ZThn32_N8S20909C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20909C4D0Ev,_ZTv0_n12_N8S20909C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20909C4D0Ev,_ZThn32_N8S20909C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20909C4D1Ev,_ZTv0_n12_N8S20909C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20909C4D1Ev,_ZThn32_N8S20909C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20909C1D0Ev,_ZTv0_n12_N8S20909C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20909C1D0Ev,_ZThn36_N8S20909C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20909C1D1Ev,_ZTv0_n12_N8S20909C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20909C1D1Ev,_ZThn36_N8S20909C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20909C1D0Ev,_ZTv0_n24_N8S20909C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20909C1D0Ev,_ZThn4_N8S20909C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20909C1D1Ev,_ZTv0_n24_N8S20909C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20909C1D1Ev,_ZThn4_N8S20909C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20909C1 = {  "S20909C1", // class name
  bases_S20909C1, 10,
  &(vtc_S20909C1[0]), // expected_vtbl_contents
  &(vtt_S20909C1[0]), // expected_vtt_contents
  ABISELECT(88,52), // object size
  NSPAIRA(_ZTI8S20909C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20909C1),110, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20909C1),26, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names92,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3533C4  {
  virtual void  v7(); // _ZN7S3533C42v7Ev
  virtual void  v8(); // _ZN7S3533C42v8Ev
  virtual void  v9(); // _ZN7S3533C42v9Ev
  virtual void  v10(); // _ZN7S3533C43v10Ev
  virtual void  v11(); // _ZN7S3533C43v11Ev
  virtual void  v12(); // _ZN7S3533C43v12Ev
  virtual void  v13(); // _ZN7S3533C43v13Ev
  virtual void  v14(); // _ZN7S3533C43v14Ev
  virtual void  v15(); // _ZN7S3533C43v15Ev
  ~S3533C4(); // tgen
  S3533C4(); // tgen
};
//SIG(-1 S3533C4) C1{ v1 v2 v3 v4 v5 v6 v7 v8 v9}


void  S3533C4 ::v7(){vfunc_called(this, "_ZN7S3533C42v7Ev");}
void  S3533C4 ::v8(){vfunc_called(this, "_ZN7S3533C42v8Ev");}
void  S3533C4 ::v9(){vfunc_called(this, "_ZN7S3533C42v9Ev");}
void  S3533C4 ::v10(){vfunc_called(this, "_ZN7S3533C43v10Ev");}
void  S3533C4 ::v11(){vfunc_called(this, "_ZN7S3533C43v11Ev");}
void  S3533C4 ::v12(){vfunc_called(this, "_ZN7S3533C43v12Ev");}
void  S3533C4 ::v13(){vfunc_called(this, "_ZN7S3533C43v13Ev");}
void  S3533C4 ::v14(){vfunc_called(this, "_ZN7S3533C43v14Ev");}
void  S3533C4 ::v15(){vfunc_called(this, "_ZN7S3533C43v15Ev");}
S3533C4 ::~S3533C4(){ note_dtor("S3533C4", this);} // tgen
S3533C4 ::S3533C4(){ note_ctor("S3533C4", this);} // tgen

static void Test_S3533C4()
{
  extern Class_Descriptor cd_S3533C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3533C4, buf);
    S3533C4 *dp, &lv = *(dp=new (buf) S3533C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3533C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3533C4)");
    test_class_info(&lv, &cd_S3533C4);
    dp->~S3533C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3533C4(Test_S3533C4, "S3533C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3533C4C1Ev();
extern void _ZN7S3533C4D1Ev();
Name_Map name_map_S3533C4[] = {
  NSPAIR(_ZN7S3533C4C1Ev),
  NSPAIR(_ZN7S3533C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3533C4[];
extern void _ZN7S3533C42v7Ev();
extern void _ZN7S3533C42v8Ev();
extern void _ZN7S3533C42v9Ev();
extern void _ZN7S3533C43v10Ev();
extern void _ZN7S3533C43v11Ev();
extern void _ZN7S3533C43v12Ev();
extern void _ZN7S3533C43v13Ev();
extern void _ZN7S3533C43v14Ev();
extern void _ZN7S3533C43v15Ev();
static  VTBL_ENTRY vtc_S3533C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3533C4[0]),
  (VTBL_ENTRY)&_ZN7S3533C42v7Ev,
  (VTBL_ENTRY)&_ZN7S3533C42v8Ev,
  (VTBL_ENTRY)&_ZN7S3533C42v9Ev,
  (VTBL_ENTRY)&_ZN7S3533C43v10Ev,
  (VTBL_ENTRY)&_ZN7S3533C43v11Ev,
  (VTBL_ENTRY)&_ZN7S3533C43v12Ev,
  (VTBL_ENTRY)&_ZN7S3533C43v13Ev,
  (VTBL_ENTRY)&_ZN7S3533C43v14Ev,
  (VTBL_ENTRY)&_ZN7S3533C43v15Ev,
};
extern VTBL_ENTRY _ZTI7S3533C4[];
extern  VTBL_ENTRY _ZTV7S3533C4[];
Class_Descriptor cd_S3533C4 = {  "S3533C4", // class name
  0,0,//no base classes
  &(vtc_S3533C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3533C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3533C4),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3533C6  {
  int s3533c6f0;
  __tsi64 s3533c6f1;
  virtual  ~S3533C6(); // _ZN7S3533C6D1Ev
  virtual void  v16(); // _ZN7S3533C63v16Ev
  virtual void  v17(); // _ZN7S3533C63v17Ev
  virtual void  v18(); // _ZN7S3533C63v18Ev
  S3533C6(); // tgen
};
//SIG(-1 S3533C6) C1{ vd v1 v2 v3 Fi FL}


 S3533C6 ::~S3533C6(){ note_dtor("S3533C6", this);}
void  S3533C6 ::v16(){vfunc_called(this, "_ZN7S3533C63v16Ev");}
void  S3533C6 ::v17(){vfunc_called(this, "_ZN7S3533C63v17Ev");}
void  S3533C6 ::v18(){vfunc_called(this, "_ZN7S3533C63v18Ev");}
S3533C6 ::S3533C6(){ note_ctor("S3533C6", this);} // tgen

static void Test_S3533C6()
{
  extern Class_Descriptor cd_S3533C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S3533C6, buf);
    S3533C6 *dp, &lv = *(dp=new (buf) S3533C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S3533C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3533C6)");
    check_field_offset(lv, s3533c6f0, ABISELECT(8,4), "S3533C6.s3533c6f0");
    check_field_offset(lv, s3533c6f1, ABISELECT(16,8), "S3533C6.s3533c6f1");
    test_class_info(&lv, &cd_S3533C6);
    dp->~S3533C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3533C6(Test_S3533C6, "S3533C6", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S3533C6C1Ev();
extern void _ZN7S3533C6D1Ev();
Name_Map name_map_S3533C6[] = {
  NSPAIR(_ZN7S3533C6C1Ev),
  NSPAIR(_ZN7S3533C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3533C6[];
extern void _ZN7S3533C6D1Ev();
extern void _ZN7S3533C6D0Ev();
extern void _ZN7S3533C63v16Ev();
extern void _ZN7S3533C63v17Ev();
extern void _ZN7S3533C63v18Ev();
static  VTBL_ENTRY vtc_S3533C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3533C6[0]),
  (VTBL_ENTRY)&_ZN7S3533C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3533C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3533C63v16Ev,
  (VTBL_ENTRY)&_ZN7S3533C63v17Ev,
  (VTBL_ENTRY)&_ZN7S3533C63v18Ev,
};
extern VTBL_ENTRY _ZTI7S3533C6[];
extern  VTBL_ENTRY _ZTV7S3533C6[];
Class_Descriptor cd_S3533C6 = {  "S3533C6", // class name
  0,0,//no base classes
  &(vtc_S3533C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S3533C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3533C6),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3533C5  : S3533C6 {
  int s3533c5f0;
  ::S3533C6 s3533c5f1;
  virtual  ~S3533C5(); // _ZN7S3533C5D1Ev
  virtual void  v19(); // _ZN7S3533C53v19Ev
  virtual void  v20(); // _ZN7S3533C53v20Ev
  virtual void  v21(); // _ZN7S3533C53v21Ev
  S3533C5(); // tgen
};
//SIG(-1 S3533C5) C1{ BC2{ vd v4 v5 v6 Fi FL} vd v1 v2 v3 Fi FC2}


 S3533C5 ::~S3533C5(){ note_dtor("S3533C5", this);}
void  S3533C5 ::v19(){vfunc_called(this, "_ZN7S3533C53v19Ev");}
void  S3533C5 ::v20(){vfunc_called(this, "_ZN7S3533C53v20Ev");}
void  S3533C5 ::v21(){vfunc_called(this, "_ZN7S3533C53v21Ev");}
S3533C5 ::S3533C5(){ note_ctor("S3533C5", this);} // tgen

static void Test_S3533C5()
{
  extern Class_Descriptor cd_S3533C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S3533C5, buf);
    S3533C5 *dp, &lv = *(dp=new (buf) S3533C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S3533C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3533C5)");
    check_base_class_offset(lv, (S3533C6*), 0, "S3533C5");
    check_field_offset(lv, s3533c5f0, ABISELECT(24,16), "S3533C5.s3533c5f0");
    check_field_offset(lv, s3533c5f1, ABISELECT(32,20), "S3533C5.s3533c5f1");
    test_class_info(&lv, &cd_S3533C5);
    dp->~S3533C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3533C5(Test_S3533C5, "S3533C5", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN7S3533C5C1Ev();
extern void _ZN7S3533C5D1Ev();
Name_Map name_map_S3533C5[] = {
  NSPAIR(_ZN7S3533C5C1Ev),
  NSPAIR(_ZN7S3533C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3533C6;
extern VTBL_ENTRY _ZTI7S3533C6[];
extern  VTBL_ENTRY _ZTV7S3533C6[];
static Base_Class bases_S3533C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3533C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3533C5[];
extern void _ZN7S3533C5D1Ev();
extern void _ZN7S3533C5D0Ev();
extern void _ZN7S3533C63v16Ev();
extern void _ZN7S3533C63v17Ev();
extern void _ZN7S3533C63v18Ev();
extern void _ZN7S3533C53v19Ev();
extern void _ZN7S3533C53v20Ev();
extern void _ZN7S3533C53v21Ev();
static  VTBL_ENTRY vtc_S3533C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3533C5[0]),
  (VTBL_ENTRY)&_ZN7S3533C5D1Ev,
  (VTBL_ENTRY)&_ZN7S3533C5D0Ev,
  (VTBL_ENTRY)&_ZN7S3533C63v16Ev,
  (VTBL_ENTRY)&_ZN7S3533C63v17Ev,
  (VTBL_ENTRY)&_ZN7S3533C63v18Ev,
  (VTBL_ENTRY)&_ZN7S3533C53v19Ev,
  (VTBL_ENTRY)&_ZN7S3533C53v20Ev,
  (VTBL_ENTRY)&_ZN7S3533C53v21Ev,
};
extern VTBL_ENTRY _ZTI7S3533C5[];
extern  VTBL_ENTRY _ZTV7S3533C5[];
Class_Descriptor cd_S3533C5 = {  "S3533C5", // class name
  bases_S3533C5, 1,
  &(vtc_S3533C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI7S3533C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3533C5),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3533C3  : virtual S3533C4 , virtual S3533C5 {
  ::S3533C5 s3533c3f0[3];
  int s3533c3f1;
  void *s3533c3f2[8];
  int s3533c3f3;
  long double s3533c3f4[3];
  virtual void  v22(); // _ZN7S3533C33v22Ev
  virtual void  v23(); // _ZN7S3533C33v23Ev
  virtual void  v24(); // _ZN7S3533C33v24Ev
  virtual void  v25(); // _ZN7S3533C33v25Ev
  ~S3533C3(); // tgen
  S3533C3(); // tgen
};
//SIG(-1 S3533C3) C1{ VBC2{ v5 v6 v7 v8 v9 v10 v11 v12 v13} VBC3{ BC4{ vd v14 v15 v16 Fi FL} vd v17 v18 v19 Fi FC4} v1 v2 v3 v4 FC3[3] Fi Fp[8] Fi FD[3]}


void  S3533C3 ::v22(){vfunc_called(this, "_ZN7S3533C33v22Ev");}
void  S3533C3 ::v23(){vfunc_called(this, "_ZN7S3533C33v23Ev");}
void  S3533C3 ::v24(){vfunc_called(this, "_ZN7S3533C33v24Ev");}
void  S3533C3 ::v25(){vfunc_called(this, "_ZN7S3533C33v25Ev");}
S3533C3 ::~S3533C3(){ note_dtor("S3533C3", this);} // tgen
S3533C3 ::S3533C3(){ note_ctor("S3533C3", this);} // tgen

static void Test_S3533C3()
{
  extern Class_Descriptor cd_S3533C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(24,57)];
    init_test(&cd_S3533C3, buf);
    S3533C3 *dp, &lv = *(dp=new (buf) S3533C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(368,224), "sizeof(S3533C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3533C3)");
    check_base_class_offset(lv, (S3533C4*), 0, "S3533C3");
    check_base_class_offset(lv, (S3533C6*)(S3533C5*), ABISELECT(304,188), "S3533C3");
    check_base_class_offset(lv, (S3533C5*), ABISELECT(304,188), "S3533C3");
    check_field_offset(lv, s3533c3f0, ABISELECT(8,4), "S3533C3.s3533c3f0");
    check_field_offset(lv, s3533c3f1, ABISELECT(176,112), "S3533C3.s3533c3f1");
    check_field_offset(lv, s3533c3f2, ABISELECT(184,116), "S3533C3.s3533c3f2");
    check_field_offset(lv, s3533c3f3, ABISELECT(248,148), "S3533C3.s3533c3f3");
    check_field_offset(lv, s3533c3f4, ABISELECT(256,152), "S3533C3.s3533c3f4");
    test_class_info(&lv, &cd_S3533C3);
    dp->~S3533C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3533C3(Test_S3533C3, "S3533C3", ABISELECT(368,224));

#else // __cplusplus

extern void _ZN7S3533C3C1Ev();
extern void _ZN7S3533C3D1Ev();
Name_Map name_map_S3533C3[] = {
  NSPAIR(_ZN7S3533C3C1Ev),
  NSPAIR(_ZN7S3533C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3533C4;
extern VTBL_ENTRY _ZTI7S3533C4[];
extern  VTBL_ENTRY _ZTV7S3533C4[];
extern Class_Descriptor cd_S3533C6;
extern VTBL_ENTRY _ZTI7S3533C6[];
extern  VTBL_ENTRY _ZTV7S3533C6[];
extern Class_Descriptor cd_S3533C5;
extern VTBL_ENTRY _ZTI7S3533C5[];
extern  VTBL_ENTRY _ZTV7S3533C5[];
static Base_Class bases_S3533C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3533C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3533C6,    ABISELECT(304,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3533C5,    ABISELECT(304,188), //bcp->offset
    28, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3533C3[];
extern void _ZN7S3533C42v7Ev();
extern void _ZN7S3533C42v8Ev();
extern void _ZN7S3533C42v9Ev();
extern void _ZN7S3533C43v10Ev();
extern void _ZN7S3533C43v11Ev();
extern void _ZN7S3533C43v12Ev();
extern void _ZN7S3533C43v13Ev();
extern void _ZN7S3533C43v14Ev();
extern void _ZN7S3533C43v15Ev();
extern void _ZN7S3533C33v22Ev();
extern void _ZN7S3533C33v23Ev();
extern void _ZN7S3533C33v24Ev();
extern void _ZN7S3533C33v25Ev();
extern void _ZN7S3533C3D1Ev();
extern void _ZN7S3533C3D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S3533C3D1Ev,_ZTv0_n12_N7S3533C3D1Ev)();
extern void ABISELECT(_ZThn304_N7S3533C3D1Ev,_ZThn188_N7S3533C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3533C3D0Ev,_ZTv0_n12_N7S3533C3D0Ev)();
extern void ABISELECT(_ZThn304_N7S3533C3D0Ev,_ZThn188_N7S3533C3D0Ev)() __attribute__((weak));
extern void _ZN7S3533C63v16Ev();
extern void _ZN7S3533C63v17Ev();
extern void _ZN7S3533C63v18Ev();
extern void _ZN7S3533C53v19Ev();
extern void _ZN7S3533C53v20Ev();
extern void _ZN7S3533C53v21Ev();
static  VTBL_ENTRY vtc_S3533C3[] = {
  ABISELECT(304,188),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3533C3[0]),
  (VTBL_ENTRY)&_ZN7S3533C42v7Ev,
  (VTBL_ENTRY)&_ZN7S3533C42v8Ev,
  (VTBL_ENTRY)&_ZN7S3533C42v9Ev,
  (VTBL_ENTRY)&_ZN7S3533C43v10Ev,
  (VTBL_ENTRY)&_ZN7S3533C43v11Ev,
  (VTBL_ENTRY)&_ZN7S3533C43v12Ev,
  (VTBL_ENTRY)&_ZN7S3533C43v13Ev,
  (VTBL_ENTRY)&_ZN7S3533C43v14Ev,
  (VTBL_ENTRY)&_ZN7S3533C43v15Ev,
  (VTBL_ENTRY)&_ZN7S3533C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3533C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3533C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3533C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3533C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3533C3D0Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-304,-188),
  ABISELECT(-304,-188),
  (VTBL_ENTRY)&(_ZTI7S3533C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3533C3D1Ev,_ZTv0_n12_N7S3533C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3533C3D0Ev,_ZTv0_n12_N7S3533C3D0Ev),
  (VTBL_ENTRY)&_ZN7S3533C63v16Ev,
  (VTBL_ENTRY)&_ZN7S3533C63v17Ev,
  (VTBL_ENTRY)&_ZN7S3533C63v18Ev,
  (VTBL_ENTRY)&_ZN7S3533C53v19Ev,
  (VTBL_ENTRY)&_ZN7S3533C53v20Ev,
  (VTBL_ENTRY)&_ZN7S3533C53v21Ev,
};
extern VTBL_ENTRY _ZTV7S3533C3[];
static  VTT_ENTRY vtt_S3533C3[] = {
  {&(_ZTV7S3533C3[13]),  13,45},
  {&(_ZTV7S3533C3[13]),  13,45},
  {&(_ZTV7S3533C3[37]),  37,45},
};
extern VTBL_ENTRY _ZTI7S3533C3[];
extern  VTBL_ENTRY _ZTV7S3533C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3533C3[];
static VTBL_ENTRY alt_thunk_names93[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3533C3D0Ev,_ZTv0_n12_N7S3533C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N7S3533C3D0Ev,_ZThn188_N7S3533C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3533C3D1Ev,_ZTv0_n12_N7S3533C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N7S3533C3D1Ev,_ZThn188_N7S3533C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3533C3 = {  "S3533C3", // class name
  bases_S3533C3, 3,
  &(vtc_S3533C3[0]), // expected_vtbl_contents
  &(vtt_S3533C3[0]), // expected_vtt_contents
  ABISELECT(368,224), // object size
  NSPAIRA(_ZTI7S3533C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3533C3),45, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3533C3),3, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names93,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3533C2  : S3533C3 , S3533C5 {
  int s3533c2f0;
  virtual  ~S3533C2(); // _ZN7S3533C2D2Ev
  virtual void  v26(); // _ZN7S3533C23v26Ev
  virtual void  v27(); // _ZN7S3533C23v27Ev
  virtual void  v28(); // _ZN7S3533C23v28Ev
  virtual void  v29(); // _ZN7S3533C23v29Ev
  virtual void  v30(); // _ZN7S3533C23v30Ev
  virtual void  v31(); // _ZN7S3533C23v31Ev
  virtual void  v32(); // _ZN7S3533C23v32Ev
  virtual void  v33(); // _ZN7S3533C23v33Ev
  virtual void  v34(); // _ZN7S3533C23v34Ev
  S3533C2(); // tgen
};
//SIG(-1 S3533C2) C1{ BC2{ VBC3{ v10 v11 v12 v13 v14 v15 v16 v17 v18} VBC4{ BC5{ vd v19 v20 v21 Fi FL} vd v22 v23 v24 Fi FC5} v25 v26 v27 v28 FC4[3] Fi Fp[8] Fi FD[3]} BC4 vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fi}


 S3533C2 ::~S3533C2(){ note_dtor("S3533C2", this);}
void  S3533C2 ::v26(){vfunc_called(this, "_ZN7S3533C23v26Ev");}
void  S3533C2 ::v27(){vfunc_called(this, "_ZN7S3533C23v27Ev");}
void  S3533C2 ::v28(){vfunc_called(this, "_ZN7S3533C23v28Ev");}
void  S3533C2 ::v29(){vfunc_called(this, "_ZN7S3533C23v29Ev");}
void  S3533C2 ::v30(){vfunc_called(this, "_ZN7S3533C23v30Ev");}
void  S3533C2 ::v31(){vfunc_called(this, "_ZN7S3533C23v31Ev");}
void  S3533C2 ::v32(){vfunc_called(this, "_ZN7S3533C23v32Ev");}
void  S3533C2 ::v33(){vfunc_called(this, "_ZN7S3533C23v33Ev");}
void  S3533C2 ::v34(){vfunc_called(this, "_ZN7S3533C23v34Ev");}
S3533C2 ::S3533C2(){ note_ctor("S3533C2", this);} // tgen

static void Test_S3533C2()
{
  extern Class_Descriptor cd_S3533C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(28,67)];
    init_test(&cd_S3533C2, buf);
    S3533C2 *dp, &lv = *(dp=new (buf) S3533C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(432,264), "sizeof(S3533C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3533C2)");
    check_base_class_offset(lv, (S3533C4*)(S3533C3*), 0, "S3533C2");
    /*is_ambiguous_... S3533C2::S3533C5 */ AMB_check_base_class_offset(lv, (S3533C6*)(S3533C5*), ABISELECT(368,228), "S3533C2");
    check_base_class_offset(lv, (S3533C5*)(S3533C3*), ABISELECT(368,228), "S3533C2");
    check_base_class_offset(lv, (S3533C3*), 0, "S3533C2");
    /*is_ambiguous_... S3533C2::S3533C5 */ AMB_check_base_class_offset(lv, (S3533C6*)(S3533C5*), ABISELECT(304,188), "S3533C2");
    /*is_ambiguous_... S3533C2::S3533C5 */ AMB_check_base_class_offset(lv, (S3533C5*), ABISELECT(304,188), "S3533C2");
    check_field_offset(lv, s3533c2f0, ABISELECT(360,224), "S3533C2.s3533c2f0");
    test_class_info(&lv, &cd_S3533C2);
    dp->~S3533C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3533C2(Test_S3533C2, "S3533C2", ABISELECT(432,264));

#else // __cplusplus

extern void _ZN7S3533C2C1Ev();
extern void _ZN7S3533C2D2Ev();
Name_Map name_map_S3533C2[] = {
  NSPAIR(_ZN7S3533C2C1Ev),
  NSPAIR(_ZN7S3533C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3533C4;
extern VTBL_ENTRY _ZTI7S3533C4[];
extern  VTBL_ENTRY _ZTV7S3533C4[];
extern Class_Descriptor cd_S3533C6;
extern VTBL_ENTRY _ZTI7S3533C6[];
extern  VTBL_ENTRY _ZTV7S3533C6[];
extern Class_Descriptor cd_S3533C5;
extern VTBL_ENTRY _ZTI7S3533C5[];
extern  VTBL_ENTRY _ZTV7S3533C5[];
extern Class_Descriptor cd_S3533C3;
extern VTBL_ENTRY _ZTI7S3533C3[];
extern  VTBL_ENTRY _ZTV7S3533C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3533C3[];
extern Class_Descriptor cd_S3533C6;
extern VTBL_ENTRY _ZTI7S3533C6[];
extern  VTBL_ENTRY _ZTV7S3533C6[];
extern Class_Descriptor cd_S3533C5;
extern VTBL_ENTRY _ZTI7S3533C5[];
extern  VTBL_ENTRY _ZTV7S3533C5[];
static Base_Class bases_S3533C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3533C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3533C6,    ABISELECT(368,228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3533C5,    ABISELECT(368,228), //bcp->offset
    47, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3533C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3533C6,    ABISELECT(304,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3533C5,    ABISELECT(304,188), //bcp->offset
    37, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3533C2[];
extern void _ZN7S3533C42v7Ev();
extern void _ZN7S3533C42v8Ev();
extern void _ZN7S3533C42v9Ev();
extern void _ZN7S3533C43v10Ev();
extern void _ZN7S3533C43v11Ev();
extern void _ZN7S3533C43v12Ev();
extern void _ZN7S3533C43v13Ev();
extern void _ZN7S3533C43v14Ev();
extern void _ZN7S3533C43v15Ev();
extern void _ZN7S3533C33v22Ev();
extern void _ZN7S3533C33v23Ev();
extern void _ZN7S3533C33v24Ev();
extern void _ZN7S3533C33v25Ev();
extern void _ZN7S3533C2D1Ev();
extern void _ZN7S3533C2D0Ev();
extern void _ZN7S3533C23v26Ev();
extern void _ZN7S3533C23v27Ev();
extern void _ZN7S3533C23v28Ev();
extern void _ZN7S3533C23v29Ev();
extern void _ZN7S3533C23v30Ev();
extern void _ZN7S3533C23v31Ev();
extern void _ZN7S3533C23v32Ev();
extern void _ZN7S3533C23v33Ev();
extern void _ZN7S3533C23v34Ev();
extern void ABISELECT(_ZThn304_N7S3533C2D1Ev,_ZThn188_N7S3533C2D1Ev)();
extern void ABISELECT(_ZThn304_N7S3533C2D0Ev,_ZThn188_N7S3533C2D0Ev)();
extern void _ZN7S3533C63v16Ev();
extern void _ZN7S3533C63v17Ev();
extern void _ZN7S3533C63v18Ev();
extern void _ZN7S3533C53v19Ev();
extern void _ZN7S3533C53v20Ev();
extern void _ZN7S3533C53v21Ev();
extern void ABISELECT(_ZTv0_n24_N7S3533C2D1Ev,_ZTv0_n12_N7S3533C2D1Ev)();
extern void ABISELECT(_ZThn368_N7S3533C2D1Ev,_ZThn228_N7S3533C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3533C2D0Ev,_ZTv0_n12_N7S3533C2D0Ev)();
extern void ABISELECT(_ZThn368_N7S3533C2D0Ev,_ZThn228_N7S3533C2D0Ev)() __attribute__((weak));
extern void _ZN7S3533C63v16Ev();
extern void _ZN7S3533C63v17Ev();
extern void _ZN7S3533C63v18Ev();
extern void _ZN7S3533C53v19Ev();
extern void _ZN7S3533C53v20Ev();
extern void _ZN7S3533C53v21Ev();
static  VTBL_ENTRY vtc_S3533C2[] = {
  ABISELECT(368,228),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3533C2[0]),
  (VTBL_ENTRY)&_ZN7S3533C42v7Ev,
  (VTBL_ENTRY)&_ZN7S3533C42v8Ev,
  (VTBL_ENTRY)&_ZN7S3533C42v9Ev,
  (VTBL_ENTRY)&_ZN7S3533C43v10Ev,
  (VTBL_ENTRY)&_ZN7S3533C43v11Ev,
  (VTBL_ENTRY)&_ZN7S3533C43v12Ev,
  (VTBL_ENTRY)&_ZN7S3533C43v13Ev,
  (VTBL_ENTRY)&_ZN7S3533C43v14Ev,
  (VTBL_ENTRY)&_ZN7S3533C43v15Ev,
  (VTBL_ENTRY)&_ZN7S3533C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3533C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3533C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3533C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3533C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3533C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3533C23v26Ev,
  (VTBL_ENTRY)&_ZN7S3533C23v27Ev,
  (VTBL_ENTRY)&_ZN7S3533C23v28Ev,
  (VTBL_ENTRY)&_ZN7S3533C23v29Ev,
  (VTBL_ENTRY)&_ZN7S3533C23v30Ev,
  (VTBL_ENTRY)&_ZN7S3533C23v31Ev,
  (VTBL_ENTRY)&_ZN7S3533C23v32Ev,
  (VTBL_ENTRY)&_ZN7S3533C23v33Ev,
  (VTBL_ENTRY)&_ZN7S3533C23v34Ev,
  ABISELECT(-304,-188),
  (VTBL_ENTRY)&(_ZTI7S3533C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn304_N7S3533C2D1Ev,_ZThn188_N7S3533C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn304_N7S3533C2D0Ev,_ZThn188_N7S3533C2D0Ev),
  (VTBL_ENTRY)&_ZN7S3533C63v16Ev,
  (VTBL_ENTRY)&_ZN7S3533C63v17Ev,
  (VTBL_ENTRY)&_ZN7S3533C63v18Ev,
  (VTBL_ENTRY)&_ZN7S3533C53v19Ev,
  (VTBL_ENTRY)&_ZN7S3533C53v20Ev,
  (VTBL_ENTRY)&_ZN7S3533C53v21Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-228),
  ABISELECT(-368,-228),
  (VTBL_ENTRY)&(_ZTI7S3533C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3533C2D1Ev,_ZTv0_n12_N7S3533C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3533C2D0Ev,_ZTv0_n12_N7S3533C2D0Ev),
  (VTBL_ENTRY)&_ZN7S3533C63v16Ev,
  (VTBL_ENTRY)&_ZN7S3533C63v17Ev,
  (VTBL_ENTRY)&_ZN7S3533C63v18Ev,
  (VTBL_ENTRY)&_ZN7S3533C53v19Ev,
  (VTBL_ENTRY)&_ZN7S3533C53v20Ev,
  (VTBL_ENTRY)&_ZN7S3533C53v21Ev,
};
extern VTBL_ENTRY _ZTV7S3533C2[];
extern void _ZN7S3533C42v7Ev();
extern void _ZN7S3533C42v8Ev();
extern void _ZN7S3533C42v9Ev();
extern void _ZN7S3533C43v10Ev();
extern void _ZN7S3533C43v11Ev();
extern void _ZN7S3533C43v12Ev();
extern void _ZN7S3533C43v13Ev();
extern void _ZN7S3533C43v14Ev();
extern void _ZN7S3533C43v15Ev();
extern void _ZN7S3533C33v22Ev();
extern void _ZN7S3533C33v23Ev();
extern void _ZN7S3533C33v24Ev();
extern void _ZN7S3533C33v25Ev();
extern void _ZN7S3533C3D1Ev();
extern void _ZN7S3533C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3533C3__7S3533C2[] = {
  ABISELECT(368,228),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3533C3[0]),
  (VTBL_ENTRY)&_ZN7S3533C42v7Ev,
  (VTBL_ENTRY)&_ZN7S3533C42v8Ev,
  (VTBL_ENTRY)&_ZN7S3533C42v9Ev,
  (VTBL_ENTRY)&_ZN7S3533C43v10Ev,
  (VTBL_ENTRY)&_ZN7S3533C43v11Ev,
  (VTBL_ENTRY)&_ZN7S3533C43v12Ev,
  (VTBL_ENTRY)&_ZN7S3533C43v13Ev,
  (VTBL_ENTRY)&_ZN7S3533C43v14Ev,
  (VTBL_ENTRY)&_ZN7S3533C43v15Ev,
  (VTBL_ENTRY)&_ZN7S3533C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3533C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3533C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3533C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3533C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3533C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3533C3D1Ev,_ZTv0_n12_N7S3533C3D1Ev)();
extern void ABISELECT(_ZThn368_N7S3533C3D1Ev,_ZThn228_N7S3533C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3533C3D0Ev,_ZTv0_n12_N7S3533C3D0Ev)();
extern void ABISELECT(_ZThn368_N7S3533C3D0Ev,_ZThn228_N7S3533C3D0Ev)() __attribute__((weak));
extern void _ZN7S3533C63v16Ev();
extern void _ZN7S3533C63v17Ev();
extern void _ZN7S3533C63v18Ev();
extern void _ZN7S3533C53v19Ev();
extern void _ZN7S3533C53v20Ev();
extern void _ZN7S3533C53v21Ev();
static  VTBL_ENTRY _tg__ZTV7S3533C5__7S3533C3__7S3533C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-368,-228),
  ABISELECT(-368,-228),
  (VTBL_ENTRY)&(_ZTI7S3533C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3533C3D1Ev,_ZTv0_n12_N7S3533C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3533C3D0Ev,_ZTv0_n12_N7S3533C3D0Ev),
  (VTBL_ENTRY)&_ZN7S3533C63v16Ev,
  (VTBL_ENTRY)&_ZN7S3533C63v17Ev,
  (VTBL_ENTRY)&_ZN7S3533C63v18Ev,
  (VTBL_ENTRY)&_ZN7S3533C53v19Ev,
  (VTBL_ENTRY)&_ZN7S3533C53v20Ev,
  (VTBL_ENTRY)&_ZN7S3533C53v21Ev,
};
static  VTT_ENTRY vtt_S3533C2[] = {
  {&(_ZTV7S3533C2[13]),  13,64},
  {&(_tg__ZTV7S3533C3__7S3533C2[13]),  13,28},
  {&(_tg__ZTV7S3533C3__7S3533C2[13]),  13,28},
  {&(_tg__ZTV7S3533C5__7S3533C3__7S3533C2[9]),  9,17},
  {&(_ZTV7S3533C2[13]),  13,64},
  {&(_ZTV7S3533C2[56]),  56,64},
};
extern VTBL_ENTRY _ZTI7S3533C2[];
extern  VTBL_ENTRY _ZTV7S3533C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3533C2[];
static VTBL_ENTRY alt_thunk_names94[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3533C3D0Ev,_ZTv0_n12_N7S3533C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S3533C3D0Ev,_ZThn228_N7S3533C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3533C3D1Ev,_ZTv0_n12_N7S3533C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S3533C3D1Ev,_ZThn228_N7S3533C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3533C2D0Ev,_ZTv0_n12_N7S3533C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S3533C2D0Ev,_ZThn228_N7S3533C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3533C2D1Ev,_ZTv0_n12_N7S3533C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S3533C2D1Ev,_ZThn228_N7S3533C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3533C2 = {  "S3533C2", // class name
  bases_S3533C2, 6,
  &(vtc_S3533C2[0]), // expected_vtbl_contents
  &(vtt_S3533C2[0]), // expected_vtt_contents
  ABISELECT(432,264), // object size
  NSPAIRA(_ZTI7S3533C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3533C2),64, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3533C2),6, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names94,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3533C1  : S3533C2 , S3533C6 {
  __tsi64 s3533c1f0[9];
  virtual  ~S3533C1(); // _ZN7S3533C1D2Ev
  virtual void  v1(); // _ZN7S3533C12v1Ev
  virtual void  v2(); // _ZN7S3533C12v2Ev
  virtual void  v3(); // _ZN7S3533C12v3Ev
  virtual void  v4(); // _ZN7S3533C12v4Ev
  virtual void  v5(); // _ZN7S3533C12v5Ev
  virtual void  v6(); // _ZN7S3533C12v6Ev
  S3533C1(); // tgen
};
//SIG(1 S3533C1) C1{ BC2{ BC3{ VBC4{ v7 v8 v9 v10 v11 v12 v13 v14 v15} VBC5{ BC6{ vd v16 v17 v18 Fi FL} vd v19 v20 v21 Fi FC6} v22 v23 v24 v25 FC5[3] Fi Fp[8] Fi FD[3]} BC5 vd v26 v27 v28 v29 v30 v31 v32 v33 v34 Fi} BC6 vd v1 v2 v3 v4 v5 v6 FL[9]}


 S3533C1 ::~S3533C1(){ note_dtor("S3533C1", this);}
void  S3533C1 ::v1(){vfunc_called(this, "_ZN7S3533C12v1Ev");}
void  S3533C1 ::v2(){vfunc_called(this, "_ZN7S3533C12v2Ev");}
void  S3533C1 ::v3(){vfunc_called(this, "_ZN7S3533C12v3Ev");}
void  S3533C1 ::v4(){vfunc_called(this, "_ZN7S3533C12v4Ev");}
void  S3533C1 ::v5(){vfunc_called(this, "_ZN7S3533C12v5Ev");}
void  S3533C1 ::v6(){vfunc_called(this, "_ZN7S3533C12v6Ev");}
S3533C1 ::S3533C1(){ note_ctor("S3533C1", this);} // tgen

static void Test_S3533C1()
{
  extern Class_Descriptor cd_S3533C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(34,89)];
    init_test(&cd_S3533C1, buf);
    S3533C1 *dp, &lv = *(dp=new (buf) S3533C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(528,352), "sizeof(S3533C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3533C1)");
    check_base_class_offset(lv, (S3533C4*)(S3533C3*)(S3533C2*), 0, "S3533C1");
    /*is_ambiguous_... S3533C1::S3533C5 */ AMB_check_base_class_offset(lv, (S3533C6*)(S3533C5*), ABISELECT(464,316), "S3533C1");
    check_base_class_offset(lv, (S3533C5*)(S3533C3*)(S3533C2*), ABISELECT(464,316), "S3533C1");
    check_base_class_offset(lv, (S3533C3*)(S3533C2*), 0, "S3533C1");
    /*is_ambiguous_... S3533C2::S3533C5 */ AMB_check_base_class_offset(lv, (S3533C6*)(S3533C5*)(S3533C2*), ABISELECT(304,188), "S3533C1");
    /*is_ambiguous_... S3533C2::S3533C5 */ AMB_check_base_class_offset(lv, (S3533C5*)(S3533C2*), ABISELECT(304,188), "S3533C1");
    check_base_class_offset(lv, (S3533C2*), 0, "S3533C1");
    /*is_ambiguous_... S3533C1::S3533C6 */ AMB_check_base_class_offset(lv, (S3533C6*), ABISELECT(368,228), "S3533C1");
    check_field_offset(lv, s3533c1f0, ABISELECT(392,244), "S3533C1.s3533c1f0");
    test_class_info(&lv, &cd_S3533C1);
    dp->~S3533C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3533C1(Test_S3533C1, "S3533C1", ABISELECT(528,352));

#else // __cplusplus

extern void _ZN7S3533C1C1Ev();
extern void _ZN7S3533C1D2Ev();
Name_Map name_map_S3533C1[] = {
  NSPAIR(_ZN7S3533C1C1Ev),
  NSPAIR(_ZN7S3533C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3533C4;
extern VTBL_ENTRY _ZTI7S3533C4[];
extern  VTBL_ENTRY _ZTV7S3533C4[];
extern Class_Descriptor cd_S3533C6;
extern VTBL_ENTRY _ZTI7S3533C6[];
extern  VTBL_ENTRY _ZTV7S3533C6[];
extern Class_Descriptor cd_S3533C5;
extern VTBL_ENTRY _ZTI7S3533C5[];
extern  VTBL_ENTRY _ZTV7S3533C5[];
extern Class_Descriptor cd_S3533C3;
extern VTBL_ENTRY _ZTI7S3533C3[];
extern  VTBL_ENTRY _ZTV7S3533C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3533C3[];
extern Class_Descriptor cd_S3533C6;
extern VTBL_ENTRY _ZTI7S3533C6[];
extern  VTBL_ENTRY _ZTV7S3533C6[];
extern Class_Descriptor cd_S3533C5;
extern VTBL_ENTRY _ZTI7S3533C5[];
extern  VTBL_ENTRY _ZTV7S3533C5[];
extern Class_Descriptor cd_S3533C2;
extern VTBL_ENTRY _ZTI7S3533C2[];
extern  VTBL_ENTRY _ZTV7S3533C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3533C2[];
extern Class_Descriptor cd_S3533C6;
extern VTBL_ENTRY _ZTI7S3533C6[];
extern  VTBL_ENTRY _ZTV7S3533C6[];
static Base_Class bases_S3533C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3533C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3533C6,    ABISELECT(464,316), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3533C5,    ABISELECT(464,316), //bcp->offset
    60, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3533C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3533C6,    ABISELECT(304,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3533C5,    ABISELECT(304,188), //bcp->offset
    43, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3533C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3533C6,    ABISELECT(368,228), //bcp->offset
    53, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3533C1[];
extern void _ZN7S3533C42v7Ev();
extern void _ZN7S3533C42v8Ev();
extern void _ZN7S3533C42v9Ev();
extern void _ZN7S3533C43v10Ev();
extern void _ZN7S3533C43v11Ev();
extern void _ZN7S3533C43v12Ev();
extern void _ZN7S3533C43v13Ev();
extern void _ZN7S3533C43v14Ev();
extern void _ZN7S3533C43v15Ev();
extern void _ZN7S3533C33v22Ev();
extern void _ZN7S3533C33v23Ev();
extern void _ZN7S3533C33v24Ev();
extern void _ZN7S3533C33v25Ev();
extern void _ZN7S3533C1D1Ev();
extern void _ZN7S3533C1D0Ev();
extern void _ZN7S3533C23v26Ev();
extern void _ZN7S3533C23v27Ev();
extern void _ZN7S3533C23v28Ev();
extern void _ZN7S3533C23v29Ev();
extern void _ZN7S3533C23v30Ev();
extern void _ZN7S3533C23v31Ev();
extern void _ZN7S3533C23v32Ev();
extern void _ZN7S3533C23v33Ev();
extern void _ZN7S3533C23v34Ev();
extern void _ZN7S3533C12v1Ev();
extern void _ZN7S3533C12v2Ev();
extern void _ZN7S3533C12v3Ev();
extern void _ZN7S3533C12v4Ev();
extern void _ZN7S3533C12v5Ev();
extern void _ZN7S3533C12v6Ev();
extern void ABISELECT(_ZThn304_N7S3533C1D1Ev,_ZThn188_N7S3533C1D1Ev)();
extern void ABISELECT(_ZThn304_N7S3533C1D0Ev,_ZThn188_N7S3533C1D0Ev)();
extern void _ZN7S3533C63v16Ev();
extern void _ZN7S3533C63v17Ev();
extern void _ZN7S3533C63v18Ev();
extern void _ZN7S3533C53v19Ev();
extern void _ZN7S3533C53v20Ev();
extern void _ZN7S3533C53v21Ev();
extern void ABISELECT(_ZThn368_N7S3533C1D1Ev,_ZThn228_N7S3533C1D1Ev)();
extern void ABISELECT(_ZThn368_N7S3533C1D0Ev,_ZThn228_N7S3533C1D0Ev)();
extern void _ZN7S3533C63v16Ev();
extern void _ZN7S3533C63v17Ev();
extern void _ZN7S3533C63v18Ev();
extern void ABISELECT(_ZTv0_n24_N7S3533C1D1Ev,_ZTv0_n12_N7S3533C1D1Ev)();
extern void ABISELECT(_ZThn464_N7S3533C1D1Ev,_ZThn316_N7S3533C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3533C1D0Ev,_ZTv0_n12_N7S3533C1D0Ev)();
extern void ABISELECT(_ZThn464_N7S3533C1D0Ev,_ZThn316_N7S3533C1D0Ev)() __attribute__((weak));
extern void _ZN7S3533C63v16Ev();
extern void _ZN7S3533C63v17Ev();
extern void _ZN7S3533C63v18Ev();
extern void _ZN7S3533C53v19Ev();
extern void _ZN7S3533C53v20Ev();
extern void _ZN7S3533C53v21Ev();
static  VTBL_ENTRY vtc_S3533C1[] = {
  ABISELECT(464,316),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3533C1[0]),
  (VTBL_ENTRY)&_ZN7S3533C42v7Ev,
  (VTBL_ENTRY)&_ZN7S3533C42v8Ev,
  (VTBL_ENTRY)&_ZN7S3533C42v9Ev,
  (VTBL_ENTRY)&_ZN7S3533C43v10Ev,
  (VTBL_ENTRY)&_ZN7S3533C43v11Ev,
  (VTBL_ENTRY)&_ZN7S3533C43v12Ev,
  (VTBL_ENTRY)&_ZN7S3533C43v13Ev,
  (VTBL_ENTRY)&_ZN7S3533C43v14Ev,
  (VTBL_ENTRY)&_ZN7S3533C43v15Ev,
  (VTBL_ENTRY)&_ZN7S3533C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3533C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3533C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3533C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3533C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3533C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3533C23v26Ev,
  (VTBL_ENTRY)&_ZN7S3533C23v27Ev,
  (VTBL_ENTRY)&_ZN7S3533C23v28Ev,
  (VTBL_ENTRY)&_ZN7S3533C23v29Ev,
  (VTBL_ENTRY)&_ZN7S3533C23v30Ev,
  (VTBL_ENTRY)&_ZN7S3533C23v31Ev,
  (VTBL_ENTRY)&_ZN7S3533C23v32Ev,
  (VTBL_ENTRY)&_ZN7S3533C23v33Ev,
  (VTBL_ENTRY)&_ZN7S3533C23v34Ev,
  (VTBL_ENTRY)&_ZN7S3533C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3533C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3533C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3533C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3533C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3533C12v6Ev,
  ABISELECT(-304,-188),
  (VTBL_ENTRY)&(_ZTI7S3533C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn304_N7S3533C1D1Ev,_ZThn188_N7S3533C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn304_N7S3533C1D0Ev,_ZThn188_N7S3533C1D0Ev),
  (VTBL_ENTRY)&_ZN7S3533C63v16Ev,
  (VTBL_ENTRY)&_ZN7S3533C63v17Ev,
  (VTBL_ENTRY)&_ZN7S3533C63v18Ev,
  (VTBL_ENTRY)&_ZN7S3533C53v19Ev,
  (VTBL_ENTRY)&_ZN7S3533C53v20Ev,
  (VTBL_ENTRY)&_ZN7S3533C53v21Ev,
  ABISELECT(-368,-228),
  (VTBL_ENTRY)&(_ZTI7S3533C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N7S3533C1D1Ev,_ZThn228_N7S3533C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N7S3533C1D0Ev,_ZThn228_N7S3533C1D0Ev),
  (VTBL_ENTRY)&_ZN7S3533C63v16Ev,
  (VTBL_ENTRY)&_ZN7S3533C63v17Ev,
  (VTBL_ENTRY)&_ZN7S3533C63v18Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-464,-316),
  ABISELECT(-464,-316),
  (VTBL_ENTRY)&(_ZTI7S3533C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3533C1D1Ev,_ZTv0_n12_N7S3533C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3533C1D0Ev,_ZTv0_n12_N7S3533C1D0Ev),
  (VTBL_ENTRY)&_ZN7S3533C63v16Ev,
  (VTBL_ENTRY)&_ZN7S3533C63v17Ev,
  (VTBL_ENTRY)&_ZN7S3533C63v18Ev,
  (VTBL_ENTRY)&_ZN7S3533C53v19Ev,
  (VTBL_ENTRY)&_ZN7S3533C53v20Ev,
  (VTBL_ENTRY)&_ZN7S3533C53v21Ev,
};
extern VTBL_ENTRY _ZTV7S3533C1[];
extern void _ZN7S3533C42v7Ev();
extern void _ZN7S3533C42v8Ev();
extern void _ZN7S3533C42v9Ev();
extern void _ZN7S3533C43v10Ev();
extern void _ZN7S3533C43v11Ev();
extern void _ZN7S3533C43v12Ev();
extern void _ZN7S3533C43v13Ev();
extern void _ZN7S3533C43v14Ev();
extern void _ZN7S3533C43v15Ev();
extern void _ZN7S3533C33v22Ev();
extern void _ZN7S3533C33v23Ev();
extern void _ZN7S3533C33v24Ev();
extern void _ZN7S3533C33v25Ev();
extern void _ZN7S3533C2D1Ev();
extern void _ZN7S3533C2D0Ev();
extern void _ZN7S3533C23v26Ev();
extern void _ZN7S3533C23v27Ev();
extern void _ZN7S3533C23v28Ev();
extern void _ZN7S3533C23v29Ev();
extern void _ZN7S3533C23v30Ev();
extern void _ZN7S3533C23v31Ev();
extern void _ZN7S3533C23v32Ev();
extern void _ZN7S3533C23v33Ev();
extern void _ZN7S3533C23v34Ev();
static  VTBL_ENTRY _tg__ZTV7S3533C2__7S3533C1[] = {
  ABISELECT(464,316),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3533C2[0]),
  (VTBL_ENTRY)&_ZN7S3533C42v7Ev,
  (VTBL_ENTRY)&_ZN7S3533C42v8Ev,
  (VTBL_ENTRY)&_ZN7S3533C42v9Ev,
  (VTBL_ENTRY)&_ZN7S3533C43v10Ev,
  (VTBL_ENTRY)&_ZN7S3533C43v11Ev,
  (VTBL_ENTRY)&_ZN7S3533C43v12Ev,
  (VTBL_ENTRY)&_ZN7S3533C43v13Ev,
  (VTBL_ENTRY)&_ZN7S3533C43v14Ev,
  (VTBL_ENTRY)&_ZN7S3533C43v15Ev,
  (VTBL_ENTRY)&_ZN7S3533C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3533C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3533C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3533C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3533C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3533C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3533C23v26Ev,
  (VTBL_ENTRY)&_ZN7S3533C23v27Ev,
  (VTBL_ENTRY)&_ZN7S3533C23v28Ev,
  (VTBL_ENTRY)&_ZN7S3533C23v29Ev,
  (VTBL_ENTRY)&_ZN7S3533C23v30Ev,
  (VTBL_ENTRY)&_ZN7S3533C23v31Ev,
  (VTBL_ENTRY)&_ZN7S3533C23v32Ev,
  (VTBL_ENTRY)&_ZN7S3533C23v33Ev,
  (VTBL_ENTRY)&_ZN7S3533C23v34Ev,
};
extern void _ZN7S3533C42v7Ev();
extern void _ZN7S3533C42v8Ev();
extern void _ZN7S3533C42v9Ev();
extern void _ZN7S3533C43v10Ev();
extern void _ZN7S3533C43v11Ev();
extern void _ZN7S3533C43v12Ev();
extern void _ZN7S3533C43v13Ev();
extern void _ZN7S3533C43v14Ev();
extern void _ZN7S3533C43v15Ev();
extern void _ZN7S3533C33v22Ev();
extern void _ZN7S3533C33v23Ev();
extern void _ZN7S3533C33v24Ev();
extern void _ZN7S3533C33v25Ev();
extern void _ZN7S3533C3D1Ev();
extern void _ZN7S3533C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3533C37S3533C2__7S3533C1[] = {
  ABISELECT(464,316),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3533C3[0]),
  (VTBL_ENTRY)&_ZN7S3533C42v7Ev,
  (VTBL_ENTRY)&_ZN7S3533C42v8Ev,
  (VTBL_ENTRY)&_ZN7S3533C42v9Ev,
  (VTBL_ENTRY)&_ZN7S3533C43v10Ev,
  (VTBL_ENTRY)&_ZN7S3533C43v11Ev,
  (VTBL_ENTRY)&_ZN7S3533C43v12Ev,
  (VTBL_ENTRY)&_ZN7S3533C43v13Ev,
  (VTBL_ENTRY)&_ZN7S3533C43v14Ev,
  (VTBL_ENTRY)&_ZN7S3533C43v15Ev,
  (VTBL_ENTRY)&_ZN7S3533C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3533C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3533C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3533C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3533C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3533C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3533C3D1Ev,_ZTv0_n12_N7S3533C3D1Ev)();
extern void ABISELECT(_ZThn464_N7S3533C3D1Ev,_ZThn316_N7S3533C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3533C3D0Ev,_ZTv0_n12_N7S3533C3D0Ev)();
extern void ABISELECT(_ZThn464_N7S3533C3D0Ev,_ZThn316_N7S3533C3D0Ev)() __attribute__((weak));
extern void _ZN7S3533C63v16Ev();
extern void _ZN7S3533C63v17Ev();
extern void _ZN7S3533C63v18Ev();
extern void _ZN7S3533C53v19Ev();
extern void _ZN7S3533C53v20Ev();
extern void _ZN7S3533C53v21Ev();
static  VTBL_ENTRY _tg__ZTV7S3533C5__7S3533C37S3533C2__7S3533C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-464,-316),
  ABISELECT(-464,-316),
  (VTBL_ENTRY)&(_ZTI7S3533C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3533C3D1Ev,_ZTv0_n12_N7S3533C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3533C3D0Ev,_ZTv0_n12_N7S3533C3D0Ev),
  (VTBL_ENTRY)&_ZN7S3533C63v16Ev,
  (VTBL_ENTRY)&_ZN7S3533C63v17Ev,
  (VTBL_ENTRY)&_ZN7S3533C63v18Ev,
  (VTBL_ENTRY)&_ZN7S3533C53v19Ev,
  (VTBL_ENTRY)&_ZN7S3533C53v20Ev,
  (VTBL_ENTRY)&_ZN7S3533C53v21Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3533C2D1Ev,_ZTv0_n12_N7S3533C2D1Ev)();
extern void ABISELECT(_ZThn464_N7S3533C2D1Ev,_ZThn316_N7S3533C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3533C2D0Ev,_ZTv0_n12_N7S3533C2D0Ev)();
extern void ABISELECT(_ZThn464_N7S3533C2D0Ev,_ZThn316_N7S3533C2D0Ev)() __attribute__((weak));
extern void _ZN7S3533C63v16Ev();
extern void _ZN7S3533C63v17Ev();
extern void _ZN7S3533C63v18Ev();
extern void _ZN7S3533C53v19Ev();
extern void _ZN7S3533C53v20Ev();
extern void _ZN7S3533C53v21Ev();
static  VTBL_ENTRY _tg__ZTV7S3533C5__7S3533C2__7S3533C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-464,-316),
  ABISELECT(-464,-316),
  (VTBL_ENTRY)&(_ZTI7S3533C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3533C2D1Ev,_ZTv0_n12_N7S3533C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3533C2D0Ev,_ZTv0_n12_N7S3533C2D0Ev),
  (VTBL_ENTRY)&_ZN7S3533C63v16Ev,
  (VTBL_ENTRY)&_ZN7S3533C63v17Ev,
  (VTBL_ENTRY)&_ZN7S3533C63v18Ev,
  (VTBL_ENTRY)&_ZN7S3533C53v19Ev,
  (VTBL_ENTRY)&_ZN7S3533C53v20Ev,
  (VTBL_ENTRY)&_ZN7S3533C53v21Ev,
};
static  VTT_ENTRY vtt_S3533C1[] = {
  {&(_ZTV7S3533C1[13]),  13,77},
  {&(_tg__ZTV7S3533C2__7S3533C1[13]),  13,37},
  {&(_tg__ZTV7S3533C37S3533C2__7S3533C1[13]),  13,28},
  {&(_tg__ZTV7S3533C37S3533C2__7S3533C1[13]),  13,28},
  {&(_tg__ZTV7S3533C5__7S3533C37S3533C2__7S3533C1[9]),  9,17},
  {&(_tg__ZTV7S3533C2__7S3533C1[13]),  13,37},
  {&(_tg__ZTV7S3533C5__7S3533C2__7S3533C1[9]),  9,17},
  {&(_ZTV7S3533C1[13]),  13,77},
  {&(_ZTV7S3533C1[69]),  69,77},
};
extern VTBL_ENTRY _ZTI7S3533C1[];
extern  VTBL_ENTRY _ZTV7S3533C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3533C1[];
static VTBL_ENTRY alt_thunk_names95[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3533C2D0Ev,_ZTv0_n12_N7S3533C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S3533C2D0Ev,_ZThn316_N7S3533C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3533C2D1Ev,_ZTv0_n12_N7S3533C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S3533C2D1Ev,_ZThn316_N7S3533C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3533C3D0Ev,_ZTv0_n12_N7S3533C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S3533C3D0Ev,_ZThn316_N7S3533C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3533C3D1Ev,_ZTv0_n12_N7S3533C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S3533C3D1Ev,_ZThn316_N7S3533C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3533C1D0Ev,_ZTv0_n12_N7S3533C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S3533C1D0Ev,_ZThn316_N7S3533C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3533C1D1Ev,_ZTv0_n12_N7S3533C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S3533C1D1Ev,_ZThn316_N7S3533C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3533C1 = {  "S3533C1", // class name
  bases_S3533C1, 8,
  &(vtc_S3533C1[0]), // expected_vtbl_contents
  &(vtt_S3533C1[0]), // expected_vtt_contents
  ABISELECT(528,352), // object size
  NSPAIRA(_ZTI7S3533C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3533C1),77, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3533C1),9, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names95,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1708C3  : S1679C4_nt {
  virtual void  v7(); // _ZN7S1708C32v7Ev
  virtual void  v8(); // _ZN7S1708C32v8Ev
  virtual void  v9(); // _ZN7S1708C32v9Ev
  virtual void  v10(); // _ZN7S1708C33v10Ev
  virtual void  v11(); // _ZN7S1708C33v11Ev
  virtual void  v12(); // _ZN7S1708C33v12Ev
  virtual void  v13(); // _ZN7S1708C33v13Ev
  virtual void  v14(); // _ZN7S1708C33v14Ev
  virtual void  v15(); // _ZN7S1708C33v15Ev
  virtual void  v16(); // _ZN7S1708C33v16Ev
  virtual void  v17(); // _ZN7S1708C33v17Ev
  virtual void  v18(); // _ZN7S1708C33v18Ev
  ~S1708C3(); // tgen
  S1708C3(); // tgen
};
//SIG(-1 S1708C3) C1{ BC2{ vd m Fi} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


void  S1708C3 ::v7(){vfunc_called(this, "_ZN7S1708C32v7Ev");}
void  S1708C3 ::v8(){vfunc_called(this, "_ZN7S1708C32v8Ev");}
void  S1708C3 ::v9(){vfunc_called(this, "_ZN7S1708C32v9Ev");}
void  S1708C3 ::v10(){vfunc_called(this, "_ZN7S1708C33v10Ev");}
void  S1708C3 ::v11(){vfunc_called(this, "_ZN7S1708C33v11Ev");}
void  S1708C3 ::v12(){vfunc_called(this, "_ZN7S1708C33v12Ev");}
void  S1708C3 ::v13(){vfunc_called(this, "_ZN7S1708C33v13Ev");}
void  S1708C3 ::v14(){vfunc_called(this, "_ZN7S1708C33v14Ev");}
void  S1708C3 ::v15(){vfunc_called(this, "_ZN7S1708C33v15Ev");}
void  S1708C3 ::v16(){vfunc_called(this, "_ZN7S1708C33v16Ev");}
void  S1708C3 ::v17(){vfunc_called(this, "_ZN7S1708C33v17Ev");}
void  S1708C3 ::v18(){vfunc_called(this, "_ZN7S1708C33v18Ev");}
S1708C3 ::~S1708C3(){ note_dtor("S1708C3", this);} // tgen
S1708C3 ::S1708C3(){ note_ctor("S1708C3", this);} // tgen

static void Test_S1708C3()
{
  extern Class_Descriptor cd_S1708C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1708C3, buf);
    S1708C3 *dp, &lv = *(dp=new (buf) S1708C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1708C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1708C3)");
    check_base_class_offset(lv, (S1679C4_nt*), 0, "S1708C3");
    test_class_info(&lv, &cd_S1708C3);
    dp->~S1708C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1708C3(Test_S1708C3, "S1708C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S1708C3C1Ev();
extern void _ZN7S1708C3D1Ev();
Name_Map name_map_S1708C3[] = {
  NSPAIR(_ZN7S1708C3C1Ev),
  NSPAIR(_ZN7S1708C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
static Base_Class bases_S1708C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1708C3[];
extern void _ZN7S1708C3D1Ev();
extern void _ZN7S1708C3D0Ev();
extern void _ZN7S1708C32v7Ev();
extern void _ZN7S1708C32v8Ev();
extern void _ZN7S1708C32v9Ev();
extern void _ZN7S1708C33v10Ev();
extern void _ZN7S1708C33v11Ev();
extern void _ZN7S1708C33v12Ev();
extern void _ZN7S1708C33v13Ev();
extern void _ZN7S1708C33v14Ev();
extern void _ZN7S1708C33v15Ev();
extern void _ZN7S1708C33v16Ev();
extern void _ZN7S1708C33v17Ev();
extern void _ZN7S1708C33v18Ev();
static  VTBL_ENTRY vtc_S1708C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1708C3[0]),
  (VTBL_ENTRY)&_ZN7S1708C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1708C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1708C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1708C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1708C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1708C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1708C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1708C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1708C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1708C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1708C33v15Ev,
  (VTBL_ENTRY)&_ZN7S1708C33v16Ev,
  (VTBL_ENTRY)&_ZN7S1708C33v17Ev,
  (VTBL_ENTRY)&_ZN7S1708C33v18Ev,
};
extern VTBL_ENTRY _ZTI7S1708C3[];
extern  VTBL_ENTRY _ZTV7S1708C3[];
Class_Descriptor cd_S1708C3 = {  "S1708C3", // class name
  bases_S1708C3, 1,
  &(vtc_S1708C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S1708C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1708C3),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1708C2  : S1708C3 {
  ::S79C38_nt s1708c2f0;
  ::S5266C36 s1708c2f1;
  ::S1679C8_nt s1708c2f2;
  void *s1708c2f3[4];
  char s1708c2f4;
  __tsi64 s1708c2f5;
  int s1708c2f6;
  virtual  ~S1708C2(); // _ZN7S1708C2D1Ev
  virtual void  v19(); // _ZN7S1708C23v19Ev
  virtual void  v20(); // _ZN7S1708C23v20Ev
  virtual void  v21(); // _ZN7S1708C23v21Ev
  virtual void  v22(); // _ZN7S1708C23v22Ev
  virtual void  v23(); // _ZN7S1708C23v23Ev
  virtual void  v24(); // _ZN7S1708C23v24Ev
  virtual void  v25(); // _ZN7S1708C23v25Ev
  virtual void  v26(); // _ZN7S1708C23v26Ev
  virtual void  v27(); // _ZN7S1708C23v27Ev
  virtual void  v28(); // _ZN7S1708C23v28Ev
  virtual void  v29(); // _ZN7S1708C23v29Ev
  S1708C2(); // tgen
};
//SIG(-1 S1708C2) C1{ BC2{ BC3{ vd m Fi} v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 FC4{ m Fp[2]} FC5{ m Fp Fi[2] FC6{ m}} FC7{ m FC8{ m Fp Fi[2] FC6} Fp[2]} Fp[4] Fc FL Fi}


 S1708C2 ::~S1708C2(){ note_dtor("S1708C2", this);}
void  S1708C2 ::v19(){vfunc_called(this, "_ZN7S1708C23v19Ev");}
void  S1708C2 ::v20(){vfunc_called(this, "_ZN7S1708C23v20Ev");}
void  S1708C2 ::v21(){vfunc_called(this, "_ZN7S1708C23v21Ev");}
void  S1708C2 ::v22(){vfunc_called(this, "_ZN7S1708C23v22Ev");}
void  S1708C2 ::v23(){vfunc_called(this, "_ZN7S1708C23v23Ev");}
void  S1708C2 ::v24(){vfunc_called(this, "_ZN7S1708C23v24Ev");}
void  S1708C2 ::v25(){vfunc_called(this, "_ZN7S1708C23v25Ev");}
void  S1708C2 ::v26(){vfunc_called(this, "_ZN7S1708C23v26Ev");}
void  S1708C2 ::v27(){vfunc_called(this, "_ZN7S1708C23v27Ev");}
void  S1708C2 ::v28(){vfunc_called(this, "_ZN7S1708C23v28Ev");}
void  S1708C2 ::v29(){vfunc_called(this, "_ZN7S1708C23v29Ev");}
S1708C2 ::S1708C2(){ note_ctor("S1708C2", this);} // tgen

static void Test_S1708C2()
{
  extern Class_Descriptor cd_S1708C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,23)];
    init_test(&cd_S1708C2, buf);
    S1708C2 *dp, &lv = *(dp=new (buf) S1708C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,88), "sizeof(S1708C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1708C2)");
    check_base_class_offset(lv, (S1679C4_nt*)(S1708C3*), 0, "S1708C2");
    check_base_class_offset(lv, (S1708C3*), 0, "S1708C2");
    check_field_offset(lv, s1708c2f0, ABISELECT(16,8), "S1708C2.s1708c2f0");
    check_field_offset(lv, s1708c2f1, ABISELECT(32,16), "S1708C2.s1708c2f1");
    check_field_offset(lv, s1708c2f2, ABISELECT(56,32), "S1708C2.s1708c2f2");
    check_field_offset(lv, s1708c2f3, ABISELECT(96,56), "S1708C2.s1708c2f3");
    check_field_offset(lv, s1708c2f4, ABISELECT(128,72), "S1708C2.s1708c2f4");
    check_field_offset(lv, s1708c2f5, ABISELECT(136,76), "S1708C2.s1708c2f5");
    check_field_offset(lv, s1708c2f6, ABISELECT(144,84), "S1708C2.s1708c2f6");
    test_class_info(&lv, &cd_S1708C2);
    dp->~S1708C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1708C2(Test_S1708C2, "S1708C2", ABISELECT(152,88));

#else // __cplusplus

extern void _ZN7S1708C2C1Ev();
extern void _ZN7S1708C2D1Ev();
Name_Map name_map_S1708C2[] = {
  NSPAIR(_ZN7S1708C2C1Ev),
  NSPAIR(_ZN7S1708C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
extern Class_Descriptor cd_S1708C3;
extern VTBL_ENTRY _ZTI7S1708C3[];
extern  VTBL_ENTRY _ZTV7S1708C3[];
static Base_Class bases_S1708C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1708C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1708C2[];
extern void _ZN7S1708C2D1Ev();
extern void _ZN7S1708C2D0Ev();
extern void _ZN7S1708C32v7Ev();
extern void _ZN7S1708C32v8Ev();
extern void _ZN7S1708C32v9Ev();
extern void _ZN7S1708C33v10Ev();
extern void _ZN7S1708C33v11Ev();
extern void _ZN7S1708C33v12Ev();
extern void _ZN7S1708C33v13Ev();
extern void _ZN7S1708C33v14Ev();
extern void _ZN7S1708C33v15Ev();
extern void _ZN7S1708C33v16Ev();
extern void _ZN7S1708C33v17Ev();
extern void _ZN7S1708C33v18Ev();
extern void _ZN7S1708C23v19Ev();
extern void _ZN7S1708C23v20Ev();
extern void _ZN7S1708C23v21Ev();
extern void _ZN7S1708C23v22Ev();
extern void _ZN7S1708C23v23Ev();
extern void _ZN7S1708C23v24Ev();
extern void _ZN7S1708C23v25Ev();
extern void _ZN7S1708C23v26Ev();
extern void _ZN7S1708C23v27Ev();
extern void _ZN7S1708C23v28Ev();
extern void _ZN7S1708C23v29Ev();
static  VTBL_ENTRY vtc_S1708C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1708C2[0]),
  (VTBL_ENTRY)&_ZN7S1708C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1708C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1708C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1708C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1708C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1708C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1708C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1708C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1708C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1708C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1708C33v15Ev,
  (VTBL_ENTRY)&_ZN7S1708C33v16Ev,
  (VTBL_ENTRY)&_ZN7S1708C33v17Ev,
  (VTBL_ENTRY)&_ZN7S1708C33v18Ev,
  (VTBL_ENTRY)&_ZN7S1708C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1708C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1708C23v21Ev,
  (VTBL_ENTRY)&_ZN7S1708C23v22Ev,
  (VTBL_ENTRY)&_ZN7S1708C23v23Ev,
  (VTBL_ENTRY)&_ZN7S1708C23v24Ev,
  (VTBL_ENTRY)&_ZN7S1708C23v25Ev,
  (VTBL_ENTRY)&_ZN7S1708C23v26Ev,
  (VTBL_ENTRY)&_ZN7S1708C23v27Ev,
  (VTBL_ENTRY)&_ZN7S1708C23v28Ev,
  (VTBL_ENTRY)&_ZN7S1708C23v29Ev,
};
extern VTBL_ENTRY _ZTI7S1708C2[];
extern  VTBL_ENTRY _ZTV7S1708C2[];
Class_Descriptor cd_S1708C2 = {  "S1708C2", // class name
  bases_S1708C2, 2,
  &(vtc_S1708C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(152,88), // object size
  NSPAIRA(_ZTI7S1708C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1708C2),27, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1708C1  : S1708C2 {
  virtual void  v1(); // _ZN7S1708C12v1Ev
  virtual void  v2(); // _ZN7S1708C12v2Ev
  virtual void  v3(); // _ZN7S1708C12v3Ev
  virtual void  v4(); // _ZN7S1708C12v4Ev
  virtual void  v5(); // _ZN7S1708C12v5Ev
  virtual void  v6(); // _ZN7S1708C12v6Ev
  ~S1708C1(); // tgen
  S1708C1(); // tgen
};
//SIG(1 S1708C1) C1{ BC2{ BC3{ BC4{ vd m Fi} v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18} vd v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 FC5{ m Fp[2]} FC6{ m Fp Fi[2] FC7{ m}} FC8{ m FC9{ m Fp Fi[2] FC7} Fp[2]} Fp[4] Fc FL Fi} v1 v2 v3 v4 v5 v6}


void  S1708C1 ::v1(){vfunc_called(this, "_ZN7S1708C12v1Ev");}
void  S1708C1 ::v2(){vfunc_called(this, "_ZN7S1708C12v2Ev");}
void  S1708C1 ::v3(){vfunc_called(this, "_ZN7S1708C12v3Ev");}
void  S1708C1 ::v4(){vfunc_called(this, "_ZN7S1708C12v4Ev");}
void  S1708C1 ::v5(){vfunc_called(this, "_ZN7S1708C12v5Ev");}
void  S1708C1 ::v6(){vfunc_called(this, "_ZN7S1708C12v6Ev");}
S1708C1 ::~S1708C1(){ note_dtor("S1708C1", this);} // tgen
S1708C1 ::S1708C1(){ note_ctor("S1708C1", this);} // tgen

static void Test_S1708C1()
{
  extern Class_Descriptor cd_S1708C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,23)];
    init_test(&cd_S1708C1, buf);
    S1708C1 *dp, &lv = *(dp=new (buf) S1708C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,88), "sizeof(S1708C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1708C1)");
    check_base_class_offset(lv, (S1679C4_nt*)(S1708C3*)(S1708C2*), 0, "S1708C1");
    check_base_class_offset(lv, (S1708C3*)(S1708C2*), 0, "S1708C1");
    check_base_class_offset(lv, (S1708C2*), 0, "S1708C1");
    test_class_info(&lv, &cd_S1708C1);
    dp->~S1708C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1708C1(Test_S1708C1, "S1708C1", ABISELECT(152,88));

#else // __cplusplus

extern void _ZN7S1708C1C1Ev();
extern void _ZN7S1708C1D1Ev();
Name_Map name_map_S1708C1[] = {
  NSPAIR(_ZN7S1708C1C1Ev),
  NSPAIR(_ZN7S1708C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
extern Class_Descriptor cd_S1708C3;
extern VTBL_ENTRY _ZTI7S1708C3[];
extern  VTBL_ENTRY _ZTV7S1708C3[];
extern Class_Descriptor cd_S1708C2;
extern VTBL_ENTRY _ZTI7S1708C2[];
extern  VTBL_ENTRY _ZTV7S1708C2[];
static Base_Class bases_S1708C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1708C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1708C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1708C1[];
extern void _ZN7S1708C1D1Ev();
extern void _ZN7S1708C1D0Ev();
extern void _ZN7S1708C32v7Ev();
extern void _ZN7S1708C32v8Ev();
extern void _ZN7S1708C32v9Ev();
extern void _ZN7S1708C33v10Ev();
extern void _ZN7S1708C33v11Ev();
extern void _ZN7S1708C33v12Ev();
extern void _ZN7S1708C33v13Ev();
extern void _ZN7S1708C33v14Ev();
extern void _ZN7S1708C33v15Ev();
extern void _ZN7S1708C33v16Ev();
extern void _ZN7S1708C33v17Ev();
extern void _ZN7S1708C33v18Ev();
extern void _ZN7S1708C23v19Ev();
extern void _ZN7S1708C23v20Ev();
extern void _ZN7S1708C23v21Ev();
extern void _ZN7S1708C23v22Ev();
extern void _ZN7S1708C23v23Ev();
extern void _ZN7S1708C23v24Ev();
extern void _ZN7S1708C23v25Ev();
extern void _ZN7S1708C23v26Ev();
extern void _ZN7S1708C23v27Ev();
extern void _ZN7S1708C23v28Ev();
extern void _ZN7S1708C23v29Ev();
extern void _ZN7S1708C12v1Ev();
extern void _ZN7S1708C12v2Ev();
extern void _ZN7S1708C12v3Ev();
extern void _ZN7S1708C12v4Ev();
extern void _ZN7S1708C12v5Ev();
extern void _ZN7S1708C12v6Ev();
static  VTBL_ENTRY vtc_S1708C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1708C1[0]),
  (VTBL_ENTRY)&_ZN7S1708C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1708C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1708C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1708C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1708C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1708C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1708C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1708C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1708C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1708C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1708C33v15Ev,
  (VTBL_ENTRY)&_ZN7S1708C33v16Ev,
  (VTBL_ENTRY)&_ZN7S1708C33v17Ev,
  (VTBL_ENTRY)&_ZN7S1708C33v18Ev,
  (VTBL_ENTRY)&_ZN7S1708C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1708C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1708C23v21Ev,
  (VTBL_ENTRY)&_ZN7S1708C23v22Ev,
  (VTBL_ENTRY)&_ZN7S1708C23v23Ev,
  (VTBL_ENTRY)&_ZN7S1708C23v24Ev,
  (VTBL_ENTRY)&_ZN7S1708C23v25Ev,
  (VTBL_ENTRY)&_ZN7S1708C23v26Ev,
  (VTBL_ENTRY)&_ZN7S1708C23v27Ev,
  (VTBL_ENTRY)&_ZN7S1708C23v28Ev,
  (VTBL_ENTRY)&_ZN7S1708C23v29Ev,
  (VTBL_ENTRY)&_ZN7S1708C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1708C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1708C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1708C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1708C12v5Ev,
  (VTBL_ENTRY)&_ZN7S1708C12v6Ev,
};
extern VTBL_ENTRY _ZTI7S1708C1[];
extern  VTBL_ENTRY _ZTV7S1708C1[];
Class_Descriptor cd_S1708C1 = {  "S1708C1", // class name
  bases_S1708C1, 3,
  &(vtc_S1708C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(152,88), // object size
  NSPAIRA(_ZTI7S1708C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1708C1),33, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1668C3  : S1679C4_nt {
  virtual void  v3(); // _ZN7S1668C32v3Ev
  virtual void  v4(); // _ZN7S1668C32v4Ev
  virtual void  v5(); // _ZN7S1668C32v5Ev
  virtual void  v6(); // _ZN7S1668C32v6Ev
  virtual void  v7(); // _ZN7S1668C32v7Ev
  virtual void  v8(); // _ZN7S1668C32v8Ev
  virtual void  v9(); // _ZN7S1668C32v9Ev
  virtual void  v10(); // _ZN7S1668C33v10Ev
  virtual void  v11(); // _ZN7S1668C33v11Ev
  virtual void  v12(); // _ZN7S1668C33v12Ev
  virtual void  v13(); // _ZN7S1668C33v13Ev
  virtual void  v14(); // _ZN7S1668C33v14Ev
  ~S1668C3(); // tgen
  S1668C3(); // tgen
};
//SIG(-1 S1668C3) C1{ BC2{ vd m Fi} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


void  S1668C3 ::v3(){vfunc_called(this, "_ZN7S1668C32v3Ev");}
void  S1668C3 ::v4(){vfunc_called(this, "_ZN7S1668C32v4Ev");}
void  S1668C3 ::v5(){vfunc_called(this, "_ZN7S1668C32v5Ev");}
void  S1668C3 ::v6(){vfunc_called(this, "_ZN7S1668C32v6Ev");}
void  S1668C3 ::v7(){vfunc_called(this, "_ZN7S1668C32v7Ev");}
void  S1668C3 ::v8(){vfunc_called(this, "_ZN7S1668C32v8Ev");}
void  S1668C3 ::v9(){vfunc_called(this, "_ZN7S1668C32v9Ev");}
void  S1668C3 ::v10(){vfunc_called(this, "_ZN7S1668C33v10Ev");}
void  S1668C3 ::v11(){vfunc_called(this, "_ZN7S1668C33v11Ev");}
void  S1668C3 ::v12(){vfunc_called(this, "_ZN7S1668C33v12Ev");}
void  S1668C3 ::v13(){vfunc_called(this, "_ZN7S1668C33v13Ev");}
void  S1668C3 ::v14(){vfunc_called(this, "_ZN7S1668C33v14Ev");}
S1668C3 ::~S1668C3(){ note_dtor("S1668C3", this);} // tgen
S1668C3 ::S1668C3(){ note_ctor("S1668C3", this);} // tgen

static void Test_S1668C3()
{
  extern Class_Descriptor cd_S1668C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1668C3, buf);
    S1668C3 *dp, &lv = *(dp=new (buf) S1668C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1668C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1668C3)");
    check_base_class_offset(lv, (S1679C4_nt*), 0, "S1668C3");
    test_class_info(&lv, &cd_S1668C3);
    dp->~S1668C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1668C3(Test_S1668C3, "S1668C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S1668C3C1Ev();
extern void _ZN7S1668C3D1Ev();
Name_Map name_map_S1668C3[] = {
  NSPAIR(_ZN7S1668C3C1Ev),
  NSPAIR(_ZN7S1668C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
static Base_Class bases_S1668C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1668C3[];
extern void _ZN7S1668C3D1Ev();
extern void _ZN7S1668C3D0Ev();
extern void _ZN7S1668C32v3Ev();
extern void _ZN7S1668C32v4Ev();
extern void _ZN7S1668C32v5Ev();
extern void _ZN7S1668C32v6Ev();
extern void _ZN7S1668C32v7Ev();
extern void _ZN7S1668C32v8Ev();
extern void _ZN7S1668C32v9Ev();
extern void _ZN7S1668C33v10Ev();
extern void _ZN7S1668C33v11Ev();
extern void _ZN7S1668C33v12Ev();
extern void _ZN7S1668C33v13Ev();
extern void _ZN7S1668C33v14Ev();
static  VTBL_ENTRY vtc_S1668C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1668C3[0]),
  (VTBL_ENTRY)&_ZN7S1668C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1668C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1668C32v3Ev,
  (VTBL_ENTRY)&_ZN7S1668C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1668C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1668C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1668C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1668C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1668C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1668C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1668C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1668C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1668C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1668C33v14Ev,
};
extern VTBL_ENTRY _ZTI7S1668C3[];
extern  VTBL_ENTRY _ZTV7S1668C3[];
Class_Descriptor cd_S1668C3 = {  "S1668C3", // class name
  bases_S1668C3, 1,
  &(vtc_S1668C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S1668C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1668C3),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1668C2  : S1668C3 {
  ::S79C38_nt s1668c2f0;
  ::S17777C6_nt s1668c2f1;
  ::S1679C8_nt s1668c2f2;
  int s1668c2f3[4];
  ::S4533C11_nt s1668c2f4;
  void *s1668c2f5[4];
  virtual  ~S1668C2(); // _ZN7S1668C2D1Ev
  virtual void  v15(); // _ZN7S1668C23v15Ev
  virtual void  v16(); // _ZN7S1668C23v16Ev
  virtual void  v17(); // _ZN7S1668C23v17Ev
  virtual void  v18(); // _ZN7S1668C23v18Ev
  virtual void  v19(); // _ZN7S1668C23v19Ev
  virtual void  v20(); // _ZN7S1668C23v20Ev
  virtual void  v21(); // _ZN7S1668C23v21Ev
  virtual void  v22(); // _ZN7S1668C23v22Ev
  virtual void  v23(); // _ZN7S1668C23v23Ev
  virtual void  v24(); // _ZN7S1668C23v24Ev
  virtual void  v25(); // _ZN7S1668C23v25Ev
  virtual void  v26(); // _ZN7S1668C23v26Ev
  virtual void  v27(); // _ZN7S1668C23v27Ev
  S1668C2(); // tgen
};
//SIG(-1 S1668C2) C1{ BC2{ BC3{ vd m Fi} v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 FC4{ m Fp[2]} FC5{ m Fp} FC6{ m FC7{ m Fp Fi[2] FC8{ m}} Fp[2]} Fi[4] FC9{ m Fp} Fp[4]}


 S1668C2 ::~S1668C2(){ note_dtor("S1668C2", this);}
void  S1668C2 ::v15(){vfunc_called(this, "_ZN7S1668C23v15Ev");}
void  S1668C2 ::v16(){vfunc_called(this, "_ZN7S1668C23v16Ev");}
void  S1668C2 ::v17(){vfunc_called(this, "_ZN7S1668C23v17Ev");}
void  S1668C2 ::v18(){vfunc_called(this, "_ZN7S1668C23v18Ev");}
void  S1668C2 ::v19(){vfunc_called(this, "_ZN7S1668C23v19Ev");}
void  S1668C2 ::v20(){vfunc_called(this, "_ZN7S1668C23v20Ev");}
void  S1668C2 ::v21(){vfunc_called(this, "_ZN7S1668C23v21Ev");}
void  S1668C2 ::v22(){vfunc_called(this, "_ZN7S1668C23v22Ev");}
void  S1668C2 ::v23(){vfunc_called(this, "_ZN7S1668C23v23Ev");}
void  S1668C2 ::v24(){vfunc_called(this, "_ZN7S1668C23v24Ev");}
void  S1668C2 ::v25(){vfunc_called(this, "_ZN7S1668C23v25Ev");}
void  S1668C2 ::v26(){vfunc_called(this, "_ZN7S1668C23v26Ev");}
void  S1668C2 ::v27(){vfunc_called(this, "_ZN7S1668C23v27Ev");}
S1668C2 ::S1668C2(){ note_ctor("S1668C2", this);} // tgen

static void Test_S1668C2()
{
  extern Class_Descriptor cd_S1668C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,21)];
    init_test(&cd_S1668C2, buf);
    S1668C2 *dp, &lv = *(dp=new (buf) S1668C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,80), "sizeof(S1668C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1668C2)");
    check_base_class_offset(lv, (S1679C4_nt*)(S1668C3*), 0, "S1668C2");
    check_base_class_offset(lv, (S1668C3*), 0, "S1668C2");
    check_field_offset(lv, s1668c2f0, ABISELECT(16,8), "S1668C2.s1668c2f0");
    check_field_offset(lv, s1668c2f1, ABISELECT(32,16), "S1668C2.s1668c2f1");
    check_field_offset(lv, s1668c2f2, ABISELECT(40,20), "S1668C2.s1668c2f2");
    check_field_offset(lv, s1668c2f3, ABISELECT(80,44), "S1668C2.s1668c2f3");
    check_field_offset(lv, s1668c2f4, ABISELECT(96,60), "S1668C2.s1668c2f4");
    check_field_offset(lv, s1668c2f5, ABISELECT(104,64), "S1668C2.s1668c2f5");
    test_class_info(&lv, &cd_S1668C2);
    dp->~S1668C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1668C2(Test_S1668C2, "S1668C2", ABISELECT(136,80));

#else // __cplusplus

extern void _ZN7S1668C2C1Ev();
extern void _ZN7S1668C2D1Ev();
Name_Map name_map_S1668C2[] = {
  NSPAIR(_ZN7S1668C2C1Ev),
  NSPAIR(_ZN7S1668C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
extern Class_Descriptor cd_S1668C3;
extern VTBL_ENTRY _ZTI7S1668C3[];
extern  VTBL_ENTRY _ZTV7S1668C3[];
static Base_Class bases_S1668C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1668C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1668C2[];
extern void _ZN7S1668C2D1Ev();
extern void _ZN7S1668C2D0Ev();
extern void _ZN7S1668C32v3Ev();
extern void _ZN7S1668C32v4Ev();
extern void _ZN7S1668C32v5Ev();
extern void _ZN7S1668C32v6Ev();
extern void _ZN7S1668C32v7Ev();
extern void _ZN7S1668C32v8Ev();
extern void _ZN7S1668C32v9Ev();
extern void _ZN7S1668C33v10Ev();
extern void _ZN7S1668C33v11Ev();
extern void _ZN7S1668C33v12Ev();
extern void _ZN7S1668C33v13Ev();
extern void _ZN7S1668C33v14Ev();
extern void _ZN7S1668C23v15Ev();
extern void _ZN7S1668C23v16Ev();
extern void _ZN7S1668C23v17Ev();
extern void _ZN7S1668C23v18Ev();
extern void _ZN7S1668C23v19Ev();
extern void _ZN7S1668C23v20Ev();
extern void _ZN7S1668C23v21Ev();
extern void _ZN7S1668C23v22Ev();
extern void _ZN7S1668C23v23Ev();
extern void _ZN7S1668C23v24Ev();
extern void _ZN7S1668C23v25Ev();
extern void _ZN7S1668C23v26Ev();
extern void _ZN7S1668C23v27Ev();
static  VTBL_ENTRY vtc_S1668C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1668C2[0]),
  (VTBL_ENTRY)&_ZN7S1668C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1668C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1668C32v3Ev,
  (VTBL_ENTRY)&_ZN7S1668C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1668C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1668C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1668C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1668C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1668C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1668C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1668C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1668C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1668C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1668C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1668C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1668C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1668C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1668C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1668C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1668C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1668C23v21Ev,
  (VTBL_ENTRY)&_ZN7S1668C23v22Ev,
  (VTBL_ENTRY)&_ZN7S1668C23v23Ev,
  (VTBL_ENTRY)&_ZN7S1668C23v24Ev,
  (VTBL_ENTRY)&_ZN7S1668C23v25Ev,
  (VTBL_ENTRY)&_ZN7S1668C23v26Ev,
  (VTBL_ENTRY)&_ZN7S1668C23v27Ev,
};
extern VTBL_ENTRY _ZTI7S1668C2[];
extern  VTBL_ENTRY _ZTV7S1668C2[];
Class_Descriptor cd_S1668C2 = {  "S1668C2", // class name
  bases_S1668C2, 2,
  &(vtc_S1668C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,80), // object size
  NSPAIRA(_ZTI7S1668C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1668C2),29, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1668C11_nt  {
  void *s1668c11f0;
  void  mf1668c11(); // _ZN11S1668C11_nt9mf1668c11Ev
};
//SIG(-1 S1668C11_nt) C1{ m Fp}


void  S1668C11_nt ::mf1668c11(){}

//skip512 S1668C11_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1668C1  : S1668C2 {
  ::S1668C11_nt s1668c1f0;
  virtual void  v1(); // _ZN7S1668C12v1Ev
  virtual void  v2(); // _ZN7S1668C12v2Ev
  ~S1668C1(); // tgen
  S1668C1(); // tgen
};
//SIG(1 S1668C1) C1{ BC2{ BC3{ BC4{ vd m Fi} v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14} vd v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 FC5{ m Fp[2]} FC6{ m Fp} FC7{ m FC8{ m Fp Fi[2] FC9{ m}} Fp[2]} Fi[4] FC10{ m Fp} Fp[4]} v1 v2 FC11{ m Fp}}


void  S1668C1 ::v1(){vfunc_called(this, "_ZN7S1668C12v1Ev");}
void  S1668C1 ::v2(){vfunc_called(this, "_ZN7S1668C12v2Ev");}
S1668C1 ::~S1668C1(){ note_dtor("S1668C1", this);} // tgen
S1668C1 ::S1668C1(){ note_ctor("S1668C1", this);} // tgen

static void Test_S1668C1()
{
  extern Class_Descriptor cd_S1668C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,22)];
    init_test(&cd_S1668C1, buf);
    S1668C1 *dp, &lv = *(dp=new (buf) S1668C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,84), "sizeof(S1668C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1668C1)");
    check_base_class_offset(lv, (S1679C4_nt*)(S1668C3*)(S1668C2*), 0, "S1668C1");
    check_base_class_offset(lv, (S1668C3*)(S1668C2*), 0, "S1668C1");
    check_base_class_offset(lv, (S1668C2*), 0, "S1668C1");
    check_field_offset(lv, s1668c1f0, ABISELECT(136,80), "S1668C1.s1668c1f0");
    test_class_info(&lv, &cd_S1668C1);
    dp->~S1668C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1668C1(Test_S1668C1, "S1668C1", ABISELECT(144,84));

#else // __cplusplus

extern void _ZN7S1668C1C1Ev();
extern void _ZN7S1668C1D1Ev();
Name_Map name_map_S1668C1[] = {
  NSPAIR(_ZN7S1668C1C1Ev),
  NSPAIR(_ZN7S1668C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
extern Class_Descriptor cd_S1668C3;
extern VTBL_ENTRY _ZTI7S1668C3[];
extern  VTBL_ENTRY _ZTV7S1668C3[];
extern Class_Descriptor cd_S1668C2;
extern VTBL_ENTRY _ZTI7S1668C2[];
extern  VTBL_ENTRY _ZTV7S1668C2[];
static Base_Class bases_S1668C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1668C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1668C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1668C1[];
extern void _ZN7S1668C1D1Ev();
extern void _ZN7S1668C1D0Ev();
extern void _ZN7S1668C32v3Ev();
extern void _ZN7S1668C32v4Ev();
extern void _ZN7S1668C32v5Ev();
extern void _ZN7S1668C32v6Ev();
extern void _ZN7S1668C32v7Ev();
extern void _ZN7S1668C32v8Ev();
extern void _ZN7S1668C32v9Ev();
extern void _ZN7S1668C33v10Ev();
extern void _ZN7S1668C33v11Ev();
extern void _ZN7S1668C33v12Ev();
extern void _ZN7S1668C33v13Ev();
extern void _ZN7S1668C33v14Ev();
extern void _ZN7S1668C23v15Ev();
extern void _ZN7S1668C23v16Ev();
extern void _ZN7S1668C23v17Ev();
extern void _ZN7S1668C23v18Ev();
extern void _ZN7S1668C23v19Ev();
extern void _ZN7S1668C23v20Ev();
extern void _ZN7S1668C23v21Ev();
extern void _ZN7S1668C23v22Ev();
extern void _ZN7S1668C23v23Ev();
extern void _ZN7S1668C23v24Ev();
extern void _ZN7S1668C23v25Ev();
extern void _ZN7S1668C23v26Ev();
extern void _ZN7S1668C23v27Ev();
extern void _ZN7S1668C12v1Ev();
extern void _ZN7S1668C12v2Ev();
static  VTBL_ENTRY vtc_S1668C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1668C1[0]),
  (VTBL_ENTRY)&_ZN7S1668C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1668C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1668C32v3Ev,
  (VTBL_ENTRY)&_ZN7S1668C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1668C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1668C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1668C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1668C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1668C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1668C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1668C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1668C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1668C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1668C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1668C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1668C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1668C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1668C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1668C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1668C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1668C23v21Ev,
  (VTBL_ENTRY)&_ZN7S1668C23v22Ev,
  (VTBL_ENTRY)&_ZN7S1668C23v23Ev,
  (VTBL_ENTRY)&_ZN7S1668C23v24Ev,
  (VTBL_ENTRY)&_ZN7S1668C23v25Ev,
  (VTBL_ENTRY)&_ZN7S1668C23v26Ev,
  (VTBL_ENTRY)&_ZN7S1668C23v27Ev,
  (VTBL_ENTRY)&_ZN7S1668C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1668C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S1668C1[];
extern  VTBL_ENTRY _ZTV7S1668C1[];
Class_Descriptor cd_S1668C1 = {  "S1668C1", // class name
  bases_S1668C1, 3,
  &(vtc_S1668C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,84), // object size
  NSPAIRA(_ZTI7S1668C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1668C1),31, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1680C3  : S1679C4_nt {
  virtual void  v4(); // _ZN7S1680C32v4Ev
  virtual void  v5(); // _ZN7S1680C32v5Ev
  virtual void  v6(); // _ZN7S1680C32v6Ev
  virtual void  v7(); // _ZN7S1680C32v7Ev
  virtual void  v8(); // _ZN7S1680C32v8Ev
  virtual void  v9(); // _ZN7S1680C32v9Ev
  virtual void  v10(); // _ZN7S1680C33v10Ev
  virtual void  v11(); // _ZN7S1680C33v11Ev
  virtual void  v12(); // _ZN7S1680C33v12Ev
  virtual void  v13(); // _ZN7S1680C33v13Ev
  virtual void  v14(); // _ZN7S1680C33v14Ev
  virtual void  v15(); // _ZN7S1680C33v15Ev
  ~S1680C3(); // tgen
  S1680C3(); // tgen
};
//SIG(-1 S1680C3) C1{ BC2{ vd m Fi} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


void  S1680C3 ::v4(){vfunc_called(this, "_ZN7S1680C32v4Ev");}
void  S1680C3 ::v5(){vfunc_called(this, "_ZN7S1680C32v5Ev");}
void  S1680C3 ::v6(){vfunc_called(this, "_ZN7S1680C32v6Ev");}
void  S1680C3 ::v7(){vfunc_called(this, "_ZN7S1680C32v7Ev");}
void  S1680C3 ::v8(){vfunc_called(this, "_ZN7S1680C32v8Ev");}
void  S1680C3 ::v9(){vfunc_called(this, "_ZN7S1680C32v9Ev");}
void  S1680C3 ::v10(){vfunc_called(this, "_ZN7S1680C33v10Ev");}
void  S1680C3 ::v11(){vfunc_called(this, "_ZN7S1680C33v11Ev");}
void  S1680C3 ::v12(){vfunc_called(this, "_ZN7S1680C33v12Ev");}
void  S1680C3 ::v13(){vfunc_called(this, "_ZN7S1680C33v13Ev");}
void  S1680C3 ::v14(){vfunc_called(this, "_ZN7S1680C33v14Ev");}
void  S1680C3 ::v15(){vfunc_called(this, "_ZN7S1680C33v15Ev");}
S1680C3 ::~S1680C3(){ note_dtor("S1680C3", this);} // tgen
S1680C3 ::S1680C3(){ note_ctor("S1680C3", this);} // tgen

static void Test_S1680C3()
{
  extern Class_Descriptor cd_S1680C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1680C3, buf);
    S1680C3 *dp, &lv = *(dp=new (buf) S1680C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1680C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1680C3)");
    check_base_class_offset(lv, (S1679C4_nt*), 0, "S1680C3");
    test_class_info(&lv, &cd_S1680C3);
    dp->~S1680C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1680C3(Test_S1680C3, "S1680C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S1680C3C1Ev();
extern void _ZN7S1680C3D1Ev();
Name_Map name_map_S1680C3[] = {
  NSPAIR(_ZN7S1680C3C1Ev),
  NSPAIR(_ZN7S1680C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
static Base_Class bases_S1680C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1680C3[];
extern void _ZN7S1680C3D1Ev();
extern void _ZN7S1680C3D0Ev();
extern void _ZN7S1680C32v4Ev();
extern void _ZN7S1680C32v5Ev();
extern void _ZN7S1680C32v6Ev();
extern void _ZN7S1680C32v7Ev();
extern void _ZN7S1680C32v8Ev();
extern void _ZN7S1680C32v9Ev();
extern void _ZN7S1680C33v10Ev();
extern void _ZN7S1680C33v11Ev();
extern void _ZN7S1680C33v12Ev();
extern void _ZN7S1680C33v13Ev();
extern void _ZN7S1680C33v14Ev();
extern void _ZN7S1680C33v15Ev();
static  VTBL_ENTRY vtc_S1680C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1680C3[0]),
  (VTBL_ENTRY)&_ZN7S1680C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1680C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1680C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1680C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1680C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1680C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1680C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1680C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1680C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1680C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1680C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1680C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1680C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1680C33v15Ev,
};
extern VTBL_ENTRY _ZTI7S1680C3[];
extern  VTBL_ENTRY _ZTV7S1680C3[];
Class_Descriptor cd_S1680C3 = {  "S1680C3", // class name
  bases_S1680C3, 1,
  &(vtc_S1680C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S1680C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1680C3),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1680C2  : S1680C3 {
  ::S79C38_nt s1680c2f0;
  ::S17777C6_nt s1680c2f1;
  ::S1679C8_nt s1680c2f2;
  int s1680c2f3[4];
  ::S4533C11_nt s1680c2f4;
  void *s1680c2f5[4];
  virtual  ~S1680C2(); // _ZN7S1680C2D1Ev
  virtual void  v16(); // _ZN7S1680C23v16Ev
  virtual void  v17(); // _ZN7S1680C23v17Ev
  virtual void  v18(); // _ZN7S1680C23v18Ev
  virtual void  v19(); // _ZN7S1680C23v19Ev
  virtual void  v20(); // _ZN7S1680C23v20Ev
  virtual void  v21(); // _ZN7S1680C23v21Ev
  virtual void  v22(); // _ZN7S1680C23v22Ev
  virtual void  v23(); // _ZN7S1680C23v23Ev
  virtual void  v24(); // _ZN7S1680C23v24Ev
  virtual void  v25(); // _ZN7S1680C23v25Ev
  virtual void  v26(); // _ZN7S1680C23v26Ev
  virtual void  v27(); // _ZN7S1680C23v27Ev
  virtual void  v28(); // _ZN7S1680C23v28Ev
  S1680C2(); // tgen
};
//SIG(-1 S1680C2) C1{ BC2{ BC3{ vd m Fi} v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 FC4{ m Fp[2]} FC5{ m Fp} FC6{ m FC7{ m Fp Fi[2] FC8{ m}} Fp[2]} Fi[4] FC9{ m Fp} Fp[4]}


 S1680C2 ::~S1680C2(){ note_dtor("S1680C2", this);}
void  S1680C2 ::v16(){vfunc_called(this, "_ZN7S1680C23v16Ev");}
void  S1680C2 ::v17(){vfunc_called(this, "_ZN7S1680C23v17Ev");}
void  S1680C2 ::v18(){vfunc_called(this, "_ZN7S1680C23v18Ev");}
void  S1680C2 ::v19(){vfunc_called(this, "_ZN7S1680C23v19Ev");}
void  S1680C2 ::v20(){vfunc_called(this, "_ZN7S1680C23v20Ev");}
void  S1680C2 ::v21(){vfunc_called(this, "_ZN7S1680C23v21Ev");}
void  S1680C2 ::v22(){vfunc_called(this, "_ZN7S1680C23v22Ev");}
void  S1680C2 ::v23(){vfunc_called(this, "_ZN7S1680C23v23Ev");}
void  S1680C2 ::v24(){vfunc_called(this, "_ZN7S1680C23v24Ev");}
void  S1680C2 ::v25(){vfunc_called(this, "_ZN7S1680C23v25Ev");}
void  S1680C2 ::v26(){vfunc_called(this, "_ZN7S1680C23v26Ev");}
void  S1680C2 ::v27(){vfunc_called(this, "_ZN7S1680C23v27Ev");}
void  S1680C2 ::v28(){vfunc_called(this, "_ZN7S1680C23v28Ev");}
S1680C2 ::S1680C2(){ note_ctor("S1680C2", this);} // tgen

static void Test_S1680C2()
{
  extern Class_Descriptor cd_S1680C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,21)];
    init_test(&cd_S1680C2, buf);
    S1680C2 *dp, &lv = *(dp=new (buf) S1680C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,80), "sizeof(S1680C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1680C2)");
    check_base_class_offset(lv, (S1679C4_nt*)(S1680C3*), 0, "S1680C2");
    check_base_class_offset(lv, (S1680C3*), 0, "S1680C2");
    check_field_offset(lv, s1680c2f0, ABISELECT(16,8), "S1680C2.s1680c2f0");
    check_field_offset(lv, s1680c2f1, ABISELECT(32,16), "S1680C2.s1680c2f1");
    check_field_offset(lv, s1680c2f2, ABISELECT(40,20), "S1680C2.s1680c2f2");
    check_field_offset(lv, s1680c2f3, ABISELECT(80,44), "S1680C2.s1680c2f3");
    check_field_offset(lv, s1680c2f4, ABISELECT(96,60), "S1680C2.s1680c2f4");
    check_field_offset(lv, s1680c2f5, ABISELECT(104,64), "S1680C2.s1680c2f5");
    test_class_info(&lv, &cd_S1680C2);
    dp->~S1680C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1680C2(Test_S1680C2, "S1680C2", ABISELECT(136,80));

#else // __cplusplus

extern void _ZN7S1680C2C1Ev();
extern void _ZN7S1680C2D1Ev();
Name_Map name_map_S1680C2[] = {
  NSPAIR(_ZN7S1680C2C1Ev),
  NSPAIR(_ZN7S1680C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
extern Class_Descriptor cd_S1680C3;
extern VTBL_ENTRY _ZTI7S1680C3[];
extern  VTBL_ENTRY _ZTV7S1680C3[];
static Base_Class bases_S1680C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1680C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1680C2[];
extern void _ZN7S1680C2D1Ev();
extern void _ZN7S1680C2D0Ev();
extern void _ZN7S1680C32v4Ev();
extern void _ZN7S1680C32v5Ev();
extern void _ZN7S1680C32v6Ev();
extern void _ZN7S1680C32v7Ev();
extern void _ZN7S1680C32v8Ev();
extern void _ZN7S1680C32v9Ev();
extern void _ZN7S1680C33v10Ev();
extern void _ZN7S1680C33v11Ev();
extern void _ZN7S1680C33v12Ev();
extern void _ZN7S1680C33v13Ev();
extern void _ZN7S1680C33v14Ev();
extern void _ZN7S1680C33v15Ev();
extern void _ZN7S1680C23v16Ev();
extern void _ZN7S1680C23v17Ev();
extern void _ZN7S1680C23v18Ev();
extern void _ZN7S1680C23v19Ev();
extern void _ZN7S1680C23v20Ev();
extern void _ZN7S1680C23v21Ev();
extern void _ZN7S1680C23v22Ev();
extern void _ZN7S1680C23v23Ev();
extern void _ZN7S1680C23v24Ev();
extern void _ZN7S1680C23v25Ev();
extern void _ZN7S1680C23v26Ev();
extern void _ZN7S1680C23v27Ev();
extern void _ZN7S1680C23v28Ev();
static  VTBL_ENTRY vtc_S1680C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1680C2[0]),
  (VTBL_ENTRY)&_ZN7S1680C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1680C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1680C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1680C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1680C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1680C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1680C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1680C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1680C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1680C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1680C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1680C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1680C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1680C33v15Ev,
  (VTBL_ENTRY)&_ZN7S1680C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1680C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1680C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1680C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1680C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1680C23v21Ev,
  (VTBL_ENTRY)&_ZN7S1680C23v22Ev,
  (VTBL_ENTRY)&_ZN7S1680C23v23Ev,
  (VTBL_ENTRY)&_ZN7S1680C23v24Ev,
  (VTBL_ENTRY)&_ZN7S1680C23v25Ev,
  (VTBL_ENTRY)&_ZN7S1680C23v26Ev,
  (VTBL_ENTRY)&_ZN7S1680C23v27Ev,
  (VTBL_ENTRY)&_ZN7S1680C23v28Ev,
};
extern VTBL_ENTRY _ZTI7S1680C2[];
extern  VTBL_ENTRY _ZTV7S1680C2[];
Class_Descriptor cd_S1680C2 = {  "S1680C2", // class name
  bases_S1680C2, 2,
  &(vtc_S1680C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,80), // object size
  NSPAIRA(_ZTI7S1680C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1680C2),29, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1680C1  : S1680C2 {
  void *s1680c1f0;
  virtual void  v1(); // _ZN7S1680C12v1Ev
  virtual void  v2(); // _ZN7S1680C12v2Ev
  virtual void  v3(); // _ZN7S1680C12v3Ev
  ~S1680C1(); // tgen
  S1680C1(); // tgen
};
//SIG(1 S1680C1) C1{ BC2{ BC3{ BC4{ vd m Fi} v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15} vd v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 FC5{ m Fp[2]} FC6{ m Fp} FC7{ m FC8{ m Fp Fi[2] FC9{ m}} Fp[2]} Fi[4] FC10{ m Fp} Fp[4]} v1 v2 v3 Fp}


void  S1680C1 ::v1(){vfunc_called(this, "_ZN7S1680C12v1Ev");}
void  S1680C1 ::v2(){vfunc_called(this, "_ZN7S1680C12v2Ev");}
void  S1680C1 ::v3(){vfunc_called(this, "_ZN7S1680C12v3Ev");}
S1680C1 ::~S1680C1(){ note_dtor("S1680C1", this);} // tgen
S1680C1 ::S1680C1(){ note_ctor("S1680C1", this);} // tgen

static void Test_S1680C1()
{
  extern Class_Descriptor cd_S1680C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,22)];
    init_test(&cd_S1680C1, buf);
    S1680C1 *dp, &lv = *(dp=new (buf) S1680C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,84), "sizeof(S1680C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1680C1)");
    check_base_class_offset(lv, (S1679C4_nt*)(S1680C3*)(S1680C2*), 0, "S1680C1");
    check_base_class_offset(lv, (S1680C3*)(S1680C2*), 0, "S1680C1");
    check_base_class_offset(lv, (S1680C2*), 0, "S1680C1");
    check_field_offset(lv, s1680c1f0, ABISELECT(136,80), "S1680C1.s1680c1f0");
    test_class_info(&lv, &cd_S1680C1);
    dp->~S1680C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1680C1(Test_S1680C1, "S1680C1", ABISELECT(144,84));

#else // __cplusplus

extern void _ZN7S1680C1C1Ev();
extern void _ZN7S1680C1D1Ev();
Name_Map name_map_S1680C1[] = {
  NSPAIR(_ZN7S1680C1C1Ev),
  NSPAIR(_ZN7S1680C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
extern Class_Descriptor cd_S1680C3;
extern VTBL_ENTRY _ZTI7S1680C3[];
extern  VTBL_ENTRY _ZTV7S1680C3[];
extern Class_Descriptor cd_S1680C2;
extern VTBL_ENTRY _ZTI7S1680C2[];
extern  VTBL_ENTRY _ZTV7S1680C2[];
static Base_Class bases_S1680C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1680C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1680C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1680C1[];
extern void _ZN7S1680C1D1Ev();
extern void _ZN7S1680C1D0Ev();
extern void _ZN7S1680C32v4Ev();
extern void _ZN7S1680C32v5Ev();
extern void _ZN7S1680C32v6Ev();
extern void _ZN7S1680C32v7Ev();
extern void _ZN7S1680C32v8Ev();
extern void _ZN7S1680C32v9Ev();
extern void _ZN7S1680C33v10Ev();
extern void _ZN7S1680C33v11Ev();
extern void _ZN7S1680C33v12Ev();
extern void _ZN7S1680C33v13Ev();
extern void _ZN7S1680C33v14Ev();
extern void _ZN7S1680C33v15Ev();
extern void _ZN7S1680C23v16Ev();
extern void _ZN7S1680C23v17Ev();
extern void _ZN7S1680C23v18Ev();
extern void _ZN7S1680C23v19Ev();
extern void _ZN7S1680C23v20Ev();
extern void _ZN7S1680C23v21Ev();
extern void _ZN7S1680C23v22Ev();
extern void _ZN7S1680C23v23Ev();
extern void _ZN7S1680C23v24Ev();
extern void _ZN7S1680C23v25Ev();
extern void _ZN7S1680C23v26Ev();
extern void _ZN7S1680C23v27Ev();
extern void _ZN7S1680C23v28Ev();
extern void _ZN7S1680C12v1Ev();
extern void _ZN7S1680C12v2Ev();
extern void _ZN7S1680C12v3Ev();
static  VTBL_ENTRY vtc_S1680C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1680C1[0]),
  (VTBL_ENTRY)&_ZN7S1680C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1680C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1680C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1680C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1680C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1680C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1680C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1680C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1680C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1680C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1680C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1680C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1680C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1680C33v15Ev,
  (VTBL_ENTRY)&_ZN7S1680C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1680C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1680C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1680C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1680C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1680C23v21Ev,
  (VTBL_ENTRY)&_ZN7S1680C23v22Ev,
  (VTBL_ENTRY)&_ZN7S1680C23v23Ev,
  (VTBL_ENTRY)&_ZN7S1680C23v24Ev,
  (VTBL_ENTRY)&_ZN7S1680C23v25Ev,
  (VTBL_ENTRY)&_ZN7S1680C23v26Ev,
  (VTBL_ENTRY)&_ZN7S1680C23v27Ev,
  (VTBL_ENTRY)&_ZN7S1680C23v28Ev,
  (VTBL_ENTRY)&_ZN7S1680C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1680C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1680C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S1680C1[];
extern  VTBL_ENTRY _ZTV7S1680C1[];
Class_Descriptor cd_S1680C1 = {  "S1680C1", // class name
  bases_S1680C1, 3,
  &(vtc_S1680C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,84), // object size
  NSPAIRA(_ZTI7S1680C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1680C1),32, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1669C3  : S1679C4_nt {
  virtual void  v3(); // _ZN7S1669C32v3Ev
  virtual void  v4(); // _ZN7S1669C32v4Ev
  virtual void  v5(); // _ZN7S1669C32v5Ev
  virtual void  v6(); // _ZN7S1669C32v6Ev
  virtual void  v7(); // _ZN7S1669C32v7Ev
  virtual void  v8(); // _ZN7S1669C32v8Ev
  virtual void  v9(); // _ZN7S1669C32v9Ev
  virtual void  v10(); // _ZN7S1669C33v10Ev
  virtual void  v11(); // _ZN7S1669C33v11Ev
  virtual void  v12(); // _ZN7S1669C33v12Ev
  virtual void  v13(); // _ZN7S1669C33v13Ev
  virtual void  v14(); // _ZN7S1669C33v14Ev
  ~S1669C3(); // tgen
  S1669C3(); // tgen
};
//SIG(-1 S1669C3) C1{ BC2{ vd m Fi} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


void  S1669C3 ::v3(){vfunc_called(this, "_ZN7S1669C32v3Ev");}
void  S1669C3 ::v4(){vfunc_called(this, "_ZN7S1669C32v4Ev");}
void  S1669C3 ::v5(){vfunc_called(this, "_ZN7S1669C32v5Ev");}
void  S1669C3 ::v6(){vfunc_called(this, "_ZN7S1669C32v6Ev");}
void  S1669C3 ::v7(){vfunc_called(this, "_ZN7S1669C32v7Ev");}
void  S1669C3 ::v8(){vfunc_called(this, "_ZN7S1669C32v8Ev");}
void  S1669C3 ::v9(){vfunc_called(this, "_ZN7S1669C32v9Ev");}
void  S1669C3 ::v10(){vfunc_called(this, "_ZN7S1669C33v10Ev");}
void  S1669C3 ::v11(){vfunc_called(this, "_ZN7S1669C33v11Ev");}
void  S1669C3 ::v12(){vfunc_called(this, "_ZN7S1669C33v12Ev");}
void  S1669C3 ::v13(){vfunc_called(this, "_ZN7S1669C33v13Ev");}
void  S1669C3 ::v14(){vfunc_called(this, "_ZN7S1669C33v14Ev");}
S1669C3 ::~S1669C3(){ note_dtor("S1669C3", this);} // tgen
S1669C3 ::S1669C3(){ note_ctor("S1669C3", this);} // tgen

static void Test_S1669C3()
{
  extern Class_Descriptor cd_S1669C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1669C3, buf);
    S1669C3 *dp, &lv = *(dp=new (buf) S1669C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1669C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1669C3)");
    check_base_class_offset(lv, (S1679C4_nt*), 0, "S1669C3");
    test_class_info(&lv, &cd_S1669C3);
    dp->~S1669C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1669C3(Test_S1669C3, "S1669C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S1669C3C1Ev();
extern void _ZN7S1669C3D1Ev();
Name_Map name_map_S1669C3[] = {
  NSPAIR(_ZN7S1669C3C1Ev),
  NSPAIR(_ZN7S1669C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
static Base_Class bases_S1669C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1669C3[];
extern void _ZN7S1669C3D1Ev();
extern void _ZN7S1669C3D0Ev();
extern void _ZN7S1669C32v3Ev();
extern void _ZN7S1669C32v4Ev();
extern void _ZN7S1669C32v5Ev();
extern void _ZN7S1669C32v6Ev();
extern void _ZN7S1669C32v7Ev();
extern void _ZN7S1669C32v8Ev();
extern void _ZN7S1669C32v9Ev();
extern void _ZN7S1669C33v10Ev();
extern void _ZN7S1669C33v11Ev();
extern void _ZN7S1669C33v12Ev();
extern void _ZN7S1669C33v13Ev();
extern void _ZN7S1669C33v14Ev();
static  VTBL_ENTRY vtc_S1669C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1669C3[0]),
  (VTBL_ENTRY)&_ZN7S1669C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1669C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1669C32v3Ev,
  (VTBL_ENTRY)&_ZN7S1669C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1669C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1669C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1669C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1669C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1669C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1669C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1669C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1669C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1669C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1669C33v14Ev,
};
extern VTBL_ENTRY _ZTI7S1669C3[];
extern  VTBL_ENTRY _ZTV7S1669C3[];
Class_Descriptor cd_S1669C3 = {  "S1669C3", // class name
  bases_S1669C3, 1,
  &(vtc_S1669C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S1669C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1669C3),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1669C2  : S1669C3 {
  ::S79C38_nt s1669c2f0;
  ::S17777C6_nt s1669c2f1;
  ::S1679C8_nt s1669c2f2;
  int s1669c2f3[4];
  ::S4533C11_nt s1669c2f4;
  void *s1669c2f5[4];
  virtual  ~S1669C2(); // _ZN7S1669C2D1Ev
  virtual void  v15(); // _ZN7S1669C23v15Ev
  virtual void  v16(); // _ZN7S1669C23v16Ev
  virtual void  v17(); // _ZN7S1669C23v17Ev
  virtual void  v18(); // _ZN7S1669C23v18Ev
  virtual void  v19(); // _ZN7S1669C23v19Ev
  virtual void  v20(); // _ZN7S1669C23v20Ev
  virtual void  v21(); // _ZN7S1669C23v21Ev
  virtual void  v22(); // _ZN7S1669C23v22Ev
  virtual void  v23(); // _ZN7S1669C23v23Ev
  virtual void  v24(); // _ZN7S1669C23v24Ev
  virtual void  v25(); // _ZN7S1669C23v25Ev
  virtual void  v26(); // _ZN7S1669C23v26Ev
  virtual void  v27(); // _ZN7S1669C23v27Ev
  S1669C2(); // tgen
};
//SIG(-1 S1669C2) C1{ BC2{ BC3{ vd m Fi} v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 FC4{ m Fp[2]} FC5{ m Fp} FC6{ m FC7{ m Fp Fi[2] FC8{ m}} Fp[2]} Fi[4] FC9{ m Fp} Fp[4]}


 S1669C2 ::~S1669C2(){ note_dtor("S1669C2", this);}
void  S1669C2 ::v15(){vfunc_called(this, "_ZN7S1669C23v15Ev");}
void  S1669C2 ::v16(){vfunc_called(this, "_ZN7S1669C23v16Ev");}
void  S1669C2 ::v17(){vfunc_called(this, "_ZN7S1669C23v17Ev");}
void  S1669C2 ::v18(){vfunc_called(this, "_ZN7S1669C23v18Ev");}
void  S1669C2 ::v19(){vfunc_called(this, "_ZN7S1669C23v19Ev");}
void  S1669C2 ::v20(){vfunc_called(this, "_ZN7S1669C23v20Ev");}
void  S1669C2 ::v21(){vfunc_called(this, "_ZN7S1669C23v21Ev");}
void  S1669C2 ::v22(){vfunc_called(this, "_ZN7S1669C23v22Ev");}
void  S1669C2 ::v23(){vfunc_called(this, "_ZN7S1669C23v23Ev");}
void  S1669C2 ::v24(){vfunc_called(this, "_ZN7S1669C23v24Ev");}
void  S1669C2 ::v25(){vfunc_called(this, "_ZN7S1669C23v25Ev");}
void  S1669C2 ::v26(){vfunc_called(this, "_ZN7S1669C23v26Ev");}
void  S1669C2 ::v27(){vfunc_called(this, "_ZN7S1669C23v27Ev");}
S1669C2 ::S1669C2(){ note_ctor("S1669C2", this);} // tgen

static void Test_S1669C2()
{
  extern Class_Descriptor cd_S1669C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,21)];
    init_test(&cd_S1669C2, buf);
    S1669C2 *dp, &lv = *(dp=new (buf) S1669C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,80), "sizeof(S1669C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1669C2)");
    check_base_class_offset(lv, (S1679C4_nt*)(S1669C3*), 0, "S1669C2");
    check_base_class_offset(lv, (S1669C3*), 0, "S1669C2");
    check_field_offset(lv, s1669c2f0, ABISELECT(16,8), "S1669C2.s1669c2f0");
    check_field_offset(lv, s1669c2f1, ABISELECT(32,16), "S1669C2.s1669c2f1");
    check_field_offset(lv, s1669c2f2, ABISELECT(40,20), "S1669C2.s1669c2f2");
    check_field_offset(lv, s1669c2f3, ABISELECT(80,44), "S1669C2.s1669c2f3");
    check_field_offset(lv, s1669c2f4, ABISELECT(96,60), "S1669C2.s1669c2f4");
    check_field_offset(lv, s1669c2f5, ABISELECT(104,64), "S1669C2.s1669c2f5");
    test_class_info(&lv, &cd_S1669C2);
    dp->~S1669C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1669C2(Test_S1669C2, "S1669C2", ABISELECT(136,80));

#else // __cplusplus

extern void _ZN7S1669C2C1Ev();
extern void _ZN7S1669C2D1Ev();
Name_Map name_map_S1669C2[] = {
  NSPAIR(_ZN7S1669C2C1Ev),
  NSPAIR(_ZN7S1669C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
extern Class_Descriptor cd_S1669C3;
extern VTBL_ENTRY _ZTI7S1669C3[];
extern  VTBL_ENTRY _ZTV7S1669C3[];
static Base_Class bases_S1669C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1669C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1669C2[];
extern void _ZN7S1669C2D1Ev();
extern void _ZN7S1669C2D0Ev();
extern void _ZN7S1669C32v3Ev();
extern void _ZN7S1669C32v4Ev();
extern void _ZN7S1669C32v5Ev();
extern void _ZN7S1669C32v6Ev();
extern void _ZN7S1669C32v7Ev();
extern void _ZN7S1669C32v8Ev();
extern void _ZN7S1669C32v9Ev();
extern void _ZN7S1669C33v10Ev();
extern void _ZN7S1669C33v11Ev();
extern void _ZN7S1669C33v12Ev();
extern void _ZN7S1669C33v13Ev();
extern void _ZN7S1669C33v14Ev();
extern void _ZN7S1669C23v15Ev();
extern void _ZN7S1669C23v16Ev();
extern void _ZN7S1669C23v17Ev();
extern void _ZN7S1669C23v18Ev();
extern void _ZN7S1669C23v19Ev();
extern void _ZN7S1669C23v20Ev();
extern void _ZN7S1669C23v21Ev();
extern void _ZN7S1669C23v22Ev();
extern void _ZN7S1669C23v23Ev();
extern void _ZN7S1669C23v24Ev();
extern void _ZN7S1669C23v25Ev();
extern void _ZN7S1669C23v26Ev();
extern void _ZN7S1669C23v27Ev();
static  VTBL_ENTRY vtc_S1669C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1669C2[0]),
  (VTBL_ENTRY)&_ZN7S1669C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1669C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1669C32v3Ev,
  (VTBL_ENTRY)&_ZN7S1669C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1669C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1669C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1669C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1669C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1669C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1669C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1669C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1669C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1669C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1669C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1669C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1669C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1669C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1669C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1669C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1669C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1669C23v21Ev,
  (VTBL_ENTRY)&_ZN7S1669C23v22Ev,
  (VTBL_ENTRY)&_ZN7S1669C23v23Ev,
  (VTBL_ENTRY)&_ZN7S1669C23v24Ev,
  (VTBL_ENTRY)&_ZN7S1669C23v25Ev,
  (VTBL_ENTRY)&_ZN7S1669C23v26Ev,
  (VTBL_ENTRY)&_ZN7S1669C23v27Ev,
};
extern VTBL_ENTRY _ZTI7S1669C2[];
extern  VTBL_ENTRY _ZTV7S1669C2[];
Class_Descriptor cd_S1669C2 = {  "S1669C2", // class name
  bases_S1669C2, 2,
  &(vtc_S1669C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,80), // object size
  NSPAIRA(_ZTI7S1669C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1669C2),29, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1669C1  : S1669C2 {
  void *s1669c1f0;
  int s1669c1f1;
  virtual void  v1(); // _ZN7S1669C12v1Ev
  virtual void  v2(); // _ZN7S1669C12v2Ev
  ~S1669C1(); // tgen
  S1669C1(); // tgen
};
//SIG(1 S1669C1) C1{ BC2{ BC3{ BC4{ vd m Fi} v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14} vd v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 FC5{ m Fp[2]} FC6{ m Fp} FC7{ m FC8{ m Fp Fi[2] FC9{ m}} Fp[2]} Fi[4] FC10{ m Fp} Fp[4]} v1 v2 Fp Fi}


void  S1669C1 ::v1(){vfunc_called(this, "_ZN7S1669C12v1Ev");}
void  S1669C1 ::v2(){vfunc_called(this, "_ZN7S1669C12v2Ev");}
S1669C1 ::~S1669C1(){ note_dtor("S1669C1", this);} // tgen
S1669C1 ::S1669C1(){ note_ctor("S1669C1", this);} // tgen

static void Test_S1669C1()
{
  extern Class_Descriptor cd_S1669C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,23)];
    init_test(&cd_S1669C1, buf);
    S1669C1 *dp, &lv = *(dp=new (buf) S1669C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,88), "sizeof(S1669C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1669C1)");
    check_base_class_offset(lv, (S1679C4_nt*)(S1669C3*)(S1669C2*), 0, "S1669C1");
    check_base_class_offset(lv, (S1669C3*)(S1669C2*), 0, "S1669C1");
    check_base_class_offset(lv, (S1669C2*), 0, "S1669C1");
    check_field_offset(lv, s1669c1f0, ABISELECT(136,80), "S1669C1.s1669c1f0");
    check_field_offset(lv, s1669c1f1, ABISELECT(144,84), "S1669C1.s1669c1f1");
    test_class_info(&lv, &cd_S1669C1);
    dp->~S1669C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1669C1(Test_S1669C1, "S1669C1", ABISELECT(152,88));

#else // __cplusplus

extern void _ZN7S1669C1C1Ev();
extern void _ZN7S1669C1D1Ev();
Name_Map name_map_S1669C1[] = {
  NSPAIR(_ZN7S1669C1C1Ev),
  NSPAIR(_ZN7S1669C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
extern Class_Descriptor cd_S1669C3;
extern VTBL_ENTRY _ZTI7S1669C3[];
extern  VTBL_ENTRY _ZTV7S1669C3[];
extern Class_Descriptor cd_S1669C2;
extern VTBL_ENTRY _ZTI7S1669C2[];
extern  VTBL_ENTRY _ZTV7S1669C2[];
static Base_Class bases_S1669C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1669C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1669C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1669C1[];
extern void _ZN7S1669C1D1Ev();
extern void _ZN7S1669C1D0Ev();
extern void _ZN7S1669C32v3Ev();
extern void _ZN7S1669C32v4Ev();
extern void _ZN7S1669C32v5Ev();
extern void _ZN7S1669C32v6Ev();
extern void _ZN7S1669C32v7Ev();
extern void _ZN7S1669C32v8Ev();
extern void _ZN7S1669C32v9Ev();
extern void _ZN7S1669C33v10Ev();
extern void _ZN7S1669C33v11Ev();
extern void _ZN7S1669C33v12Ev();
extern void _ZN7S1669C33v13Ev();
extern void _ZN7S1669C33v14Ev();
extern void _ZN7S1669C23v15Ev();
extern void _ZN7S1669C23v16Ev();
extern void _ZN7S1669C23v17Ev();
extern void _ZN7S1669C23v18Ev();
extern void _ZN7S1669C23v19Ev();
extern void _ZN7S1669C23v20Ev();
extern void _ZN7S1669C23v21Ev();
extern void _ZN7S1669C23v22Ev();
extern void _ZN7S1669C23v23Ev();
extern void _ZN7S1669C23v24Ev();
extern void _ZN7S1669C23v25Ev();
extern void _ZN7S1669C23v26Ev();
extern void _ZN7S1669C23v27Ev();
extern void _ZN7S1669C12v1Ev();
extern void _ZN7S1669C12v2Ev();
static  VTBL_ENTRY vtc_S1669C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1669C1[0]),
  (VTBL_ENTRY)&_ZN7S1669C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1669C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1669C32v3Ev,
  (VTBL_ENTRY)&_ZN7S1669C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1669C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1669C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1669C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1669C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1669C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1669C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1669C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1669C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1669C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1669C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1669C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1669C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1669C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1669C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1669C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1669C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1669C23v21Ev,
  (VTBL_ENTRY)&_ZN7S1669C23v22Ev,
  (VTBL_ENTRY)&_ZN7S1669C23v23Ev,
  (VTBL_ENTRY)&_ZN7S1669C23v24Ev,
  (VTBL_ENTRY)&_ZN7S1669C23v25Ev,
  (VTBL_ENTRY)&_ZN7S1669C23v26Ev,
  (VTBL_ENTRY)&_ZN7S1669C23v27Ev,
  (VTBL_ENTRY)&_ZN7S1669C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1669C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S1669C1[];
extern  VTBL_ENTRY _ZTV7S1669C1[];
Class_Descriptor cd_S1669C1 = {  "S1669C1", // class name
  bases_S1669C1, 3,
  &(vtc_S1669C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(152,88), // object size
  NSPAIRA(_ZTI7S1669C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1669C1),31, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3766C2  : S1679C4_nt {
  virtual void  v9(); // _ZN7S3766C22v9Ev
  virtual void  v10(); // _ZN7S3766C23v10Ev
  virtual void  v11(); // _ZN7S3766C23v11Ev
  virtual void  v12(); // _ZN7S3766C23v12Ev
  virtual void  v13(); // _ZN7S3766C23v13Ev
  virtual void  v14(); // _ZN7S3766C23v14Ev
  virtual void  v15(); // _ZN7S3766C23v15Ev
  virtual void  v16(); // _ZN7S3766C23v16Ev
  virtual void  v17(); // _ZN7S3766C23v17Ev
  virtual void  v18(); // _ZN7S3766C23v18Ev
  virtual void  v19(); // _ZN7S3766C23v19Ev
  virtual void  v20(); // _ZN7S3766C23v20Ev
  ~S3766C2(); // tgen
  S3766C2(); // tgen
};
//SIG(-1 S3766C2) C1{ BC2{ vd m Fi} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


void  S3766C2 ::v9(){vfunc_called(this, "_ZN7S3766C22v9Ev");}
void  S3766C2 ::v10(){vfunc_called(this, "_ZN7S3766C23v10Ev");}
void  S3766C2 ::v11(){vfunc_called(this, "_ZN7S3766C23v11Ev");}
void  S3766C2 ::v12(){vfunc_called(this, "_ZN7S3766C23v12Ev");}
void  S3766C2 ::v13(){vfunc_called(this, "_ZN7S3766C23v13Ev");}
void  S3766C2 ::v14(){vfunc_called(this, "_ZN7S3766C23v14Ev");}
void  S3766C2 ::v15(){vfunc_called(this, "_ZN7S3766C23v15Ev");}
void  S3766C2 ::v16(){vfunc_called(this, "_ZN7S3766C23v16Ev");}
void  S3766C2 ::v17(){vfunc_called(this, "_ZN7S3766C23v17Ev");}
void  S3766C2 ::v18(){vfunc_called(this, "_ZN7S3766C23v18Ev");}
void  S3766C2 ::v19(){vfunc_called(this, "_ZN7S3766C23v19Ev");}
void  S3766C2 ::v20(){vfunc_called(this, "_ZN7S3766C23v20Ev");}
S3766C2 ::~S3766C2(){ note_dtor("S3766C2", this);} // tgen
S3766C2 ::S3766C2(){ note_ctor("S3766C2", this);} // tgen

static void Test_S3766C2()
{
  extern Class_Descriptor cd_S3766C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3766C2, buf);
    S3766C2 *dp, &lv = *(dp=new (buf) S3766C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3766C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3766C2)");
    check_base_class_offset(lv, (S1679C4_nt*), 0, "S3766C2");
    test_class_info(&lv, &cd_S3766C2);
    dp->~S3766C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3766C2(Test_S3766C2, "S3766C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3766C2C1Ev();
extern void _ZN7S3766C2D1Ev();
Name_Map name_map_S3766C2[] = {
  NSPAIR(_ZN7S3766C2C1Ev),
  NSPAIR(_ZN7S3766C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
static Base_Class bases_S3766C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3766C2[];
extern void _ZN7S3766C2D1Ev();
extern void _ZN7S3766C2D0Ev();
extern void _ZN7S3766C22v9Ev();
extern void _ZN7S3766C23v10Ev();
extern void _ZN7S3766C23v11Ev();
extern void _ZN7S3766C23v12Ev();
extern void _ZN7S3766C23v13Ev();
extern void _ZN7S3766C23v14Ev();
extern void _ZN7S3766C23v15Ev();
extern void _ZN7S3766C23v16Ev();
extern void _ZN7S3766C23v17Ev();
extern void _ZN7S3766C23v18Ev();
extern void _ZN7S3766C23v19Ev();
extern void _ZN7S3766C23v20Ev();
static  VTBL_ENTRY vtc_S3766C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3766C2[0]),
  (VTBL_ENTRY)&_ZN7S3766C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3766C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3766C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3766C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3766C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3766C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3766C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3766C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3766C23v15Ev,
  (VTBL_ENTRY)&_ZN7S3766C23v16Ev,
  (VTBL_ENTRY)&_ZN7S3766C23v17Ev,
  (VTBL_ENTRY)&_ZN7S3766C23v18Ev,
  (VTBL_ENTRY)&_ZN7S3766C23v19Ev,
  (VTBL_ENTRY)&_ZN7S3766C23v20Ev,
};
extern VTBL_ENTRY _ZTI7S3766C2[];
extern  VTBL_ENTRY _ZTV7S3766C2[];
Class_Descriptor cd_S3766C2 = {  "S3766C2", // class name
  bases_S3766C2, 1,
  &(vtc_S3766C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3766C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3766C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3766C1  : S3766C2 {
  ::S79C38_nt s3766c1f0;
  ::S5266C19_nt s3766c1f1;
  ::S5266C19_nt s3766c1f2;
  char s3766c1f3;
  ::S5266C36 s3766c1f4;
  ::S5266C36 s3766c1f5;
  ::S5266C36 s3766c1f6;
  ::S1679C8_nt s3766c1f7;
  void *s3766c1f8[2];
  ::S5266C36 s3766c1f9;
  virtual  ~S3766C1(); // _ZN7S3766C1D1Ev
  virtual void  v1(); // _ZN7S3766C12v1Ev
  virtual void  v2(); // _ZN7S3766C12v2Ev
  virtual void  v3(); // _ZN7S3766C12v3Ev
  virtual void  v4(); // _ZN7S3766C12v4Ev
  virtual void  v5(); // _ZN7S3766C12v5Ev
  virtual void  v6(); // _ZN7S3766C12v6Ev
  virtual void  v7(); // _ZN7S3766C12v7Ev
  virtual void  v8(); // _ZN7S3766C12v8Ev
  S3766C1(); // tgen
};
//SIG(1 S3766C1) C1{ BC2{ BC3{ vd m Fi} v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20} vd v1 v2 v3 v4 v5 v6 v7 v8 FC4{ m Fp[2]} FC5{ m Fp Fi FC6{ m}} FC5 Fc FC7{ m Fp Fi[2] FC8{ m}} FC7 FC7 FC9{ m FC10{ m Fp Fi[2] FC8} Fp[2]} Fp[2] FC7}


 S3766C1 ::~S3766C1(){ note_dtor("S3766C1", this);}
void  S3766C1 ::v1(){vfunc_called(this, "_ZN7S3766C12v1Ev");}
void  S3766C1 ::v2(){vfunc_called(this, "_ZN7S3766C12v2Ev");}
void  S3766C1 ::v3(){vfunc_called(this, "_ZN7S3766C12v3Ev");}
void  S3766C1 ::v4(){vfunc_called(this, "_ZN7S3766C12v4Ev");}
void  S3766C1 ::v5(){vfunc_called(this, "_ZN7S3766C12v5Ev");}
void  S3766C1 ::v6(){vfunc_called(this, "_ZN7S3766C12v6Ev");}
void  S3766C1 ::v7(){vfunc_called(this, "_ZN7S3766C12v7Ev");}
void  S3766C1 ::v8(){vfunc_called(this, "_ZN7S3766C12v8Ev");}
S3766C1 ::S3766C1(){ note_ctor("S3766C1", this);} // tgen

static void Test_S3766C1()
{
  extern Class_Descriptor cd_S3766C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(29,36)];
    init_test(&cd_S3766C1, buf);
    S3766C1 *dp, &lv = *(dp=new (buf) S3766C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,140), "sizeof(S3766C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3766C1)");
    check_base_class_offset(lv, (S1679C4_nt*)(S3766C2*), 0, "S3766C1");
    check_base_class_offset(lv, (S3766C2*), 0, "S3766C1");
    check_field_offset(lv, s3766c1f0, ABISELECT(16,8), "S3766C1.s3766c1f0");
    check_field_offset(lv, s3766c1f1, ABISELECT(32,16), "S3766C1.s3766c1f1");
    check_field_offset(lv, s3766c1f2, ABISELECT(48,28), "S3766C1.s3766c1f2");
    check_field_offset(lv, s3766c1f3, ABISELECT(64,40), "S3766C1.s3766c1f3");
    check_field_offset(lv, s3766c1f4, ABISELECT(72,44), "S3766C1.s3766c1f4");
    check_field_offset(lv, s3766c1f5, ABISELECT(96,60), "S3766C1.s3766c1f5");
    check_field_offset(lv, s3766c1f6, ABISELECT(120,76), "S3766C1.s3766c1f6");
    check_field_offset(lv, s3766c1f7, ABISELECT(144,92), "S3766C1.s3766c1f7");
    check_field_offset(lv, s3766c1f8, ABISELECT(184,116), "S3766C1.s3766c1f8");
    check_field_offset(lv, s3766c1f9, ABISELECT(200,124), "S3766C1.s3766c1f9");
    test_class_info(&lv, &cd_S3766C1);
    dp->~S3766C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3766C1(Test_S3766C1, "S3766C1", ABISELECT(224,140));

#else // __cplusplus

extern void _ZN7S3766C1C1Ev();
extern void _ZN7S3766C1D1Ev();
Name_Map name_map_S3766C1[] = {
  NSPAIR(_ZN7S3766C1C1Ev),
  NSPAIR(_ZN7S3766C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
extern Class_Descriptor cd_S3766C2;
extern VTBL_ENTRY _ZTI7S3766C2[];
extern  VTBL_ENTRY _ZTV7S3766C2[];
static Base_Class bases_S3766C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3766C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3766C1[];
extern void _ZN7S3766C1D1Ev();
extern void _ZN7S3766C1D0Ev();
extern void _ZN7S3766C22v9Ev();
extern void _ZN7S3766C23v10Ev();
extern void _ZN7S3766C23v11Ev();
extern void _ZN7S3766C23v12Ev();
extern void _ZN7S3766C23v13Ev();
extern void _ZN7S3766C23v14Ev();
extern void _ZN7S3766C23v15Ev();
extern void _ZN7S3766C23v16Ev();
extern void _ZN7S3766C23v17Ev();
extern void _ZN7S3766C23v18Ev();
extern void _ZN7S3766C23v19Ev();
extern void _ZN7S3766C23v20Ev();
extern void _ZN7S3766C12v1Ev();
extern void _ZN7S3766C12v2Ev();
extern void _ZN7S3766C12v3Ev();
extern void _ZN7S3766C12v4Ev();
extern void _ZN7S3766C12v5Ev();
extern void _ZN7S3766C12v6Ev();
extern void _ZN7S3766C12v7Ev();
extern void _ZN7S3766C12v8Ev();
static  VTBL_ENTRY vtc_S3766C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3766C1[0]),
  (VTBL_ENTRY)&_ZN7S3766C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3766C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3766C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3766C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3766C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3766C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3766C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3766C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3766C23v15Ev,
  (VTBL_ENTRY)&_ZN7S3766C23v16Ev,
  (VTBL_ENTRY)&_ZN7S3766C23v17Ev,
  (VTBL_ENTRY)&_ZN7S3766C23v18Ev,
  (VTBL_ENTRY)&_ZN7S3766C23v19Ev,
  (VTBL_ENTRY)&_ZN7S3766C23v20Ev,
  (VTBL_ENTRY)&_ZN7S3766C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3766C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3766C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3766C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3766C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3766C12v6Ev,
  (VTBL_ENTRY)&_ZN7S3766C12v7Ev,
  (VTBL_ENTRY)&_ZN7S3766C12v8Ev,
};
extern VTBL_ENTRY _ZTI7S3766C1[];
extern  VTBL_ENTRY _ZTV7S3766C1[];
Class_Descriptor cd_S3766C1 = {  "S3766C1", // class name
  bases_S3766C1, 2,
  &(vtc_S3766C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(224,140), // object size
  NSPAIRA(_ZTI7S3766C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3766C1),24, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1663C3  : S1679C4_nt {
  virtual void  v1(); // _ZN7S1663C32v1Ev
  virtual void  v2(); // _ZN7S1663C32v2Ev
  virtual void  v3(); // _ZN7S1663C32v3Ev
  virtual void  v4(); // _ZN7S1663C32v4Ev
  virtual void  v5(); // _ZN7S1663C32v5Ev
  virtual void  v6(); // _ZN7S1663C32v6Ev
  virtual void  v7(); // _ZN7S1663C32v7Ev
  virtual void  v8(); // _ZN7S1663C32v8Ev
  virtual void  v9(); // _ZN7S1663C32v9Ev
  virtual void  v10(); // _ZN7S1663C33v10Ev
  virtual void  v11(); // _ZN7S1663C33v11Ev
  virtual void  v12(); // _ZN7S1663C33v12Ev
  ~S1663C3(); // tgen
  S1663C3(); // tgen
};
//SIG(-1 S1663C3) C1{ BC2{ vd m Fi} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


void  S1663C3 ::v1(){vfunc_called(this, "_ZN7S1663C32v1Ev");}
void  S1663C3 ::v2(){vfunc_called(this, "_ZN7S1663C32v2Ev");}
void  S1663C3 ::v3(){vfunc_called(this, "_ZN7S1663C32v3Ev");}
void  S1663C3 ::v4(){vfunc_called(this, "_ZN7S1663C32v4Ev");}
void  S1663C3 ::v5(){vfunc_called(this, "_ZN7S1663C32v5Ev");}
void  S1663C3 ::v6(){vfunc_called(this, "_ZN7S1663C32v6Ev");}
void  S1663C3 ::v7(){vfunc_called(this, "_ZN7S1663C32v7Ev");}
void  S1663C3 ::v8(){vfunc_called(this, "_ZN7S1663C32v8Ev");}
void  S1663C3 ::v9(){vfunc_called(this, "_ZN7S1663C32v9Ev");}
void  S1663C3 ::v10(){vfunc_called(this, "_ZN7S1663C33v10Ev");}
void  S1663C3 ::v11(){vfunc_called(this, "_ZN7S1663C33v11Ev");}
void  S1663C3 ::v12(){vfunc_called(this, "_ZN7S1663C33v12Ev");}
S1663C3 ::~S1663C3(){ note_dtor("S1663C3", this);} // tgen
S1663C3 ::S1663C3(){ note_ctor("S1663C3", this);} // tgen

static void Test_S1663C3()
{
  extern Class_Descriptor cd_S1663C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1663C3, buf);
    S1663C3 *dp, &lv = *(dp=new (buf) S1663C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1663C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1663C3)");
    check_base_class_offset(lv, (S1679C4_nt*), 0, "S1663C3");
    test_class_info(&lv, &cd_S1663C3);
    dp->~S1663C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1663C3(Test_S1663C3, "S1663C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S1663C3C1Ev();
extern void _ZN7S1663C3D1Ev();
Name_Map name_map_S1663C3[] = {
  NSPAIR(_ZN7S1663C3C1Ev),
  NSPAIR(_ZN7S1663C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
static Base_Class bases_S1663C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1663C3[];
extern void _ZN7S1663C3D1Ev();
extern void _ZN7S1663C3D0Ev();
extern void _ZN7S1663C32v1Ev();
extern void _ZN7S1663C32v2Ev();
extern void _ZN7S1663C32v3Ev();
extern void _ZN7S1663C32v4Ev();
extern void _ZN7S1663C32v5Ev();
extern void _ZN7S1663C32v6Ev();
extern void _ZN7S1663C32v7Ev();
extern void _ZN7S1663C32v8Ev();
extern void _ZN7S1663C32v9Ev();
extern void _ZN7S1663C33v10Ev();
extern void _ZN7S1663C33v11Ev();
extern void _ZN7S1663C33v12Ev();
static  VTBL_ENTRY vtc_S1663C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1663C3[0]),
  (VTBL_ENTRY)&_ZN7S1663C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1663C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1663C32v1Ev,
  (VTBL_ENTRY)&_ZN7S1663C32v2Ev,
  (VTBL_ENTRY)&_ZN7S1663C32v3Ev,
  (VTBL_ENTRY)&_ZN7S1663C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1663C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1663C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1663C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1663C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1663C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1663C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1663C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1663C33v12Ev,
};
extern VTBL_ENTRY _ZTI7S1663C3[];
extern  VTBL_ENTRY _ZTV7S1663C3[];
Class_Descriptor cd_S1663C3 = {  "S1663C3", // class name
  bases_S1663C3, 1,
  &(vtc_S1663C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S1663C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1663C3),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1663C2  : S1663C3 {
  ::S79C38_nt s1663c2f0;
  ::S5266C36 s1663c2f1;
  ::S1679C8_nt s1663c2f2;
  void *s1663c2f3[4];
  char s1663c2f4;
  __tsi64 s1663c2f5;
  int s1663c2f6;
  virtual  ~S1663C2(); // _ZN7S1663C2D1Ev
  virtual void  v13(); // _ZN7S1663C23v13Ev
  virtual void  v14(); // _ZN7S1663C23v14Ev
  virtual void  v15(); // _ZN7S1663C23v15Ev
  virtual void  v16(); // _ZN7S1663C23v16Ev
  virtual void  v17(); // _ZN7S1663C23v17Ev
  virtual void  v18(); // _ZN7S1663C23v18Ev
  virtual void  v19(); // _ZN7S1663C23v19Ev
  virtual void  v20(); // _ZN7S1663C23v20Ev
  virtual void  v21(); // _ZN7S1663C23v21Ev
  virtual void  v22(); // _ZN7S1663C23v22Ev
  virtual void  v23(); // _ZN7S1663C23v23Ev
  S1663C2(); // tgen
};
//SIG(-1 S1663C2) C1{ BC2{ BC3{ vd m Fi} v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 FC4{ m Fp[2]} FC5{ m Fp Fi[2] FC6{ m}} FC7{ m FC8{ m Fp Fi[2] FC6} Fp[2]} Fp[4] Fc FL Fi}


 S1663C2 ::~S1663C2(){ note_dtor("S1663C2", this);}
void  S1663C2 ::v13(){vfunc_called(this, "_ZN7S1663C23v13Ev");}
void  S1663C2 ::v14(){vfunc_called(this, "_ZN7S1663C23v14Ev");}
void  S1663C2 ::v15(){vfunc_called(this, "_ZN7S1663C23v15Ev");}
void  S1663C2 ::v16(){vfunc_called(this, "_ZN7S1663C23v16Ev");}
void  S1663C2 ::v17(){vfunc_called(this, "_ZN7S1663C23v17Ev");}
void  S1663C2 ::v18(){vfunc_called(this, "_ZN7S1663C23v18Ev");}
void  S1663C2 ::v19(){vfunc_called(this, "_ZN7S1663C23v19Ev");}
void  S1663C2 ::v20(){vfunc_called(this, "_ZN7S1663C23v20Ev");}
void  S1663C2 ::v21(){vfunc_called(this, "_ZN7S1663C23v21Ev");}
void  S1663C2 ::v22(){vfunc_called(this, "_ZN7S1663C23v22Ev");}
void  S1663C2 ::v23(){vfunc_called(this, "_ZN7S1663C23v23Ev");}
S1663C2 ::S1663C2(){ note_ctor("S1663C2", this);} // tgen

static void Test_S1663C2()
{
  extern Class_Descriptor cd_S1663C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,23)];
    init_test(&cd_S1663C2, buf);
    S1663C2 *dp, &lv = *(dp=new (buf) S1663C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,88), "sizeof(S1663C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1663C2)");
    check_base_class_offset(lv, (S1679C4_nt*)(S1663C3*), 0, "S1663C2");
    check_base_class_offset(lv, (S1663C3*), 0, "S1663C2");
    check_field_offset(lv, s1663c2f0, ABISELECT(16,8), "S1663C2.s1663c2f0");
    check_field_offset(lv, s1663c2f1, ABISELECT(32,16), "S1663C2.s1663c2f1");
    check_field_offset(lv, s1663c2f2, ABISELECT(56,32), "S1663C2.s1663c2f2");
    check_field_offset(lv, s1663c2f3, ABISELECT(96,56), "S1663C2.s1663c2f3");
    check_field_offset(lv, s1663c2f4, ABISELECT(128,72), "S1663C2.s1663c2f4");
    check_field_offset(lv, s1663c2f5, ABISELECT(136,76), "S1663C2.s1663c2f5");
    check_field_offset(lv, s1663c2f6, ABISELECT(144,84), "S1663C2.s1663c2f6");
    test_class_info(&lv, &cd_S1663C2);
    dp->~S1663C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1663C2(Test_S1663C2, "S1663C2", ABISELECT(152,88));

#else // __cplusplus

extern void _ZN7S1663C2C1Ev();
extern void _ZN7S1663C2D1Ev();
Name_Map name_map_S1663C2[] = {
  NSPAIR(_ZN7S1663C2C1Ev),
  NSPAIR(_ZN7S1663C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
extern Class_Descriptor cd_S1663C3;
extern VTBL_ENTRY _ZTI7S1663C3[];
extern  VTBL_ENTRY _ZTV7S1663C3[];
static Base_Class bases_S1663C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1663C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1663C2[];
extern void _ZN7S1663C2D1Ev();
extern void _ZN7S1663C2D0Ev();
extern void _ZN7S1663C32v1Ev();
extern void _ZN7S1663C32v2Ev();
extern void _ZN7S1663C32v3Ev();
extern void _ZN7S1663C32v4Ev();
extern void _ZN7S1663C32v5Ev();
extern void _ZN7S1663C32v6Ev();
extern void _ZN7S1663C32v7Ev();
extern void _ZN7S1663C32v8Ev();
extern void _ZN7S1663C32v9Ev();
extern void _ZN7S1663C33v10Ev();
extern void _ZN7S1663C33v11Ev();
extern void _ZN7S1663C33v12Ev();
extern void _ZN7S1663C23v13Ev();
extern void _ZN7S1663C23v14Ev();
extern void _ZN7S1663C23v15Ev();
extern void _ZN7S1663C23v16Ev();
extern void _ZN7S1663C23v17Ev();
extern void _ZN7S1663C23v18Ev();
extern void _ZN7S1663C23v19Ev();
extern void _ZN7S1663C23v20Ev();
extern void _ZN7S1663C23v21Ev();
extern void _ZN7S1663C23v22Ev();
extern void _ZN7S1663C23v23Ev();
static  VTBL_ENTRY vtc_S1663C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1663C2[0]),
  (VTBL_ENTRY)&_ZN7S1663C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1663C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1663C32v1Ev,
  (VTBL_ENTRY)&_ZN7S1663C32v2Ev,
  (VTBL_ENTRY)&_ZN7S1663C32v3Ev,
  (VTBL_ENTRY)&_ZN7S1663C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1663C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1663C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1663C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1663C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1663C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1663C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1663C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1663C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1663C23v13Ev,
  (VTBL_ENTRY)&_ZN7S1663C23v14Ev,
  (VTBL_ENTRY)&_ZN7S1663C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1663C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1663C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1663C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1663C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1663C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1663C23v21Ev,
  (VTBL_ENTRY)&_ZN7S1663C23v22Ev,
  (VTBL_ENTRY)&_ZN7S1663C23v23Ev,
};
extern VTBL_ENTRY _ZTI7S1663C2[];
extern  VTBL_ENTRY _ZTV7S1663C2[];
Class_Descriptor cd_S1663C2 = {  "S1663C2", // class name
  bases_S1663C2, 2,
  &(vtc_S1663C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(152,88), // object size
  NSPAIRA(_ZTI7S1663C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1663C2),27, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1663C1  : S1663C2 {
  ::S7719C17_nt s1663c1f0;
  virtual  ~S1663C1(); // _ZN7S1663C1D1Ev
  S1663C1(); // tgen
};
//SIG(1 S1663C1) C1{ BC2{ BC3{ BC4{ vd m Fi} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12} vd v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 FC5{ m Fp[2]} FC6{ m Fp Fi[2] FC7{ m}} FC8{ m FC9{ m Fp Fi[2] FC7} Fp[2]} Fp[4] Fc FL Fi} vd FC10{ m Fi}}


 S1663C1 ::~S1663C1(){ note_dtor("S1663C1", this);}
S1663C1 ::S1663C1(){ note_ctor("S1663C1", this);} // tgen

static void Test_S1663C1()
{
  extern Class_Descriptor cd_S1663C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,24)];
    init_test(&cd_S1663C1, buf);
    S1663C1 *dp, &lv = *(dp=new (buf) S1663C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,92), "sizeof(S1663C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1663C1)");
    check_base_class_offset(lv, (S1679C4_nt*)(S1663C3*)(S1663C2*), 0, "S1663C1");
    check_base_class_offset(lv, (S1663C3*)(S1663C2*), 0, "S1663C1");
    check_base_class_offset(lv, (S1663C2*), 0, "S1663C1");
    check_field_offset(lv, s1663c1f0, ABISELECT(148,88), "S1663C1.s1663c1f0");
    test_class_info(&lv, &cd_S1663C1);
    dp->~S1663C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1663C1(Test_S1663C1, "S1663C1", ABISELECT(152,92));

#else // __cplusplus

extern void _ZN7S1663C1C1Ev();
extern void _ZN7S1663C1D1Ev();
Name_Map name_map_S1663C1[] = {
  NSPAIR(_ZN7S1663C1C1Ev),
  NSPAIR(_ZN7S1663C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
extern Class_Descriptor cd_S1663C3;
extern VTBL_ENTRY _ZTI7S1663C3[];
extern  VTBL_ENTRY _ZTV7S1663C3[];
extern Class_Descriptor cd_S1663C2;
extern VTBL_ENTRY _ZTI7S1663C2[];
extern  VTBL_ENTRY _ZTV7S1663C2[];
static Base_Class bases_S1663C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1663C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1663C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1663C1[];
extern void _ZN7S1663C1D1Ev();
extern void _ZN7S1663C1D0Ev();
extern void _ZN7S1663C32v1Ev();
extern void _ZN7S1663C32v2Ev();
extern void _ZN7S1663C32v3Ev();
extern void _ZN7S1663C32v4Ev();
extern void _ZN7S1663C32v5Ev();
extern void _ZN7S1663C32v6Ev();
extern void _ZN7S1663C32v7Ev();
extern void _ZN7S1663C32v8Ev();
extern void _ZN7S1663C32v9Ev();
extern void _ZN7S1663C33v10Ev();
extern void _ZN7S1663C33v11Ev();
extern void _ZN7S1663C33v12Ev();
extern void _ZN7S1663C23v13Ev();
extern void _ZN7S1663C23v14Ev();
extern void _ZN7S1663C23v15Ev();
extern void _ZN7S1663C23v16Ev();
extern void _ZN7S1663C23v17Ev();
extern void _ZN7S1663C23v18Ev();
extern void _ZN7S1663C23v19Ev();
extern void _ZN7S1663C23v20Ev();
extern void _ZN7S1663C23v21Ev();
extern void _ZN7S1663C23v22Ev();
extern void _ZN7S1663C23v23Ev();
static  VTBL_ENTRY vtc_S1663C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1663C1[0]),
  (VTBL_ENTRY)&_ZN7S1663C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1663C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1663C32v1Ev,
  (VTBL_ENTRY)&_ZN7S1663C32v2Ev,
  (VTBL_ENTRY)&_ZN7S1663C32v3Ev,
  (VTBL_ENTRY)&_ZN7S1663C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1663C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1663C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1663C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1663C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1663C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1663C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1663C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1663C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1663C23v13Ev,
  (VTBL_ENTRY)&_ZN7S1663C23v14Ev,
  (VTBL_ENTRY)&_ZN7S1663C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1663C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1663C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1663C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1663C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1663C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1663C23v21Ev,
  (VTBL_ENTRY)&_ZN7S1663C23v22Ev,
  (VTBL_ENTRY)&_ZN7S1663C23v23Ev,
};
extern VTBL_ENTRY _ZTI7S1663C1[];
extern  VTBL_ENTRY _ZTV7S1663C1[];
Class_Descriptor cd_S1663C1 = {  "S1663C1", // class name
  bases_S1663C1, 3,
  &(vtc_S1663C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(152,92), // object size
  NSPAIRA(_ZTI7S1663C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1663C1),27, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1670C3  : S1679C4_nt {
  virtual void  v3(); // _ZN7S1670C32v3Ev
  virtual void  v4(); // _ZN7S1670C32v4Ev
  virtual void  v5(); // _ZN7S1670C32v5Ev
  virtual void  v6(); // _ZN7S1670C32v6Ev
  virtual void  v7(); // _ZN7S1670C32v7Ev
  virtual void  v8(); // _ZN7S1670C32v8Ev
  virtual void  v9(); // _ZN7S1670C32v9Ev
  virtual void  v10(); // _ZN7S1670C33v10Ev
  virtual void  v11(); // _ZN7S1670C33v11Ev
  virtual void  v12(); // _ZN7S1670C33v12Ev
  virtual void  v13(); // _ZN7S1670C33v13Ev
  virtual void  v14(); // _ZN7S1670C33v14Ev
  ~S1670C3(); // tgen
  S1670C3(); // tgen
};
//SIG(-1 S1670C3) C1{ BC2{ vd m Fi} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


void  S1670C3 ::v3(){vfunc_called(this, "_ZN7S1670C32v3Ev");}
void  S1670C3 ::v4(){vfunc_called(this, "_ZN7S1670C32v4Ev");}
void  S1670C3 ::v5(){vfunc_called(this, "_ZN7S1670C32v5Ev");}
void  S1670C3 ::v6(){vfunc_called(this, "_ZN7S1670C32v6Ev");}
void  S1670C3 ::v7(){vfunc_called(this, "_ZN7S1670C32v7Ev");}
void  S1670C3 ::v8(){vfunc_called(this, "_ZN7S1670C32v8Ev");}
void  S1670C3 ::v9(){vfunc_called(this, "_ZN7S1670C32v9Ev");}
void  S1670C3 ::v10(){vfunc_called(this, "_ZN7S1670C33v10Ev");}
void  S1670C3 ::v11(){vfunc_called(this, "_ZN7S1670C33v11Ev");}
void  S1670C3 ::v12(){vfunc_called(this, "_ZN7S1670C33v12Ev");}
void  S1670C3 ::v13(){vfunc_called(this, "_ZN7S1670C33v13Ev");}
void  S1670C3 ::v14(){vfunc_called(this, "_ZN7S1670C33v14Ev");}
S1670C3 ::~S1670C3(){ note_dtor("S1670C3", this);} // tgen
S1670C3 ::S1670C3(){ note_ctor("S1670C3", this);} // tgen

static void Test_S1670C3()
{
  extern Class_Descriptor cd_S1670C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1670C3, buf);
    S1670C3 *dp, &lv = *(dp=new (buf) S1670C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1670C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1670C3)");
    check_base_class_offset(lv, (S1679C4_nt*), 0, "S1670C3");
    test_class_info(&lv, &cd_S1670C3);
    dp->~S1670C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1670C3(Test_S1670C3, "S1670C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S1670C3C1Ev();
extern void _ZN7S1670C3D1Ev();
Name_Map name_map_S1670C3[] = {
  NSPAIR(_ZN7S1670C3C1Ev),
  NSPAIR(_ZN7S1670C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
static Base_Class bases_S1670C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1670C3[];
extern void _ZN7S1670C3D1Ev();
extern void _ZN7S1670C3D0Ev();
extern void _ZN7S1670C32v3Ev();
extern void _ZN7S1670C32v4Ev();
extern void _ZN7S1670C32v5Ev();
extern void _ZN7S1670C32v6Ev();
extern void _ZN7S1670C32v7Ev();
extern void _ZN7S1670C32v8Ev();
extern void _ZN7S1670C32v9Ev();
extern void _ZN7S1670C33v10Ev();
extern void _ZN7S1670C33v11Ev();
extern void _ZN7S1670C33v12Ev();
extern void _ZN7S1670C33v13Ev();
extern void _ZN7S1670C33v14Ev();
static  VTBL_ENTRY vtc_S1670C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1670C3[0]),
  (VTBL_ENTRY)&_ZN7S1670C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1670C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1670C32v3Ev,
  (VTBL_ENTRY)&_ZN7S1670C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1670C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1670C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1670C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1670C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1670C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1670C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1670C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1670C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1670C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1670C33v14Ev,
};
extern VTBL_ENTRY _ZTI7S1670C3[];
extern  VTBL_ENTRY _ZTV7S1670C3[];
Class_Descriptor cd_S1670C3 = {  "S1670C3", // class name
  bases_S1670C3, 1,
  &(vtc_S1670C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S1670C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1670C3),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1670C2  : S1670C3 {
  ::S79C38_nt s1670c2f0;
  ::S17777C6_nt s1670c2f1;
  ::S1679C8_nt s1670c2f2;
  int s1670c2f3[4];
  ::S4533C11_nt s1670c2f4;
  void *s1670c2f5[4];
  virtual  ~S1670C2(); // _ZN7S1670C2D1Ev
  virtual void  v15(); // _ZN7S1670C23v15Ev
  virtual void  v16(); // _ZN7S1670C23v16Ev
  virtual void  v17(); // _ZN7S1670C23v17Ev
  virtual void  v18(); // _ZN7S1670C23v18Ev
  virtual void  v19(); // _ZN7S1670C23v19Ev
  virtual void  v20(); // _ZN7S1670C23v20Ev
  virtual void  v21(); // _ZN7S1670C23v21Ev
  virtual void  v22(); // _ZN7S1670C23v22Ev
  virtual void  v23(); // _ZN7S1670C23v23Ev
  virtual void  v24(); // _ZN7S1670C23v24Ev
  virtual void  v25(); // _ZN7S1670C23v25Ev
  virtual void  v26(); // _ZN7S1670C23v26Ev
  virtual void  v27(); // _ZN7S1670C23v27Ev
  S1670C2(); // tgen
};
//SIG(-1 S1670C2) C1{ BC2{ BC3{ vd m Fi} v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 FC4{ m Fp[2]} FC5{ m Fp} FC6{ m FC7{ m Fp Fi[2] FC8{ m}} Fp[2]} Fi[4] FC9{ m Fp} Fp[4]}


 S1670C2 ::~S1670C2(){ note_dtor("S1670C2", this);}
void  S1670C2 ::v15(){vfunc_called(this, "_ZN7S1670C23v15Ev");}
void  S1670C2 ::v16(){vfunc_called(this, "_ZN7S1670C23v16Ev");}
void  S1670C2 ::v17(){vfunc_called(this, "_ZN7S1670C23v17Ev");}
void  S1670C2 ::v18(){vfunc_called(this, "_ZN7S1670C23v18Ev");}
void  S1670C2 ::v19(){vfunc_called(this, "_ZN7S1670C23v19Ev");}
void  S1670C2 ::v20(){vfunc_called(this, "_ZN7S1670C23v20Ev");}
void  S1670C2 ::v21(){vfunc_called(this, "_ZN7S1670C23v21Ev");}
void  S1670C2 ::v22(){vfunc_called(this, "_ZN7S1670C23v22Ev");}
void  S1670C2 ::v23(){vfunc_called(this, "_ZN7S1670C23v23Ev");}
void  S1670C2 ::v24(){vfunc_called(this, "_ZN7S1670C23v24Ev");}
void  S1670C2 ::v25(){vfunc_called(this, "_ZN7S1670C23v25Ev");}
void  S1670C2 ::v26(){vfunc_called(this, "_ZN7S1670C23v26Ev");}
void  S1670C2 ::v27(){vfunc_called(this, "_ZN7S1670C23v27Ev");}
S1670C2 ::S1670C2(){ note_ctor("S1670C2", this);} // tgen

static void Test_S1670C2()
{
  extern Class_Descriptor cd_S1670C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,21)];
    init_test(&cd_S1670C2, buf);
    S1670C2 *dp, &lv = *(dp=new (buf) S1670C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,80), "sizeof(S1670C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1670C2)");
    check_base_class_offset(lv, (S1679C4_nt*)(S1670C3*), 0, "S1670C2");
    check_base_class_offset(lv, (S1670C3*), 0, "S1670C2");
    check_field_offset(lv, s1670c2f0, ABISELECT(16,8), "S1670C2.s1670c2f0");
    check_field_offset(lv, s1670c2f1, ABISELECT(32,16), "S1670C2.s1670c2f1");
    check_field_offset(lv, s1670c2f2, ABISELECT(40,20), "S1670C2.s1670c2f2");
    check_field_offset(lv, s1670c2f3, ABISELECT(80,44), "S1670C2.s1670c2f3");
    check_field_offset(lv, s1670c2f4, ABISELECT(96,60), "S1670C2.s1670c2f4");
    check_field_offset(lv, s1670c2f5, ABISELECT(104,64), "S1670C2.s1670c2f5");
    test_class_info(&lv, &cd_S1670C2);
    dp->~S1670C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1670C2(Test_S1670C2, "S1670C2", ABISELECT(136,80));

#else // __cplusplus

extern void _ZN7S1670C2C1Ev();
extern void _ZN7S1670C2D1Ev();
Name_Map name_map_S1670C2[] = {
  NSPAIR(_ZN7S1670C2C1Ev),
  NSPAIR(_ZN7S1670C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
extern Class_Descriptor cd_S1670C3;
extern VTBL_ENTRY _ZTI7S1670C3[];
extern  VTBL_ENTRY _ZTV7S1670C3[];
static Base_Class bases_S1670C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1670C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1670C2[];
extern void _ZN7S1670C2D1Ev();
extern void _ZN7S1670C2D0Ev();
extern void _ZN7S1670C32v3Ev();
extern void _ZN7S1670C32v4Ev();
extern void _ZN7S1670C32v5Ev();
extern void _ZN7S1670C32v6Ev();
extern void _ZN7S1670C32v7Ev();
extern void _ZN7S1670C32v8Ev();
extern void _ZN7S1670C32v9Ev();
extern void _ZN7S1670C33v10Ev();
extern void _ZN7S1670C33v11Ev();
extern void _ZN7S1670C33v12Ev();
extern void _ZN7S1670C33v13Ev();
extern void _ZN7S1670C33v14Ev();
extern void _ZN7S1670C23v15Ev();
extern void _ZN7S1670C23v16Ev();
extern void _ZN7S1670C23v17Ev();
extern void _ZN7S1670C23v18Ev();
extern void _ZN7S1670C23v19Ev();
extern void _ZN7S1670C23v20Ev();
extern void _ZN7S1670C23v21Ev();
extern void _ZN7S1670C23v22Ev();
extern void _ZN7S1670C23v23Ev();
extern void _ZN7S1670C23v24Ev();
extern void _ZN7S1670C23v25Ev();
extern void _ZN7S1670C23v26Ev();
extern void _ZN7S1670C23v27Ev();
static  VTBL_ENTRY vtc_S1670C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1670C2[0]),
  (VTBL_ENTRY)&_ZN7S1670C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1670C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1670C32v3Ev,
  (VTBL_ENTRY)&_ZN7S1670C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1670C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1670C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1670C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1670C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1670C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1670C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1670C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1670C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1670C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1670C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1670C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1670C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1670C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1670C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1670C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1670C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1670C23v21Ev,
  (VTBL_ENTRY)&_ZN7S1670C23v22Ev,
  (VTBL_ENTRY)&_ZN7S1670C23v23Ev,
  (VTBL_ENTRY)&_ZN7S1670C23v24Ev,
  (VTBL_ENTRY)&_ZN7S1670C23v25Ev,
  (VTBL_ENTRY)&_ZN7S1670C23v26Ev,
  (VTBL_ENTRY)&_ZN7S1670C23v27Ev,
};
extern VTBL_ENTRY _ZTI7S1670C2[];
extern  VTBL_ENTRY _ZTV7S1670C2[];
Class_Descriptor cd_S1670C2 = {  "S1670C2", // class name
  bases_S1670C2, 2,
  &(vtc_S1670C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,80), // object size
  NSPAIRA(_ZTI7S1670C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1670C2),29, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1670C1  : S1670C2 {
  void *s1670c1f0;
  virtual void  v1(); // _ZN7S1670C12v1Ev
  virtual void  v2(); // _ZN7S1670C12v2Ev
  ~S1670C1(); // tgen
  S1670C1(); // tgen
};
//SIG(1 S1670C1) C1{ BC2{ BC3{ BC4{ vd m Fi} v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14} vd v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 FC5{ m Fp[2]} FC6{ m Fp} FC7{ m FC8{ m Fp Fi[2] FC9{ m}} Fp[2]} Fi[4] FC10{ m Fp} Fp[4]} v1 v2 Fp}


void  S1670C1 ::v1(){vfunc_called(this, "_ZN7S1670C12v1Ev");}
void  S1670C1 ::v2(){vfunc_called(this, "_ZN7S1670C12v2Ev");}
S1670C1 ::~S1670C1(){ note_dtor("S1670C1", this);} // tgen
S1670C1 ::S1670C1(){ note_ctor("S1670C1", this);} // tgen

static void Test_S1670C1()
{
  extern Class_Descriptor cd_S1670C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,22)];
    init_test(&cd_S1670C1, buf);
    S1670C1 *dp, &lv = *(dp=new (buf) S1670C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,84), "sizeof(S1670C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1670C1)");
    check_base_class_offset(lv, (S1679C4_nt*)(S1670C3*)(S1670C2*), 0, "S1670C1");
    check_base_class_offset(lv, (S1670C3*)(S1670C2*), 0, "S1670C1");
    check_base_class_offset(lv, (S1670C2*), 0, "S1670C1");
    check_field_offset(lv, s1670c1f0, ABISELECT(136,80), "S1670C1.s1670c1f0");
    test_class_info(&lv, &cd_S1670C1);
    dp->~S1670C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1670C1(Test_S1670C1, "S1670C1", ABISELECT(144,84));

#else // __cplusplus

extern void _ZN7S1670C1C1Ev();
extern void _ZN7S1670C1D1Ev();
Name_Map name_map_S1670C1[] = {
  NSPAIR(_ZN7S1670C1C1Ev),
  NSPAIR(_ZN7S1670C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
extern Class_Descriptor cd_S1670C3;
extern VTBL_ENTRY _ZTI7S1670C3[];
extern  VTBL_ENTRY _ZTV7S1670C3[];
extern Class_Descriptor cd_S1670C2;
extern VTBL_ENTRY _ZTI7S1670C2[];
extern  VTBL_ENTRY _ZTV7S1670C2[];
static Base_Class bases_S1670C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1670C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1670C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1670C1[];
extern void _ZN7S1670C1D1Ev();
extern void _ZN7S1670C1D0Ev();
extern void _ZN7S1670C32v3Ev();
extern void _ZN7S1670C32v4Ev();
extern void _ZN7S1670C32v5Ev();
extern void _ZN7S1670C32v6Ev();
extern void _ZN7S1670C32v7Ev();
extern void _ZN7S1670C32v8Ev();
extern void _ZN7S1670C32v9Ev();
extern void _ZN7S1670C33v10Ev();
extern void _ZN7S1670C33v11Ev();
extern void _ZN7S1670C33v12Ev();
extern void _ZN7S1670C33v13Ev();
extern void _ZN7S1670C33v14Ev();
extern void _ZN7S1670C23v15Ev();
extern void _ZN7S1670C23v16Ev();
extern void _ZN7S1670C23v17Ev();
extern void _ZN7S1670C23v18Ev();
extern void _ZN7S1670C23v19Ev();
extern void _ZN7S1670C23v20Ev();
extern void _ZN7S1670C23v21Ev();
extern void _ZN7S1670C23v22Ev();
extern void _ZN7S1670C23v23Ev();
extern void _ZN7S1670C23v24Ev();
extern void _ZN7S1670C23v25Ev();
extern void _ZN7S1670C23v26Ev();
extern void _ZN7S1670C23v27Ev();
extern void _ZN7S1670C12v1Ev();
extern void _ZN7S1670C12v2Ev();
static  VTBL_ENTRY vtc_S1670C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1670C1[0]),
  (VTBL_ENTRY)&_ZN7S1670C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1670C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1670C32v3Ev,
  (VTBL_ENTRY)&_ZN7S1670C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1670C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1670C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1670C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1670C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1670C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1670C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1670C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1670C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1670C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1670C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1670C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1670C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1670C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1670C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1670C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1670C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1670C23v21Ev,
  (VTBL_ENTRY)&_ZN7S1670C23v22Ev,
  (VTBL_ENTRY)&_ZN7S1670C23v23Ev,
  (VTBL_ENTRY)&_ZN7S1670C23v24Ev,
  (VTBL_ENTRY)&_ZN7S1670C23v25Ev,
  (VTBL_ENTRY)&_ZN7S1670C23v26Ev,
  (VTBL_ENTRY)&_ZN7S1670C23v27Ev,
  (VTBL_ENTRY)&_ZN7S1670C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1670C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S1670C1[];
extern  VTBL_ENTRY _ZTV7S1670C1[];
Class_Descriptor cd_S1670C1 = {  "S1670C1", // class name
  bases_S1670C1, 3,
  &(vtc_S1670C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,84), // object size
  NSPAIRA(_ZTI7S1670C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1670C1),31, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1674C3  : S1679C4_nt {
  virtual void  v3(); // _ZN7S1674C32v3Ev
  virtual void  v4(); // _ZN7S1674C32v4Ev
  virtual void  v5(); // _ZN7S1674C32v5Ev
  virtual void  v6(); // _ZN7S1674C32v6Ev
  virtual void  v7(); // _ZN7S1674C32v7Ev
  virtual void  v8(); // _ZN7S1674C32v8Ev
  virtual void  v9(); // _ZN7S1674C32v9Ev
  virtual void  v10(); // _ZN7S1674C33v10Ev
  virtual void  v11(); // _ZN7S1674C33v11Ev
  virtual void  v12(); // _ZN7S1674C33v12Ev
  virtual void  v13(); // _ZN7S1674C33v13Ev
  virtual void  v14(); // _ZN7S1674C33v14Ev
  ~S1674C3(); // tgen
  S1674C3(); // tgen
};
//SIG(-1 S1674C3) C1{ BC2{ vd m Fi} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


void  S1674C3 ::v3(){vfunc_called(this, "_ZN7S1674C32v3Ev");}
void  S1674C3 ::v4(){vfunc_called(this, "_ZN7S1674C32v4Ev");}
void  S1674C3 ::v5(){vfunc_called(this, "_ZN7S1674C32v5Ev");}
void  S1674C3 ::v6(){vfunc_called(this, "_ZN7S1674C32v6Ev");}
void  S1674C3 ::v7(){vfunc_called(this, "_ZN7S1674C32v7Ev");}
void  S1674C3 ::v8(){vfunc_called(this, "_ZN7S1674C32v8Ev");}
void  S1674C3 ::v9(){vfunc_called(this, "_ZN7S1674C32v9Ev");}
void  S1674C3 ::v10(){vfunc_called(this, "_ZN7S1674C33v10Ev");}
void  S1674C3 ::v11(){vfunc_called(this, "_ZN7S1674C33v11Ev");}
void  S1674C3 ::v12(){vfunc_called(this, "_ZN7S1674C33v12Ev");}
void  S1674C3 ::v13(){vfunc_called(this, "_ZN7S1674C33v13Ev");}
void  S1674C3 ::v14(){vfunc_called(this, "_ZN7S1674C33v14Ev");}
S1674C3 ::~S1674C3(){ note_dtor("S1674C3", this);} // tgen
S1674C3 ::S1674C3(){ note_ctor("S1674C3", this);} // tgen

static void Test_S1674C3()
{
  extern Class_Descriptor cd_S1674C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1674C3, buf);
    S1674C3 *dp, &lv = *(dp=new (buf) S1674C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1674C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1674C3)");
    check_base_class_offset(lv, (S1679C4_nt*), 0, "S1674C3");
    test_class_info(&lv, &cd_S1674C3);
    dp->~S1674C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1674C3(Test_S1674C3, "S1674C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S1674C3C1Ev();
extern void _ZN7S1674C3D1Ev();
Name_Map name_map_S1674C3[] = {
  NSPAIR(_ZN7S1674C3C1Ev),
  NSPAIR(_ZN7S1674C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
static Base_Class bases_S1674C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1674C3[];
extern void _ZN7S1674C3D1Ev();
extern void _ZN7S1674C3D0Ev();
extern void _ZN7S1674C32v3Ev();
extern void _ZN7S1674C32v4Ev();
extern void _ZN7S1674C32v5Ev();
extern void _ZN7S1674C32v6Ev();
extern void _ZN7S1674C32v7Ev();
extern void _ZN7S1674C32v8Ev();
extern void _ZN7S1674C32v9Ev();
extern void _ZN7S1674C33v10Ev();
extern void _ZN7S1674C33v11Ev();
extern void _ZN7S1674C33v12Ev();
extern void _ZN7S1674C33v13Ev();
extern void _ZN7S1674C33v14Ev();
static  VTBL_ENTRY vtc_S1674C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1674C3[0]),
  (VTBL_ENTRY)&_ZN7S1674C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1674C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1674C32v3Ev,
  (VTBL_ENTRY)&_ZN7S1674C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1674C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1674C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1674C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1674C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1674C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1674C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1674C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1674C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1674C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1674C33v14Ev,
};
extern VTBL_ENTRY _ZTI7S1674C3[];
extern  VTBL_ENTRY _ZTV7S1674C3[];
Class_Descriptor cd_S1674C3 = {  "S1674C3", // class name
  bases_S1674C3, 1,
  &(vtc_S1674C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S1674C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1674C3),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1674C2  : S1674C3 {
  ::S79C38_nt s1674c2f0;
  ::S17777C6_nt s1674c2f1;
  ::S1679C8_nt s1674c2f2;
  int s1674c2f3[4];
  ::S4533C11_nt s1674c2f4;
  void *s1674c2f5[4];
  virtual  ~S1674C2(); // _ZN7S1674C2D1Ev
  virtual void  v15(); // _ZN7S1674C23v15Ev
  virtual void  v16(); // _ZN7S1674C23v16Ev
  virtual void  v17(); // _ZN7S1674C23v17Ev
  virtual void  v18(); // _ZN7S1674C23v18Ev
  virtual void  v19(); // _ZN7S1674C23v19Ev
  virtual void  v20(); // _ZN7S1674C23v20Ev
  virtual void  v21(); // _ZN7S1674C23v21Ev
  virtual void  v22(); // _ZN7S1674C23v22Ev
  virtual void  v23(); // _ZN7S1674C23v23Ev
  virtual void  v24(); // _ZN7S1674C23v24Ev
  virtual void  v25(); // _ZN7S1674C23v25Ev
  virtual void  v26(); // _ZN7S1674C23v26Ev
  virtual void  v27(); // _ZN7S1674C23v27Ev
  S1674C2(); // tgen
};
//SIG(-1 S1674C2) C1{ BC2{ BC3{ vd m Fi} v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 FC4{ m Fp[2]} FC5{ m Fp} FC6{ m FC7{ m Fp Fi[2] FC8{ m}} Fp[2]} Fi[4] FC9{ m Fp} Fp[4]}


 S1674C2 ::~S1674C2(){ note_dtor("S1674C2", this);}
void  S1674C2 ::v15(){vfunc_called(this, "_ZN7S1674C23v15Ev");}
void  S1674C2 ::v16(){vfunc_called(this, "_ZN7S1674C23v16Ev");}
void  S1674C2 ::v17(){vfunc_called(this, "_ZN7S1674C23v17Ev");}
void  S1674C2 ::v18(){vfunc_called(this, "_ZN7S1674C23v18Ev");}
void  S1674C2 ::v19(){vfunc_called(this, "_ZN7S1674C23v19Ev");}
void  S1674C2 ::v20(){vfunc_called(this, "_ZN7S1674C23v20Ev");}
void  S1674C2 ::v21(){vfunc_called(this, "_ZN7S1674C23v21Ev");}
void  S1674C2 ::v22(){vfunc_called(this, "_ZN7S1674C23v22Ev");}
void  S1674C2 ::v23(){vfunc_called(this, "_ZN7S1674C23v23Ev");}
void  S1674C2 ::v24(){vfunc_called(this, "_ZN7S1674C23v24Ev");}
void  S1674C2 ::v25(){vfunc_called(this, "_ZN7S1674C23v25Ev");}
void  S1674C2 ::v26(){vfunc_called(this, "_ZN7S1674C23v26Ev");}
void  S1674C2 ::v27(){vfunc_called(this, "_ZN7S1674C23v27Ev");}
S1674C2 ::S1674C2(){ note_ctor("S1674C2", this);} // tgen

static void Test_S1674C2()
{
  extern Class_Descriptor cd_S1674C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,21)];
    init_test(&cd_S1674C2, buf);
    S1674C2 *dp, &lv = *(dp=new (buf) S1674C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,80), "sizeof(S1674C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1674C2)");
    check_base_class_offset(lv, (S1679C4_nt*)(S1674C3*), 0, "S1674C2");
    check_base_class_offset(lv, (S1674C3*), 0, "S1674C2");
    check_field_offset(lv, s1674c2f0, ABISELECT(16,8), "S1674C2.s1674c2f0");
    check_field_offset(lv, s1674c2f1, ABISELECT(32,16), "S1674C2.s1674c2f1");
    check_field_offset(lv, s1674c2f2, ABISELECT(40,20), "S1674C2.s1674c2f2");
    check_field_offset(lv, s1674c2f3, ABISELECT(80,44), "S1674C2.s1674c2f3");
    check_field_offset(lv, s1674c2f4, ABISELECT(96,60), "S1674C2.s1674c2f4");
    check_field_offset(lv, s1674c2f5, ABISELECT(104,64), "S1674C2.s1674c2f5");
    test_class_info(&lv, &cd_S1674C2);
    dp->~S1674C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1674C2(Test_S1674C2, "S1674C2", ABISELECT(136,80));

#else // __cplusplus

extern void _ZN7S1674C2C1Ev();
extern void _ZN7S1674C2D1Ev();
Name_Map name_map_S1674C2[] = {
  NSPAIR(_ZN7S1674C2C1Ev),
  NSPAIR(_ZN7S1674C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
extern Class_Descriptor cd_S1674C3;
extern VTBL_ENTRY _ZTI7S1674C3[];
extern  VTBL_ENTRY _ZTV7S1674C3[];
static Base_Class bases_S1674C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1674C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1674C2[];
extern void _ZN7S1674C2D1Ev();
extern void _ZN7S1674C2D0Ev();
extern void _ZN7S1674C32v3Ev();
extern void _ZN7S1674C32v4Ev();
extern void _ZN7S1674C32v5Ev();
extern void _ZN7S1674C32v6Ev();
extern void _ZN7S1674C32v7Ev();
extern void _ZN7S1674C32v8Ev();
extern void _ZN7S1674C32v9Ev();
extern void _ZN7S1674C33v10Ev();
extern void _ZN7S1674C33v11Ev();
extern void _ZN7S1674C33v12Ev();
extern void _ZN7S1674C33v13Ev();
extern void _ZN7S1674C33v14Ev();
extern void _ZN7S1674C23v15Ev();
extern void _ZN7S1674C23v16Ev();
extern void _ZN7S1674C23v17Ev();
extern void _ZN7S1674C23v18Ev();
extern void _ZN7S1674C23v19Ev();
extern void _ZN7S1674C23v20Ev();
extern void _ZN7S1674C23v21Ev();
extern void _ZN7S1674C23v22Ev();
extern void _ZN7S1674C23v23Ev();
extern void _ZN7S1674C23v24Ev();
extern void _ZN7S1674C23v25Ev();
extern void _ZN7S1674C23v26Ev();
extern void _ZN7S1674C23v27Ev();
static  VTBL_ENTRY vtc_S1674C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1674C2[0]),
  (VTBL_ENTRY)&_ZN7S1674C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1674C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1674C32v3Ev,
  (VTBL_ENTRY)&_ZN7S1674C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1674C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1674C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1674C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1674C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1674C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1674C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1674C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1674C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1674C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1674C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1674C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1674C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1674C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1674C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1674C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1674C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1674C23v21Ev,
  (VTBL_ENTRY)&_ZN7S1674C23v22Ev,
  (VTBL_ENTRY)&_ZN7S1674C23v23Ev,
  (VTBL_ENTRY)&_ZN7S1674C23v24Ev,
  (VTBL_ENTRY)&_ZN7S1674C23v25Ev,
  (VTBL_ENTRY)&_ZN7S1674C23v26Ev,
  (VTBL_ENTRY)&_ZN7S1674C23v27Ev,
};
extern VTBL_ENTRY _ZTI7S1674C2[];
extern  VTBL_ENTRY _ZTV7S1674C2[];
Class_Descriptor cd_S1674C2 = {  "S1674C2", // class name
  bases_S1674C2, 2,
  &(vtc_S1674C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,80), // object size
  NSPAIRA(_ZTI7S1674C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1674C2),29, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1674C1  : S1674C2 {
  virtual void  v1(); // _ZN7S1674C12v1Ev
  virtual void  v2(); // _ZN7S1674C12v2Ev
  ~S1674C1(); // tgen
  S1674C1(); // tgen
};
//SIG(1 S1674C1) C1{ BC2{ BC3{ BC4{ vd m Fi} v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14} vd v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 FC5{ m Fp[2]} FC6{ m Fp} FC7{ m FC8{ m Fp Fi[2] FC9{ m}} Fp[2]} Fi[4] FC10{ m Fp} Fp[4]} v1 v2}


void  S1674C1 ::v1(){vfunc_called(this, "_ZN7S1674C12v1Ev");}
void  S1674C1 ::v2(){vfunc_called(this, "_ZN7S1674C12v2Ev");}
S1674C1 ::~S1674C1(){ note_dtor("S1674C1", this);} // tgen
S1674C1 ::S1674C1(){ note_ctor("S1674C1", this);} // tgen

static void Test_S1674C1()
{
  extern Class_Descriptor cd_S1674C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,21)];
    init_test(&cd_S1674C1, buf);
    S1674C1 *dp, &lv = *(dp=new (buf) S1674C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,80), "sizeof(S1674C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1674C1)");
    check_base_class_offset(lv, (S1679C4_nt*)(S1674C3*)(S1674C2*), 0, "S1674C1");
    check_base_class_offset(lv, (S1674C3*)(S1674C2*), 0, "S1674C1");
    check_base_class_offset(lv, (S1674C2*), 0, "S1674C1");
    test_class_info(&lv, &cd_S1674C1);
    dp->~S1674C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1674C1(Test_S1674C1, "S1674C1", ABISELECT(136,80));

#else // __cplusplus

extern void _ZN7S1674C1C1Ev();
extern void _ZN7S1674C1D1Ev();
Name_Map name_map_S1674C1[] = {
  NSPAIR(_ZN7S1674C1C1Ev),
  NSPAIR(_ZN7S1674C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
extern Class_Descriptor cd_S1674C3;
extern VTBL_ENTRY _ZTI7S1674C3[];
extern  VTBL_ENTRY _ZTV7S1674C3[];
extern Class_Descriptor cd_S1674C2;
extern VTBL_ENTRY _ZTI7S1674C2[];
extern  VTBL_ENTRY _ZTV7S1674C2[];
static Base_Class bases_S1674C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1674C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1674C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1674C1[];
extern void _ZN7S1674C1D1Ev();
extern void _ZN7S1674C1D0Ev();
extern void _ZN7S1674C32v3Ev();
extern void _ZN7S1674C32v4Ev();
extern void _ZN7S1674C32v5Ev();
extern void _ZN7S1674C32v6Ev();
extern void _ZN7S1674C32v7Ev();
extern void _ZN7S1674C32v8Ev();
extern void _ZN7S1674C32v9Ev();
extern void _ZN7S1674C33v10Ev();
extern void _ZN7S1674C33v11Ev();
extern void _ZN7S1674C33v12Ev();
extern void _ZN7S1674C33v13Ev();
extern void _ZN7S1674C33v14Ev();
extern void _ZN7S1674C23v15Ev();
extern void _ZN7S1674C23v16Ev();
extern void _ZN7S1674C23v17Ev();
extern void _ZN7S1674C23v18Ev();
extern void _ZN7S1674C23v19Ev();
extern void _ZN7S1674C23v20Ev();
extern void _ZN7S1674C23v21Ev();
extern void _ZN7S1674C23v22Ev();
extern void _ZN7S1674C23v23Ev();
extern void _ZN7S1674C23v24Ev();
extern void _ZN7S1674C23v25Ev();
extern void _ZN7S1674C23v26Ev();
extern void _ZN7S1674C23v27Ev();
extern void _ZN7S1674C12v1Ev();
extern void _ZN7S1674C12v2Ev();
static  VTBL_ENTRY vtc_S1674C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1674C1[0]),
  (VTBL_ENTRY)&_ZN7S1674C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1674C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1674C32v3Ev,
  (VTBL_ENTRY)&_ZN7S1674C32v4Ev,
  (VTBL_ENTRY)&_ZN7S1674C32v5Ev,
  (VTBL_ENTRY)&_ZN7S1674C32v6Ev,
  (VTBL_ENTRY)&_ZN7S1674C32v7Ev,
  (VTBL_ENTRY)&_ZN7S1674C32v8Ev,
  (VTBL_ENTRY)&_ZN7S1674C32v9Ev,
  (VTBL_ENTRY)&_ZN7S1674C33v10Ev,
  (VTBL_ENTRY)&_ZN7S1674C33v11Ev,
  (VTBL_ENTRY)&_ZN7S1674C33v12Ev,
  (VTBL_ENTRY)&_ZN7S1674C33v13Ev,
  (VTBL_ENTRY)&_ZN7S1674C33v14Ev,
  (VTBL_ENTRY)&_ZN7S1674C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1674C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1674C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1674C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1674C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1674C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1674C23v21Ev,
  (VTBL_ENTRY)&_ZN7S1674C23v22Ev,
  (VTBL_ENTRY)&_ZN7S1674C23v23Ev,
  (VTBL_ENTRY)&_ZN7S1674C23v24Ev,
  (VTBL_ENTRY)&_ZN7S1674C23v25Ev,
  (VTBL_ENTRY)&_ZN7S1674C23v26Ev,
  (VTBL_ENTRY)&_ZN7S1674C23v27Ev,
  (VTBL_ENTRY)&_ZN7S1674C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1674C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S1674C1[];
extern  VTBL_ENTRY _ZTV7S1674C1[];
Class_Descriptor cd_S1674C1 = {  "S1674C1", // class name
  bases_S1674C1, 3,
  &(vtc_S1674C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,80), // object size
  NSPAIRA(_ZTI7S1674C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1674C1),31, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2820C9  : S7719C4_nt , S5266C26 , virtual S5266C22 {
  ~S2820C9(); // tgen
  S2820C9(); // tgen
};
//SIG(-1 S2820C9) C1{ BC2{ m Fc} BC3{ m} VBC4{ m}}


S2820C9 ::~S2820C9(){ note_dtor("S2820C9", this);} // tgen
S2820C9 ::S2820C9(){ note_ctor("S2820C9", this);} // tgen

static void Test_S2820C9()
{
  extern Class_Descriptor cd_S2820C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S2820C9, buf);
    S2820C9 *dp, &lv = *(dp=new (buf) S2820C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S2820C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2820C9)");
    check_base_class_offset(lv, (S7719C4_nt*), ABISELECT(8,4), "S2820C9");
    check_base_class_offset(lv, (S5266C26*), 0, "S2820C9");
    check_base_class_offset(lv, (S5266C22*), 0, "S2820C9");
    test_class_info(&lv, &cd_S2820C9);
    dp->~S2820C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2820C9(Test_S2820C9, "S2820C9", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S2820C9C1Ev();
extern void _ZN7S2820C9D1Ev();
Name_Map name_map_S2820C9[] = {
  NSPAIR(_ZN7S2820C9C1Ev),
  NSPAIR(_ZN7S2820C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C22;
extern VTBL_ENTRY _ZTI8S5266C22[];
static Base_Class bases_S2820C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7719C4_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C22,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S2820C9[];
static  VTBL_ENTRY vtc_S2820C9[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S2820C9[0]),
};
extern VTBL_ENTRY _ZTV7S2820C9[];
static  VTT_ENTRY vtt_S2820C9[] = {
  {&(_ZTV7S2820C9[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S2820C9[];
extern  VTBL_ENTRY _ZTV7S2820C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2820C9[];
Class_Descriptor cd_S2820C9 = {  "S2820C9", // class name
  bases_S2820C9, 3,
  &(vtc_S2820C9[0]), // expected_vtbl_contents
  &(vtt_S2820C9[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S2820C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S2820C9),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2820C9),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2820C11  : S5266C26 , S7719C4_nt {
};
//SIG(-1 S2820C11) C1{ BC2{ m} BC3{ m Fc}}



static void Test_S2820C11()
{
  extern Class_Descriptor cd_S2820C11;
  void *lvp;
  {
    char buf[1];
    init_test(&cd_S2820C11, buf);
    S2820C11 &lv = *(new (buf) S2820C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1, "sizeof(S2820C11)");
    check2(__alignof__(lv), 1, "__alignof__(S2820C11)");
    check_base_class_offset(lv, (S5266C26*), 0, "S2820C11");
    check_base_class_offset(lv, (S7719C4_nt*), 0, "S2820C11");
    test_class_info(&lv, &cd_S2820C11);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2820C11(Test_S2820C11, "S2820C11", 1);

#else // __cplusplus

extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
static Base_Class bases_S2820C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7719C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S2820C11[];
Class_Descriptor cd_S2820C11 = {  "S2820C11", // class name
  bases_S2820C11, 2,
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI8S2820C11),ABISELECT(56,32), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2820C10  : S2820C11 , S5266C26 , S2820C9 {
  __tsi64 s2820c10f0;
  ~S2820C10(); // tgen
  S2820C10(); // tgen
};
//SIG(-1 S2820C10) C1{ BC2{ BC3{ m} BC4{ m Fc}} BC3 BC5{ BC4 BC3 VBC6{ m}} FL}


S2820C10 ::~S2820C10(){ note_dtor("S2820C10", this);} // tgen
S2820C10 ::S2820C10(){ note_ctor("S2820C10", this);} // tgen

static void Test_S2820C10()
{
  extern Class_Descriptor cd_S2820C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S2820C10, buf);
    S2820C10 *dp, &lv = *(dp=new (buf) S2820C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S2820C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2820C10)");
    check_base_class_offset(lv, (S5266C26*)(S2820C11*), ABISELECT(9,5), "S2820C10");
    check_base_class_offset(lv, (S7719C4_nt*)(S2820C11*), ABISELECT(9,5), "S2820C10");
    check_base_class_offset(lv, (S2820C11*), ABISELECT(9,5), "S2820C10");
    /*is_ambiguous_... S2820C10::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*), ABISELECT(10,6), "S2820C10");
    check_base_class_offset(lv, (S7719C4_nt*)(S2820C9*), ABISELECT(8,4), "S2820C10");
    check_base_class_offset(lv, (S5266C26*)(S2820C9*), 0, "S2820C10");
    check_base_class_offset(lv, (S5266C22*)(S2820C9*), 0, "S2820C10");
    check_base_class_offset(lv, (S2820C9*), 0, "S2820C10");
    check_field_offset(lv, s2820c10f0, ABISELECT(16,8), "S2820C10.s2820c10f0");
    test_class_info(&lv, &cd_S2820C10);
    dp->~S2820C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2820C10(Test_S2820C10, "S2820C10", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S2820C10C1Ev();
extern void _ZN8S2820C10D1Ev();
Name_Map name_map_S2820C10[] = {
  NSPAIR(_ZN8S2820C10C1Ev),
  NSPAIR(_ZN8S2820C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S2820C11;
extern VTBL_ENTRY _ZTI8S2820C11[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C22;
extern VTBL_ENTRY _ZTI8S5266C22[];
extern Class_Descriptor cd_S2820C9;
extern VTBL_ENTRY _ZTI7S2820C9[];
extern  VTBL_ENTRY _ZTV7S2820C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2820C9[];
static Base_Class bases_S2820C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C26,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2820C11,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C26,    ABISELECT(10,6), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7719C4_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S5266C22,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S2820C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S2820C10[];
static  VTBL_ENTRY vtc_S2820C10[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S2820C10[0]),
};
extern VTBL_ENTRY _ZTV8S2820C10[];
static  VTBL_ENTRY _tg__ZTV7S2820C9__8S2820C10[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S2820C9[0]),
};
static  VTT_ENTRY vtt_S2820C10[] = {
  {&(_ZTV8S2820C10[3]),  3,3},
  {&(_tg__ZTV7S2820C9__8S2820C10[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S2820C10[];
extern  VTBL_ENTRY _ZTV8S2820C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2820C10[];
Class_Descriptor cd_S2820C10 = {  "S2820C10", // class name
  bases_S2820C10, 8,
  &(vtc_S2820C10[0]), // expected_vtbl_contents
  &(vtt_S2820C10[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S2820C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S2820C10),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S2820C10),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2820C13  : S5266C26 , S5266C22 , virtual S7719C4_nt {
  ::S5266C22 s2820c13f0;
  ~S2820C13(); // tgen
  S2820C13(); // tgen
};
//SIG(-1 S2820C13) C1{ BC2{ m} BC3{ m} VBC4{ m Fc} FC3}


S2820C13 ::~S2820C13(){ note_dtor("S2820C13", this);} // tgen
S2820C13 ::S2820C13(){ note_ctor("S2820C13", this);} // tgen

static void Test_S2820C13()
{
  extern Class_Descriptor cd_S2820C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S2820C13, buf);
    S2820C13 *dp, &lv = *(dp=new (buf) S2820C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S2820C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2820C13)");
    check_base_class_offset(lv, (S5266C26*), 0, "S2820C13");
    check_base_class_offset(lv, (S5266C22*), 0, "S2820C13");
    check_base_class_offset(lv, (S7719C4_nt*), ABISELECT(9,5), "S2820C13");
    check_field_offset(lv, s2820c13f0, ABISELECT(8,4), "S2820C13.s2820c13f0");
    test_class_info(&lv, &cd_S2820C13);
    dp->~S2820C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2820C13(Test_S2820C13, "S2820C13", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S2820C13C1Ev();
extern void _ZN8S2820C13D1Ev();
Name_Map name_map_S2820C13[] = {
  NSPAIR(_ZN8S2820C13C1Ev),
  NSPAIR(_ZN8S2820C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C22;
extern VTBL_ENTRY _ZTI8S5266C22[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
static Base_Class bases_S2820C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C22,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7719C4_nt,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S2820C13[];
static  VTBL_ENTRY vtc_S2820C13[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S2820C13[0]),
};
extern VTBL_ENTRY _ZTV8S2820C13[];
static  VTT_ENTRY vtt_S2820C13[] = {
  {&(_ZTV8S2820C13[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S2820C13[];
extern  VTBL_ENTRY _ZTV8S2820C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2820C13[];
Class_Descriptor cd_S2820C13 = {  "S2820C13", // class name
  bases_S2820C13, 3,
  &(vtc_S2820C13[0]), // expected_vtbl_contents
  &(vtt_S2820C13[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S2820C13),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S2820C13),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S2820C13),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2820C12  : virtual S7719C4_nt , S5266C22 , S2820C11 , virtual S2820C13 {
  ~S2820C12(); // tgen
  S2820C12(); // tgen
};
//SIG(-1 S2820C12) C1{ VBC2{ m Fc} BC3{ m} BC4{ BC5{ m} BC2} VBC6{ BC5 BC3 VBC2 FC3}}


S2820C12 ::~S2820C12(){ note_dtor("S2820C12", this);} // tgen
S2820C12 ::S2820C12(){ note_ctor("S2820C12", this);} // tgen

static void Test_S2820C12()
{
  extern Class_Descriptor cd_S2820C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S2820C12, buf);
    S2820C12 *dp, &lv = *(dp=new (buf) S2820C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S2820C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2820C12)");
    /*is_ambiguous_... S2820C12::S7719C4_nt */ AMB_check_base_class_offset(lv, (S7719C4_nt*), ABISELECT(9,5), "S2820C12");
    check_base_class_offset(lv, (S7719C4_nt*)(S2820C13*), ABISELECT(9,5), "S2820C12");
    /*is_ambiguous_... S2820C12::S5266C22 */ AMB_check_base_class_offset(lv, (S5266C22*), 0, "S2820C12");
    check_base_class_offset(lv, (S5266C26*)(S2820C11*), ABISELECT(8,4), "S2820C12");
    check_base_class_offset(lv, (S7719C4_nt*)(S2820C11*), ABISELECT(8,4), "S2820C12");
    check_base_class_offset(lv, (S2820C11*), ABISELECT(8,4), "S2820C12");
    check_base_class_offset(lv, (S5266C26*)(S2820C13*), ABISELECT(16,8), "S2820C12");
    check_base_class_offset(lv, (S5266C22*)(S2820C13*), ABISELECT(16,8), "S2820C12");
    check_base_class_offset(lv, (S2820C13*), ABISELECT(16,8), "S2820C12");
    test_class_info(&lv, &cd_S2820C12);
    dp->~S2820C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2820C12(Test_S2820C12, "S2820C12", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S2820C12C1Ev();
extern void _ZN8S2820C12D1Ev();
Name_Map name_map_S2820C12[] = {
  NSPAIR(_ZN8S2820C12C1Ev),
  NSPAIR(_ZN8S2820C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C22;
extern VTBL_ENTRY _ZTI8S5266C22[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S2820C11;
extern VTBL_ENTRY _ZTI8S2820C11[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C22;
extern VTBL_ENTRY _ZTI8S5266C22[];
extern Class_Descriptor cd_S2820C13;
extern VTBL_ENTRY _ZTI8S2820C13[];
extern  VTBL_ENTRY _ZTV8S2820C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2820C13[];
static Base_Class bases_S2820C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7719C4_nt,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5266C22,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C26,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S2820C11,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C26,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S5266C22,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S2820C13,    ABISELECT(16,8), //bcp->offset
    4, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S2820C12[];
static  VTBL_ENTRY vtc_S2820C12[] = {
  ABISELECT(16,8),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S2820C12[0]),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S2820C12[0]),
};
extern VTBL_ENTRY _ZTV8S2820C12[];
static  VTBL_ENTRY _tg__ZTV8S2820C13__8S2820C12[] = {
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S2820C13[0]),
};
static  VTT_ENTRY vtt_S2820C12[] = {
  {&(_ZTV8S2820C12[4]),  4,7},
  {&(_ZTV8S2820C12[7]),  7,7},
  {&(_tg__ZTV8S2820C13__8S2820C12[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S2820C12[];
extern  VTBL_ENTRY _ZTV8S2820C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2820C12[];
Class_Descriptor cd_S2820C12 = {  "S2820C12", // class name
  bases_S2820C12, 8,
  &(vtc_S2820C12[0]), // expected_vtbl_contents
  &(vtt_S2820C12[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S2820C12),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S2820C12),7, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S2820C12),3, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2820C7  : virtual S5266C22 , virtual S2820C9 , virtual S2820C10 , S2820C12 , virtual S5266C26 {
  __tsi64 s2820c7f0[2];
  ~S2820C7(); // tgen
  S2820C7(); // tgen
};
//SIG(-1 S2820C7) C1{ VBC2{ m} VBC3{ BC4{ m Fc} BC5{ m} VBC2} VBC6{ BC7{ BC5 BC4} BC5 BC3 FL} BC8{ VBC4 BC2 BC7 VBC9{ BC5 BC2 VBC4 FC2}} VBC5 FL[2]}


S2820C7 ::~S2820C7(){ note_dtor("S2820C7", this);} // tgen
S2820C7 ::S2820C7(){ note_ctor("S2820C7", this);} // tgen

static void Test_S2820C7()
{
  extern Class_Descriptor cd_S2820C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S2820C7, buf);
    S2820C7 *dp, &lv = *(dp=new (buf) S2820C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S2820C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2820C7)");
    /*is_ambiguous_... S2820C7::S5266C22 */ AMB_check_base_class_offset(lv, (S5266C22*), ABISELECT(32,24), "S2820C7");
    /*is_ambiguous_... S2820C7::S2820C9 */ AMB_check_base_class_offset(lv, (S5266C22*)(S2820C9*), ABISELECT(32,24), "S2820C7");
    check_base_class_offset(lv, (S5266C22*)(S2820C9*)(S2820C10*), ABISELECT(32,24), "S2820C7");
    /*is_ambiguous_... S2820C7::S2820C9 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S2820C9*), ABISELECT(40,28), "S2820C7");
    /*is_ambiguous_... S2820C7::S2820C9 */ AMB_check_base_class_offset(lv, (S5266C26*)(S2820C9*), ABISELECT(32,24), "S2820C7");
    /*is_ambiguous_... S2820C7::S2820C9 */ AMB_check_base_class_offset(lv, (S2820C9*), ABISELECT(32,24), "S2820C7");
    check_base_class_offset(lv, (S5266C26*)(S2820C11*)(S2820C10*), ABISELECT(57,37), "S2820C7");
    check_base_class_offset(lv, (S7719C4_nt*)(S2820C11*)(S2820C10*), ABISELECT(57,37), "S2820C7");
    check_base_class_offset(lv, (S2820C11*)(S2820C10*), ABISELECT(57,37), "S2820C7");
    /*is_ambiguous_... S2820C10::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*)(S2820C10*), ABISELECT(58,38), "S2820C7");
    check_base_class_offset(lv, (S7719C4_nt*)(S2820C9*)(S2820C10*), ABISELECT(56,36), "S2820C7");
    check_base_class_offset(lv, (S5266C26*)(S2820C9*)(S2820C10*), ABISELECT(48,32), "S2820C7");
    check_base_class_offset(lv, (S2820C9*)(S2820C10*), ABISELECT(48,32), "S2820C7");
    check_base_class_offset(lv, (S2820C10*), ABISELECT(48,32), "S2820C7");
    /*is_ambiguous_... S2820C12::S7719C4_nt */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S2820C12*), ABISELECT(72,48), "S2820C7");
    check_base_class_offset(lv, (S7719C4_nt*)(S2820C13*), ABISELECT(72,48), "S2820C7");
    /*is_ambiguous_... S2820C12::S5266C22 */ AMB_check_base_class_offset(lv, (S5266C22*)(S2820C12*), 0, "S2820C7");
    check_base_class_offset(lv, (S5266C26*)(S2820C11*)(S2820C12*), ABISELECT(8,4), "S2820C7");
    check_base_class_offset(lv, (S7719C4_nt*)(S2820C11*)(S2820C12*), ABISELECT(8,4), "S2820C7");
    check_base_class_offset(lv, (S2820C11*)(S2820C12*), ABISELECT(8,4), "S2820C7");
    check_base_class_offset(lv, (S5266C26*)(S2820C13*), ABISELECT(80,52), "S2820C7");
    check_base_class_offset(lv, (S5266C22*)(S2820C13*), ABISELECT(80,52), "S2820C7");
    check_base_class_offset(lv, (S2820C13*)(S2820C12*), ABISELECT(80,52), "S2820C7");
    check_base_class_offset(lv, (S2820C12*), 0, "S2820C7");
    /*is_ambiguous_... S2820C7::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*), 0, "S2820C7");
    check_field_offset(lv, s2820c7f0, ABISELECT(16,8), "S2820C7.s2820c7f0");
    test_class_info(&lv, &cd_S2820C7);
    dp->~S2820C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2820C7(Test_S2820C7, "S2820C7", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S2820C7C1Ev();
extern void _ZN7S2820C7D1Ev();
Name_Map name_map_S2820C7[] = {
  NSPAIR(_ZN7S2820C7C1Ev),
  NSPAIR(_ZN7S2820C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5266C22;
extern VTBL_ENTRY _ZTI8S5266C22[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S2820C9;
extern VTBL_ENTRY _ZTI7S2820C9[];
extern  VTBL_ENTRY _ZTV7S2820C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2820C9[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S2820C11;
extern VTBL_ENTRY _ZTI8S2820C11[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S2820C9;
extern VTBL_ENTRY _ZTI7S2820C9[];
extern  VTBL_ENTRY _ZTV7S2820C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2820C9[];
extern Class_Descriptor cd_S2820C10;
extern VTBL_ENTRY _ZTI8S2820C10[];
extern  VTBL_ENTRY _ZTV8S2820C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2820C10[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C22;
extern VTBL_ENTRY _ZTI8S5266C22[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S2820C11;
extern VTBL_ENTRY _ZTI8S2820C11[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C22;
extern VTBL_ENTRY _ZTI8S5266C22[];
extern Class_Descriptor cd_S2820C13;
extern VTBL_ENTRY _ZTI8S2820C13[];
extern  VTBL_ENTRY _ZTV8S2820C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2820C13[];
extern Class_Descriptor cd_S2820C12;
extern VTBL_ENTRY _ZTI8S2820C12[];
extern  VTBL_ENTRY _ZTV8S2820C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2820C12[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
static Base_Class bases_S2820C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C22,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7719C4_nt,    ABISELECT(40,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S2820C9,    ABISELECT(32,24), //bcp->offset
    8, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5266C26,    ABISELECT(57,37), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(57,37), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S2820C11,    ABISELECT(57,37), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(58,38), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S2820C9,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S2820C10,    ABISELECT(48,32), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7719C4_nt,    ABISELECT(72,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S5266C22,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S2820C11,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S5266C22,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S2820C13,    ABISELECT(80,52), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S2820C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S2820C7[];
static  VTBL_ENTRY vtc_S2820C7[] = {
  0,
  ABISELECT(48,32),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(80,52),
  ABISELECT(72,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S2820C7[0]),
  0,
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI7S2820C7[0]),
  ABISELECT(-16,-8),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S2820C7[0]),
  ABISELECT(-8,-4),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI7S2820C7[0]),
};
extern VTBL_ENTRY _ZTV7S2820C7[];
static  VTBL_ENTRY _tg__ZTV8S2820C12__7S2820C7[] = {
  ABISELECT(80,52),
  ABISELECT(72,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S2820C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S2820C13__8S2820C12__7S2820C7[] = {
  ABISELECT(-8,-4),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S2820C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S2820C9__7S2820C7[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S2820C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S2820C10__7S2820C7[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S2820C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S2820C98S2820C10__A1__7S2820C7[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S2820C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S2820C13__7S2820C7[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S2820C13[0]),
};
static  VTT_ENTRY vtt_S2820C7[] = {
  {&(_ZTV7S2820C7[8]),  8,17},
  {&(_tg__ZTV8S2820C12__7S2820C7[4]),  4,4},
  {&(_tg__ZTV8S2820C13__8S2820C12__7S2820C7[3]),  3,3},
  {&(_ZTV7S2820C7[11]),  11,17},
  {&(_ZTV7S2820C7[14]),  14,17},
  {&(_ZTV7S2820C7[17]),  17,17},
  {&(_tg__ZTV7S2820C9__7S2820C7[3]),  3,3},
  {&(_tg__ZTV8S2820C10__7S2820C7[3]),  3,3},
  {&(_tg__ZTV7S2820C98S2820C10__A1__7S2820C7[3]),  3,3},
  {&(_tg__ZTV8S2820C13__7S2820C7[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S2820C7[];
extern  VTBL_ENTRY _ZTV7S2820C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2820C7[];
Class_Descriptor cd_S2820C7 = {  "S2820C7", // class name
  bases_S2820C7, 22,
  &(vtc_S2820C7[0]), // expected_vtbl_contents
  &(vtt_S2820C7[0]), // expected_vtt_contents
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S2820C7),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S2820C7),17, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2820C7),10, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2820C5  : virtual S7719C4_nt , virtual S2820C7 , S2820C12 {
  int s2820c5f0;
  virtual  ~S2820C5(); // _ZN7S2820C5D2Ev
  S2820C5(); // tgen
};
//SIG(-1 S2820C5) C1{ VBC2{ m Fc} VBC3{ VBC4{ m} VBC5{ BC2 BC6{ m} VBC4} VBC7{ BC8{ BC6 BC2} BC6 BC5 FL} BC9{ VBC2 BC4 BC8 VBC10{ BC6 BC4 VBC2 FC4}} VBC6 FL[2]} BC9 vd Fi}


 S2820C5 ::~S2820C5(){ note_dtor("S2820C5", this);}
S2820C5 ::S2820C5(){ note_ctor("S2820C5", this);} // tgen

static void Test_S2820C5()
{
  extern Class_Descriptor cd_S2820C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,19)];
    init_test(&cd_S2820C5, buf);
    S2820C5 *dp, &lv = *(dp=new (buf) S2820C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,72), "sizeof(S2820C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2820C5)");
    /*is_ambiguous_... S2820C5::S7719C4_nt */ AMB_check_base_class_offset(lv, (S7719C4_nt*), ABISELECT(16,12), "S2820C5");
    /*is_ambiguous_... S2820C12::S7719C4_nt */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S2820C12*)(S2820C7*), ABISELECT(16,12), "S2820C5");
    check_base_class_offset(lv, (S7719C4_nt*)(S2820C13*), ABISELECT(16,12), "S2820C5");
    /*is_ambiguous_... S2820C5::S2820C12 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S2820C12*), ABISELECT(16,12), "S2820C5");
    /*is_ambiguous_... S2820C7::S5266C22 */ AMB_check_base_class_offset(lv, (S5266C22*)(S2820C7*), ABISELECT(56,40), "S2820C5");
    /*is_ambiguous_... S2820C5::S2820C9 */ AMB_check_base_class_offset(lv, (S5266C22*)(S2820C9*), ABISELECT(56,40), "S2820C5");
    check_base_class_offset(lv, (S5266C22*)(S2820C9*)(S2820C10*), ABISELECT(56,40), "S2820C5");
    /*is_ambiguous_... S2820C5::S2820C9 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S2820C9*), ABISELECT(64,44), "S2820C5");
    /*is_ambiguous_... S2820C5::S2820C9 */ AMB_check_base_class_offset(lv, (S5266C26*)(S2820C9*), ABISELECT(56,40), "S2820C5");
    /*is_ambiguous_... S2820C7::S2820C9 */ AMB_check_base_class_offset(lv, (S2820C9*)(S2820C7*), ABISELECT(56,40), "S2820C5");
    check_base_class_offset(lv, (S5266C26*)(S2820C11*)(S2820C10*), ABISELECT(81,53), "S2820C5");
    check_base_class_offset(lv, (S7719C4_nt*)(S2820C11*)(S2820C10*), ABISELECT(81,53), "S2820C5");
    check_base_class_offset(lv, (S2820C11*)(S2820C10*), ABISELECT(81,53), "S2820C5");
    /*is_ambiguous_... S2820C10::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*)(S2820C10*), ABISELECT(82,54), "S2820C5");
    check_base_class_offset(lv, (S7719C4_nt*)(S2820C9*)(S2820C10*), ABISELECT(80,52), "S2820C5");
    check_base_class_offset(lv, (S5266C26*)(S2820C9*)(S2820C10*), ABISELECT(72,48), "S2820C5");
    check_base_class_offset(lv, (S2820C9*)(S2820C10*), ABISELECT(72,48), "S2820C5");
    check_base_class_offset(lv, (S2820C10*)(S2820C7*), ABISELECT(72,48), "S2820C5");
    /*is_ambiguous_... S2820C12::S5266C22 */ AMB_check_base_class_offset(lv, (S5266C22*)(S2820C12*)(S2820C7*), ABISELECT(24,16), "S2820C5");
    check_base_class_offset(lv, (S5266C26*)(S2820C11*)(S2820C12*)(S2820C7*), ABISELECT(32,20), "S2820C5");
    check_base_class_offset(lv, (S7719C4_nt*)(S2820C11*)(S2820C12*)(S2820C7*), ABISELECT(32,20), "S2820C5");
    check_base_class_offset(lv, (S2820C11*)(S2820C12*)(S2820C7*), ABISELECT(32,20), "S2820C5");
    check_base_class_offset(lv, (S5266C26*)(S2820C13*), ABISELECT(96,64), "S2820C5");
    check_base_class_offset(lv, (S5266C22*)(S2820C13*), ABISELECT(96,64), "S2820C5");
    check_base_class_offset(lv, (S2820C13*)(S2820C12*)(S2820C7*), ABISELECT(96,64), "S2820C5");
    /*is_ambiguous_... S2820C5::S2820C12 */ AMB_check_base_class_offset(lv, (S2820C13*)(S2820C12*), ABISELECT(96,64), "S2820C5");
    check_base_class_offset(lv, (S2820C12*)(S2820C7*), ABISELECT(24,16), "S2820C5");
    /*is_ambiguous_... S2820C7::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*)(S2820C7*), 0, "S2820C5");
    check_base_class_offset(lv, (S2820C7*), ABISELECT(24,16), "S2820C5");
    /*is_ambiguous_... S2820C5::S2820C12 */ AMB_check_base_class_offset(lv, (S5266C22*)(S2820C12*), 0, "S2820C5");
    /*is_ambiguous_... S2820C5::S2820C12 */ AMB_check_base_class_offset(lv, (S5266C26*)(S2820C11*)(S2820C12*), ABISELECT(8,4), "S2820C5");
    /*is_ambiguous_... S2820C5::S2820C12 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S2820C11*)(S2820C12*), ABISELECT(8,4), "S2820C5");
    /*is_ambiguous_... S2820C5::S2820C12 */ AMB_check_base_class_offset(lv, (S2820C11*)(S2820C12*), ABISELECT(8,4), "S2820C5");
    /*is_ambiguous_... S2820C5::S2820C12 */ AMB_check_base_class_offset(lv, (S2820C12*), 0, "S2820C5");
    check_field_offset(lv, s2820c5f0, ABISELECT(12,8), "S2820C5.s2820c5f0");
    test_class_info(&lv, &cd_S2820C5);
    dp->~S2820C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2820C5(Test_S2820C5, "S2820C5", ABISELECT(112,72));

#else // __cplusplus

extern void _ZN7S2820C5C1Ev();
extern void _ZN7S2820C5D2Ev();
Name_Map name_map_S2820C5[] = {
  NSPAIR(_ZN7S2820C5C1Ev),
  NSPAIR(_ZN7S2820C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C22;
extern VTBL_ENTRY _ZTI8S5266C22[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S2820C9;
extern VTBL_ENTRY _ZTI7S2820C9[];
extern  VTBL_ENTRY _ZTV7S2820C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2820C9[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S2820C11;
extern VTBL_ENTRY _ZTI8S2820C11[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S2820C9;
extern VTBL_ENTRY _ZTI7S2820C9[];
extern  VTBL_ENTRY _ZTV7S2820C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2820C9[];
extern Class_Descriptor cd_S2820C10;
extern VTBL_ENTRY _ZTI8S2820C10[];
extern  VTBL_ENTRY _ZTV8S2820C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2820C10[];
extern Class_Descriptor cd_S5266C22;
extern VTBL_ENTRY _ZTI8S5266C22[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S2820C11;
extern VTBL_ENTRY _ZTI8S2820C11[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C22;
extern VTBL_ENTRY _ZTI8S5266C22[];
extern Class_Descriptor cd_S2820C13;
extern VTBL_ENTRY _ZTI8S2820C13[];
extern  VTBL_ENTRY _ZTV8S2820C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2820C13[];
extern Class_Descriptor cd_S2820C12;
extern VTBL_ENTRY _ZTI8S2820C12[];
extern  VTBL_ENTRY _ZTV8S2820C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2820C12[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S2820C7;
extern VTBL_ENTRY _ZTI7S2820C7[];
extern  VTBL_ENTRY _ZTV7S2820C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2820C7[];
extern Class_Descriptor cd_S5266C22;
extern VTBL_ENTRY _ZTI8S5266C22[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S2820C11;
extern VTBL_ENTRY _ZTI8S2820C11[];
extern Class_Descriptor cd_S2820C12;
extern VTBL_ENTRY _ZTI8S2820C12[];
extern  VTBL_ENTRY _ZTV8S2820C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2820C12[];
static Base_Class bases_S2820C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7719C4_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5266C22,    ABISELECT(56,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7719C4_nt,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(56,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S2820C9,    ABISELECT(56,40), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S5266C26,    ABISELECT(81,53), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(81,53), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S2820C11,    ABISELECT(81,53), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(82,54), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(72,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S2820C9,    ABISELECT(72,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S2820C10,    ABISELECT(72,48), //bcp->offset
    22, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S5266C22,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S2820C11,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S5266C22,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S2820C13,    ABISELECT(96,64), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S2820C12,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S2820C7,    ABISELECT(24,16), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5266C22,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S2820C11,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S2820C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2820C5[];
extern void _ZN7S2820C5D1Ev();
extern void _ZN7S2820C5D0Ev();
static  VTBL_ENTRY vtc_S2820C5[] = {
  0,
  ABISELECT(72,48),
  ABISELECT(56,40),
  ABISELECT(56,40),
  ABISELECT(24,16),
  ABISELECT(96,64),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S2820C5[0]),
  (VTBL_ENTRY)&_ZN7S2820C5D1Ev,
  (VTBL_ENTRY)&_ZN7S2820C5D0Ev,
  ABISELECT(-24,-16),
  ABISELECT(48,32),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(72,48),
  ABISELECT(-8,-4),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S2820C5[0]),
  0,
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI7S2820C5[0]),
  ABISELECT(-16,-8),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI7S2820C5[0]),
  ABISELECT(-80,-52),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI7S2820C5[0]),
};
extern VTBL_ENTRY _ZTV7S2820C5[];
static  VTBL_ENTRY _tg__ZTV8S2820C12__A1__7S2820C5[] = {
  ABISELECT(96,64),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S2820C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S2820C13__8S2820C12__A1__7S2820C5[] = {
  ABISELECT(-80,-52),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S2820C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S2820C7__7S2820C5[] = {
  ABISELECT(-24,-16),
  ABISELECT(48,32),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(72,48),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S2820C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S2820C127S2820C7__7S2820C5[] = {
  ABISELECT(72,48),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S2820C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S2820C13__8S2820C127S2820C7__7S2820C5[] = {
  ABISELECT(-80,-52),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI8S2820C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S2820C9__7S2820C7__7S2820C5[] = {
  0,
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI7S2820C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S2820C10__7S2820C7__7S2820C5[] = {
  ABISELECT(-16,-8),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S2820C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S2820C13__7S2820C7__7S2820C5[] = {
  ABISELECT(-80,-52),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI7S2820C7[0]),
};
static  VTBL_ENTRY _tg__ZTV7S2820C9__7S2820C5[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S2820C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S2820C10__7S2820C5[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S2820C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S2820C98S2820C10__A1__7S2820C5[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S2820C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S2820C13__7S2820C5[] = {
  ABISELECT(-80,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S2820C13[0]),
};
static  VTT_ENTRY vtt_S2820C5[] = {
  {&(_ZTV7S2820C5[9]),  9,28},
  {&(_tg__ZTV8S2820C12__A1__7S2820C5[4]),  4,4},
  {&(_tg__ZTV8S2820C13__8S2820C12__A1__7S2820C5[3]),  3,3},
  {&(_ZTV7S2820C5[19]),  19,28},
  {&(_ZTV7S2820C5[22]),  22,28},
  {&(_ZTV7S2820C5[25]),  25,28},
  {&(_ZTV7S2820C5[28]),  28,28},
  {&(_tg__ZTV7S2820C7__7S2820C5[8]),  8,8},
  {&(_tg__ZTV8S2820C127S2820C7__7S2820C5[4]),  4,4},
  {&(_tg__ZTV8S2820C13__8S2820C127S2820C7__7S2820C5[3]),  3,3},
  {&(_tg__ZTV7S2820C9__7S2820C7__7S2820C5[3]),  3,3},
  {&(_tg__ZTV8S2820C10__7S2820C7__7S2820C5[3]),  3,3},
  {&(_tg__ZTV8S2820C13__7S2820C7__7S2820C5[3]),  3,3},
  {&(_tg__ZTV7S2820C9__7S2820C5[3]),  3,3},
  {&(_tg__ZTV8S2820C10__7S2820C5[3]),  3,3},
  {&(_tg__ZTV7S2820C98S2820C10__A1__7S2820C5[3]),  3,3},
  {&(_tg__ZTV8S2820C13__7S2820C5[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S2820C5[];
extern  VTBL_ENTRY _ZTV7S2820C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2820C5[];
Class_Descriptor cd_S2820C5 = {  "S2820C5", // class name
  bases_S2820C5, 28,
  &(vtc_S2820C5[0]), // expected_vtbl_contents
  &(vtt_S2820C5[0]), // expected_vtt_contents
  ABISELECT(112,72), // object size
  NSPAIRA(_ZTI7S2820C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S2820C5),28, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2820C5),17, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2820C2  : S5266C29 , S5266C26 , S2820C5 {
  int s2820c2f0:7;
  ~S2820C2(); // tgen
  S2820C2(); // tgen
};
//SIG(-1 S2820C2) C1{ BC2{ m} BC3{ m} BC4{ VBC5{ m Fc} VBC6{ VBC7{ m} VBC8{ BC5 BC3 VBC7} VBC9{ BC10{ BC3 BC5} BC3 BC8 FL} BC11{ VBC5 BC7 BC10 VBC12{ BC3 BC7 VBC5 FC7}} VBC3 FL[2]} BC11 vd Fi} Fi:7}


S2820C2 ::~S2820C2(){ note_dtor("S2820C2", this);} // tgen
S2820C2 ::S2820C2(){ note_ctor("S2820C2", this);} // tgen

static void Test_S2820C2()
{
  extern Class_Descriptor cd_S2820C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,19)];
    init_test(&cd_S2820C2, buf);
    S2820C2 *dp, &lv = *(dp=new (buf) S2820C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,72), "sizeof(S2820C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2820C2)");
    check_base_class_offset(lv, (S5266C29*), 0, "S2820C2");
    /*is_ambiguous_... S2820C2::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*), 0, "S2820C2");
    /*is_ambiguous_... S2820C5::S7719C4_nt */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S2820C5*), ABISELECT(17,13), "S2820C2");
    /*is_ambiguous_... S2820C12::S7719C4_nt */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S2820C12*)(S2820C7*), ABISELECT(17,13), "S2820C2");
    check_base_class_offset(lv, (S7719C4_nt*)(S2820C13*), ABISELECT(17,13), "S2820C2");
    /*is_ambiguous_... S2820C5::S2820C12 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S2820C12*)(S2820C5*), ABISELECT(17,13), "S2820C2");
    /*is_ambiguous_... S2820C7::S5266C22 */ AMB_check_base_class_offset(lv, (S5266C22*)(S2820C7*), ABISELECT(56,40), "S2820C2");
    /*is_ambiguous_... S2820C2::S2820C9 */ AMB_check_base_class_offset(lv, (S5266C22*)(S2820C9*), ABISELECT(56,40), "S2820C2");
    check_base_class_offset(lv, (S5266C22*)(S2820C9*)(S2820C10*), ABISELECT(56,40), "S2820C2");
    /*is_ambiguous_... S2820C2::S2820C9 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S2820C9*), ABISELECT(64,44), "S2820C2");
    /*is_ambiguous_... S2820C2::S2820C9 */ AMB_check_base_class_offset(lv, (S5266C26*)(S2820C9*), ABISELECT(56,40), "S2820C2");
    /*is_ambiguous_... S2820C7::S2820C9 */ AMB_check_base_class_offset(lv, (S2820C9*)(S2820C7*), ABISELECT(56,40), "S2820C2");
    check_base_class_offset(lv, (S5266C26*)(S2820C11*)(S2820C10*), ABISELECT(81,53), "S2820C2");
    check_base_class_offset(lv, (S7719C4_nt*)(S2820C11*)(S2820C10*), ABISELECT(81,53), "S2820C2");
    check_base_class_offset(lv, (S2820C11*)(S2820C10*), ABISELECT(81,53), "S2820C2");
    /*is_ambiguous_... S2820C10::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*)(S2820C10*), ABISELECT(82,54), "S2820C2");
    check_base_class_offset(lv, (S7719C4_nt*)(S2820C9*)(S2820C10*), ABISELECT(80,52), "S2820C2");
    check_base_class_offset(lv, (S5266C26*)(S2820C9*)(S2820C10*), ABISELECT(72,48), "S2820C2");
    check_base_class_offset(lv, (S2820C9*)(S2820C10*), ABISELECT(72,48), "S2820C2");
    check_base_class_offset(lv, (S2820C10*)(S2820C7*), ABISELECT(72,48), "S2820C2");
    /*is_ambiguous_... S2820C12::S5266C22 */ AMB_check_base_class_offset(lv, (S5266C22*)(S2820C12*)(S2820C7*), ABISELECT(24,16), "S2820C2");
    check_base_class_offset(lv, (S5266C26*)(S2820C11*)(S2820C12*)(S2820C7*), ABISELECT(32,20), "S2820C2");
    check_base_class_offset(lv, (S7719C4_nt*)(S2820C11*)(S2820C12*)(S2820C7*), ABISELECT(32,20), "S2820C2");
    check_base_class_offset(lv, (S2820C11*)(S2820C12*)(S2820C7*), ABISELECT(32,20), "S2820C2");
    check_base_class_offset(lv, (S5266C26*)(S2820C13*), ABISELECT(96,64), "S2820C2");
    check_base_class_offset(lv, (S5266C22*)(S2820C13*), ABISELECT(96,64), "S2820C2");
    check_base_class_offset(lv, (S2820C13*)(S2820C12*)(S2820C7*), ABISELECT(96,64), "S2820C2");
    /*is_ambiguous_... S2820C5::S2820C12 */ AMB_check_base_class_offset(lv, (S2820C13*)(S2820C12*)(S2820C5*), ABISELECT(96,64), "S2820C2");
    check_base_class_offset(lv, (S2820C12*)(S2820C7*), ABISELECT(24,16), "S2820C2");
    /*is_ambiguous_... S2820C7::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*)(S2820C7*), ABISELECT(105,69), "S2820C2");
    check_base_class_offset(lv, (S2820C7*)(S2820C5*), ABISELECT(24,16), "S2820C2");
    /*is_ambiguous_... S2820C5::S2820C12 */ AMB_check_base_class_offset(lv, (S5266C22*)(S2820C12*)(S2820C5*), 0, "S2820C2");
    /*is_ambiguous_... S2820C5::S2820C12 */ AMB_check_base_class_offset(lv, (S5266C26*)(S2820C11*)(S2820C12*)(S2820C5*), ABISELECT(8,4), "S2820C2");
    /*is_ambiguous_... S2820C5::S2820C12 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S2820C11*)(S2820C12*)(S2820C5*), ABISELECT(8,4), "S2820C2");
    /*is_ambiguous_... S2820C5::S2820C12 */ AMB_check_base_class_offset(lv, (S2820C11*)(S2820C12*)(S2820C5*), ABISELECT(8,4), "S2820C2");
    /*is_ambiguous_... S2820C5::S2820C12 */ AMB_check_base_class_offset(lv, (S2820C12*)(S2820C5*), 0, "S2820C2");
    check_base_class_offset(lv, (S2820C5*), 0, "S2820C2");
    set_bf_and_test(lv, s2820c2f0, ABISELECT(16,12), 0, 7, 1, "S2820C2");
    set_bf_and_test(lv, s2820c2f0, ABISELECT(16,12), 0, 7, hide_sll(1LL<<6), "S2820C2");
    test_class_info(&lv, &cd_S2820C2);
    dp->~S2820C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2820C2(Test_S2820C2, "S2820C2", ABISELECT(112,72));

#else // __cplusplus

extern void _ZN7S2820C2C1Ev();
extern void _ZN7S2820C2D1Ev();
Name_Map name_map_S2820C2[] = {
  NSPAIR(_ZN7S2820C2C1Ev),
  NSPAIR(_ZN7S2820C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C22;
extern VTBL_ENTRY _ZTI8S5266C22[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S2820C9;
extern VTBL_ENTRY _ZTI7S2820C9[];
extern  VTBL_ENTRY _ZTV7S2820C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2820C9[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S2820C11;
extern VTBL_ENTRY _ZTI8S2820C11[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S2820C9;
extern VTBL_ENTRY _ZTI7S2820C9[];
extern  VTBL_ENTRY _ZTV7S2820C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2820C9[];
extern Class_Descriptor cd_S2820C10;
extern VTBL_ENTRY _ZTI8S2820C10[];
extern  VTBL_ENTRY _ZTV8S2820C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2820C10[];
extern Class_Descriptor cd_S5266C22;
extern VTBL_ENTRY _ZTI8S5266C22[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S2820C11;
extern VTBL_ENTRY _ZTI8S2820C11[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C22;
extern VTBL_ENTRY _ZTI8S5266C22[];
extern Class_Descriptor cd_S2820C13;
extern VTBL_ENTRY _ZTI8S2820C13[];
extern  VTBL_ENTRY _ZTV8S2820C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2820C13[];
extern Class_Descriptor cd_S2820C12;
extern VTBL_ENTRY _ZTI8S2820C12[];
extern  VTBL_ENTRY _ZTV8S2820C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2820C12[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S2820C7;
extern VTBL_ENTRY _ZTI7S2820C7[];
extern  VTBL_ENTRY _ZTV7S2820C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2820C7[];
extern Class_Descriptor cd_S5266C22;
extern VTBL_ENTRY _ZTI8S5266C22[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S2820C11;
extern VTBL_ENTRY _ZTI8S2820C11[];
extern Class_Descriptor cd_S2820C12;
extern VTBL_ENTRY _ZTI8S2820C12[];
extern  VTBL_ENTRY _ZTV8S2820C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2820C12[];
extern Class_Descriptor cd_S2820C5;
extern VTBL_ENTRY _ZTI7S2820C5[];
extern  VTBL_ENTRY _ZTV7S2820C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2820C5[];
static Base_Class bases_S2820C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7719C4_nt,    ABISELECT(17,13), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S5266C22,    ABISELECT(56,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7719C4_nt,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(56,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S2820C9,    ABISELECT(56,40), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S5266C26,    ABISELECT(81,53), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(81,53), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S2820C11,    ABISELECT(81,53), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(82,54), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(72,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S2820C9,    ABISELECT(72,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S2820C10,    ABISELECT(72,48), //bcp->offset
    22, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S5266C22,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S2820C11,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S5266C22,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S2820C13,    ABISELECT(96,64), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S2820C12,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(105,69), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S2820C7,    ABISELECT(24,16), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S5266C22,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S2820C11,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S2820C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S2820C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2820C2[];
extern void _ZN7S2820C2D1Ev();
extern void _ZN7S2820C2D0Ev();
static  VTBL_ENTRY vtc_S2820C2[] = {
  ABISELECT(105,69),
  ABISELECT(72,48),
  ABISELECT(56,40),
  ABISELECT(56,40),
  ABISELECT(24,16),
  ABISELECT(96,64),
  ABISELECT(17,13),
  0,
  (VTBL_ENTRY)&(_ZTI7S2820C2[0]),
  (VTBL_ENTRY)&_ZN7S2820C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2820C2D0Ev,
  ABISELECT(81,53),
  ABISELECT(48,32),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(72,48),
  ABISELECT(-7,-3),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S2820C2[0]),
  0,
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI7S2820C2[0]),
  ABISELECT(-16,-8),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI7S2820C2[0]),
  ABISELECT(-79,-51),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI7S2820C2[0]),
};
extern VTBL_ENTRY _ZTV7S2820C2[];
extern void _ZN7S2820C5D1Ev();
extern void _ZN7S2820C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2820C5__7S2820C2[] = {
  ABISELECT(105,69),
  ABISELECT(72,48),
  ABISELECT(56,40),
  ABISELECT(56,40),
  ABISELECT(24,16),
  ABISELECT(96,64),
  ABISELECT(17,13),
  0,
  (VTBL_ENTRY)&(_ZTI7S2820C5[0]),
  (VTBL_ENTRY)&_ZN7S2820C5D1Ev,
  (VTBL_ENTRY)&_ZN7S2820C5D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S2820C127S2820C5__A1__7S2820C2[] = {
  ABISELECT(96,64),
  ABISELECT(17,13),
  0,
  (VTBL_ENTRY)&(_ZTI8S2820C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S2820C13__8S2820C127S2820C5__A1__7S2820C2[] = {
  ABISELECT(-79,-51),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S2820C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S2820C7__7S2820C5__7S2820C2[] = {
  ABISELECT(81,53),
  ABISELECT(48,32),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(72,48),
  ABISELECT(-7,-3),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S2820C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S2820C9__7S2820C5__7S2820C2[] = {
  0,
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI7S2820C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S2820C10__7S2820C5__7S2820C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI7S2820C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S2820C13__7S2820C5__7S2820C2[] = {
  ABISELECT(-79,-51),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI7S2820C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S2820C7__7S2820C2[] = {
  ABISELECT(81,53),
  ABISELECT(48,32),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(72,48),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI7S2820C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S2820C127S2820C7__7S2820C2[] = {
  ABISELECT(72,48),
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S2820C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S2820C13__8S2820C127S2820C7__7S2820C2[] = {
  ABISELECT(-79,-51),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI8S2820C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S2820C9__7S2820C7__7S2820C2[] = {
  0,
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI7S2820C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S2820C10__7S2820C7__7S2820C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S2820C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S2820C13__7S2820C7__7S2820C2[] = {
  ABISELECT(-79,-51),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI7S2820C7[0]),
};
static  VTBL_ENTRY _tg__ZTV7S2820C9__7S2820C2[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S2820C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S2820C10__7S2820C2[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S2820C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S2820C98S2820C10__A1__7S2820C2[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S2820C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S2820C13__7S2820C2[] = {
  ABISELECT(-79,-51),
  0,
  (VTBL_ENTRY)&(_ZTI8S2820C13[0]),
};
static  VTT_ENTRY vtt_S2820C2[] = {
  {&(_ZTV7S2820C2[9]),  9,28},
  {&(_tg__ZTV7S2820C5__7S2820C2[9]),  9,11},
  {&(_tg__ZTV8S2820C127S2820C5__A1__7S2820C2[4]),  4,4},
  {&(_tg__ZTV8S2820C13__8S2820C127S2820C5__A1__7S2820C2[3]),  3,3},
  {&(_tg__ZTV7S2820C7__7S2820C5__7S2820C2[8]),  8,8},
  {&(_tg__ZTV7S2820C9__7S2820C5__7S2820C2[3]),  3,3},
  {&(_tg__ZTV8S2820C10__7S2820C5__7S2820C2[3]),  3,3},
  {&(_tg__ZTV8S2820C13__7S2820C5__7S2820C2[3]),  3,3},
  {&(_ZTV7S2820C2[19]),  19,28},
  {&(_ZTV7S2820C2[22]),  22,28},
  {&(_ZTV7S2820C2[25]),  25,28},
  {&(_ZTV7S2820C2[28]),  28,28},
  {&(_tg__ZTV7S2820C7__7S2820C2[8]),  8,8},
  {&(_tg__ZTV8S2820C127S2820C7__7S2820C2[4]),  4,4},
  {&(_tg__ZTV8S2820C13__8S2820C127S2820C7__7S2820C2[3]),  3,3},
  {&(_tg__ZTV7S2820C9__7S2820C7__7S2820C2[3]),  3,3},
  {&(_tg__ZTV8S2820C10__7S2820C7__7S2820C2[3]),  3,3},
  {&(_tg__ZTV8S2820C13__7S2820C7__7S2820C2[3]),  3,3},
  {&(_tg__ZTV7S2820C9__7S2820C2[3]),  3,3},
  {&(_tg__ZTV8S2820C10__7S2820C2[3]),  3,3},
  {&(_tg__ZTV7S2820C98S2820C10__A1__7S2820C2[3]),  3,3},
  {&(_tg__ZTV8S2820C13__7S2820C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S2820C2[];
extern  VTBL_ENTRY _ZTV7S2820C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2820C2[];
Class_Descriptor cd_S2820C2 = {  "S2820C2", // class name
  bases_S2820C2, 31,
  &(vtc_S2820C2[0]), // expected_vtbl_contents
  &(vtt_S2820C2[0]), // expected_vtt_contents
  ABISELECT(112,72), // object size
  NSPAIRA(_ZTI7S2820C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S2820C2),28, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2820C2),22, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2820C14  : virtual S2820C12 , virtual S2820C9 , S2820C13 , virtual S2820C7 {
  ~S2820C14(); // tgen
  S2820C14(); // tgen
};
//SIG(-1 S2820C14) C1{ VBC2{ VBC3{ m Fc} BC4{ m} BC5{ BC6{ m} BC3} VBC7{ BC6 BC4 VBC3 FC4}} VBC8{ BC3 BC6 VBC4} BC7 VBC9{ VBC4 VBC8 VBC10{ BC5 BC6 BC8 FL} BC2 VBC6 FL[2]}}


S2820C14 ::~S2820C14(){ note_dtor("S2820C14", this);} // tgen
S2820C14 ::S2820C14(){ note_ctor("S2820C14", this);} // tgen

static void Test_S2820C14()
{
  extern Class_Descriptor cd_S2820C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,20)];
    init_test(&cd_S2820C14, buf);
    S2820C14 *dp, &lv = *(dp=new (buf) S2820C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,76), "sizeof(S2820C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2820C14)");
    /*is_ambiguous_... S2820C14::S2820C12 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S2820C12*), ABISELECT(25,13), "S2820C14");
    /*is_ambiguous_... S2820C14::S2820C13 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S2820C13*), ABISELECT(25,13), "S2820C14");
    /*is_ambiguous_... S2820C14::S2820C13 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S2820C13*), ABISELECT(25,13), "S2820C14");
    /*is_ambiguous_... S2820C12::S7719C4_nt */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S2820C12*)(S2820C7*), ABISELECT(25,13), "S2820C14");
    /*is_ambiguous_... S2820C14::S2820C12 */ AMB_check_base_class_offset(lv, (S5266C22*)(S2820C12*), ABISELECT(16,8), "S2820C14");
    /*is_ambiguous_... S2820C14::S2820C12 */ AMB_check_base_class_offset(lv, (S5266C26*)(S2820C11*)(S2820C12*), ABISELECT(24,12), "S2820C14");
    /*is_ambiguous_... S2820C14::S2820C12 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S2820C11*)(S2820C12*), ABISELECT(24,12), "S2820C14");
    /*is_ambiguous_... S2820C14::S2820C12 */ AMB_check_base_class_offset(lv, (S2820C11*)(S2820C12*), ABISELECT(24,12), "S2820C14");
    /*is_ambiguous_... S2820C14::S2820C13 */ AMB_check_base_class_offset(lv, (S5266C26*)(S2820C13*), ABISELECT(32,16), "S2820C14");
    /*is_ambiguous_... S2820C14::S2820C13 */ AMB_check_base_class_offset(lv, (S5266C22*)(S2820C13*), ABISELECT(32,16), "S2820C14");
    /*is_ambiguous_... S2820C14::S2820C12 */ AMB_check_base_class_offset(lv, (S2820C13*)(S2820C12*), ABISELECT(32,16), "S2820C14");
    check_base_class_offset(lv, (S2820C13*)(S2820C12*)(S2820C7*), ABISELECT(32,16), "S2820C14");
    /*is_ambiguous_... S2820C14::S2820C12 */ AMB_check_base_class_offset(lv, (S2820C12*), ABISELECT(16,8), "S2820C14");
    /*is_ambiguous_... S2820C14::S2820C9 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S2820C9*), ABISELECT(56,28), "S2820C14");
    /*is_ambiguous_... S2820C14::S2820C9 */ AMB_check_base_class_offset(lv, (S5266C26*)(S2820C9*), ABISELECT(48,24), "S2820C14");
    /*is_ambiguous_... S2820C14::S2820C9 */ AMB_check_base_class_offset(lv, (S5266C22*)(S2820C9*), ABISELECT(57,29), "S2820C14");
    /*is_ambiguous_... S2820C7::S5266C22 */ AMB_check_base_class_offset(lv, (S5266C22*)(S2820C7*), ABISELECT(57,29), "S2820C14");
    check_base_class_offset(lv, (S5266C22*)(S2820C9*)(S2820C10*), ABISELECT(57,29), "S2820C14");
    /*is_ambiguous_... S2820C14::S2820C9 */ AMB_check_base_class_offset(lv, (S2820C9*), ABISELECT(48,24), "S2820C14");
    /*is_ambiguous_... S2820C7::S2820C9 */ AMB_check_base_class_offset(lv, (S2820C9*)(S2820C7*), ABISELECT(48,24), "S2820C14");
    /*is_ambiguous_... S2820C14::S2820C13 */ AMB_check_base_class_offset(lv, (S5266C26*)(S2820C13*), 0, "S2820C14");
    /*is_ambiguous_... S2820C14::S2820C13 */ AMB_check_base_class_offset(lv, (S5266C22*)(S2820C13*), 0, "S2820C14");
    /*is_ambiguous_... S2820C14::S2820C13 */ AMB_check_base_class_offset(lv, (S2820C13*), 0, "S2820C14");
    check_base_class_offset(lv, (S5266C26*)(S2820C11*)(S2820C10*), ABISELECT(105,61), "S2820C14");
    check_base_class_offset(lv, (S7719C4_nt*)(S2820C11*)(S2820C10*), ABISELECT(105,61), "S2820C14");
    check_base_class_offset(lv, (S2820C11*)(S2820C10*), ABISELECT(105,61), "S2820C14");
    /*is_ambiguous_... S2820C10::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*)(S2820C10*), ABISELECT(106,62), "S2820C14");
    check_base_class_offset(lv, (S7719C4_nt*)(S2820C9*)(S2820C10*), ABISELECT(104,60), "S2820C14");
    check_base_class_offset(lv, (S5266C26*)(S2820C9*)(S2820C10*), ABISELECT(96,56), "S2820C14");
    check_base_class_offset(lv, (S2820C9*)(S2820C10*), ABISELECT(96,56), "S2820C14");
    check_base_class_offset(lv, (S2820C10*)(S2820C7*), ABISELECT(96,56), "S2820C14");
    /*is_ambiguous_... S2820C12::S5266C22 */ AMB_check_base_class_offset(lv, (S5266C22*)(S2820C12*)(S2820C7*), ABISELECT(64,32), "S2820C14");
    check_base_class_offset(lv, (S5266C26*)(S2820C11*)(S2820C12*)(S2820C7*), ABISELECT(72,36), "S2820C14");
    check_base_class_offset(lv, (S7719C4_nt*)(S2820C11*)(S2820C12*)(S2820C7*), ABISELECT(72,36), "S2820C14");
    check_base_class_offset(lv, (S2820C11*)(S2820C12*)(S2820C7*), ABISELECT(72,36), "S2820C14");
    check_base_class_offset(lv, (S2820C12*)(S2820C7*), ABISELECT(64,32), "S2820C14");
    /*is_ambiguous_... S2820C7::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*)(S2820C7*), ABISELECT(120,72), "S2820C14");
    check_base_class_offset(lv, (S2820C7*), ABISELECT(64,32), "S2820C14");
    test_class_info(&lv, &cd_S2820C14);
    dp->~S2820C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2820C14(Test_S2820C14, "S2820C14", ABISELECT(128,76));

#else // __cplusplus

extern void _ZN8S2820C14C1Ev();
extern void _ZN8S2820C14D1Ev();
Name_Map name_map_S2820C14[] = {
  NSPAIR(_ZN8S2820C14C1Ev),
  NSPAIR(_ZN8S2820C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C22;
extern VTBL_ENTRY _ZTI8S5266C22[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S2820C11;
extern VTBL_ENTRY _ZTI8S2820C11[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C22;
extern VTBL_ENTRY _ZTI8S5266C22[];
extern Class_Descriptor cd_S2820C13;
extern VTBL_ENTRY _ZTI8S2820C13[];
extern  VTBL_ENTRY _ZTV8S2820C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2820C13[];
extern Class_Descriptor cd_S2820C12;
extern VTBL_ENTRY _ZTI8S2820C12[];
extern  VTBL_ENTRY _ZTV8S2820C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2820C12[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C22;
extern VTBL_ENTRY _ZTI8S5266C22[];
extern Class_Descriptor cd_S2820C9;
extern VTBL_ENTRY _ZTI7S2820C9[];
extern  VTBL_ENTRY _ZTV7S2820C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2820C9[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C22;
extern VTBL_ENTRY _ZTI8S5266C22[];
extern Class_Descriptor cd_S2820C13;
extern VTBL_ENTRY _ZTI8S2820C13[];
extern  VTBL_ENTRY _ZTV8S2820C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2820C13[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S2820C11;
extern VTBL_ENTRY _ZTI8S2820C11[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S2820C9;
extern VTBL_ENTRY _ZTI7S2820C9[];
extern  VTBL_ENTRY _ZTV7S2820C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2820C9[];
extern Class_Descriptor cd_S2820C10;
extern VTBL_ENTRY _ZTI8S2820C10[];
extern  VTBL_ENTRY _ZTV8S2820C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2820C10[];
extern Class_Descriptor cd_S5266C22;
extern VTBL_ENTRY _ZTI8S5266C22[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S2820C11;
extern VTBL_ENTRY _ZTI8S2820C11[];
extern Class_Descriptor cd_S2820C12;
extern VTBL_ENTRY _ZTI8S2820C12[];
extern  VTBL_ENTRY _ZTV8S2820C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2820C12[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S2820C7;
extern VTBL_ENTRY _ZTI7S2820C7[];
extern  VTBL_ENTRY _ZTV7S2820C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2820C7[];
static Base_Class bases_S2820C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7719C4_nt,    ABISELECT(25,13), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S5266C22,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S2820C11,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S5266C22,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S2820C13,    ABISELECT(32,16), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S2820C12,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7719C4_nt,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S5266C22,    ABISELECT(57,29), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S2820C9,    ABISELECT(48,24), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S5266C22,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S2820C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C26,    ABISELECT(105,61), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(105,61), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S2820C11,    ABISELECT(105,61), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(106,62), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(104,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S2820C9,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S2820C10,    ABISELECT(96,56), //bcp->offset
    28, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S5266C22,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S2820C11,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S2820C12,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(120,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S2820C7,    ABISELECT(64,32), //bcp->offset
    20, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S2820C14[];
static  VTBL_ENTRY vtc_S2820C14[] = {
  ABISELECT(120,72),
  ABISELECT(96,56),
  ABISELECT(64,32),
  ABISELECT(57,29),
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(16,8),
  ABISELECT(25,13),
  0,
  (VTBL_ENTRY)&(_ZTI8S2820C14[0]),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S2820C14[0]),
  ABISELECT(-7,-3),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S2820C14[0]),
  ABISELECT(9,5),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S2820C14[0]),
  ABISELECT(56,40),
  ABISELECT(32,24),
  ABISELECT(-16,-8),
  ABISELECT(-7,-3),
  ABISELECT(-32,-16),
  ABISELECT(-39,-19),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S2820C14[0]),
  ABISELECT(-39,-27),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S2820C14[0]),
};
extern VTBL_ENTRY _ZTV8S2820C14[];
static  VTBL_ENTRY _tg__ZTV8S2820C13__A__8S2820C14[] = {
  ABISELECT(25,13),
  0,
  (VTBL_ENTRY)&(_ZTI8S2820C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S2820C12__8S2820C14[] = {
  ABISELECT(16,8),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S2820C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S2820C13__8S2820C12__8S2820C14[] = {
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S2820C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S2820C13__8S2820C14[] = {
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S2820C13[0]),
};
static  VTBL_ENTRY _tg__ZTV7S2820C9__8S2820C14[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S2820C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S2820C7__8S2820C14[] = {
  ABISELECT(56,40),
  ABISELECT(32,24),
  ABISELECT(-16,-8),
  ABISELECT(-7,-3),
  ABISELECT(-32,-16),
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI7S2820C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S2820C127S2820C7__A1__8S2820C14[] = {
  ABISELECT(-32,-16),
  ABISELECT(-39,-19),
  0,
  (VTBL_ENTRY)&(_ZTI8S2820C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S2820C13__8S2820C127S2820C7__A1__8S2820C14[] = {
  ABISELECT(-7,-3),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S2820C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S2820C9__7S2820C7__8S2820C14[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S2820C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S2820C10__7S2820C7__8S2820C14[] = {
  ABISELECT(-39,-27),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI7S2820C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S2820C13__7S2820C7__8S2820C14[] = {
  ABISELECT(-7,-3),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S2820C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S2820C10__8S2820C14[] = {
  ABISELECT(-39,-27),
  0,
  (VTBL_ENTRY)&(_ZTI8S2820C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S2820C98S2820C10__A1__8S2820C14[] = {
  ABISELECT(-39,-27),
  0,
  (VTBL_ENTRY)&(_ZTI7S2820C9[0]),
};
static  VTT_ENTRY vtt_S2820C14[] = {
  {&(_ZTV8S2820C14[10]),  10,31},
  {&(_tg__ZTV8S2820C13__A__8S2820C14[3]),  3,3},
  {&(_ZTV8S2820C14[14]),  14,31},
  {&(_ZTV8S2820C14[17]),  17,31},
  {&(_ZTV8S2820C14[20]),  20,31},
  {&(_ZTV8S2820C14[28]),  28,31},
  {&(_ZTV8S2820C14[31]),  31,31},
  {&(_tg__ZTV8S2820C12__8S2820C14[4]),  4,4},
  {&(_tg__ZTV8S2820C13__8S2820C12__8S2820C14[3]),  3,3},
  {&(_tg__ZTV8S2820C13__8S2820C14[3]),  3,3},
  {&(_tg__ZTV7S2820C9__8S2820C14[3]),  3,3},
  {&(_tg__ZTV7S2820C7__8S2820C14[8]),  8,8},
  {&(_tg__ZTV8S2820C127S2820C7__A1__8S2820C14[4]),  4,4},
  {&(_tg__ZTV8S2820C13__8S2820C127S2820C7__A1__8S2820C14[3]),  3,3},
  {&(_tg__ZTV7S2820C9__7S2820C7__8S2820C14[3]),  3,3},
  {&(_tg__ZTV8S2820C10__7S2820C7__8S2820C14[3]),  3,3},
  {&(_tg__ZTV8S2820C13__7S2820C7__8S2820C14[3]),  3,3},
  {&(_tg__ZTV8S2820C10__8S2820C14[3]),  3,3},
  {&(_tg__ZTV7S2820C98S2820C10__A1__8S2820C14[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S2820C14[];
extern  VTBL_ENTRY _ZTV8S2820C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2820C14[];
Class_Descriptor cd_S2820C14 = {  "S2820C14", // class name
  bases_S2820C14, 31,
  &(vtc_S2820C14[0]), // expected_vtbl_contents
  &(vtt_S2820C14[0]), // expected_vtt_contents
  ABISELECT(128,76), // object size
  NSPAIRA(_ZTI8S2820C14),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S2820C14),31, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S2820C14),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2820C1  : S2820C2 , S2820C14 , S2820C5 {
  long double s2820c1f0;
  virtual  ~S2820C1(); // _ZN7S2820C1D2Ev
  S2820C1(); // tgen
};
//SIG(1 S2820C1) C1{ BC2{ BC3{ m} BC4{ m} BC5{ VBC6{ m Fc} VBC7{ VBC8{ m} VBC9{ BC6 BC4 VBC8} VBC10{ BC11{ BC4 BC6} BC4 BC9 FL} BC12{ VBC6 BC8 BC11 VBC13{ BC4 BC8 VBC6 FC8}} VBC4 FL[2]} BC12 vd Fi} Fi:7} BC14{ VBC12 VBC9 BC13 VBC7} BC5 vd FD}


 S2820C1 ::~S2820C1(){ note_dtor("S2820C1", this);}
S2820C1 ::S2820C1(){ note_ctor("S2820C1", this);} // tgen

static void Test_S2820C1()
{
  extern Class_Descriptor cd_S2820C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,30)];
    init_test(&cd_S2820C1, buf);
    S2820C1 *dp, &lv = *(dp=new (buf) S2820C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,116), "sizeof(S2820C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2820C1)");
    check_base_class_offset(lv, (S5266C29*)(S2820C2*), 0, "S2820C1");
    /*is_ambiguous_... S2820C2::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*)(S2820C2*), 0, "S2820C1");
    /*is_ambiguous_... S2820C5::S7719C4_nt */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S2820C5*)(S2820C2*), ABISELECT(80,48), "S2820C1");
    /*is_ambiguous_... S2820C12::S7719C4_nt */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S2820C12*)(S2820C7*), ABISELECT(80,48), "S2820C1");
    /*is_ambiguous_... S2820C1::S2820C13 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S2820C13*), ABISELECT(80,48), "S2820C1");
    /*is_ambiguous_... S2820C5::S2820C12 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S2820C12*)(S2820C5*)(S2820C2*), ABISELECT(80,48), "S2820C1");
    /*is_ambiguous_... S2820C1::S2820C12 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S2820C12*), ABISELECT(80,48), "S2820C1");
    /*is_ambiguous_... S2820C14::S2820C13 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S2820C13*)(S2820C14*), ABISELECT(80,48), "S2820C1");
    /*is_ambiguous_... S2820C1::S2820C5 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S2820C5*), ABISELECT(80,48), "S2820C1");
    /*is_ambiguous_... S2820C1::S2820C5 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S2820C12*)(S2820C5*), ABISELECT(80,48), "S2820C1");
    /*is_ambiguous_... S2820C7::S5266C22 */ AMB_check_base_class_offset(lv, (S5266C22*)(S2820C7*), ABISELECT(120,76), "S2820C1");
    /*is_ambiguous_... S2820C1::S2820C9 */ AMB_check_base_class_offset(lv, (S5266C22*)(S2820C9*), ABISELECT(120,76), "S2820C1");
    check_base_class_offset(lv, (S5266C22*)(S2820C9*)(S2820C10*), ABISELECT(120,76), "S2820C1");
    /*is_ambiguous_... S2820C1::S2820C9 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S2820C9*), ABISELECT(128,80), "S2820C1");
    /*is_ambiguous_... S2820C1::S2820C9 */ AMB_check_base_class_offset(lv, (S5266C26*)(S2820C9*), ABISELECT(120,76), "S2820C1");
    /*is_ambiguous_... S2820C7::S2820C9 */ AMB_check_base_class_offset(lv, (S2820C9*)(S2820C7*), ABISELECT(120,76), "S2820C1");
    /*is_ambiguous_... S2820C14::S2820C9 */ AMB_check_base_class_offset(lv, (S2820C9*)(S2820C14*), ABISELECT(120,76), "S2820C1");
    check_base_class_offset(lv, (S5266C26*)(S2820C11*)(S2820C10*), ABISELECT(145,89), "S2820C1");
    check_base_class_offset(lv, (S7719C4_nt*)(S2820C11*)(S2820C10*), ABISELECT(145,89), "S2820C1");
    check_base_class_offset(lv, (S2820C11*)(S2820C10*), ABISELECT(145,89), "S2820C1");
    /*is_ambiguous_... S2820C10::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*)(S2820C10*), ABISELECT(146,90), "S2820C1");
    check_base_class_offset(lv, (S7719C4_nt*)(S2820C9*)(S2820C10*), ABISELECT(144,88), "S2820C1");
    check_base_class_offset(lv, (S5266C26*)(S2820C9*)(S2820C10*), ABISELECT(136,84), "S2820C1");
    check_base_class_offset(lv, (S2820C9*)(S2820C10*), ABISELECT(136,84), "S2820C1");
    check_base_class_offset(lv, (S2820C10*)(S2820C7*), ABISELECT(136,84), "S2820C1");
    /*is_ambiguous_... S2820C12::S5266C22 */ AMB_check_base_class_offset(lv, (S5266C22*)(S2820C12*)(S2820C7*), ABISELECT(88,52), "S2820C1");
    check_base_class_offset(lv, (S5266C26*)(S2820C11*)(S2820C12*)(S2820C7*), ABISELECT(96,56), "S2820C1");
    check_base_class_offset(lv, (S7719C4_nt*)(S2820C11*)(S2820C12*)(S2820C7*), ABISELECT(96,56), "S2820C1");
    check_base_class_offset(lv, (S2820C11*)(S2820C12*)(S2820C7*), ABISELECT(96,56), "S2820C1");
    /*is_ambiguous_... S2820C1::S2820C13 */ AMB_check_base_class_offset(lv, (S5266C26*)(S2820C13*), ABISELECT(160,100), "S2820C1");
    /*is_ambiguous_... S2820C1::S2820C13 */ AMB_check_base_class_offset(lv, (S5266C22*)(S2820C13*), ABISELECT(160,100), "S2820C1");
    check_base_class_offset(lv, (S2820C13*)(S2820C12*)(S2820C7*), ABISELECT(160,100), "S2820C1");
    /*is_ambiguous_... S2820C5::S2820C12 */ AMB_check_base_class_offset(lv, (S2820C13*)(S2820C12*)(S2820C5*)(S2820C2*), ABISELECT(160,100), "S2820C1");
    /*is_ambiguous_... S2820C1::S2820C12 */ AMB_check_base_class_offset(lv, (S2820C13*)(S2820C12*), ABISELECT(160,100), "S2820C1");
    /*is_ambiguous_... S2820C1::S2820C5 */ AMB_check_base_class_offset(lv, (S2820C13*)(S2820C12*)(S2820C5*), ABISELECT(160,100), "S2820C1");
    check_base_class_offset(lv, (S2820C12*)(S2820C7*), ABISELECT(88,52), "S2820C1");
    /*is_ambiguous_... S2820C7::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*)(S2820C7*), ABISELECT(169,105), "S2820C1");
    check_base_class_offset(lv, (S2820C7*)(S2820C5*)(S2820C2*), ABISELECT(88,52), "S2820C1");
    check_base_class_offset(lv, (S2820C7*)(S2820C14*), ABISELECT(88,52), "S2820C1");
    /*is_ambiguous_... S2820C1::S2820C5 */ AMB_check_base_class_offset(lv, (S2820C7*)(S2820C5*), ABISELECT(88,52), "S2820C1");
    /*is_ambiguous_... S2820C5::S2820C12 */ AMB_check_base_class_offset(lv, (S5266C22*)(S2820C12*)(S2820C5*)(S2820C2*), 0, "S2820C1");
    /*is_ambiguous_... S2820C5::S2820C12 */ AMB_check_base_class_offset(lv, (S5266C26*)(S2820C11*)(S2820C12*)(S2820C5*)(S2820C2*), ABISELECT(8,4), "S2820C1");
    /*is_ambiguous_... S2820C5::S2820C12 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S2820C11*)(S2820C12*)(S2820C5*)(S2820C2*), ABISELECT(8,4), "S2820C1");
    /*is_ambiguous_... S2820C5::S2820C12 */ AMB_check_base_class_offset(lv, (S2820C11*)(S2820C12*)(S2820C5*)(S2820C2*), ABISELECT(8,4), "S2820C1");
    /*is_ambiguous_... S2820C5::S2820C12 */ AMB_check_base_class_offset(lv, (S2820C12*)(S2820C5*)(S2820C2*), 0, "S2820C1");
    check_base_class_offset(lv, (S2820C5*)(S2820C2*), 0, "S2820C1");
    check_base_class_offset(lv, (S2820C2*), 0, "S2820C1");
    /*is_ambiguous_... S2820C1::S2820C12 */ AMB_check_base_class_offset(lv, (S5266C22*)(S2820C12*), ABISELECT(176,108), "S2820C1");
    /*is_ambiguous_... S2820C1::S2820C12 */ AMB_check_base_class_offset(lv, (S5266C26*)(S2820C11*)(S2820C12*), ABISELECT(184,112), "S2820C1");
    /*is_ambiguous_... S2820C1::S2820C12 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S2820C11*)(S2820C12*), ABISELECT(184,112), "S2820C1");
    /*is_ambiguous_... S2820C1::S2820C12 */ AMB_check_base_class_offset(lv, (S2820C11*)(S2820C12*), ABISELECT(184,112), "S2820C1");
    /*is_ambiguous_... S2820C14::S2820C12 */ AMB_check_base_class_offset(lv, (S2820C12*)(S2820C14*), ABISELECT(176,108), "S2820C1");
    /*is_ambiguous_... S2820C14::S2820C13 */ AMB_check_base_class_offset(lv, (S5266C26*)(S2820C13*)(S2820C14*), ABISELECT(24,16), "S2820C1");
    /*is_ambiguous_... S2820C14::S2820C13 */ AMB_check_base_class_offset(lv, (S5266C22*)(S2820C13*)(S2820C14*), ABISELECT(24,16), "S2820C1");
    /*is_ambiguous_... S2820C14::S2820C13 */ AMB_check_base_class_offset(lv, (S2820C13*)(S2820C14*), ABISELECT(24,16), "S2820C1");
    check_base_class_offset(lv, (S2820C14*), ABISELECT(24,16), "S2820C1");
    /*is_ambiguous_... S2820C1::S2820C5 */ AMB_check_base_class_offset(lv, (S5266C22*)(S2820C12*)(S2820C5*), ABISELECT(40,24), "S2820C1");
    /*is_ambiguous_... S2820C1::S2820C5 */ AMB_check_base_class_offset(lv, (S5266C26*)(S2820C11*)(S2820C12*)(S2820C5*), ABISELECT(48,28), "S2820C1");
    /*is_ambiguous_... S2820C1::S2820C5 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S2820C11*)(S2820C12*)(S2820C5*), ABISELECT(48,28), "S2820C1");
    /*is_ambiguous_... S2820C1::S2820C5 */ AMB_check_base_class_offset(lv, (S2820C11*)(S2820C12*)(S2820C5*), ABISELECT(48,28), "S2820C1");
    /*is_ambiguous_... S2820C1::S2820C5 */ AMB_check_base_class_offset(lv, (S2820C12*)(S2820C5*), ABISELECT(40,24), "S2820C1");
    /*is_ambiguous_... S2820C1::S2820C5 */ AMB_check_base_class_offset(lv, (S2820C5*), ABISELECT(40,24), "S2820C1");
    check_field_offset(lv, s2820c1f0, ABISELECT(64,36), "S2820C1.s2820c1f0");
    test_class_info(&lv, &cd_S2820C1);
    dp->~S2820C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2820C1(Test_S2820C1, "S2820C1", ABISELECT(192,116));

#else // __cplusplus

extern void _ZN7S2820C1C1Ev();
extern void _ZN7S2820C1D2Ev();
Name_Map name_map_S2820C1[] = {
  NSPAIR(_ZN7S2820C1C1Ev),
  NSPAIR(_ZN7S2820C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C22;
extern VTBL_ENTRY _ZTI8S5266C22[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S2820C9;
extern VTBL_ENTRY _ZTI7S2820C9[];
extern  VTBL_ENTRY _ZTV7S2820C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2820C9[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S2820C11;
extern VTBL_ENTRY _ZTI8S2820C11[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S2820C9;
extern VTBL_ENTRY _ZTI7S2820C9[];
extern  VTBL_ENTRY _ZTV7S2820C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2820C9[];
extern Class_Descriptor cd_S2820C10;
extern VTBL_ENTRY _ZTI8S2820C10[];
extern  VTBL_ENTRY _ZTV8S2820C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2820C10[];
extern Class_Descriptor cd_S5266C22;
extern VTBL_ENTRY _ZTI8S5266C22[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S2820C11;
extern VTBL_ENTRY _ZTI8S2820C11[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C22;
extern VTBL_ENTRY _ZTI8S5266C22[];
extern Class_Descriptor cd_S2820C13;
extern VTBL_ENTRY _ZTI8S2820C13[];
extern  VTBL_ENTRY _ZTV8S2820C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2820C13[];
extern Class_Descriptor cd_S2820C12;
extern VTBL_ENTRY _ZTI8S2820C12[];
extern  VTBL_ENTRY _ZTV8S2820C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2820C12[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S2820C7;
extern VTBL_ENTRY _ZTI7S2820C7[];
extern  VTBL_ENTRY _ZTV7S2820C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2820C7[];
extern Class_Descriptor cd_S5266C22;
extern VTBL_ENTRY _ZTI8S5266C22[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S2820C11;
extern VTBL_ENTRY _ZTI8S2820C11[];
extern Class_Descriptor cd_S2820C12;
extern VTBL_ENTRY _ZTI8S2820C12[];
extern  VTBL_ENTRY _ZTV8S2820C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2820C12[];
extern Class_Descriptor cd_S2820C5;
extern VTBL_ENTRY _ZTI7S2820C5[];
extern  VTBL_ENTRY _ZTV7S2820C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2820C5[];
extern Class_Descriptor cd_S2820C2;
extern VTBL_ENTRY _ZTI7S2820C2[];
extern  VTBL_ENTRY _ZTV7S2820C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2820C2[];
extern Class_Descriptor cd_S5266C22;
extern VTBL_ENTRY _ZTI8S5266C22[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S2820C11;
extern VTBL_ENTRY _ZTI8S2820C11[];
extern Class_Descriptor cd_S2820C12;
extern VTBL_ENTRY _ZTI8S2820C12[];
extern  VTBL_ENTRY _ZTV8S2820C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2820C12[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C22;
extern VTBL_ENTRY _ZTI8S5266C22[];
extern Class_Descriptor cd_S2820C13;
extern VTBL_ENTRY _ZTI8S2820C13[];
extern  VTBL_ENTRY _ZTV8S2820C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2820C13[];
extern Class_Descriptor cd_S2820C14;
extern VTBL_ENTRY _ZTI8S2820C14[];
extern  VTBL_ENTRY _ZTV8S2820C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2820C14[];
extern Class_Descriptor cd_S5266C22;
extern VTBL_ENTRY _ZTI8S5266C22[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S2820C11;
extern VTBL_ENTRY _ZTI8S2820C11[];
extern Class_Descriptor cd_S2820C12;
extern VTBL_ENTRY _ZTI8S2820C12[];
extern  VTBL_ENTRY _ZTV8S2820C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2820C12[];
extern Class_Descriptor cd_S2820C5;
extern VTBL_ENTRY _ZTI7S2820C5[];
extern  VTBL_ENTRY _ZTV7S2820C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2820C5[];
static Base_Class bases_S2820C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S5266C22,    ABISELECT(120,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7719C4_nt,    ABISELECT(128,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(120,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S2820C9,    ABISELECT(120,76), //bcp->offset
    41, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S5266C26,    ABISELECT(145,89), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(145,89), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S2820C11,    ABISELECT(145,89), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(146,90), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(144,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(136,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S2820C9,    ABISELECT(136,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S2820C10,    ABISELECT(136,84), //bcp->offset
    44, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S5266C22,    ABISELECT(88,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S2820C11,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(160,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S5266C22,    ABISELECT(160,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S2820C13,    ABISELECT(160,100), //bcp->offset
    47, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S2820C12,    ABISELECT(88,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(169,105), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S2820C7,    ABISELECT(88,52), //bcp->offset
    33, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S5266C22,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S2820C11,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S2820C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S2820C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S2820C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C22,    ABISELECT(176,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(184,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(184,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S2820C11,    ABISELECT(184,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S2820C12,    ABISELECT(176,108), //bcp->offset
    50, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S5266C26,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S5266C22,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S2820C13,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S2820C14,    ABISELECT(24,16), //bcp->offset
    12, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C22,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S2820C11,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S2820C12,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S2820C5,    ABISELECT(40,24), //bcp->offset
    22, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2820C1[];
extern void _ZN7S2820C1D1Ev();
extern void _ZN7S2820C1D0Ev();
extern void ABISELECT(_ZThn40_N7S2820C1D1Ev,_ZThn24_N7S2820C1D1Ev)();
extern void ABISELECT(_ZThn40_N7S2820C1D0Ev,_ZThn24_N7S2820C1D0Ev)();
static  VTBL_ENTRY vtc_S2820C1[] = {
  ABISELECT(176,108),
  ABISELECT(169,105),
  ABISELECT(136,84),
  ABISELECT(120,76),
  ABISELECT(120,76),
  ABISELECT(88,52),
  ABISELECT(160,100),
  ABISELECT(80,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S2820C1[0]),
  (VTBL_ENTRY)&_ZN7S2820C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2820C1D0Ev,
  ABISELECT(145,89),
  ABISELECT(112,68),
  ABISELECT(64,36),
  ABISELECT(96,60),
  ABISELECT(96,60),
  ABISELECT(136,84),
  ABISELECT(152,92),
  ABISELECT(56,32),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S2820C1[0]),
  ABISELECT(129,81),
  ABISELECT(96,60),
  ABISELECT(80,52),
  ABISELECT(80,52),
  ABISELECT(48,28),
  ABISELECT(120,76),
  ABISELECT(40,24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S2820C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S2820C1D1Ev,_ZThn24_N7S2820C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S2820C1D0Ev,_ZThn24_N7S2820C1D0Ev),
  ABISELECT(81,53),
  ABISELECT(48,32),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(72,48),
  ABISELECT(-8,-4),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S2820C1[0]),
  0,
  ABISELECT(-120,-76),
  (VTBL_ENTRY)&(_ZTI7S2820C1[0]),
  ABISELECT(-16,-8),
  ABISELECT(-136,-84),
  (VTBL_ENTRY)&(_ZTI7S2820C1[0]),
  ABISELECT(-80,-52),
  ABISELECT(-160,-100),
  (VTBL_ENTRY)&(_ZTI7S2820C1[0]),
  ABISELECT(-16,-8),
  ABISELECT(-96,-60),
  ABISELECT(-176,-108),
  (VTBL_ENTRY)&(_ZTI7S2820C1[0]),
};
extern VTBL_ENTRY _ZTV7S2820C1[];
extern void _ZN7S2820C2D1Ev();
extern void _ZN7S2820C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2820C2__7S2820C1[] = {
  ABISELECT(169,105),
  ABISELECT(136,84),
  ABISELECT(120,76),
  ABISELECT(120,76),
  ABISELECT(88,52),
  ABISELECT(160,100),
  ABISELECT(80,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S2820C2[0]),
  (VTBL_ENTRY)&_ZN7S2820C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2820C2D0Ev,
};
extern void _ZN7S2820C5D1Ev();
extern void _ZN7S2820C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2820C57S2820C2__7S2820C1[] = {
  ABISELECT(169,105),
  ABISELECT(136,84),
  ABISELECT(120,76),
  ABISELECT(120,76),
  ABISELECT(88,52),
  ABISELECT(160,100),
  ABISELECT(80,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S2820C5[0]),
  (VTBL_ENTRY)&_ZN7S2820C5D1Ev,
  (VTBL_ENTRY)&_ZN7S2820C5D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S2820C127S2820C57S2820C2__A1__7S2820C1[] = {
  ABISELECT(160,100),
  ABISELECT(80,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S2820C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S2820C13__8S2820C127S2820C57S2820C2__A1__7S2820C1[] = {
  ABISELECT(-80,-52),
  ABISELECT(-160,-100),
  (VTBL_ENTRY)&(_ZTI8S2820C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S2820C7__7S2820C57S2820C2__7S2820C1[] = {
  ABISELECT(81,53),
  ABISELECT(48,32),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(72,48),
  ABISELECT(-8,-4),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S2820C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S2820C9__7S2820C57S2820C2__7S2820C1[] = {
  0,
  ABISELECT(-120,-76),
  (VTBL_ENTRY)&(_ZTI7S2820C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S2820C10__7S2820C57S2820C2__7S2820C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-136,-84),
  (VTBL_ENTRY)&(_ZTI7S2820C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S2820C13__7S2820C57S2820C2__7S2820C1[] = {
  ABISELECT(-80,-52),
  ABISELECT(-160,-100),
  (VTBL_ENTRY)&(_ZTI7S2820C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S2820C7__7S2820C2__7S2820C1[] = {
  ABISELECT(81,53),
  ABISELECT(48,32),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(72,48),
  ABISELECT(-8,-4),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S2820C2[0]),
};
static  VTBL_ENTRY _tg__ZTV7S2820C9__7S2820C2__7S2820C1[] = {
  0,
  ABISELECT(-120,-76),
  (VTBL_ENTRY)&(_ZTI7S2820C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S2820C10__7S2820C2__7S2820C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-136,-84),
  (VTBL_ENTRY)&(_ZTI7S2820C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S2820C13__7S2820C2__7S2820C1[] = {
  ABISELECT(-80,-52),
  ABISELECT(-160,-100),
  (VTBL_ENTRY)&(_ZTI7S2820C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S2820C14__7S2820C1[] = {
  ABISELECT(145,89),
  ABISELECT(112,68),
  ABISELECT(64,36),
  ABISELECT(96,60),
  ABISELECT(96,60),
  ABISELECT(136,84),
  ABISELECT(152,92),
  ABISELECT(56,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S2820C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S2820C138S2820C14__A1__7S2820C1[] = {
  ABISELECT(56,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S2820C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S2820C12__8S2820C14__7S2820C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-96,-60),
  ABISELECT(-152,-92),
  (VTBL_ENTRY)&(_ZTI8S2820C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S2820C13__8S2820C14__7S2820C1[] = {
  ABISELECT(-80,-52),
  ABISELECT(-136,-84),
  (VTBL_ENTRY)&(_ZTI8S2820C14[0]),
};
static  VTBL_ENTRY _tg__ZTV7S2820C9__8S2820C14__7S2820C1[] = {
  0,
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S2820C14[0]),
};
static  VTBL_ENTRY _tg__ZTV7S2820C7__8S2820C14__7S2820C1[] = {
  ABISELECT(81,53),
  ABISELECT(48,32),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(72,48),
  ABISELECT(-8,-4),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S2820C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S2820C10__8S2820C14__7S2820C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S2820C14[0]),
};
extern void _ZN7S2820C5D1Ev();
extern void _ZN7S2820C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2820C5__A1__7S2820C1[] = {
  ABISELECT(129,81),
  ABISELECT(96,60),
  ABISELECT(80,52),
  ABISELECT(80,52),
  ABISELECT(48,28),
  ABISELECT(120,76),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S2820C5[0]),
  (VTBL_ENTRY)&_ZN7S2820C5D1Ev,
  (VTBL_ENTRY)&_ZN7S2820C5D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S2820C127S2820C5__A3__7S2820C1[] = {
  ABISELECT(120,76),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S2820C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S2820C13__8S2820C127S2820C5__A3__7S2820C1[] = {
  ABISELECT(-80,-52),
  ABISELECT(-120,-76),
  (VTBL_ENTRY)&(_ZTI8S2820C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S2820C7__7S2820C5__A1__7S2820C1[] = {
  ABISELECT(81,53),
  ABISELECT(48,32),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(72,48),
  ABISELECT(-8,-4),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S2820C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S2820C9__7S2820C5__A1__7S2820C1[] = {
  0,
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI7S2820C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S2820C10__7S2820C5__A1__7S2820C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S2820C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S2820C13__7S2820C5__A1__7S2820C1[] = {
  ABISELECT(-80,-52),
  ABISELECT(-120,-76),
  (VTBL_ENTRY)&(_ZTI7S2820C5[0]),
};
static  VTBL_ENTRY _tg__ZTV7S2820C7__7S2820C1[] = {
  ABISELECT(81,53),
  ABISELECT(48,32),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(72,48),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S2820C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S2820C127S2820C7__7S2820C1[] = {
  ABISELECT(72,48),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S2820C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S2820C13__8S2820C127S2820C7__7S2820C1[] = {
  ABISELECT(-80,-52),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI8S2820C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S2820C9__7S2820C7__7S2820C1[] = {
  0,
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI7S2820C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S2820C10__7S2820C7__7S2820C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S2820C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S2820C13__7S2820C7__7S2820C1[] = {
  ABISELECT(-80,-52),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI7S2820C7[0]),
};
static  VTBL_ENTRY _tg__ZTV7S2820C9__7S2820C1[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S2820C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S2820C10__7S2820C1[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S2820C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S2820C98S2820C10__A1__7S2820C1[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S2820C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S2820C13__7S2820C1[] = {
  ABISELECT(-80,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S2820C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S2820C12__A2__7S2820C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-96,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S2820C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S2820C13__8S2820C12__A2__7S2820C1[] = {
  ABISELECT(-80,-52),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S2820C12[0]),
};
static  VTT_ENTRY vtt_S2820C1[] = {
  {&(_ZTV7S2820C1[10]),  10,54},
  {&(_tg__ZTV7S2820C2__7S2820C1[9]),  9,11},
  {&(_tg__ZTV7S2820C57S2820C2__7S2820C1[9]),  9,11},
  {&(_tg__ZTV8S2820C127S2820C57S2820C2__A1__7S2820C1[4]),  4,4},
  {&(_tg__ZTV8S2820C13__8S2820C127S2820C57S2820C2__A1__7S2820C1[3]),  3,3},
  {&(_tg__ZTV7S2820C7__7S2820C57S2820C2__7S2820C1[8]),  8,8},
  {&(_tg__ZTV7S2820C9__7S2820C57S2820C2__7S2820C1[3]),  3,3},
  {&(_tg__ZTV8S2820C10__7S2820C57S2820C2__7S2820C1[3]),  3,3},
  {&(_tg__ZTV8S2820C13__7S2820C57S2820C2__7S2820C1[3]),  3,3},
  {&(_tg__ZTV7S2820C7__7S2820C2__7S2820C1[8]),  8,8},
  {&(_tg__ZTV7S2820C9__7S2820C2__7S2820C1[3]),  3,3},
  {&(_tg__ZTV8S2820C10__7S2820C2__7S2820C1[3]),  3,3},
  {&(_tg__ZTV8S2820C13__7S2820C2__7S2820C1[3]),  3,3},
  {&(_tg__ZTV8S2820C14__7S2820C1[10]),  10,10},
  {&(_tg__ZTV8S2820C138S2820C14__A1__7S2820C1[3]),  3,3},
  {&(_tg__ZTV8S2820C12__8S2820C14__7S2820C1[4]),  4,4},
  {&(_tg__ZTV8S2820C13__8S2820C14__7S2820C1[3]),  3,3},
  {&(_tg__ZTV7S2820C9__8S2820C14__7S2820C1[3]),  3,3},
  {&(_tg__ZTV7S2820C7__8S2820C14__7S2820C1[8]),  8,8},
  {&(_tg__ZTV8S2820C10__8S2820C14__7S2820C1[3]),  3,3},
  {&(_tg__ZTV7S2820C5__A1__7S2820C1[9]),  9,11},
  {&(_tg__ZTV8S2820C127S2820C5__A3__7S2820C1[4]),  4,4},
  {&(_tg__ZTV8S2820C13__8S2820C127S2820C5__A3__7S2820C1[3]),  3,3},
  {&(_tg__ZTV7S2820C7__7S2820C5__A1__7S2820C1[8]),  8,8},
  {&(_tg__ZTV7S2820C9__7S2820C5__A1__7S2820C1[3]),  3,3},
  {&(_tg__ZTV8S2820C10__7S2820C5__A1__7S2820C1[3]),  3,3},
  {&(_tg__ZTV8S2820C13__7S2820C5__A1__7S2820C1[3]),  3,3},
  {&(_ZTV7S2820C1[41]),  41,54},
  {&(_ZTV7S2820C1[44]),  44,54},
  {&(_ZTV7S2820C1[47]),  47,54},
  {&(_ZTV7S2820C1[50]),  50,54},
  {&(_ZTV7S2820C1[22]),  22,54},
  {&(_ZTV7S2820C1[54]),  54,54},
  {&(_ZTV7S2820C1[31]),  31,54},
  {&(_tg__ZTV7S2820C7__7S2820C1[8]),  8,8},
  {&(_tg__ZTV8S2820C127S2820C7__7S2820C1[4]),  4,4},
  {&(_tg__ZTV8S2820C13__8S2820C127S2820C7__7S2820C1[3]),  3,3},
  {&(_tg__ZTV7S2820C9__7S2820C7__7S2820C1[3]),  3,3},
  {&(_tg__ZTV8S2820C10__7S2820C7__7S2820C1[3]),  3,3},
  {&(_tg__ZTV8S2820C13__7S2820C7__7S2820C1[3]),  3,3},
  {&(_tg__ZTV7S2820C9__7S2820C1[3]),  3,3},
  {&(_tg__ZTV8S2820C10__7S2820C1[3]),  3,3},
  {&(_tg__ZTV7S2820C98S2820C10__A1__7S2820C1[3]),  3,3},
  {&(_tg__ZTV8S2820C13__7S2820C1[3]),  3,3},
  {&(_tg__ZTV8S2820C12__A2__7S2820C1[4]),  4,4},
  {&(_tg__ZTV8S2820C13__8S2820C12__A2__7S2820C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S2820C1[];
extern  VTBL_ENTRY _ZTV7S2820C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2820C1[];
Class_Descriptor cd_S2820C1 = {  "S2820C1", // class name
  bases_S2820C1, 47,
  &(vtc_S2820C1[0]), // expected_vtbl_contents
  &(vtt_S2820C1[0]), // expected_vtt_contents
  ABISELECT(192,116), // object size
  NSPAIRA(_ZTI7S2820C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S2820C1),54, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2820C1),46, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3765C2  : S1679C4_nt {
  virtual void  v9(); // _ZN7S3765C22v9Ev
  virtual void  v10(); // _ZN7S3765C23v10Ev
  virtual void  v11(); // _ZN7S3765C23v11Ev
  virtual void  v12(); // _ZN7S3765C23v12Ev
  virtual void  v13(); // _ZN7S3765C23v13Ev
  virtual void  v14(); // _ZN7S3765C23v14Ev
  virtual void  v15(); // _ZN7S3765C23v15Ev
  virtual void  v16(); // _ZN7S3765C23v16Ev
  virtual void  v17(); // _ZN7S3765C23v17Ev
  virtual void  v18(); // _ZN7S3765C23v18Ev
  virtual void  v19(); // _ZN7S3765C23v19Ev
  virtual void  v20(); // _ZN7S3765C23v20Ev
  ~S3765C2(); // tgen
  S3765C2(); // tgen
};
//SIG(-1 S3765C2) C1{ BC2{ vd m Fi} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


void  S3765C2 ::v9(){vfunc_called(this, "_ZN7S3765C22v9Ev");}
void  S3765C2 ::v10(){vfunc_called(this, "_ZN7S3765C23v10Ev");}
void  S3765C2 ::v11(){vfunc_called(this, "_ZN7S3765C23v11Ev");}
void  S3765C2 ::v12(){vfunc_called(this, "_ZN7S3765C23v12Ev");}
void  S3765C2 ::v13(){vfunc_called(this, "_ZN7S3765C23v13Ev");}
void  S3765C2 ::v14(){vfunc_called(this, "_ZN7S3765C23v14Ev");}
void  S3765C2 ::v15(){vfunc_called(this, "_ZN7S3765C23v15Ev");}
void  S3765C2 ::v16(){vfunc_called(this, "_ZN7S3765C23v16Ev");}
void  S3765C2 ::v17(){vfunc_called(this, "_ZN7S3765C23v17Ev");}
void  S3765C2 ::v18(){vfunc_called(this, "_ZN7S3765C23v18Ev");}
void  S3765C2 ::v19(){vfunc_called(this, "_ZN7S3765C23v19Ev");}
void  S3765C2 ::v20(){vfunc_called(this, "_ZN7S3765C23v20Ev");}
S3765C2 ::~S3765C2(){ note_dtor("S3765C2", this);} // tgen
S3765C2 ::S3765C2(){ note_ctor("S3765C2", this);} // tgen

static void Test_S3765C2()
{
  extern Class_Descriptor cd_S3765C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3765C2, buf);
    S3765C2 *dp, &lv = *(dp=new (buf) S3765C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3765C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3765C2)");
    check_base_class_offset(lv, (S1679C4_nt*), 0, "S3765C2");
    test_class_info(&lv, &cd_S3765C2);
    dp->~S3765C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3765C2(Test_S3765C2, "S3765C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3765C2C1Ev();
extern void _ZN7S3765C2D1Ev();
Name_Map name_map_S3765C2[] = {
  NSPAIR(_ZN7S3765C2C1Ev),
  NSPAIR(_ZN7S3765C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
static Base_Class bases_S3765C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3765C2[];
extern void _ZN7S3765C2D1Ev();
extern void _ZN7S3765C2D0Ev();
extern void _ZN7S3765C22v9Ev();
extern void _ZN7S3765C23v10Ev();
extern void _ZN7S3765C23v11Ev();
extern void _ZN7S3765C23v12Ev();
extern void _ZN7S3765C23v13Ev();
extern void _ZN7S3765C23v14Ev();
extern void _ZN7S3765C23v15Ev();
extern void _ZN7S3765C23v16Ev();
extern void _ZN7S3765C23v17Ev();
extern void _ZN7S3765C23v18Ev();
extern void _ZN7S3765C23v19Ev();
extern void _ZN7S3765C23v20Ev();
static  VTBL_ENTRY vtc_S3765C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3765C2[0]),
  (VTBL_ENTRY)&_ZN7S3765C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3765C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3765C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3765C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3765C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3765C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3765C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3765C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3765C23v15Ev,
  (VTBL_ENTRY)&_ZN7S3765C23v16Ev,
  (VTBL_ENTRY)&_ZN7S3765C23v17Ev,
  (VTBL_ENTRY)&_ZN7S3765C23v18Ev,
  (VTBL_ENTRY)&_ZN7S3765C23v19Ev,
  (VTBL_ENTRY)&_ZN7S3765C23v20Ev,
};
extern VTBL_ENTRY _ZTI7S3765C2[];
extern  VTBL_ENTRY _ZTV7S3765C2[];
Class_Descriptor cd_S3765C2 = {  "S3765C2", // class name
  bases_S3765C2, 1,
  &(vtc_S3765C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3765C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3765C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3765C5_nt  {
  void *s3765c5f0[2];
  void  mf3765c5(); // _ZN10S3765C5_nt8mf3765c5Ev
};
//SIG(-1 S3765C5_nt) C1{ m Fp[2]}


void  S3765C5_nt ::mf3765c5(){}

//skip512 S3765C5_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3765C1  : S3765C2 {
  ::S79C38_nt s3765c1f0;
  ::S3765C5_nt s3765c1f1;
  ::S3765C5_nt s3765c1f2;
  ::S1679C8_nt s3765c1f3;
  int s3765c1f4[3];
  void *s3765c1f5[2];
  int s3765c1f6;
  __tsi64 s3765c1f7[3];
  virtual  ~S3765C1(); // _ZN7S3765C1D1Ev
  virtual void  v1(); // _ZN7S3765C12v1Ev
  virtual void  v2(); // _ZN7S3765C12v2Ev
  virtual void  v3(); // _ZN7S3765C12v3Ev
  virtual void  v4(); // _ZN7S3765C12v4Ev
  virtual void  v5(); // _ZN7S3765C12v5Ev
  virtual void  v6(); // _ZN7S3765C12v6Ev
  virtual void  v7(); // _ZN7S3765C12v7Ev
  virtual void  v8(); // _ZN7S3765C12v8Ev
  S3765C1(); // tgen
};
//SIG(1 S3765C1) C1{ BC2{ BC3{ vd m Fi} v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20} vd v1 v2 v3 v4 v5 v6 v7 v8 FC4{ m Fp[2]} FC5{ m Fp[2]} FC5 FC6{ m FC7{ m Fp Fi[2] FC8{ m}} Fp[2]} Fi[3] Fp[2] Fi FL[3]}


 S3765C1 ::~S3765C1(){ note_dtor("S3765C1", this);}
void  S3765C1 ::v1(){vfunc_called(this, "_ZN7S3765C12v1Ev");}
void  S3765C1 ::v2(){vfunc_called(this, "_ZN7S3765C12v2Ev");}
void  S3765C1 ::v3(){vfunc_called(this, "_ZN7S3765C12v3Ev");}
void  S3765C1 ::v4(){vfunc_called(this, "_ZN7S3765C12v4Ev");}
void  S3765C1 ::v5(){vfunc_called(this, "_ZN7S3765C12v5Ev");}
void  S3765C1 ::v6(){vfunc_called(this, "_ZN7S3765C12v6Ev");}
void  S3765C1 ::v7(){vfunc_called(this, "_ZN7S3765C12v7Ev");}
void  S3765C1 ::v8(){vfunc_called(this, "_ZN7S3765C12v8Ev");}
S3765C1 ::S3765C1(){ note_ctor("S3765C1", this);} // tgen

static void Test_S3765C1()
{
  extern Class_Descriptor cd_S3765C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,27)];
    init_test(&cd_S3765C1, buf);
    S3765C1 *dp, &lv = *(dp=new (buf) S3765C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,104), "sizeof(S3765C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3765C1)");
    check_base_class_offset(lv, (S1679C4_nt*)(S3765C2*), 0, "S3765C1");
    check_base_class_offset(lv, (S3765C2*), 0, "S3765C1");
    check_field_offset(lv, s3765c1f0, ABISELECT(16,8), "S3765C1.s3765c1f0");
    check_field_offset(lv, s3765c1f1, ABISELECT(32,16), "S3765C1.s3765c1f1");
    check_field_offset(lv, s3765c1f2, ABISELECT(48,24), "S3765C1.s3765c1f2");
    check_field_offset(lv, s3765c1f3, ABISELECT(64,32), "S3765C1.s3765c1f3");
    check_field_offset(lv, s3765c1f4, ABISELECT(104,56), "S3765C1.s3765c1f4");
    check_field_offset(lv, s3765c1f5, ABISELECT(120,68), "S3765C1.s3765c1f5");
    check_field_offset(lv, s3765c1f6, ABISELECT(136,76), "S3765C1.s3765c1f6");
    check_field_offset(lv, s3765c1f7, ABISELECT(144,80), "S3765C1.s3765c1f7");
    test_class_info(&lv, &cd_S3765C1);
    dp->~S3765C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3765C1(Test_S3765C1, "S3765C1", ABISELECT(168,104));

#else // __cplusplus

extern void _ZN7S3765C1C1Ev();
extern void _ZN7S3765C1D1Ev();
Name_Map name_map_S3765C1[] = {
  NSPAIR(_ZN7S3765C1C1Ev),
  NSPAIR(_ZN7S3765C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
extern Class_Descriptor cd_S3765C2;
extern VTBL_ENTRY _ZTI7S3765C2[];
extern  VTBL_ENTRY _ZTV7S3765C2[];
static Base_Class bases_S3765C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3765C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3765C1[];
extern void _ZN7S3765C1D1Ev();
extern void _ZN7S3765C1D0Ev();
extern void _ZN7S3765C22v9Ev();
extern void _ZN7S3765C23v10Ev();
extern void _ZN7S3765C23v11Ev();
extern void _ZN7S3765C23v12Ev();
extern void _ZN7S3765C23v13Ev();
extern void _ZN7S3765C23v14Ev();
extern void _ZN7S3765C23v15Ev();
extern void _ZN7S3765C23v16Ev();
extern void _ZN7S3765C23v17Ev();
extern void _ZN7S3765C23v18Ev();
extern void _ZN7S3765C23v19Ev();
extern void _ZN7S3765C23v20Ev();
extern void _ZN7S3765C12v1Ev();
extern void _ZN7S3765C12v2Ev();
extern void _ZN7S3765C12v3Ev();
extern void _ZN7S3765C12v4Ev();
extern void _ZN7S3765C12v5Ev();
extern void _ZN7S3765C12v6Ev();
extern void _ZN7S3765C12v7Ev();
extern void _ZN7S3765C12v8Ev();
static  VTBL_ENTRY vtc_S3765C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3765C1[0]),
  (VTBL_ENTRY)&_ZN7S3765C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3765C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3765C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3765C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3765C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3765C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3765C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3765C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3765C23v15Ev,
  (VTBL_ENTRY)&_ZN7S3765C23v16Ev,
  (VTBL_ENTRY)&_ZN7S3765C23v17Ev,
  (VTBL_ENTRY)&_ZN7S3765C23v18Ev,
  (VTBL_ENTRY)&_ZN7S3765C23v19Ev,
  (VTBL_ENTRY)&_ZN7S3765C23v20Ev,
  (VTBL_ENTRY)&_ZN7S3765C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3765C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3765C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3765C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3765C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3765C12v6Ev,
  (VTBL_ENTRY)&_ZN7S3765C12v7Ev,
  (VTBL_ENTRY)&_ZN7S3765C12v8Ev,
};
extern VTBL_ENTRY _ZTI7S3765C1[];
extern  VTBL_ENTRY _ZTV7S3765C1[];
Class_Descriptor cd_S3765C1 = {  "S3765C1", // class name
  bases_S3765C1, 2,
  &(vtc_S3765C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(168,104), // object size
  NSPAIRA(_ZTI7S3765C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3765C1),24, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19371C3  {
  int s19371c3f0;
  __tsi64 s19371c3f1;
  virtual  ~S19371C3(); // _ZN8S19371C3D1Ev
  virtual void  v5(); // _ZN8S19371C32v5Ev
  virtual void  v6(); // _ZN8S19371C32v6Ev
  virtual void  v7(); // _ZN8S19371C32v7Ev
  S19371C3(); // tgen
};
//SIG(-1 S19371C3) C1{ vd v1 v2 v3 Fi FL}


 S19371C3 ::~S19371C3(){ note_dtor("S19371C3", this);}
void  S19371C3 ::v5(){vfunc_called(this, "_ZN8S19371C32v5Ev");}
void  S19371C3 ::v6(){vfunc_called(this, "_ZN8S19371C32v6Ev");}
void  S19371C3 ::v7(){vfunc_called(this, "_ZN8S19371C32v7Ev");}
S19371C3 ::S19371C3(){ note_ctor("S19371C3", this);} // tgen

static void Test_S19371C3()
{
  extern Class_Descriptor cd_S19371C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S19371C3, buf);
    S19371C3 *dp, &lv = *(dp=new (buf) S19371C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S19371C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19371C3)");
    check_field_offset(lv, s19371c3f0, ABISELECT(8,4), "S19371C3.s19371c3f0");
    check_field_offset(lv, s19371c3f1, ABISELECT(16,8), "S19371C3.s19371c3f1");
    test_class_info(&lv, &cd_S19371C3);
    dp->~S19371C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19371C3(Test_S19371C3, "S19371C3", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S19371C3C1Ev();
extern void _ZN8S19371C3D1Ev();
Name_Map name_map_S19371C3[] = {
  NSPAIR(_ZN8S19371C3C1Ev),
  NSPAIR(_ZN8S19371C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19371C3[];
extern void _ZN8S19371C3D1Ev();
extern void _ZN8S19371C3D0Ev();
extern void _ZN8S19371C32v5Ev();
extern void _ZN8S19371C32v6Ev();
extern void _ZN8S19371C32v7Ev();
static  VTBL_ENTRY vtc_S19371C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19371C3[0]),
  (VTBL_ENTRY)&_ZN8S19371C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19371C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19371C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19371C32v6Ev,
  (VTBL_ENTRY)&_ZN8S19371C32v7Ev,
};
extern VTBL_ENTRY _ZTI8S19371C3[];
extern  VTBL_ENTRY _ZTV8S19371C3[];
Class_Descriptor cd_S19371C3 = {  "S19371C3", // class name
  0,0,//no base classes
  &(vtc_S19371C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S19371C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19371C3),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19371C2  : S19371C3 {
  int s19371c2f0;
  ::S19371C3 s19371c2f1;
  virtual  ~S19371C2(); // _ZN8S19371C2D1Ev
  virtual void  v8(); // _ZN8S19371C22v8Ev
  virtual void  v9(); // _ZN8S19371C22v9Ev
  virtual void  v10(); // _ZN8S19371C23v10Ev
  S19371C2(); // tgen
};
//SIG(-1 S19371C2) C1{ BC2{ vd v4 v5 v6 Fi FL} vd v1 v2 v3 Fi FC2}


 S19371C2 ::~S19371C2(){ note_dtor("S19371C2", this);}
void  S19371C2 ::v8(){vfunc_called(this, "_ZN8S19371C22v8Ev");}
void  S19371C2 ::v9(){vfunc_called(this, "_ZN8S19371C22v9Ev");}
void  S19371C2 ::v10(){vfunc_called(this, "_ZN8S19371C23v10Ev");}
S19371C2 ::S19371C2(){ note_ctor("S19371C2", this);} // tgen

static void Test_S19371C2()
{
  extern Class_Descriptor cd_S19371C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S19371C2, buf);
    S19371C2 *dp, &lv = *(dp=new (buf) S19371C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S19371C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19371C2)");
    check_base_class_offset(lv, (S19371C3*), 0, "S19371C2");
    check_field_offset(lv, s19371c2f0, ABISELECT(24,16), "S19371C2.s19371c2f0");
    check_field_offset(lv, s19371c2f1, ABISELECT(32,20), "S19371C2.s19371c2f1");
    test_class_info(&lv, &cd_S19371C2);
    dp->~S19371C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19371C2(Test_S19371C2, "S19371C2", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN8S19371C2C1Ev();
extern void _ZN8S19371C2D1Ev();
Name_Map name_map_S19371C2[] = {
  NSPAIR(_ZN8S19371C2C1Ev),
  NSPAIR(_ZN8S19371C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19371C3;
extern VTBL_ENTRY _ZTI8S19371C3[];
extern  VTBL_ENTRY _ZTV8S19371C3[];
static Base_Class bases_S19371C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19371C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19371C2[];
extern void _ZN8S19371C2D1Ev();
extern void _ZN8S19371C2D0Ev();
extern void _ZN8S19371C32v5Ev();
extern void _ZN8S19371C32v6Ev();
extern void _ZN8S19371C32v7Ev();
extern void _ZN8S19371C22v8Ev();
extern void _ZN8S19371C22v9Ev();
extern void _ZN8S19371C23v10Ev();
static  VTBL_ENTRY vtc_S19371C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19371C2[0]),
  (VTBL_ENTRY)&_ZN8S19371C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19371C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19371C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19371C32v6Ev,
  (VTBL_ENTRY)&_ZN8S19371C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19371C22v8Ev,
  (VTBL_ENTRY)&_ZN8S19371C22v9Ev,
  (VTBL_ENTRY)&_ZN8S19371C23v10Ev,
};
extern VTBL_ENTRY _ZTI8S19371C2[];
extern  VTBL_ENTRY _ZTV8S19371C2[];
Class_Descriptor cd_S19371C2 = {  "S19371C2", // class name
  bases_S19371C2, 1,
  &(vtc_S19371C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI8S19371C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19371C2),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19371C6  {
  virtual void  v11(); // _ZN8S19371C63v11Ev
  virtual void  v12(); // _ZN8S19371C63v12Ev
  virtual void  v13(); // _ZN8S19371C63v13Ev
  virtual void  v14(); // _ZN8S19371C63v14Ev
  virtual void  v15(); // _ZN8S19371C63v15Ev
  virtual void  v16(); // _ZN8S19371C63v16Ev
  virtual void  v17(); // _ZN8S19371C63v17Ev
  virtual void  v18(); // _ZN8S19371C63v18Ev
  virtual void  v19(); // _ZN8S19371C63v19Ev
  ~S19371C6(); // tgen
  S19371C6(); // tgen
};
//SIG(-1 S19371C6) C1{ v1 v2 v3 v4 v5 v6 v7 v8 v9}


void  S19371C6 ::v11(){vfunc_called(this, "_ZN8S19371C63v11Ev");}
void  S19371C6 ::v12(){vfunc_called(this, "_ZN8S19371C63v12Ev");}
void  S19371C6 ::v13(){vfunc_called(this, "_ZN8S19371C63v13Ev");}
void  S19371C6 ::v14(){vfunc_called(this, "_ZN8S19371C63v14Ev");}
void  S19371C6 ::v15(){vfunc_called(this, "_ZN8S19371C63v15Ev");}
void  S19371C6 ::v16(){vfunc_called(this, "_ZN8S19371C63v16Ev");}
void  S19371C6 ::v17(){vfunc_called(this, "_ZN8S19371C63v17Ev");}
void  S19371C6 ::v18(){vfunc_called(this, "_ZN8S19371C63v18Ev");}
void  S19371C6 ::v19(){vfunc_called(this, "_ZN8S19371C63v19Ev");}
S19371C6 ::~S19371C6(){ note_dtor("S19371C6", this);} // tgen
S19371C6 ::S19371C6(){ note_ctor("S19371C6", this);} // tgen

static void Test_S19371C6()
{
  extern Class_Descriptor cd_S19371C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19371C6, buf);
    S19371C6 *dp, &lv = *(dp=new (buf) S19371C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19371C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19371C6)");
    test_class_info(&lv, &cd_S19371C6);
    dp->~S19371C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19371C6(Test_S19371C6, "S19371C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S19371C6C1Ev();
extern void _ZN8S19371C6D1Ev();
Name_Map name_map_S19371C6[] = {
  NSPAIR(_ZN8S19371C6C1Ev),
  NSPAIR(_ZN8S19371C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19371C6[];
extern void _ZN8S19371C63v11Ev();
extern void _ZN8S19371C63v12Ev();
extern void _ZN8S19371C63v13Ev();
extern void _ZN8S19371C63v14Ev();
extern void _ZN8S19371C63v15Ev();
extern void _ZN8S19371C63v16Ev();
extern void _ZN8S19371C63v17Ev();
extern void _ZN8S19371C63v18Ev();
extern void _ZN8S19371C63v19Ev();
static  VTBL_ENTRY vtc_S19371C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19371C6[0]),
  (VTBL_ENTRY)&_ZN8S19371C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v16Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v17Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v18Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v19Ev,
};
extern VTBL_ENTRY _ZTI8S19371C6[];
extern  VTBL_ENTRY _ZTV8S19371C6[];
Class_Descriptor cd_S19371C6 = {  "S19371C6", // class name
  0,0,//no base classes
  &(vtc_S19371C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19371C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19371C6),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19371C5  : virtual S19371C6 , virtual S19371C2 {
  ::S19371C2 s19371c5f0[3];
  int s19371c5f1;
  void *s19371c5f2[8];
  int s19371c5f3;
  long double s19371c5f4[3];
  virtual void  v20(); // _ZN8S19371C53v20Ev
  virtual void  v21(); // _ZN8S19371C53v21Ev
  virtual void  v22(); // _ZN8S19371C53v22Ev
  virtual void  v23(); // _ZN8S19371C53v23Ev
  ~S19371C5(); // tgen
  S19371C5(); // tgen
};
//SIG(-1 S19371C5) C1{ VBC2{ v5 v6 v7 v8 v9 v10 v11 v12 v13} VBC3{ BC4{ vd v14 v15 v16 Fi FL} vd v17 v18 v19 Fi FC4} v1 v2 v3 v4 FC3[3] Fi Fp[8] Fi FD[3]}


void  S19371C5 ::v20(){vfunc_called(this, "_ZN8S19371C53v20Ev");}
void  S19371C5 ::v21(){vfunc_called(this, "_ZN8S19371C53v21Ev");}
void  S19371C5 ::v22(){vfunc_called(this, "_ZN8S19371C53v22Ev");}
void  S19371C5 ::v23(){vfunc_called(this, "_ZN8S19371C53v23Ev");}
S19371C5 ::~S19371C5(){ note_dtor("S19371C5", this);} // tgen
S19371C5 ::S19371C5(){ note_ctor("S19371C5", this);} // tgen

static void Test_S19371C5()
{
  extern Class_Descriptor cd_S19371C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(24,57)];
    init_test(&cd_S19371C5, buf);
    S19371C5 *dp, &lv = *(dp=new (buf) S19371C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(368,224), "sizeof(S19371C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19371C5)");
    check_base_class_offset(lv, (S19371C6*), 0, "S19371C5");
    check_base_class_offset(lv, (S19371C3*)(S19371C2*), ABISELECT(304,188), "S19371C5");
    check_base_class_offset(lv, (S19371C2*), ABISELECT(304,188), "S19371C5");
    check_field_offset(lv, s19371c5f0, ABISELECT(8,4), "S19371C5.s19371c5f0");
    check_field_offset(lv, s19371c5f1, ABISELECT(176,112), "S19371C5.s19371c5f1");
    check_field_offset(lv, s19371c5f2, ABISELECT(184,116), "S19371C5.s19371c5f2");
    check_field_offset(lv, s19371c5f3, ABISELECT(248,148), "S19371C5.s19371c5f3");
    check_field_offset(lv, s19371c5f4, ABISELECT(256,152), "S19371C5.s19371c5f4");
    test_class_info(&lv, &cd_S19371C5);
    dp->~S19371C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19371C5(Test_S19371C5, "S19371C5", ABISELECT(368,224));

#else // __cplusplus

extern void _ZN8S19371C5C1Ev();
extern void _ZN8S19371C5D1Ev();
Name_Map name_map_S19371C5[] = {
  NSPAIR(_ZN8S19371C5C1Ev),
  NSPAIR(_ZN8S19371C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19371C6;
extern VTBL_ENTRY _ZTI8S19371C6[];
extern  VTBL_ENTRY _ZTV8S19371C6[];
extern Class_Descriptor cd_S19371C3;
extern VTBL_ENTRY _ZTI8S19371C3[];
extern  VTBL_ENTRY _ZTV8S19371C3[];
extern Class_Descriptor cd_S19371C2;
extern VTBL_ENTRY _ZTI8S19371C2[];
extern  VTBL_ENTRY _ZTV8S19371C2[];
static Base_Class bases_S19371C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19371C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19371C3,    ABISELECT(304,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19371C2,    ABISELECT(304,188), //bcp->offset
    28, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19371C5[];
extern void _ZN8S19371C63v11Ev();
extern void _ZN8S19371C63v12Ev();
extern void _ZN8S19371C63v13Ev();
extern void _ZN8S19371C63v14Ev();
extern void _ZN8S19371C63v15Ev();
extern void _ZN8S19371C63v16Ev();
extern void _ZN8S19371C63v17Ev();
extern void _ZN8S19371C63v18Ev();
extern void _ZN8S19371C63v19Ev();
extern void _ZN8S19371C53v20Ev();
extern void _ZN8S19371C53v21Ev();
extern void _ZN8S19371C53v22Ev();
extern void _ZN8S19371C53v23Ev();
extern void _ZN8S19371C5D1Ev();
extern void _ZN8S19371C5D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19371C5D1Ev,_ZTv0_n12_N8S19371C5D1Ev)();
extern void ABISELECT(_ZThn304_N8S19371C5D1Ev,_ZThn188_N8S19371C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19371C5D0Ev,_ZTv0_n12_N8S19371C5D0Ev)();
extern void ABISELECT(_ZThn304_N8S19371C5D0Ev,_ZThn188_N8S19371C5D0Ev)() __attribute__((weak));
extern void _ZN8S19371C32v5Ev();
extern void _ZN8S19371C32v6Ev();
extern void _ZN8S19371C32v7Ev();
extern void _ZN8S19371C22v8Ev();
extern void _ZN8S19371C22v9Ev();
extern void _ZN8S19371C23v10Ev();
static  VTBL_ENTRY vtc_S19371C5[] = {
  ABISELECT(304,188),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19371C5[0]),
  (VTBL_ENTRY)&_ZN8S19371C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v16Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v17Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v18Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v19Ev,
  (VTBL_ENTRY)&_ZN8S19371C53v20Ev,
  (VTBL_ENTRY)&_ZN8S19371C53v21Ev,
  (VTBL_ENTRY)&_ZN8S19371C53v22Ev,
  (VTBL_ENTRY)&_ZN8S19371C53v23Ev,
  (VTBL_ENTRY)&_ZN8S19371C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19371C5D0Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-304,-188),
  ABISELECT(-304,-188),
  (VTBL_ENTRY)&(_ZTI8S19371C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19371C5D1Ev,_ZTv0_n12_N8S19371C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19371C5D0Ev,_ZTv0_n12_N8S19371C5D0Ev),
  (VTBL_ENTRY)&_ZN8S19371C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19371C32v6Ev,
  (VTBL_ENTRY)&_ZN8S19371C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19371C22v8Ev,
  (VTBL_ENTRY)&_ZN8S19371C22v9Ev,
  (VTBL_ENTRY)&_ZN8S19371C23v10Ev,
};
extern VTBL_ENTRY _ZTV8S19371C5[];
static  VTT_ENTRY vtt_S19371C5[] = {
  {&(_ZTV8S19371C5[13]),  13,45},
  {&(_ZTV8S19371C5[13]),  13,45},
  {&(_ZTV8S19371C5[37]),  37,45},
};
extern VTBL_ENTRY _ZTI8S19371C5[];
extern  VTBL_ENTRY _ZTV8S19371C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19371C5[];
static VTBL_ENTRY alt_thunk_names96[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19371C5D0Ev,_ZTv0_n12_N8S19371C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S19371C5D0Ev,_ZThn188_N8S19371C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19371C5D1Ev,_ZTv0_n12_N8S19371C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S19371C5D1Ev,_ZThn188_N8S19371C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19371C5 = {  "S19371C5", // class name
  bases_S19371C5, 3,
  &(vtc_S19371C5[0]), // expected_vtbl_contents
  &(vtt_S19371C5[0]), // expected_vtt_contents
  ABISELECT(368,224), // object size
  NSPAIRA(_ZTI8S19371C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19371C5),45, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19371C5),3, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names96,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19371C4  : S19371C5 {
  virtual void  v24(); // _ZN8S19371C43v24Ev
  virtual void  v25(); // _ZN8S19371C43v25Ev
  ~S19371C4(); // tgen
  S19371C4(); // tgen
};
//SIG(-1 S19371C4) C1{ BC2{ VBC3{ v3 v4 v5 v6 v7 v8 v9 v10 v11} VBC4{ BC5{ vd v12 v13 v14 Fi FL} vd v15 v16 v17 Fi FC5} v18 v19 v20 v21 FC4[3] Fi Fp[8] Fi FD[3]} v1 v2}


void  S19371C4 ::v24(){vfunc_called(this, "_ZN8S19371C43v24Ev");}
void  S19371C4 ::v25(){vfunc_called(this, "_ZN8S19371C43v25Ev");}
S19371C4 ::~S19371C4(){ note_dtor("S19371C4", this);} // tgen
S19371C4 ::S19371C4(){ note_ctor("S19371C4", this);} // tgen

static void Test_S19371C4()
{
  extern Class_Descriptor cd_S19371C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(24,57)];
    init_test(&cd_S19371C4, buf);
    S19371C4 *dp, &lv = *(dp=new (buf) S19371C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(368,224), "sizeof(S19371C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19371C4)");
    check_base_class_offset(lv, (S19371C6*)(S19371C5*), 0, "S19371C4");
    check_base_class_offset(lv, (S19371C3*)(S19371C2*), ABISELECT(304,188), "S19371C4");
    check_base_class_offset(lv, (S19371C2*)(S19371C5*), ABISELECT(304,188), "S19371C4");
    check_base_class_offset(lv, (S19371C5*), 0, "S19371C4");
    test_class_info(&lv, &cd_S19371C4);
    dp->~S19371C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19371C4(Test_S19371C4, "S19371C4", ABISELECT(368,224));

#else // __cplusplus

extern void _ZN8S19371C4C1Ev();
extern void _ZN8S19371C4D1Ev();
Name_Map name_map_S19371C4[] = {
  NSPAIR(_ZN8S19371C4C1Ev),
  NSPAIR(_ZN8S19371C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19371C6;
extern VTBL_ENTRY _ZTI8S19371C6[];
extern  VTBL_ENTRY _ZTV8S19371C6[];
extern Class_Descriptor cd_S19371C3;
extern VTBL_ENTRY _ZTI8S19371C3[];
extern  VTBL_ENTRY _ZTV8S19371C3[];
extern Class_Descriptor cd_S19371C2;
extern VTBL_ENTRY _ZTI8S19371C2[];
extern  VTBL_ENTRY _ZTV8S19371C2[];
extern Class_Descriptor cd_S19371C5;
extern VTBL_ENTRY _ZTI8S19371C5[];
extern  VTBL_ENTRY _ZTV8S19371C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19371C5[];
static Base_Class bases_S19371C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19371C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19371C3,    ABISELECT(304,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19371C2,    ABISELECT(304,188), //bcp->offset
    30, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19371C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19371C4[];
extern void _ZN8S19371C63v11Ev();
extern void _ZN8S19371C63v12Ev();
extern void _ZN8S19371C63v13Ev();
extern void _ZN8S19371C63v14Ev();
extern void _ZN8S19371C63v15Ev();
extern void _ZN8S19371C63v16Ev();
extern void _ZN8S19371C63v17Ev();
extern void _ZN8S19371C63v18Ev();
extern void _ZN8S19371C63v19Ev();
extern void _ZN8S19371C53v20Ev();
extern void _ZN8S19371C53v21Ev();
extern void _ZN8S19371C53v22Ev();
extern void _ZN8S19371C53v23Ev();
extern void _ZN8S19371C4D1Ev();
extern void _ZN8S19371C4D0Ev();
extern void _ZN8S19371C43v24Ev();
extern void _ZN8S19371C43v25Ev();
extern void ABISELECT(_ZTv0_n24_N8S19371C4D1Ev,_ZTv0_n12_N8S19371C4D1Ev)();
extern void ABISELECT(_ZThn304_N8S19371C4D1Ev,_ZThn188_N8S19371C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19371C4D0Ev,_ZTv0_n12_N8S19371C4D0Ev)();
extern void ABISELECT(_ZThn304_N8S19371C4D0Ev,_ZThn188_N8S19371C4D0Ev)() __attribute__((weak));
extern void _ZN8S19371C32v5Ev();
extern void _ZN8S19371C32v6Ev();
extern void _ZN8S19371C32v7Ev();
extern void _ZN8S19371C22v8Ev();
extern void _ZN8S19371C22v9Ev();
extern void _ZN8S19371C23v10Ev();
static  VTBL_ENTRY vtc_S19371C4[] = {
  ABISELECT(304,188),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19371C4[0]),
  (VTBL_ENTRY)&_ZN8S19371C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v16Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v17Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v18Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v19Ev,
  (VTBL_ENTRY)&_ZN8S19371C53v20Ev,
  (VTBL_ENTRY)&_ZN8S19371C53v21Ev,
  (VTBL_ENTRY)&_ZN8S19371C53v22Ev,
  (VTBL_ENTRY)&_ZN8S19371C53v23Ev,
  (VTBL_ENTRY)&_ZN8S19371C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19371C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19371C43v24Ev,
  (VTBL_ENTRY)&_ZN8S19371C43v25Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-304,-188),
  ABISELECT(-304,-188),
  (VTBL_ENTRY)&(_ZTI8S19371C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19371C4D1Ev,_ZTv0_n12_N8S19371C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19371C4D0Ev,_ZTv0_n12_N8S19371C4D0Ev),
  (VTBL_ENTRY)&_ZN8S19371C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19371C32v6Ev,
  (VTBL_ENTRY)&_ZN8S19371C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19371C22v8Ev,
  (VTBL_ENTRY)&_ZN8S19371C22v9Ev,
  (VTBL_ENTRY)&_ZN8S19371C23v10Ev,
};
extern VTBL_ENTRY _ZTV8S19371C4[];
extern void _ZN8S19371C63v11Ev();
extern void _ZN8S19371C63v12Ev();
extern void _ZN8S19371C63v13Ev();
extern void _ZN8S19371C63v14Ev();
extern void _ZN8S19371C63v15Ev();
extern void _ZN8S19371C63v16Ev();
extern void _ZN8S19371C63v17Ev();
extern void _ZN8S19371C63v18Ev();
extern void _ZN8S19371C63v19Ev();
extern void _ZN8S19371C53v20Ev();
extern void _ZN8S19371C53v21Ev();
extern void _ZN8S19371C53v22Ev();
extern void _ZN8S19371C53v23Ev();
extern void _ZN8S19371C5D1Ev();
extern void _ZN8S19371C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19371C5__8S19371C4[] = {
  ABISELECT(304,188),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19371C5[0]),
  (VTBL_ENTRY)&_ZN8S19371C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v16Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v17Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v18Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v19Ev,
  (VTBL_ENTRY)&_ZN8S19371C53v20Ev,
  (VTBL_ENTRY)&_ZN8S19371C53v21Ev,
  (VTBL_ENTRY)&_ZN8S19371C53v22Ev,
  (VTBL_ENTRY)&_ZN8S19371C53v23Ev,
  (VTBL_ENTRY)&_ZN8S19371C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19371C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19371C5D1Ev,_ZTv0_n12_N8S19371C5D1Ev)();
extern void ABISELECT(_ZThn304_N8S19371C5D1Ev,_ZThn188_N8S19371C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19371C5D0Ev,_ZTv0_n12_N8S19371C5D0Ev)();
extern void ABISELECT(_ZThn304_N8S19371C5D0Ev,_ZThn188_N8S19371C5D0Ev)() __attribute__((weak));
extern void _ZN8S19371C32v5Ev();
extern void _ZN8S19371C32v6Ev();
extern void _ZN8S19371C32v7Ev();
extern void _ZN8S19371C22v8Ev();
extern void _ZN8S19371C22v9Ev();
extern void _ZN8S19371C23v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19371C2__8S19371C5__8S19371C4[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-304,-188),
  ABISELECT(-304,-188),
  (VTBL_ENTRY)&(_ZTI8S19371C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19371C5D1Ev,_ZTv0_n12_N8S19371C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19371C5D0Ev,_ZTv0_n12_N8S19371C5D0Ev),
  (VTBL_ENTRY)&_ZN8S19371C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19371C32v6Ev,
  (VTBL_ENTRY)&_ZN8S19371C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19371C22v8Ev,
  (VTBL_ENTRY)&_ZN8S19371C22v9Ev,
  (VTBL_ENTRY)&_ZN8S19371C23v10Ev,
};
static  VTT_ENTRY vtt_S19371C4[] = {
  {&(_ZTV8S19371C4[13]),  13,47},
  {&(_tg__ZTV8S19371C5__8S19371C4[13]),  13,28},
  {&(_tg__ZTV8S19371C5__8S19371C4[13]),  13,28},
  {&(_tg__ZTV8S19371C2__8S19371C5__8S19371C4[9]),  9,17},
  {&(_ZTV8S19371C4[13]),  13,47},
  {&(_ZTV8S19371C4[39]),  39,47},
};
extern VTBL_ENTRY _ZTI8S19371C4[];
extern  VTBL_ENTRY _ZTV8S19371C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19371C4[];
static VTBL_ENTRY alt_thunk_names97[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19371C5D0Ev,_ZTv0_n12_N8S19371C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S19371C5D0Ev,_ZThn188_N8S19371C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19371C5D1Ev,_ZTv0_n12_N8S19371C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S19371C5D1Ev,_ZThn188_N8S19371C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19371C4D0Ev,_ZTv0_n12_N8S19371C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S19371C4D0Ev,_ZThn188_N8S19371C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19371C4D1Ev,_ZTv0_n12_N8S19371C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S19371C4D1Ev,_ZThn188_N8S19371C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19371C4 = {  "S19371C4", // class name
  bases_S19371C4, 4,
  &(vtc_S19371C4[0]), // expected_vtbl_contents
  &(vtt_S19371C4[0]), // expected_vtt_contents
  ABISELECT(368,224), // object size
  NSPAIRA(_ZTI8S19371C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19371C4),47, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19371C4),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names97,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19371C1  : virtual S19371C2 , S19371C4 {
  int s19371c1f0[9];
  void *s19371c1f1;
  virtual  ~S19371C1(); // _ZN8S19371C1D2Ev
  virtual void  v1(); // _ZN8S19371C12v1Ev
  virtual void  v2(); // _ZN8S19371C12v2Ev
  virtual void  v3(); // _ZN8S19371C12v3Ev
  virtual void  v4(); // _ZN8S19371C12v4Ev
  S19371C1(); // tgen
};
//SIG(1 S19371C1) C1{ VBC2{ BC3{ vd v5 v6 v7 Fi FL} vd v8 v9 v10 Fi FC3} BC4{ BC5{ VBC6{ v11 v12 v13 v14 v15 v16 v17 v18 v19} VBC2 v20 v21 v22 v23 FC2[3] Fi Fp[8] Fi FD[3]} v24 v25} vd v1 v2 v3 v4 Fi[9] Fp}


 S19371C1 ::~S19371C1(){ note_dtor("S19371C1", this);}
void  S19371C1 ::v1(){vfunc_called(this, "_ZN8S19371C12v1Ev");}
void  S19371C1 ::v2(){vfunc_called(this, "_ZN8S19371C12v2Ev");}
void  S19371C1 ::v3(){vfunc_called(this, "_ZN8S19371C12v3Ev");}
void  S19371C1 ::v4(){vfunc_called(this, "_ZN8S19371C12v4Ev");}
S19371C1 ::S19371C1(){ note_ctor("S19371C1", this);} // tgen

static void Test_S19371C1()
{
  extern Class_Descriptor cd_S19371C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(27,67)];
    init_test(&cd_S19371C1, buf);
    S19371C1 *dp, &lv = *(dp=new (buf) S19371C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(416,264), "sizeof(S19371C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19371C1)");
    check_base_class_offset(lv, (S19371C3*)(S19371C2*), ABISELECT(352,228), "S19371C1");
    check_base_class_offset(lv, (S19371C2*), ABISELECT(352,228), "S19371C1");
    check_base_class_offset(lv, (S19371C2*)(S19371C5*)(S19371C4*), ABISELECT(352,228), "S19371C1");
    check_base_class_offset(lv, (S19371C6*)(S19371C5*)(S19371C4*), 0, "S19371C1");
    check_base_class_offset(lv, (S19371C5*)(S19371C4*), 0, "S19371C1");
    check_base_class_offset(lv, (S19371C4*), 0, "S19371C1");
    check_field_offset(lv, s19371c1f0, ABISELECT(304,188), "S19371C1.s19371c1f0");
    check_field_offset(lv, s19371c1f1, ABISELECT(344,224), "S19371C1.s19371c1f1");
    test_class_info(&lv, &cd_S19371C1);
    dp->~S19371C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19371C1(Test_S19371C1, "S19371C1", ABISELECT(416,264));

#else // __cplusplus

extern void _ZN8S19371C1C1Ev();
extern void _ZN8S19371C1D2Ev();
Name_Map name_map_S19371C1[] = {
  NSPAIR(_ZN8S19371C1C1Ev),
  NSPAIR(_ZN8S19371C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19371C3;
extern VTBL_ENTRY _ZTI8S19371C3[];
extern  VTBL_ENTRY _ZTV8S19371C3[];
extern Class_Descriptor cd_S19371C2;
extern VTBL_ENTRY _ZTI8S19371C2[];
extern  VTBL_ENTRY _ZTV8S19371C2[];
extern Class_Descriptor cd_S19371C6;
extern VTBL_ENTRY _ZTI8S19371C6[];
extern  VTBL_ENTRY _ZTV8S19371C6[];
extern Class_Descriptor cd_S19371C5;
extern VTBL_ENTRY _ZTI8S19371C5[];
extern  VTBL_ENTRY _ZTV8S19371C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19371C5[];
extern Class_Descriptor cd_S19371C4;
extern VTBL_ENTRY _ZTI8S19371C4[];
extern  VTBL_ENTRY _ZTV8S19371C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19371C4[];
static Base_Class bases_S19371C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19371C3,    ABISELECT(352,228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19371C2,    ABISELECT(352,228), //bcp->offset
    34, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19371C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19371C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19371C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19371C1[];
extern void _ZN8S19371C63v11Ev();
extern void _ZN8S19371C63v12Ev();
extern void _ZN8S19371C63v13Ev();
extern void _ZN8S19371C63v14Ev();
extern void _ZN8S19371C63v15Ev();
extern void _ZN8S19371C63v16Ev();
extern void _ZN8S19371C63v17Ev();
extern void _ZN8S19371C63v18Ev();
extern void _ZN8S19371C63v19Ev();
extern void _ZN8S19371C53v20Ev();
extern void _ZN8S19371C53v21Ev();
extern void _ZN8S19371C53v22Ev();
extern void _ZN8S19371C53v23Ev();
extern void _ZN8S19371C1D1Ev();
extern void _ZN8S19371C1D0Ev();
extern void _ZN8S19371C43v24Ev();
extern void _ZN8S19371C43v25Ev();
extern void _ZN8S19371C12v1Ev();
extern void _ZN8S19371C12v2Ev();
extern void _ZN8S19371C12v3Ev();
extern void _ZN8S19371C12v4Ev();
extern void ABISELECT(_ZTv0_n24_N8S19371C1D1Ev,_ZTv0_n12_N8S19371C1D1Ev)();
extern void ABISELECT(_ZThn352_N8S19371C1D1Ev,_ZThn228_N8S19371C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19371C1D0Ev,_ZTv0_n12_N8S19371C1D0Ev)();
extern void ABISELECT(_ZThn352_N8S19371C1D0Ev,_ZThn228_N8S19371C1D0Ev)() __attribute__((weak));
extern void _ZN8S19371C32v5Ev();
extern void _ZN8S19371C32v6Ev();
extern void _ZN8S19371C32v7Ev();
extern void _ZN8S19371C22v8Ev();
extern void _ZN8S19371C22v9Ev();
extern void _ZN8S19371C23v10Ev();
static  VTBL_ENTRY vtc_S19371C1[] = {
  ABISELECT(352,228),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19371C1[0]),
  (VTBL_ENTRY)&_ZN8S19371C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v16Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v17Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v18Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v19Ev,
  (VTBL_ENTRY)&_ZN8S19371C53v20Ev,
  (VTBL_ENTRY)&_ZN8S19371C53v21Ev,
  (VTBL_ENTRY)&_ZN8S19371C53v22Ev,
  (VTBL_ENTRY)&_ZN8S19371C53v23Ev,
  (VTBL_ENTRY)&_ZN8S19371C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19371C1D0Ev,
  (VTBL_ENTRY)&_ZN8S19371C43v24Ev,
  (VTBL_ENTRY)&_ZN8S19371C43v25Ev,
  (VTBL_ENTRY)&_ZN8S19371C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19371C12v2Ev,
  (VTBL_ENTRY)&_ZN8S19371C12v3Ev,
  (VTBL_ENTRY)&_ZN8S19371C12v4Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-352,-228),
  ABISELECT(-352,-228),
  (VTBL_ENTRY)&(_ZTI8S19371C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19371C1D1Ev,_ZTv0_n12_N8S19371C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19371C1D0Ev,_ZTv0_n12_N8S19371C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19371C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19371C32v6Ev,
  (VTBL_ENTRY)&_ZN8S19371C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19371C22v8Ev,
  (VTBL_ENTRY)&_ZN8S19371C22v9Ev,
  (VTBL_ENTRY)&_ZN8S19371C23v10Ev,
};
extern VTBL_ENTRY _ZTV8S19371C1[];
extern void _ZN8S19371C63v11Ev();
extern void _ZN8S19371C63v12Ev();
extern void _ZN8S19371C63v13Ev();
extern void _ZN8S19371C63v14Ev();
extern void _ZN8S19371C63v15Ev();
extern void _ZN8S19371C63v16Ev();
extern void _ZN8S19371C63v17Ev();
extern void _ZN8S19371C63v18Ev();
extern void _ZN8S19371C63v19Ev();
extern void _ZN8S19371C53v20Ev();
extern void _ZN8S19371C53v21Ev();
extern void _ZN8S19371C53v22Ev();
extern void _ZN8S19371C53v23Ev();
extern void _ZN8S19371C4D1Ev();
extern void _ZN8S19371C4D0Ev();
extern void _ZN8S19371C43v24Ev();
extern void _ZN8S19371C43v25Ev();
static  VTBL_ENTRY _tg__ZTV8S19371C4__8S19371C1[] = {
  ABISELECT(352,228),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19371C4[0]),
  (VTBL_ENTRY)&_ZN8S19371C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v16Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v17Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v18Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v19Ev,
  (VTBL_ENTRY)&_ZN8S19371C53v20Ev,
  (VTBL_ENTRY)&_ZN8S19371C53v21Ev,
  (VTBL_ENTRY)&_ZN8S19371C53v22Ev,
  (VTBL_ENTRY)&_ZN8S19371C53v23Ev,
  (VTBL_ENTRY)&_ZN8S19371C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19371C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19371C43v24Ev,
  (VTBL_ENTRY)&_ZN8S19371C43v25Ev,
};
extern void _ZN8S19371C63v11Ev();
extern void _ZN8S19371C63v12Ev();
extern void _ZN8S19371C63v13Ev();
extern void _ZN8S19371C63v14Ev();
extern void _ZN8S19371C63v15Ev();
extern void _ZN8S19371C63v16Ev();
extern void _ZN8S19371C63v17Ev();
extern void _ZN8S19371C63v18Ev();
extern void _ZN8S19371C63v19Ev();
extern void _ZN8S19371C53v20Ev();
extern void _ZN8S19371C53v21Ev();
extern void _ZN8S19371C53v22Ev();
extern void _ZN8S19371C53v23Ev();
extern void _ZN8S19371C5D1Ev();
extern void _ZN8S19371C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19371C58S19371C4__8S19371C1[] = {
  ABISELECT(352,228),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19371C5[0]),
  (VTBL_ENTRY)&_ZN8S19371C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v12Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v13Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v14Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v15Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v16Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v17Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v18Ev,
  (VTBL_ENTRY)&_ZN8S19371C63v19Ev,
  (VTBL_ENTRY)&_ZN8S19371C53v20Ev,
  (VTBL_ENTRY)&_ZN8S19371C53v21Ev,
  (VTBL_ENTRY)&_ZN8S19371C53v22Ev,
  (VTBL_ENTRY)&_ZN8S19371C53v23Ev,
  (VTBL_ENTRY)&_ZN8S19371C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19371C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19371C5D1Ev,_ZTv0_n12_N8S19371C5D1Ev)();
extern void ABISELECT(_ZThn352_N8S19371C5D1Ev,_ZThn228_N8S19371C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19371C5D0Ev,_ZTv0_n12_N8S19371C5D0Ev)();
extern void ABISELECT(_ZThn352_N8S19371C5D0Ev,_ZThn228_N8S19371C5D0Ev)() __attribute__((weak));
extern void _ZN8S19371C32v5Ev();
extern void _ZN8S19371C32v6Ev();
extern void _ZN8S19371C32v7Ev();
extern void _ZN8S19371C22v8Ev();
extern void _ZN8S19371C22v9Ev();
extern void _ZN8S19371C23v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19371C2__8S19371C58S19371C4__8S19371C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-352,-228),
  ABISELECT(-352,-228),
  (VTBL_ENTRY)&(_ZTI8S19371C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19371C5D1Ev,_ZTv0_n12_N8S19371C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19371C5D0Ev,_ZTv0_n12_N8S19371C5D0Ev),
  (VTBL_ENTRY)&_ZN8S19371C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19371C32v6Ev,
  (VTBL_ENTRY)&_ZN8S19371C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19371C22v8Ev,
  (VTBL_ENTRY)&_ZN8S19371C22v9Ev,
  (VTBL_ENTRY)&_ZN8S19371C23v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19371C4D1Ev,_ZTv0_n12_N8S19371C4D1Ev)();
extern void ABISELECT(_ZThn352_N8S19371C4D1Ev,_ZThn228_N8S19371C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19371C4D0Ev,_ZTv0_n12_N8S19371C4D0Ev)();
extern void ABISELECT(_ZThn352_N8S19371C4D0Ev,_ZThn228_N8S19371C4D0Ev)() __attribute__((weak));
extern void _ZN8S19371C32v5Ev();
extern void _ZN8S19371C32v6Ev();
extern void _ZN8S19371C32v7Ev();
extern void _ZN8S19371C22v8Ev();
extern void _ZN8S19371C22v9Ev();
extern void _ZN8S19371C23v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19371C2__8S19371C4__8S19371C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-352,-228),
  ABISELECT(-352,-228),
  (VTBL_ENTRY)&(_ZTI8S19371C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19371C4D1Ev,_ZTv0_n12_N8S19371C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19371C4D0Ev,_ZTv0_n12_N8S19371C4D0Ev),
  (VTBL_ENTRY)&_ZN8S19371C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19371C32v6Ev,
  (VTBL_ENTRY)&_ZN8S19371C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19371C22v8Ev,
  (VTBL_ENTRY)&_ZN8S19371C22v9Ev,
  (VTBL_ENTRY)&_ZN8S19371C23v10Ev,
};
static  VTT_ENTRY vtt_S19371C1[] = {
  {&(_ZTV8S19371C1[13]),  13,51},
  {&(_tg__ZTV8S19371C4__8S19371C1[13]),  13,30},
  {&(_tg__ZTV8S19371C58S19371C4__8S19371C1[13]),  13,28},
  {&(_tg__ZTV8S19371C58S19371C4__8S19371C1[13]),  13,28},
  {&(_tg__ZTV8S19371C2__8S19371C58S19371C4__8S19371C1[9]),  9,17},
  {&(_tg__ZTV8S19371C4__8S19371C1[13]),  13,30},
  {&(_tg__ZTV8S19371C2__8S19371C4__8S19371C1[9]),  9,17},
  {&(_ZTV8S19371C1[43]),  43,51},
  {&(_ZTV8S19371C1[13]),  13,51},
};
extern VTBL_ENTRY _ZTI8S19371C1[];
extern  VTBL_ENTRY _ZTV8S19371C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19371C1[];
static VTBL_ENTRY alt_thunk_names98[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19371C4D0Ev,_ZTv0_n12_N8S19371C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S19371C4D0Ev,_ZThn228_N8S19371C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19371C4D1Ev,_ZTv0_n12_N8S19371C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S19371C4D1Ev,_ZThn228_N8S19371C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19371C5D0Ev,_ZTv0_n12_N8S19371C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S19371C5D0Ev,_ZThn228_N8S19371C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19371C5D1Ev,_ZTv0_n12_N8S19371C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S19371C5D1Ev,_ZThn228_N8S19371C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19371C1D0Ev,_ZTv0_n12_N8S19371C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S19371C1D0Ev,_ZThn228_N8S19371C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19371C1D1Ev,_ZTv0_n12_N8S19371C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S19371C1D1Ev,_ZThn228_N8S19371C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19371C1 = {  "S19371C1", // class name
  bases_S19371C1, 5,
  &(vtc_S19371C1[0]), // expected_vtbl_contents
  &(vtt_S19371C1[0]), // expected_vtt_contents
  ABISELECT(416,264), // object size
  NSPAIRA(_ZTI8S19371C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19371C1),51, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19371C1),9, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names98,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3753C2  : S1679C4_nt {
  virtual void  v8(); // _ZN7S3753C22v8Ev
  virtual void  v9(); // _ZN7S3753C22v9Ev
  virtual void  v10(); // _ZN7S3753C23v10Ev
  virtual void  v11(); // _ZN7S3753C23v11Ev
  virtual void  v12(); // _ZN7S3753C23v12Ev
  virtual void  v13(); // _ZN7S3753C23v13Ev
  virtual void  v14(); // _ZN7S3753C23v14Ev
  virtual void  v15(); // _ZN7S3753C23v15Ev
  virtual void  v16(); // _ZN7S3753C23v16Ev
  virtual void  v17(); // _ZN7S3753C23v17Ev
  virtual void  v18(); // _ZN7S3753C23v18Ev
  virtual void  v19(); // _ZN7S3753C23v19Ev
  ~S3753C2(); // tgen
  S3753C2(); // tgen
};
//SIG(-1 S3753C2) C1{ BC2{ vd m Fi} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


void  S3753C2 ::v8(){vfunc_called(this, "_ZN7S3753C22v8Ev");}
void  S3753C2 ::v9(){vfunc_called(this, "_ZN7S3753C22v9Ev");}
void  S3753C2 ::v10(){vfunc_called(this, "_ZN7S3753C23v10Ev");}
void  S3753C2 ::v11(){vfunc_called(this, "_ZN7S3753C23v11Ev");}
void  S3753C2 ::v12(){vfunc_called(this, "_ZN7S3753C23v12Ev");}
void  S3753C2 ::v13(){vfunc_called(this, "_ZN7S3753C23v13Ev");}
void  S3753C2 ::v14(){vfunc_called(this, "_ZN7S3753C23v14Ev");}
void  S3753C2 ::v15(){vfunc_called(this, "_ZN7S3753C23v15Ev");}
void  S3753C2 ::v16(){vfunc_called(this, "_ZN7S3753C23v16Ev");}
void  S3753C2 ::v17(){vfunc_called(this, "_ZN7S3753C23v17Ev");}
void  S3753C2 ::v18(){vfunc_called(this, "_ZN7S3753C23v18Ev");}
void  S3753C2 ::v19(){vfunc_called(this, "_ZN7S3753C23v19Ev");}
S3753C2 ::~S3753C2(){ note_dtor("S3753C2", this);} // tgen
S3753C2 ::S3753C2(){ note_ctor("S3753C2", this);} // tgen

static void Test_S3753C2()
{
  extern Class_Descriptor cd_S3753C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3753C2, buf);
    S3753C2 *dp, &lv = *(dp=new (buf) S3753C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3753C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3753C2)");
    check_base_class_offset(lv, (S1679C4_nt*), 0, "S3753C2");
    test_class_info(&lv, &cd_S3753C2);
    dp->~S3753C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3753C2(Test_S3753C2, "S3753C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3753C2C1Ev();
extern void _ZN7S3753C2D1Ev();
Name_Map name_map_S3753C2[] = {
  NSPAIR(_ZN7S3753C2C1Ev),
  NSPAIR(_ZN7S3753C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
static Base_Class bases_S3753C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3753C2[];
extern void _ZN7S3753C2D1Ev();
extern void _ZN7S3753C2D0Ev();
extern void _ZN7S3753C22v8Ev();
extern void _ZN7S3753C22v9Ev();
extern void _ZN7S3753C23v10Ev();
extern void _ZN7S3753C23v11Ev();
extern void _ZN7S3753C23v12Ev();
extern void _ZN7S3753C23v13Ev();
extern void _ZN7S3753C23v14Ev();
extern void _ZN7S3753C23v15Ev();
extern void _ZN7S3753C23v16Ev();
extern void _ZN7S3753C23v17Ev();
extern void _ZN7S3753C23v18Ev();
extern void _ZN7S3753C23v19Ev();
static  VTBL_ENTRY vtc_S3753C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3753C2[0]),
  (VTBL_ENTRY)&_ZN7S3753C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3753C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3753C22v8Ev,
  (VTBL_ENTRY)&_ZN7S3753C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3753C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3753C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3753C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3753C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3753C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3753C23v15Ev,
  (VTBL_ENTRY)&_ZN7S3753C23v16Ev,
  (VTBL_ENTRY)&_ZN7S3753C23v17Ev,
  (VTBL_ENTRY)&_ZN7S3753C23v18Ev,
  (VTBL_ENTRY)&_ZN7S3753C23v19Ev,
};
extern VTBL_ENTRY _ZTI7S3753C2[];
extern  VTBL_ENTRY _ZTV7S3753C2[];
Class_Descriptor cd_S3753C2 = {  "S3753C2", // class name
  bases_S3753C2, 1,
  &(vtc_S3753C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3753C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3753C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3753C1  : S3753C2 {
  ::S3765C5_nt s3753c1f0;
  ::S17777C6_nt s3753c1f1;
  ::S79C38_nt s3753c1f2;
  ::S1679C8_nt s3753c1f3;
  int s3753c1f4[3];
  ::S4533C11_nt s3753c1f5;
  void *s3753c1f6;
  virtual  ~S3753C1(); // _ZN7S3753C1D1Ev
  virtual void  v1(); // _ZN7S3753C12v1Ev
  virtual void  v2(); // _ZN7S3753C12v2Ev
  virtual void  v3(); // _ZN7S3753C12v3Ev
  virtual void  v4(); // _ZN7S3753C12v4Ev
  virtual void  v5(); // _ZN7S3753C12v5Ev
  virtual void  v6(); // _ZN7S3753C12v6Ev
  virtual void  v7(); // _ZN7S3753C12v7Ev
  S3753C1(); // tgen
};
//SIG(1 S3753C1) C1{ BC2{ BC3{ vd m Fi} v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19} vd v1 v2 v3 v4 v5 v6 v7 FC4{ m Fp[2]} FC5{ m Fp} FC6{ m Fp[2]} FC7{ m FC8{ m Fp Fi[2] FC9{ m}} Fp[2]} Fi[3] FC10{ m Fp} Fp}


 S3753C1 ::~S3753C1(){ note_dtor("S3753C1", this);}
void  S3753C1 ::v1(){vfunc_called(this, "_ZN7S3753C12v1Ev");}
void  S3753C1 ::v2(){vfunc_called(this, "_ZN7S3753C12v2Ev");}
void  S3753C1 ::v3(){vfunc_called(this, "_ZN7S3753C12v3Ev");}
void  S3753C1 ::v4(){vfunc_called(this, "_ZN7S3753C12v4Ev");}
void  S3753C1 ::v5(){vfunc_called(this, "_ZN7S3753C12v5Ev");}
void  S3753C1 ::v6(){vfunc_called(this, "_ZN7S3753C12v6Ev");}
void  S3753C1 ::v7(){vfunc_called(this, "_ZN7S3753C12v7Ev");}
S3753C1 ::S3753C1(){ note_ctor("S3753C1", this);} // tgen

static void Test_S3753C1()
{
  extern Class_Descriptor cd_S3753C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,19)];
    init_test(&cd_S3753C1, buf);
    S3753C1 *dp, &lv = *(dp=new (buf) S3753C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,72), "sizeof(S3753C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3753C1)");
    check_base_class_offset(lv, (S1679C4_nt*)(S3753C2*), 0, "S3753C1");
    check_base_class_offset(lv, (S3753C2*), 0, "S3753C1");
    check_field_offset(lv, s3753c1f0, ABISELECT(16,8), "S3753C1.s3753c1f0");
    check_field_offset(lv, s3753c1f1, ABISELECT(32,16), "S3753C1.s3753c1f1");
    check_field_offset(lv, s3753c1f2, ABISELECT(40,20), "S3753C1.s3753c1f2");
    check_field_offset(lv, s3753c1f3, ABISELECT(56,28), "S3753C1.s3753c1f3");
    check_field_offset(lv, s3753c1f4, ABISELECT(96,52), "S3753C1.s3753c1f4");
    check_field_offset(lv, s3753c1f5, ABISELECT(112,64), "S3753C1.s3753c1f5");
    check_field_offset(lv, s3753c1f6, ABISELECT(120,68), "S3753C1.s3753c1f6");
    test_class_info(&lv, &cd_S3753C1);
    dp->~S3753C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3753C1(Test_S3753C1, "S3753C1", ABISELECT(128,72));

#else // __cplusplus

extern void _ZN7S3753C1C1Ev();
extern void _ZN7S3753C1D1Ev();
Name_Map name_map_S3753C1[] = {
  NSPAIR(_ZN7S3753C1C1Ev),
  NSPAIR(_ZN7S3753C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
extern Class_Descriptor cd_S3753C2;
extern VTBL_ENTRY _ZTI7S3753C2[];
extern  VTBL_ENTRY _ZTV7S3753C2[];
static Base_Class bases_S3753C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3753C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3753C1[];
extern void _ZN7S3753C1D1Ev();
extern void _ZN7S3753C1D0Ev();
extern void _ZN7S3753C22v8Ev();
extern void _ZN7S3753C22v9Ev();
extern void _ZN7S3753C23v10Ev();
extern void _ZN7S3753C23v11Ev();
extern void _ZN7S3753C23v12Ev();
extern void _ZN7S3753C23v13Ev();
extern void _ZN7S3753C23v14Ev();
extern void _ZN7S3753C23v15Ev();
extern void _ZN7S3753C23v16Ev();
extern void _ZN7S3753C23v17Ev();
extern void _ZN7S3753C23v18Ev();
extern void _ZN7S3753C23v19Ev();
extern void _ZN7S3753C12v1Ev();
extern void _ZN7S3753C12v2Ev();
extern void _ZN7S3753C12v3Ev();
extern void _ZN7S3753C12v4Ev();
extern void _ZN7S3753C12v5Ev();
extern void _ZN7S3753C12v6Ev();
extern void _ZN7S3753C12v7Ev();
static  VTBL_ENTRY vtc_S3753C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3753C1[0]),
  (VTBL_ENTRY)&_ZN7S3753C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3753C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3753C22v8Ev,
  (VTBL_ENTRY)&_ZN7S3753C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3753C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3753C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3753C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3753C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3753C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3753C23v15Ev,
  (VTBL_ENTRY)&_ZN7S3753C23v16Ev,
  (VTBL_ENTRY)&_ZN7S3753C23v17Ev,
  (VTBL_ENTRY)&_ZN7S3753C23v18Ev,
  (VTBL_ENTRY)&_ZN7S3753C23v19Ev,
  (VTBL_ENTRY)&_ZN7S3753C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3753C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3753C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3753C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3753C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3753C12v6Ev,
  (VTBL_ENTRY)&_ZN7S3753C12v7Ev,
};
extern VTBL_ENTRY _ZTI7S3753C1[];
extern  VTBL_ENTRY _ZTV7S3753C1[];
Class_Descriptor cd_S3753C1 = {  "S3753C1", // class name
  bases_S3753C1, 2,
  &(vtc_S3753C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(128,72), // object size
  NSPAIRA(_ZTI7S3753C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3753C1),23, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3767C2  : S1679C4_nt {
  virtual void  v9(); // _ZN7S3767C22v9Ev
  virtual void  v10(); // _ZN7S3767C23v10Ev
  virtual void  v11(); // _ZN7S3767C23v11Ev
  virtual void  v12(); // _ZN7S3767C23v12Ev
  virtual void  v13(); // _ZN7S3767C23v13Ev
  virtual void  v14(); // _ZN7S3767C23v14Ev
  virtual void  v15(); // _ZN7S3767C23v15Ev
  virtual void  v16(); // _ZN7S3767C23v16Ev
  virtual void  v17(); // _ZN7S3767C23v17Ev
  virtual void  v18(); // _ZN7S3767C23v18Ev
  virtual void  v19(); // _ZN7S3767C23v19Ev
  virtual void  v20(); // _ZN7S3767C23v20Ev
  ~S3767C2(); // tgen
  S3767C2(); // tgen
};
//SIG(-1 S3767C2) C1{ BC2{ vd m Fi} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


void  S3767C2 ::v9(){vfunc_called(this, "_ZN7S3767C22v9Ev");}
void  S3767C2 ::v10(){vfunc_called(this, "_ZN7S3767C23v10Ev");}
void  S3767C2 ::v11(){vfunc_called(this, "_ZN7S3767C23v11Ev");}
void  S3767C2 ::v12(){vfunc_called(this, "_ZN7S3767C23v12Ev");}
void  S3767C2 ::v13(){vfunc_called(this, "_ZN7S3767C23v13Ev");}
void  S3767C2 ::v14(){vfunc_called(this, "_ZN7S3767C23v14Ev");}
void  S3767C2 ::v15(){vfunc_called(this, "_ZN7S3767C23v15Ev");}
void  S3767C2 ::v16(){vfunc_called(this, "_ZN7S3767C23v16Ev");}
void  S3767C2 ::v17(){vfunc_called(this, "_ZN7S3767C23v17Ev");}
void  S3767C2 ::v18(){vfunc_called(this, "_ZN7S3767C23v18Ev");}
void  S3767C2 ::v19(){vfunc_called(this, "_ZN7S3767C23v19Ev");}
void  S3767C2 ::v20(){vfunc_called(this, "_ZN7S3767C23v20Ev");}
S3767C2 ::~S3767C2(){ note_dtor("S3767C2", this);} // tgen
S3767C2 ::S3767C2(){ note_ctor("S3767C2", this);} // tgen

static void Test_S3767C2()
{
  extern Class_Descriptor cd_S3767C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3767C2, buf);
    S3767C2 *dp, &lv = *(dp=new (buf) S3767C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3767C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3767C2)");
    check_base_class_offset(lv, (S1679C4_nt*), 0, "S3767C2");
    test_class_info(&lv, &cd_S3767C2);
    dp->~S3767C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3767C2(Test_S3767C2, "S3767C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3767C2C1Ev();
extern void _ZN7S3767C2D1Ev();
Name_Map name_map_S3767C2[] = {
  NSPAIR(_ZN7S3767C2C1Ev),
  NSPAIR(_ZN7S3767C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
static Base_Class bases_S3767C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3767C2[];
extern void _ZN7S3767C2D1Ev();
extern void _ZN7S3767C2D0Ev();
extern void _ZN7S3767C22v9Ev();
extern void _ZN7S3767C23v10Ev();
extern void _ZN7S3767C23v11Ev();
extern void _ZN7S3767C23v12Ev();
extern void _ZN7S3767C23v13Ev();
extern void _ZN7S3767C23v14Ev();
extern void _ZN7S3767C23v15Ev();
extern void _ZN7S3767C23v16Ev();
extern void _ZN7S3767C23v17Ev();
extern void _ZN7S3767C23v18Ev();
extern void _ZN7S3767C23v19Ev();
extern void _ZN7S3767C23v20Ev();
static  VTBL_ENTRY vtc_S3767C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3767C2[0]),
  (VTBL_ENTRY)&_ZN7S3767C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3767C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3767C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3767C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3767C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3767C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3767C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3767C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3767C23v15Ev,
  (VTBL_ENTRY)&_ZN7S3767C23v16Ev,
  (VTBL_ENTRY)&_ZN7S3767C23v17Ev,
  (VTBL_ENTRY)&_ZN7S3767C23v18Ev,
  (VTBL_ENTRY)&_ZN7S3767C23v19Ev,
  (VTBL_ENTRY)&_ZN7S3767C23v20Ev,
};
extern VTBL_ENTRY _ZTI7S3767C2[];
extern  VTBL_ENTRY _ZTV7S3767C2[];
Class_Descriptor cd_S3767C2 = {  "S3767C2", // class name
  bases_S3767C2, 1,
  &(vtc_S3767C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3767C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3767C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3767C1  : S3767C2 {
  ::S3765C5_nt s3767c1f0;
  ::S5266C36 s3767c1f1;
  char s3767c1f2;
  ::S1679C8_nt s3767c1f3;
  void *s3767c1f4[2];
  virtual  ~S3767C1(); // _ZN7S3767C1D1Ev
  virtual void  v1(); // _ZN7S3767C12v1Ev
  virtual void  v2(); // _ZN7S3767C12v2Ev
  virtual void  v3(); // _ZN7S3767C12v3Ev
  virtual void  v4(); // _ZN7S3767C12v4Ev
  virtual void  v5(); // _ZN7S3767C12v5Ev
  virtual void  v6(); // _ZN7S3767C12v6Ev
  virtual void  v7(); // _ZN7S3767C12v7Ev
  virtual void  v8(); // _ZN7S3767C12v8Ev
  S3767C1(); // tgen
};
//SIG(1 S3767C1) C1{ BC2{ BC3{ vd m Fi} v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20} vd v1 v2 v3 v4 v5 v6 v7 v8 FC4{ m Fp[2]} FC5{ m Fp Fi[2] FC6{ m}} Fc FC7{ m FC8{ m Fp Fi[2] FC6} Fp[2]} Fp[2]}


 S3767C1 ::~S3767C1(){ note_dtor("S3767C1", this);}
void  S3767C1 ::v1(){vfunc_called(this, "_ZN7S3767C12v1Ev");}
void  S3767C1 ::v2(){vfunc_called(this, "_ZN7S3767C12v2Ev");}
void  S3767C1 ::v3(){vfunc_called(this, "_ZN7S3767C12v3Ev");}
void  S3767C1 ::v4(){vfunc_called(this, "_ZN7S3767C12v4Ev");}
void  S3767C1 ::v5(){vfunc_called(this, "_ZN7S3767C12v5Ev");}
void  S3767C1 ::v6(){vfunc_called(this, "_ZN7S3767C12v6Ev");}
void  S3767C1 ::v7(){vfunc_called(this, "_ZN7S3767C12v7Ev");}
void  S3767C1 ::v8(){vfunc_called(this, "_ZN7S3767C12v8Ev");}
S3767C1 ::S3767C1(){ note_ctor("S3767C1", this);} // tgen

static void Test_S3767C1()
{
  extern Class_Descriptor cd_S3767C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,18)];
    init_test(&cd_S3767C1, buf);
    S3767C1 *dp, &lv = *(dp=new (buf) S3767C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,68), "sizeof(S3767C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3767C1)");
    check_base_class_offset(lv, (S1679C4_nt*)(S3767C2*), 0, "S3767C1");
    check_base_class_offset(lv, (S3767C2*), 0, "S3767C1");
    check_field_offset(lv, s3767c1f0, ABISELECT(16,8), "S3767C1.s3767c1f0");
    check_field_offset(lv, s3767c1f1, ABISELECT(32,16), "S3767C1.s3767c1f1");
    check_field_offset(lv, s3767c1f2, ABISELECT(56,32), "S3767C1.s3767c1f2");
    check_field_offset(lv, s3767c1f3, ABISELECT(64,36), "S3767C1.s3767c1f3");
    check_field_offset(lv, s3767c1f4, ABISELECT(104,60), "S3767C1.s3767c1f4");
    test_class_info(&lv, &cd_S3767C1);
    dp->~S3767C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3767C1(Test_S3767C1, "S3767C1", ABISELECT(120,68));

#else // __cplusplus

extern void _ZN7S3767C1C1Ev();
extern void _ZN7S3767C1D1Ev();
Name_Map name_map_S3767C1[] = {
  NSPAIR(_ZN7S3767C1C1Ev),
  NSPAIR(_ZN7S3767C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
extern Class_Descriptor cd_S3767C2;
extern VTBL_ENTRY _ZTI7S3767C2[];
extern  VTBL_ENTRY _ZTV7S3767C2[];
static Base_Class bases_S3767C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3767C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3767C1[];
extern void _ZN7S3767C1D1Ev();
extern void _ZN7S3767C1D0Ev();
extern void _ZN7S3767C22v9Ev();
extern void _ZN7S3767C23v10Ev();
extern void _ZN7S3767C23v11Ev();
extern void _ZN7S3767C23v12Ev();
extern void _ZN7S3767C23v13Ev();
extern void _ZN7S3767C23v14Ev();
extern void _ZN7S3767C23v15Ev();
extern void _ZN7S3767C23v16Ev();
extern void _ZN7S3767C23v17Ev();
extern void _ZN7S3767C23v18Ev();
extern void _ZN7S3767C23v19Ev();
extern void _ZN7S3767C23v20Ev();
extern void _ZN7S3767C12v1Ev();
extern void _ZN7S3767C12v2Ev();
extern void _ZN7S3767C12v3Ev();
extern void _ZN7S3767C12v4Ev();
extern void _ZN7S3767C12v5Ev();
extern void _ZN7S3767C12v6Ev();
extern void _ZN7S3767C12v7Ev();
extern void _ZN7S3767C12v8Ev();
static  VTBL_ENTRY vtc_S3767C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3767C1[0]),
  (VTBL_ENTRY)&_ZN7S3767C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3767C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3767C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3767C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3767C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3767C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3767C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3767C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3767C23v15Ev,
  (VTBL_ENTRY)&_ZN7S3767C23v16Ev,
  (VTBL_ENTRY)&_ZN7S3767C23v17Ev,
  (VTBL_ENTRY)&_ZN7S3767C23v18Ev,
  (VTBL_ENTRY)&_ZN7S3767C23v19Ev,
  (VTBL_ENTRY)&_ZN7S3767C23v20Ev,
  (VTBL_ENTRY)&_ZN7S3767C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3767C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3767C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3767C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3767C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3767C12v6Ev,
  (VTBL_ENTRY)&_ZN7S3767C12v7Ev,
  (VTBL_ENTRY)&_ZN7S3767C12v8Ev,
};
extern VTBL_ENTRY _ZTI7S3767C1[];
extern  VTBL_ENTRY _ZTV7S3767C1[];
Class_Descriptor cd_S3767C1 = {  "S3767C1", // class name
  bases_S3767C1, 2,
  &(vtc_S3767C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,68), // object size
  NSPAIRA(_ZTI7S3767C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3767C1),24, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7310C4  {
  virtual void  v2(); // _ZN7S7310C42v2Ev
  ~S7310C4(); // tgen
  S7310C4(); // tgen
};
//SIG(-1 S7310C4) C1{ v1}


void  S7310C4 ::v2(){vfunc_called(this, "_ZN7S7310C42v2Ev");}
S7310C4 ::~S7310C4(){ note_dtor("S7310C4", this);} // tgen
S7310C4 ::S7310C4(){ note_ctor("S7310C4", this);} // tgen

static void Test_S7310C4()
{
  extern Class_Descriptor cd_S7310C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7310C4, buf);
    S7310C4 *dp, &lv = *(dp=new (buf) S7310C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7310C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7310C4)");
    test_class_info(&lv, &cd_S7310C4);
    dp->~S7310C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7310C4(Test_S7310C4, "S7310C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7310C4C1Ev();
extern void _ZN7S7310C4D1Ev();
Name_Map name_map_S7310C4[] = {
  NSPAIR(_ZN7S7310C4C1Ev),
  NSPAIR(_ZN7S7310C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7310C4[];
extern void _ZN7S7310C42v2Ev();
static  VTBL_ENTRY vtc_S7310C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7310C4[0]),
  (VTBL_ENTRY)&_ZN7S7310C42v2Ev,
};
extern VTBL_ENTRY _ZTI7S7310C4[];
extern  VTBL_ENTRY _ZTV7S7310C4[];
Class_Descriptor cd_S7310C4 = {  "S7310C4", // class name
  0,0,//no base classes
  &(vtc_S7310C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7310C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7310C4),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7310C5  : S7310C4 {
  virtual void  v3(); // _ZN7S7310C52v3Ev
  virtual void  v4(); // _ZN7S7310C52v4Ev
  virtual void  v5(); // _ZN7S7310C52v5Ev
  ~S7310C5(); // tgen
  S7310C5(); // tgen
};
//SIG(-1 S7310C5) C1{ BC2{ v4} v1 v2 v3}


void  S7310C5 ::v3(){vfunc_called(this, "_ZN7S7310C52v3Ev");}
void  S7310C5 ::v4(){vfunc_called(this, "_ZN7S7310C52v4Ev");}
void  S7310C5 ::v5(){vfunc_called(this, "_ZN7S7310C52v5Ev");}
S7310C5 ::~S7310C5(){ note_dtor("S7310C5", this);} // tgen
S7310C5 ::S7310C5(){ note_ctor("S7310C5", this);} // tgen

static void Test_S7310C5()
{
  extern Class_Descriptor cd_S7310C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7310C5, buf);
    S7310C5 *dp, &lv = *(dp=new (buf) S7310C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7310C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7310C5)");
    check_base_class_offset(lv, (S7310C4*), 0, "S7310C5");
    test_class_info(&lv, &cd_S7310C5);
    dp->~S7310C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7310C5(Test_S7310C5, "S7310C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7310C5C1Ev();
extern void _ZN7S7310C5D1Ev();
Name_Map name_map_S7310C5[] = {
  NSPAIR(_ZN7S7310C5C1Ev),
  NSPAIR(_ZN7S7310C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7310C4;
extern VTBL_ENTRY _ZTI7S7310C4[];
extern  VTBL_ENTRY _ZTV7S7310C4[];
static Base_Class bases_S7310C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7310C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7310C5[];
extern void _ZN7S7310C42v2Ev();
extern void _ZN7S7310C52v3Ev();
extern void _ZN7S7310C52v4Ev();
extern void _ZN7S7310C52v5Ev();
static  VTBL_ENTRY vtc_S7310C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7310C5[0]),
  (VTBL_ENTRY)&_ZN7S7310C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7310C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7310C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7310C52v5Ev,
};
extern VTBL_ENTRY _ZTI7S7310C5[];
extern  VTBL_ENTRY _ZTV7S7310C5[];
Class_Descriptor cd_S7310C5 = {  "S7310C5", // class name
  bases_S7310C5, 1,
  &(vtc_S7310C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7310C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7310C5),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7310C6  : virtual S7310C5 , S7310C4 {
  int s7310c6f0;
  virtual void  v6(); // _ZN7S7310C62v6Ev
  virtual void  v7(); // _ZN7S7310C62v7Ev
  virtual void  v8(); // _ZN7S7310C62v8Ev
  virtual void  v9(); // _ZN7S7310C62v9Ev
  virtual void  v10(); // _ZN7S7310C63v10Ev
  virtual void  v11(); // _ZN7S7310C63v11Ev
  ~S7310C6(); // tgen
  S7310C6(); // tgen
};
//SIG(-1 S7310C6) C1{ VBC2{ BC3{ v7} v8 v9 v10} BC3 v1 v2 v3 v4 v5 v6 Fi}


void  S7310C6 ::v6(){vfunc_called(this, "_ZN7S7310C62v6Ev");}
void  S7310C6 ::v7(){vfunc_called(this, "_ZN7S7310C62v7Ev");}
void  S7310C6 ::v8(){vfunc_called(this, "_ZN7S7310C62v8Ev");}
void  S7310C6 ::v9(){vfunc_called(this, "_ZN7S7310C62v9Ev");}
void  S7310C6 ::v10(){vfunc_called(this, "_ZN7S7310C63v10Ev");}
void  S7310C6 ::v11(){vfunc_called(this, "_ZN7S7310C63v11Ev");}
S7310C6 ::~S7310C6(){ note_dtor("S7310C6", this);} // tgen
S7310C6 ::S7310C6(){ note_ctor("S7310C6", this);} // tgen

static void Test_S7310C6()
{
  extern Class_Descriptor cd_S7310C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S7310C6, buf);
    S7310C6 *dp, &lv = *(dp=new (buf) S7310C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S7310C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7310C6)");
    check_base_class_offset(lv, (S7310C4*)(S7310C5*), ABISELECT(16,8), "S7310C6");
    check_base_class_offset(lv, (S7310C5*), ABISELECT(16,8), "S7310C6");
    /*is_ambiguous_... S7310C6::S7310C4 */ AMB_check_base_class_offset(lv, (S7310C4*), 0, "S7310C6");
    check_field_offset(lv, s7310c6f0, ABISELECT(8,4), "S7310C6.s7310c6f0");
    test_class_info(&lv, &cd_S7310C6);
    dp->~S7310C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7310C6(Test_S7310C6, "S7310C6", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S7310C6C1Ev();
extern void _ZN7S7310C6D1Ev();
Name_Map name_map_S7310C6[] = {
  NSPAIR(_ZN7S7310C6C1Ev),
  NSPAIR(_ZN7S7310C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7310C4;
extern VTBL_ENTRY _ZTI7S7310C4[];
extern  VTBL_ENTRY _ZTV7S7310C4[];
extern Class_Descriptor cd_S7310C5;
extern VTBL_ENTRY _ZTI7S7310C5[];
extern  VTBL_ENTRY _ZTV7S7310C5[];
extern Class_Descriptor cd_S7310C4;
extern VTBL_ENTRY _ZTI7S7310C4[];
extern  VTBL_ENTRY _ZTV7S7310C4[];
static Base_Class bases_S7310C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7310C4,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7310C5,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7310C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7310C6[];
extern void _ZN7S7310C42v2Ev();
extern void _ZN7S7310C62v6Ev();
extern void _ZN7S7310C62v7Ev();
extern void _ZN7S7310C62v8Ev();
extern void _ZN7S7310C62v9Ev();
extern void _ZN7S7310C63v10Ev();
extern void _ZN7S7310C63v11Ev();
extern void _ZN7S7310C42v2Ev();
extern void _ZN7S7310C52v3Ev();
extern void _ZN7S7310C52v4Ev();
extern void _ZN7S7310C52v5Ev();
static  VTBL_ENTRY vtc_S7310C6[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7310C6[0]),
  (VTBL_ENTRY)&_ZN7S7310C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7310C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7310C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7310C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7310C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7310C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7310C63v11Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7310C6[0]),
  (VTBL_ENTRY)&_ZN7S7310C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7310C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7310C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7310C52v5Ev,
};
extern VTBL_ENTRY _ZTV7S7310C6[];
static  VTT_ENTRY vtt_S7310C6[] = {
  {&(_ZTV7S7310C6[3]),  3,20},
  {&(_ZTV7S7310C6[16]),  16,20},
};
extern VTBL_ENTRY _ZTI7S7310C6[];
extern  VTBL_ENTRY _ZTV7S7310C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7310C6[];
Class_Descriptor cd_S7310C6 = {  "S7310C6", // class name
  bases_S7310C6, 3,
  &(vtc_S7310C6[0]), // expected_vtbl_contents
  &(vtt_S7310C6[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S7310C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7310C6),20, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7310C6),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7310C3  : S7310C4 , virtual S7310C5 , S7310C6 {
  char s7310c3f0;
  virtual void  v12(); // _ZN7S7310C33v12Ev
  virtual void  v13(); // _ZN7S7310C33v13Ev
  virtual void  v14(); // _ZN7S7310C33v14Ev
  virtual void  v15(); // _ZN7S7310C33v15Ev
  virtual void  v16(); // _ZN7S7310C33v16Ev
  virtual void  v17(); // _ZN7S7310C33v17Ev
  virtual void  v18(); // _ZN7S7310C33v18Ev
  ~S7310C3(); // tgen
  S7310C3(); // tgen
};
//SIG(-1 S7310C3) C1{ BC2{ v8} VBC3{ BC2 v9 v10 v11} BC4{ VBC3 BC2 v12 v13 v14 v15 v16 v17 Fi} v1 v2 v3 v4 v5 v6 v7 Fc}


void  S7310C3 ::v12(){vfunc_called(this, "_ZN7S7310C33v12Ev");}
void  S7310C3 ::v13(){vfunc_called(this, "_ZN7S7310C33v13Ev");}
void  S7310C3 ::v14(){vfunc_called(this, "_ZN7S7310C33v14Ev");}
void  S7310C3 ::v15(){vfunc_called(this, "_ZN7S7310C33v15Ev");}
void  S7310C3 ::v16(){vfunc_called(this, "_ZN7S7310C33v16Ev");}
void  S7310C3 ::v17(){vfunc_called(this, "_ZN7S7310C33v17Ev");}
void  S7310C3 ::v18(){vfunc_called(this, "_ZN7S7310C33v18Ev");}
S7310C3 ::~S7310C3(){ note_dtor("S7310C3", this);} // tgen
S7310C3 ::S7310C3(){ note_ctor("S7310C3", this);} // tgen

static void Test_S7310C3()
{
  extern Class_Descriptor cd_S7310C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S7310C3, buf);
    S7310C3 *dp, &lv = *(dp=new (buf) S7310C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S7310C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7310C3)");
    /*is_ambiguous_... S7310C3::S7310C4 */ AMB_check_base_class_offset(lv, (S7310C4*), 0, "S7310C3");
    check_base_class_offset(lv, (S7310C4*)(S7310C5*), ABISELECT(24,16), "S7310C3");
    check_base_class_offset(lv, (S7310C5*), ABISELECT(24,16), "S7310C3");
    check_base_class_offset(lv, (S7310C5*)(S7310C6*), ABISELECT(24,16), "S7310C3");
    /*is_ambiguous_... S7310C6::S7310C4 */ AMB_check_base_class_offset(lv, (S7310C4*)(S7310C6*), ABISELECT(8,4), "S7310C3");
    check_base_class_offset(lv, (S7310C6*), ABISELECT(8,4), "S7310C3");
    check_field_offset(lv, s7310c3f0, ABISELECT(20,12), "S7310C3.s7310c3f0");
    test_class_info(&lv, &cd_S7310C3);
    dp->~S7310C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7310C3(Test_S7310C3, "S7310C3", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S7310C3C1Ev();
extern void _ZN7S7310C3D1Ev();
Name_Map name_map_S7310C3[] = {
  NSPAIR(_ZN7S7310C3C1Ev),
  NSPAIR(_ZN7S7310C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7310C4;
extern VTBL_ENTRY _ZTI7S7310C4[];
extern  VTBL_ENTRY _ZTV7S7310C4[];
extern Class_Descriptor cd_S7310C4;
extern VTBL_ENTRY _ZTI7S7310C4[];
extern  VTBL_ENTRY _ZTV7S7310C4[];
extern Class_Descriptor cd_S7310C5;
extern VTBL_ENTRY _ZTI7S7310C5[];
extern  VTBL_ENTRY _ZTV7S7310C5[];
extern Class_Descriptor cd_S7310C4;
extern VTBL_ENTRY _ZTI7S7310C4[];
extern  VTBL_ENTRY _ZTV7S7310C4[];
extern Class_Descriptor cd_S7310C6;
extern VTBL_ENTRY _ZTI7S7310C6[];
extern  VTBL_ENTRY _ZTV7S7310C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7310C6[];
static Base_Class bases_S7310C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7310C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7310C4,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7310C5,    ABISELECT(24,16), //bcp->offset
    21, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7310C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7310C6,    ABISELECT(8,4), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7310C3[];
extern void _ZN7S7310C42v2Ev();
extern void _ZN7S7310C33v12Ev();
extern void _ZN7S7310C33v13Ev();
extern void _ZN7S7310C33v14Ev();
extern void _ZN7S7310C33v15Ev();
extern void _ZN7S7310C33v16Ev();
extern void _ZN7S7310C33v17Ev();
extern void _ZN7S7310C33v18Ev();
extern void _ZN7S7310C42v2Ev();
extern void _ZN7S7310C62v6Ev();
extern void _ZN7S7310C62v7Ev();
extern void _ZN7S7310C62v8Ev();
extern void _ZN7S7310C62v9Ev();
extern void _ZN7S7310C63v10Ev();
extern void _ZN7S7310C63v11Ev();
extern void _ZN7S7310C42v2Ev();
extern void _ZN7S7310C52v3Ev();
extern void _ZN7S7310C52v4Ev();
extern void _ZN7S7310C52v5Ev();
static  VTBL_ENTRY vtc_S7310C3[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7310C3[0]),
  (VTBL_ENTRY)&_ZN7S7310C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7310C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7310C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7310C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7310C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7310C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7310C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7310C33v18Ev,
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7310C3[0]),
  (VTBL_ENTRY)&_ZN7S7310C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7310C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7310C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7310C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7310C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7310C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7310C63v11Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7310C3[0]),
  (VTBL_ENTRY)&_ZN7S7310C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7310C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7310C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7310C52v5Ev,
};
extern VTBL_ENTRY _ZTV7S7310C3[];
extern void _ZN7S7310C42v2Ev();
extern void _ZN7S7310C62v6Ev();
extern void _ZN7S7310C62v7Ev();
extern void _ZN7S7310C62v8Ev();
extern void _ZN7S7310C62v9Ev();
extern void _ZN7S7310C63v10Ev();
extern void _ZN7S7310C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7310C6__7S7310C3[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7310C6[0]),
  (VTBL_ENTRY)&_ZN7S7310C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7310C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7310C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7310C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7310C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7310C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7310C63v11Ev,
};
extern void _ZN7S7310C42v2Ev();
extern void _ZN7S7310C52v3Ev();
extern void _ZN7S7310C52v4Ev();
extern void _ZN7S7310C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7310C5__7S7310C6__7S7310C3[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7310C6[0]),
  (VTBL_ENTRY)&_ZN7S7310C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7310C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7310C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7310C52v5Ev,
};
static  VTT_ENTRY vtt_S7310C3[] = {
  {&(_ZTV7S7310C3[3]),  3,31},
  {&(_tg__ZTV7S7310C6__7S7310C3[3]),  3,10},
  {&(_tg__ZTV7S7310C5__7S7310C6__7S7310C3[6]),  6,10},
  {&(_ZTV7S7310C3[27]),  27,31},
  {&(_ZTV7S7310C3[14]),  14,31},
};
extern VTBL_ENTRY _ZTI7S7310C3[];
extern  VTBL_ENTRY _ZTV7S7310C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7310C3[];
Class_Descriptor cd_S7310C3 = {  "S7310C3", // class name
  bases_S7310C3, 5,
  &(vtc_S7310C3[0]), // expected_vtbl_contents
  &(vtt_S7310C3[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S7310C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7310C3),31, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7310C3),5, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7310C7  {
  virtual void  v19(); // _ZN7S7310C73v19Ev
  virtual void  v20(); // _ZN7S7310C73v20Ev
  virtual void  v21(); // _ZN7S7310C73v21Ev
  virtual void  v22(); // _ZN7S7310C73v22Ev
  virtual void  v23(); // _ZN7S7310C73v23Ev
  ~S7310C7(); // tgen
  S7310C7(); // tgen
};
//SIG(-1 S7310C7) C1{ v1 v2 v3 v4 v5}


void  S7310C7 ::v19(){vfunc_called(this, "_ZN7S7310C73v19Ev");}
void  S7310C7 ::v20(){vfunc_called(this, "_ZN7S7310C73v20Ev");}
void  S7310C7 ::v21(){vfunc_called(this, "_ZN7S7310C73v21Ev");}
void  S7310C7 ::v22(){vfunc_called(this, "_ZN7S7310C73v22Ev");}
void  S7310C7 ::v23(){vfunc_called(this, "_ZN7S7310C73v23Ev");}
S7310C7 ::~S7310C7(){ note_dtor("S7310C7", this);} // tgen
S7310C7 ::S7310C7(){ note_ctor("S7310C7", this);} // tgen

static void Test_S7310C7()
{
  extern Class_Descriptor cd_S7310C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7310C7, buf);
    S7310C7 *dp, &lv = *(dp=new (buf) S7310C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7310C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7310C7)");
    test_class_info(&lv, &cd_S7310C7);
    dp->~S7310C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7310C7(Test_S7310C7, "S7310C7", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7310C7C1Ev();
extern void _ZN7S7310C7D1Ev();
Name_Map name_map_S7310C7[] = {
  NSPAIR(_ZN7S7310C7C1Ev),
  NSPAIR(_ZN7S7310C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7310C7[];
extern void _ZN7S7310C73v19Ev();
extern void _ZN7S7310C73v20Ev();
extern void _ZN7S7310C73v21Ev();
extern void _ZN7S7310C73v22Ev();
extern void _ZN7S7310C73v23Ev();
static  VTBL_ENTRY vtc_S7310C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7310C7[0]),
  (VTBL_ENTRY)&_ZN7S7310C73v19Ev,
  (VTBL_ENTRY)&_ZN7S7310C73v20Ev,
  (VTBL_ENTRY)&_ZN7S7310C73v21Ev,
  (VTBL_ENTRY)&_ZN7S7310C73v22Ev,
  (VTBL_ENTRY)&_ZN7S7310C73v23Ev,
};
extern VTBL_ENTRY _ZTI7S7310C7[];
extern  VTBL_ENTRY _ZTV7S7310C7[];
Class_Descriptor cd_S7310C7 = {  "S7310C7", // class name
  0,0,//no base classes
  &(vtc_S7310C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7310C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7310C7),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7310C8  : virtual S7310C4 {
  virtual  ~S7310C8(); // _ZN7S7310C8D2Ev
  virtual void  v24(); // _ZN7S7310C83v24Ev
  S7310C8(); // tgen
};
//SIG(-1 S7310C8) C1{ VBC2{ v2} vd v1}


 S7310C8 ::~S7310C8(){ note_dtor("S7310C8", this);}
void  S7310C8 ::v24(){vfunc_called(this, "_ZN7S7310C83v24Ev");}
S7310C8 ::S7310C8(){ note_ctor("S7310C8", this);} // tgen

static void Test_S7310C8()
{
  extern Class_Descriptor cd_S7310C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7310C8, buf);
    S7310C8 *dp, &lv = *(dp=new (buf) S7310C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7310C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7310C8)");
    check_base_class_offset(lv, (S7310C4*), 0, "S7310C8");
    test_class_info(&lv, &cd_S7310C8);
    dp->~S7310C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7310C8(Test_S7310C8, "S7310C8", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7310C8C1Ev();
extern void _ZN7S7310C8D2Ev();
Name_Map name_map_S7310C8[] = {
  NSPAIR(_ZN7S7310C8C1Ev),
  NSPAIR(_ZN7S7310C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7310C4;
extern VTBL_ENTRY _ZTI7S7310C4[];
extern  VTBL_ENTRY _ZTV7S7310C4[];
static Base_Class bases_S7310C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7310C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7310C8[];
extern void _ZN7S7310C42v2Ev();
extern void _ZN7S7310C8D1Ev();
extern void _ZN7S7310C8D0Ev();
extern void _ZN7S7310C83v24Ev();
static  VTBL_ENTRY vtc_S7310C8[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7310C8[0]),
  (VTBL_ENTRY)&_ZN7S7310C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7310C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7310C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7310C83v24Ev,
};
extern VTBL_ENTRY _ZTV7S7310C8[];
static  VTT_ENTRY vtt_S7310C8[] = {
  {&(_ZTV7S7310C8[4]),  4,8},
  {&(_ZTV7S7310C8[4]),  4,8},
};
extern VTBL_ENTRY _ZTI7S7310C8[];
extern  VTBL_ENTRY _ZTV7S7310C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7310C8[];
Class_Descriptor cd_S7310C8 = {  "S7310C8", // class name
  bases_S7310C8, 1,
  &(vtc_S7310C8[0]), // expected_vtbl_contents
  &(vtt_S7310C8[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7310C8),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7310C8),8, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7310C8),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7310C2  : virtual S7310C3 , virtual S7310C7 , S7310C8 {
  ::S7310C6 s7310c2f0;
  virtual  ~S7310C2(); // _ZN7S7310C2D2Ev
  virtual void  v25(); // _ZN7S7310C23v25Ev
  virtual void  v26(); // _ZN7S7310C23v26Ev
  virtual void  v27(); // _ZN7S7310C23v27Ev
  S7310C2(); // tgen
};
//SIG(-1 S7310C2) C1{ VBC2{ BC3{ v4} VBC4{ BC3 v5 v6 v7} BC5{ VBC4 BC3 v8 v9 v10 v11 v12 v13 Fi} v14 v15 v16 v17 v18 v19 v20 Fc} VBC6{ v21 v22 v23 v24 v25} BC7{ VBC3 vd v26} vd v1 v2 v3 FC5}


 S7310C2 ::~S7310C2(){ note_dtor("S7310C2", this);}
void  S7310C2 ::v25(){vfunc_called(this, "_ZN7S7310C23v25Ev");}
void  S7310C2 ::v26(){vfunc_called(this, "_ZN7S7310C23v26Ev");}
void  S7310C2 ::v27(){vfunc_called(this, "_ZN7S7310C23v27Ev");}
S7310C2 ::S7310C2(){ note_ctor("S7310C2", this);} // tgen

static void Test_S7310C2()
{
  extern Class_Descriptor cd_S7310C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,11)];
    init_test(&cd_S7310C2, buf);
    S7310C2 *dp, &lv = *(dp=new (buf) S7310C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,40), "sizeof(S7310C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7310C2)");
    /*is_ambiguous_... S7310C3::S7310C4 */ AMB_check_base_class_offset(lv, (S7310C4*)(S7310C3*), ABISELECT(32,16), "S7310C2");
    check_base_class_offset(lv, (S7310C4*)(S7310C5*), ABISELECT(56,32), "S7310C2");
    check_base_class_offset(lv, (S7310C5*)(S7310C3*), ABISELECT(56,32), "S7310C2");
    check_base_class_offset(lv, (S7310C5*)(S7310C6*)(S7310C3*), ABISELECT(56,32), "S7310C2");
    /*is_ambiguous_... S7310C6::S7310C4 */ AMB_check_base_class_offset(lv, (S7310C4*)(S7310C6*)(S7310C3*), ABISELECT(40,20), "S7310C2");
    check_base_class_offset(lv, (S7310C6*)(S7310C3*), ABISELECT(40,20), "S7310C2");
    check_base_class_offset(lv, (S7310C3*), ABISELECT(32,16), "S7310C2");
    check_base_class_offset(lv, (S7310C7*), ABISELECT(64,36), "S7310C2");
    check_base_class_offset(lv, (S7310C4*)(S7310C8*), 0, "S7310C2");
    check_base_class_offset(lv, (S7310C8*), 0, "S7310C2");
    check_field_offset(lv, s7310c2f0, ABISELECT(8,4), "S7310C2.s7310c2f0");
    test_class_info(&lv, &cd_S7310C2);
    dp->~S7310C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7310C2(Test_S7310C2, "S7310C2", ABISELECT(72,40));

#else // __cplusplus

extern void _ZN7S7310C2C1Ev();
extern void _ZN7S7310C2D2Ev();
Name_Map name_map_S7310C2[] = {
  NSPAIR(_ZN7S7310C2C1Ev),
  NSPAIR(_ZN7S7310C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7310C4;
extern VTBL_ENTRY _ZTI7S7310C4[];
extern  VTBL_ENTRY _ZTV7S7310C4[];
extern Class_Descriptor cd_S7310C4;
extern VTBL_ENTRY _ZTI7S7310C4[];
extern  VTBL_ENTRY _ZTV7S7310C4[];
extern Class_Descriptor cd_S7310C5;
extern VTBL_ENTRY _ZTI7S7310C5[];
extern  VTBL_ENTRY _ZTV7S7310C5[];
extern Class_Descriptor cd_S7310C4;
extern VTBL_ENTRY _ZTI7S7310C4[];
extern  VTBL_ENTRY _ZTV7S7310C4[];
extern Class_Descriptor cd_S7310C6;
extern VTBL_ENTRY _ZTI7S7310C6[];
extern  VTBL_ENTRY _ZTV7S7310C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7310C6[];
extern Class_Descriptor cd_S7310C3;
extern VTBL_ENTRY _ZTI7S7310C3[];
extern  VTBL_ENTRY _ZTV7S7310C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7310C3[];
extern Class_Descriptor cd_S7310C7;
extern VTBL_ENTRY _ZTI7S7310C7[];
extern  VTBL_ENTRY _ZTV7S7310C7[];
extern Class_Descriptor cd_S7310C4;
extern VTBL_ENTRY _ZTI7S7310C4[];
extern  VTBL_ENTRY _ZTV7S7310C4[];
extern Class_Descriptor cd_S7310C8;
extern VTBL_ENTRY _ZTI7S7310C8[];
extern  VTBL_ENTRY _ZTV7S7310C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7310C8[];
static Base_Class bases_S7310C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7310C4,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7310C4,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7310C5,    ABISELECT(56,32), //bcp->offset
    49, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7310C4,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7310C6,    ABISELECT(40,20), //bcp->offset
    39, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7310C3,    ABISELECT(32,16), //bcp->offset
    14, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7310C7,    ABISELECT(64,36), //bcp->offset
    59, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7310C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7310C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7310C2[];
extern void _ZN7S7310C42v2Ev();
extern void _ZN7S7310C2D1Ev();
extern void _ZN7S7310C2D0Ev();
extern void _ZN7S7310C83v24Ev();
extern void _ZN7S7310C23v25Ev();
extern void _ZN7S7310C23v26Ev();
extern void _ZN7S7310C23v27Ev();
extern void _ZN7S7310C42v2Ev();
extern void _ZN7S7310C33v12Ev();
extern void _ZN7S7310C33v13Ev();
extern void _ZN7S7310C33v14Ev();
extern void _ZN7S7310C33v15Ev();
extern void _ZN7S7310C33v16Ev();
extern void _ZN7S7310C33v17Ev();
extern void _ZN7S7310C33v18Ev();
extern void _ZN7S7310C42v2Ev();
extern void _ZN7S7310C62v6Ev();
extern void _ZN7S7310C62v7Ev();
extern void _ZN7S7310C62v8Ev();
extern void _ZN7S7310C62v9Ev();
extern void _ZN7S7310C63v10Ev();
extern void _ZN7S7310C63v11Ev();
extern void _ZN7S7310C42v2Ev();
extern void _ZN7S7310C52v3Ev();
extern void _ZN7S7310C52v4Ev();
extern void _ZN7S7310C52v5Ev();
extern void _ZN7S7310C73v19Ev();
extern void _ZN7S7310C73v20Ev();
extern void _ZN7S7310C73v21Ev();
extern void _ZN7S7310C73v22Ev();
extern void _ZN7S7310C73v23Ev();
static  VTBL_ENTRY vtc_S7310C2[] = {
  ABISELECT(64,36),
  ABISELECT(56,32),
  ABISELECT(32,16),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7310C2[0]),
  (VTBL_ENTRY)&_ZN7S7310C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7310C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7310C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7310C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7310C23v25Ev,
  (VTBL_ENTRY)&_ZN7S7310C23v26Ev,
  (VTBL_ENTRY)&_ZN7S7310C23v27Ev,
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7310C2[0]),
  (VTBL_ENTRY)&_ZN7S7310C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7310C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7310C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7310C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7310C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7310C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7310C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7310C33v18Ev,
  ABISELECT(16,12),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7310C2[0]),
  (VTBL_ENTRY)&_ZN7S7310C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7310C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7310C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7310C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7310C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7310C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7310C63v11Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7310C2[0]),
  (VTBL_ENTRY)&_ZN7S7310C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7310C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7310C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7310C52v5Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7310C2[0]),
  (VTBL_ENTRY)&_ZN7S7310C73v19Ev,
  (VTBL_ENTRY)&_ZN7S7310C73v20Ev,
  (VTBL_ENTRY)&_ZN7S7310C73v21Ev,
  (VTBL_ENTRY)&_ZN7S7310C73v22Ev,
  (VTBL_ENTRY)&_ZN7S7310C73v23Ev,
};
extern VTBL_ENTRY _ZTV7S7310C2[];
extern void _ZN7S7310C42v2Ev();
extern void _ZN7S7310C8D1Ev();
extern void _ZN7S7310C8D0Ev();
extern void _ZN7S7310C83v24Ev();
static  VTBL_ENTRY _tg__ZTV7S7310C8__7S7310C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7310C8[0]),
  (VTBL_ENTRY)&_ZN7S7310C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7310C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7310C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7310C83v24Ev,
};
extern void _ZN7S7310C42v2Ev();
extern void _ZN7S7310C33v12Ev();
extern void _ZN7S7310C33v13Ev();
extern void _ZN7S7310C33v14Ev();
extern void _ZN7S7310C33v15Ev();
extern void _ZN7S7310C33v16Ev();
extern void _ZN7S7310C33v17Ev();
extern void _ZN7S7310C33v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7310C3__7S7310C2[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7310C3[0]),
  (VTBL_ENTRY)&_ZN7S7310C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7310C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7310C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7310C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7310C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7310C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7310C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7310C33v18Ev,
};
extern void _ZN7S7310C42v2Ev();
extern void _ZN7S7310C62v6Ev();
extern void _ZN7S7310C62v7Ev();
extern void _ZN7S7310C62v8Ev();
extern void _ZN7S7310C62v9Ev();
extern void _ZN7S7310C63v10Ev();
extern void _ZN7S7310C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7310C67S7310C3__7S7310C2[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7310C6[0]),
  (VTBL_ENTRY)&_ZN7S7310C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7310C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7310C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7310C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7310C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7310C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7310C63v11Ev,
};
extern void _ZN7S7310C42v2Ev();
extern void _ZN7S7310C52v3Ev();
extern void _ZN7S7310C52v4Ev();
extern void _ZN7S7310C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7310C5__7S7310C67S7310C3__7S7310C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7310C6[0]),
  (VTBL_ENTRY)&_ZN7S7310C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7310C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7310C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7310C52v5Ev,
};
extern void _ZN7S7310C42v2Ev();
extern void _ZN7S7310C52v3Ev();
extern void _ZN7S7310C52v4Ev();
extern void _ZN7S7310C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7310C5__7S7310C3__7S7310C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7310C3[0]),
  (VTBL_ENTRY)&_ZN7S7310C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7310C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7310C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7310C52v5Ev,
};
extern void _ZN7S7310C42v2Ev();
extern void _ZN7S7310C62v6Ev();
extern void _ZN7S7310C62v7Ev();
extern void _ZN7S7310C62v8Ev();
extern void _ZN7S7310C62v9Ev();
extern void _ZN7S7310C63v10Ev();
extern void _ZN7S7310C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7310C6__7S7310C3__7S7310C2[] = {
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7310C3[0]),
  (VTBL_ENTRY)&_ZN7S7310C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7310C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7310C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7310C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7310C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7310C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7310C63v11Ev,
};
static  VTT_ENTRY vtt_S7310C2[] = {
  {&(_ZTV7S7310C2[7]),  7,71},
  {&(_tg__ZTV7S7310C8__7S7310C2[4]),  4,8},
  {&(_tg__ZTV7S7310C8__7S7310C2[4]),  4,8},
  {&(_ZTV7S7310C2[31]),  31,71},
  {&(_ZTV7S7310C2[55]),  55,71},
  {&(_ZTV7S7310C2[42]),  42,71},
  {&(_ZTV7S7310C2[66]),  66,71},
  {&(_ZTV7S7310C2[7]),  7,71},
  {&(_tg__ZTV7S7310C3__7S7310C2[3]),  3,11},
  {&(_tg__ZTV7S7310C67S7310C3__7S7310C2[3]),  3,10},
  {&(_tg__ZTV7S7310C5__7S7310C67S7310C3__7S7310C2[6]),  6,10},
  {&(_tg__ZTV7S7310C5__7S7310C3__7S7310C2[6]),  6,10},
  {&(_tg__ZTV7S7310C6__7S7310C3__7S7310C2[3]),  3,10},
};
extern VTBL_ENTRY _ZTI7S7310C2[];
extern  VTBL_ENTRY _ZTV7S7310C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7310C2[];
Class_Descriptor cd_S7310C2 = {  "S7310C2", // class name
  bases_S7310C2, 9,
  &(vtc_S7310C2[0]), // expected_vtbl_contents
  &(vtt_S7310C2[0]), // expected_vtt_contents
  ABISELECT(72,40), // object size
  NSPAIRA(_ZTI7S7310C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7310C2),71, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7310C2),13, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7310C1  : S7310C2 {
  void *s7310c1f0;
  virtual void  v1(); // _ZN7S7310C12v1Ev
  ~S7310C1(); // tgen
  S7310C1(); // tgen
};
//SIG(1 S7310C1) C1{ BC2{ VBC3{ BC4{ v2} VBC5{ BC4 v3 v4 v5} BC6{ VBC5 BC4 v6 v7 v8 v9 v10 v11 Fi} v12 v13 v14 v15 v16 v17 v18 Fc} VBC7{ v19 v20 v21 v22 v23} BC8{ VBC4 vd v24} vd v25 v26 v27 FC6} v1 Fp}


void  S7310C1 ::v1(){vfunc_called(this, "_ZN7S7310C12v1Ev");}
S7310C1 ::~S7310C1(){ note_dtor("S7310C1", this);} // tgen
S7310C1 ::S7310C1(){ note_ctor("S7310C1", this);} // tgen

static void Test_S7310C1()
{
  extern Class_Descriptor cd_S7310C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,12)];
    init_test(&cd_S7310C1, buf);
    S7310C1 *dp, &lv = *(dp=new (buf) S7310C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,44), "sizeof(S7310C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7310C1)");
    /*is_ambiguous_... S7310C3::S7310C4 */ AMB_check_base_class_offset(lv, (S7310C4*)(S7310C3*), ABISELECT(40,20), "S7310C1");
    check_base_class_offset(lv, (S7310C4*)(S7310C5*), ABISELECT(64,36), "S7310C1");
    check_base_class_offset(lv, (S7310C5*)(S7310C3*), ABISELECT(64,36), "S7310C1");
    check_base_class_offset(lv, (S7310C5*)(S7310C6*)(S7310C3*), ABISELECT(64,36), "S7310C1");
    /*is_ambiguous_... S7310C6::S7310C4 */ AMB_check_base_class_offset(lv, (S7310C4*)(S7310C6*)(S7310C3*), ABISELECT(48,24), "S7310C1");
    check_base_class_offset(lv, (S7310C6*)(S7310C3*), ABISELECT(48,24), "S7310C1");
    check_base_class_offset(lv, (S7310C3*)(S7310C2*), ABISELECT(40,20), "S7310C1");
    check_base_class_offset(lv, (S7310C7*)(S7310C2*), ABISELECT(72,40), "S7310C1");
    check_base_class_offset(lv, (S7310C4*)(S7310C8*)(S7310C2*), 0, "S7310C1");
    check_base_class_offset(lv, (S7310C8*)(S7310C2*), 0, "S7310C1");
    check_base_class_offset(lv, (S7310C2*), 0, "S7310C1");
    check_field_offset(lv, s7310c1f0, ABISELECT(32,16), "S7310C1.s7310c1f0");
    test_class_info(&lv, &cd_S7310C1);
    dp->~S7310C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7310C1(Test_S7310C1, "S7310C1", ABISELECT(80,44));

#else // __cplusplus

extern void _ZN7S7310C1C1Ev();
extern void _ZN7S7310C1D1Ev();
Name_Map name_map_S7310C1[] = {
  NSPAIR(_ZN7S7310C1C1Ev),
  NSPAIR(_ZN7S7310C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7310C4;
extern VTBL_ENTRY _ZTI7S7310C4[];
extern  VTBL_ENTRY _ZTV7S7310C4[];
extern Class_Descriptor cd_S7310C4;
extern VTBL_ENTRY _ZTI7S7310C4[];
extern  VTBL_ENTRY _ZTV7S7310C4[];
extern Class_Descriptor cd_S7310C5;
extern VTBL_ENTRY _ZTI7S7310C5[];
extern  VTBL_ENTRY _ZTV7S7310C5[];
extern Class_Descriptor cd_S7310C4;
extern VTBL_ENTRY _ZTI7S7310C4[];
extern  VTBL_ENTRY _ZTV7S7310C4[];
extern Class_Descriptor cd_S7310C6;
extern VTBL_ENTRY _ZTI7S7310C6[];
extern  VTBL_ENTRY _ZTV7S7310C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7310C6[];
extern Class_Descriptor cd_S7310C3;
extern VTBL_ENTRY _ZTI7S7310C3[];
extern  VTBL_ENTRY _ZTV7S7310C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7310C3[];
extern Class_Descriptor cd_S7310C7;
extern VTBL_ENTRY _ZTI7S7310C7[];
extern  VTBL_ENTRY _ZTV7S7310C7[];
extern Class_Descriptor cd_S7310C4;
extern VTBL_ENTRY _ZTI7S7310C4[];
extern  VTBL_ENTRY _ZTV7S7310C4[];
extern Class_Descriptor cd_S7310C8;
extern VTBL_ENTRY _ZTI7S7310C8[];
extern  VTBL_ENTRY _ZTV7S7310C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7310C8[];
extern Class_Descriptor cd_S7310C2;
extern VTBL_ENTRY _ZTI7S7310C2[];
extern  VTBL_ENTRY _ZTV7S7310C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7310C2[];
static Base_Class bases_S7310C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7310C4,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7310C4,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7310C5,    ABISELECT(64,36), //bcp->offset
    50, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7310C4,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7310C6,    ABISELECT(48,24), //bcp->offset
    40, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7310C3,    ABISELECT(40,20), //bcp->offset
    15, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7310C7,    ABISELECT(72,40), //bcp->offset
    60, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7310C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7310C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7310C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7310C1[];
extern void _ZN7S7310C42v2Ev();
extern void _ZN7S7310C1D1Ev();
extern void _ZN7S7310C1D0Ev();
extern void _ZN7S7310C83v24Ev();
extern void _ZN7S7310C23v25Ev();
extern void _ZN7S7310C23v26Ev();
extern void _ZN7S7310C23v27Ev();
extern void _ZN7S7310C12v1Ev();
extern void _ZN7S7310C42v2Ev();
extern void _ZN7S7310C33v12Ev();
extern void _ZN7S7310C33v13Ev();
extern void _ZN7S7310C33v14Ev();
extern void _ZN7S7310C33v15Ev();
extern void _ZN7S7310C33v16Ev();
extern void _ZN7S7310C33v17Ev();
extern void _ZN7S7310C33v18Ev();
extern void _ZN7S7310C42v2Ev();
extern void _ZN7S7310C62v6Ev();
extern void _ZN7S7310C62v7Ev();
extern void _ZN7S7310C62v8Ev();
extern void _ZN7S7310C62v9Ev();
extern void _ZN7S7310C63v10Ev();
extern void _ZN7S7310C63v11Ev();
extern void _ZN7S7310C42v2Ev();
extern void _ZN7S7310C52v3Ev();
extern void _ZN7S7310C52v4Ev();
extern void _ZN7S7310C52v5Ev();
extern void _ZN7S7310C73v19Ev();
extern void _ZN7S7310C73v20Ev();
extern void _ZN7S7310C73v21Ev();
extern void _ZN7S7310C73v22Ev();
extern void _ZN7S7310C73v23Ev();
static  VTBL_ENTRY vtc_S7310C1[] = {
  ABISELECT(72,40),
  ABISELECT(64,36),
  ABISELECT(40,20),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7310C1[0]),
  (VTBL_ENTRY)&_ZN7S7310C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7310C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7310C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7310C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7310C23v25Ev,
  (VTBL_ENTRY)&_ZN7S7310C23v26Ev,
  (VTBL_ENTRY)&_ZN7S7310C23v27Ev,
  (VTBL_ENTRY)&_ZN7S7310C12v1Ev,
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7310C1[0]),
  (VTBL_ENTRY)&_ZN7S7310C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7310C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7310C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7310C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7310C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7310C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7310C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7310C33v18Ev,
  ABISELECT(16,12),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7310C1[0]),
  (VTBL_ENTRY)&_ZN7S7310C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7310C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7310C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7310C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7310C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7310C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7310C63v11Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7310C1[0]),
  (VTBL_ENTRY)&_ZN7S7310C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7310C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7310C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7310C52v5Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S7310C1[0]),
  (VTBL_ENTRY)&_ZN7S7310C73v19Ev,
  (VTBL_ENTRY)&_ZN7S7310C73v20Ev,
  (VTBL_ENTRY)&_ZN7S7310C73v21Ev,
  (VTBL_ENTRY)&_ZN7S7310C73v22Ev,
  (VTBL_ENTRY)&_ZN7S7310C73v23Ev,
};
extern VTBL_ENTRY _ZTV7S7310C1[];
extern void _ZN7S7310C42v2Ev();
extern void _ZN7S7310C2D1Ev();
extern void _ZN7S7310C2D0Ev();
extern void _ZN7S7310C83v24Ev();
extern void _ZN7S7310C23v25Ev();
extern void _ZN7S7310C23v26Ev();
extern void _ZN7S7310C23v27Ev();
static  VTBL_ENTRY _tg__ZTV7S7310C2__7S7310C1[] = {
  ABISELECT(72,40),
  ABISELECT(64,36),
  ABISELECT(40,20),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7310C2[0]),
  (VTBL_ENTRY)&_ZN7S7310C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7310C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7310C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7310C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7310C23v25Ev,
  (VTBL_ENTRY)&_ZN7S7310C23v26Ev,
  (VTBL_ENTRY)&_ZN7S7310C23v27Ev,
};
extern void _ZN7S7310C42v2Ev();
extern void _ZN7S7310C8D1Ev();
extern void _ZN7S7310C8D0Ev();
extern void _ZN7S7310C83v24Ev();
static  VTBL_ENTRY _tg__ZTV7S7310C87S7310C2__7S7310C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7310C8[0]),
  (VTBL_ENTRY)&_ZN7S7310C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7310C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7310C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7310C83v24Ev,
};
extern void _ZN7S7310C42v2Ev();
extern void _ZN7S7310C33v12Ev();
extern void _ZN7S7310C33v13Ev();
extern void _ZN7S7310C33v14Ev();
extern void _ZN7S7310C33v15Ev();
extern void _ZN7S7310C33v16Ev();
extern void _ZN7S7310C33v17Ev();
extern void _ZN7S7310C33v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7310C3__7S7310C2__7S7310C1[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7310C2[0]),
  (VTBL_ENTRY)&_ZN7S7310C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7310C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7310C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7310C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7310C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7310C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7310C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7310C33v18Ev,
};
extern void _ZN7S7310C42v2Ev();
extern void _ZN7S7310C52v3Ev();
extern void _ZN7S7310C52v4Ev();
extern void _ZN7S7310C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7310C5__7S7310C2__7S7310C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7310C2[0]),
  (VTBL_ENTRY)&_ZN7S7310C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7310C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7310C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7310C52v5Ev,
};
extern void _ZN7S7310C42v2Ev();
extern void _ZN7S7310C62v6Ev();
extern void _ZN7S7310C62v7Ev();
extern void _ZN7S7310C62v8Ev();
extern void _ZN7S7310C62v9Ev();
extern void _ZN7S7310C63v10Ev();
extern void _ZN7S7310C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7310C67S7310C3__7S7310C2__7S7310C1[] = {
  ABISELECT(16,12),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7310C2[0]),
  (VTBL_ENTRY)&_ZN7S7310C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7310C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7310C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7310C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7310C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7310C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7310C63v11Ev,
};
extern void _ZN7S7310C73v19Ev();
extern void _ZN7S7310C73v20Ev();
extern void _ZN7S7310C73v21Ev();
extern void _ZN7S7310C73v22Ev();
extern void _ZN7S7310C73v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7310C7__7S7310C2__7S7310C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S7310C2[0]),
  (VTBL_ENTRY)&_ZN7S7310C73v19Ev,
  (VTBL_ENTRY)&_ZN7S7310C73v20Ev,
  (VTBL_ENTRY)&_ZN7S7310C73v21Ev,
  (VTBL_ENTRY)&_ZN7S7310C73v22Ev,
  (VTBL_ENTRY)&_ZN7S7310C73v23Ev,
};
extern void _ZN7S7310C42v2Ev();
extern void _ZN7S7310C33v12Ev();
extern void _ZN7S7310C33v13Ev();
extern void _ZN7S7310C33v14Ev();
extern void _ZN7S7310C33v15Ev();
extern void _ZN7S7310C33v16Ev();
extern void _ZN7S7310C33v17Ev();
extern void _ZN7S7310C33v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7310C3__7S7310C1[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7310C3[0]),
  (VTBL_ENTRY)&_ZN7S7310C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7310C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7310C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7310C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7310C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7310C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7310C33v17Ev,
  (VTBL_ENTRY)&_ZN7S7310C33v18Ev,
};
extern void _ZN7S7310C42v2Ev();
extern void _ZN7S7310C62v6Ev();
extern void _ZN7S7310C62v7Ev();
extern void _ZN7S7310C62v8Ev();
extern void _ZN7S7310C62v9Ev();
extern void _ZN7S7310C63v10Ev();
extern void _ZN7S7310C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7310C67S7310C3__7S7310C1[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7310C6[0]),
  (VTBL_ENTRY)&_ZN7S7310C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7310C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7310C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7310C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7310C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7310C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7310C63v11Ev,
};
extern void _ZN7S7310C42v2Ev();
extern void _ZN7S7310C52v3Ev();
extern void _ZN7S7310C52v4Ev();
extern void _ZN7S7310C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7310C5__7S7310C67S7310C3__7S7310C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7310C6[0]),
  (VTBL_ENTRY)&_ZN7S7310C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7310C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7310C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7310C52v5Ev,
};
extern void _ZN7S7310C42v2Ev();
extern void _ZN7S7310C52v3Ev();
extern void _ZN7S7310C52v4Ev();
extern void _ZN7S7310C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7310C5__7S7310C3__7S7310C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7310C3[0]),
  (VTBL_ENTRY)&_ZN7S7310C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7310C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7310C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7310C52v5Ev,
};
extern void _ZN7S7310C42v2Ev();
extern void _ZN7S7310C62v6Ev();
extern void _ZN7S7310C62v7Ev();
extern void _ZN7S7310C62v8Ev();
extern void _ZN7S7310C62v9Ev();
extern void _ZN7S7310C63v10Ev();
extern void _ZN7S7310C63v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7310C6__7S7310C3__7S7310C1[] = {
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7310C3[0]),
  (VTBL_ENTRY)&_ZN7S7310C42v2Ev,
  (VTBL_ENTRY)&_ZN7S7310C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7310C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7310C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7310C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7310C63v10Ev,
  (VTBL_ENTRY)&_ZN7S7310C63v11Ev,
};
static  VTT_ENTRY vtt_S7310C1[] = {
  {&(_ZTV7S7310C1[7]),  7,72},
  {&(_tg__ZTV7S7310C2__7S7310C1[7]),  7,14},
  {&(_tg__ZTV7S7310C87S7310C2__7S7310C1[4]),  4,8},
  {&(_tg__ZTV7S7310C87S7310C2__7S7310C1[4]),  4,8},
  {&(_tg__ZTV7S7310C3__7S7310C2__7S7310C1[17]),  17,25},
  {&(_tg__ZTV7S7310C5__7S7310C2__7S7310C1[6]),  6,10},
  {&(_tg__ZTV7S7310C67S7310C3__7S7310C2__7S7310C1[3]),  3,10},
  {&(_tg__ZTV7S7310C7__7S7310C2__7S7310C1[7]),  7,12},
  {&(_tg__ZTV7S7310C2__7S7310C1[7]),  7,14},
  {&(_ZTV7S7310C1[32]),  32,72},
  {&(_ZTV7S7310C1[56]),  56,72},
  {&(_ZTV7S7310C1[43]),  43,72},
  {&(_ZTV7S7310C1[67]),  67,72},
  {&(_ZTV7S7310C1[7]),  7,72},
  {&(_tg__ZTV7S7310C3__7S7310C1[3]),  3,11},
  {&(_tg__ZTV7S7310C67S7310C3__7S7310C1[3]),  3,10},
  {&(_tg__ZTV7S7310C5__7S7310C67S7310C3__7S7310C1[6]),  6,10},
  {&(_tg__ZTV7S7310C5__7S7310C3__7S7310C1[6]),  6,10},
  {&(_tg__ZTV7S7310C6__7S7310C3__7S7310C1[3]),  3,10},
};
extern VTBL_ENTRY _ZTI7S7310C1[];
extern  VTBL_ENTRY _ZTV7S7310C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7310C1[];
Class_Descriptor cd_S7310C1 = {  "S7310C1", // class name
  bases_S7310C1, 10,
  &(vtc_S7310C1[0]), // expected_vtbl_contents
  &(vtt_S7310C1[0]), // expected_vtt_contents
  ABISELECT(80,44), // object size
  NSPAIRA(_ZTI7S7310C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7310C1),72, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7310C1),19, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3752C2  : S1679C4_nt {
  virtual void  v8(); // _ZN7S3752C22v8Ev
  virtual void  v9(); // _ZN7S3752C22v9Ev
  virtual void  v10(); // _ZN7S3752C23v10Ev
  virtual void  v11(); // _ZN7S3752C23v11Ev
  virtual void  v12(); // _ZN7S3752C23v12Ev
  virtual void  v13(); // _ZN7S3752C23v13Ev
  virtual void  v14(); // _ZN7S3752C23v14Ev
  virtual void  v15(); // _ZN7S3752C23v15Ev
  virtual void  v16(); // _ZN7S3752C23v16Ev
  virtual void  v17(); // _ZN7S3752C23v17Ev
  virtual void  v18(); // _ZN7S3752C23v18Ev
  virtual void  v19(); // _ZN7S3752C23v19Ev
  ~S3752C2(); // tgen
  S3752C2(); // tgen
};
//SIG(-1 S3752C2) C1{ BC2{ vd m Fi} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


void  S3752C2 ::v8(){vfunc_called(this, "_ZN7S3752C22v8Ev");}
void  S3752C2 ::v9(){vfunc_called(this, "_ZN7S3752C22v9Ev");}
void  S3752C2 ::v10(){vfunc_called(this, "_ZN7S3752C23v10Ev");}
void  S3752C2 ::v11(){vfunc_called(this, "_ZN7S3752C23v11Ev");}
void  S3752C2 ::v12(){vfunc_called(this, "_ZN7S3752C23v12Ev");}
void  S3752C2 ::v13(){vfunc_called(this, "_ZN7S3752C23v13Ev");}
void  S3752C2 ::v14(){vfunc_called(this, "_ZN7S3752C23v14Ev");}
void  S3752C2 ::v15(){vfunc_called(this, "_ZN7S3752C23v15Ev");}
void  S3752C2 ::v16(){vfunc_called(this, "_ZN7S3752C23v16Ev");}
void  S3752C2 ::v17(){vfunc_called(this, "_ZN7S3752C23v17Ev");}
void  S3752C2 ::v18(){vfunc_called(this, "_ZN7S3752C23v18Ev");}
void  S3752C2 ::v19(){vfunc_called(this, "_ZN7S3752C23v19Ev");}
S3752C2 ::~S3752C2(){ note_dtor("S3752C2", this);} // tgen
S3752C2 ::S3752C2(){ note_ctor("S3752C2", this);} // tgen

static void Test_S3752C2()
{
  extern Class_Descriptor cd_S3752C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3752C2, buf);
    S3752C2 *dp, &lv = *(dp=new (buf) S3752C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3752C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3752C2)");
    check_base_class_offset(lv, (S1679C4_nt*), 0, "S3752C2");
    test_class_info(&lv, &cd_S3752C2);
    dp->~S3752C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3752C2(Test_S3752C2, "S3752C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3752C2C1Ev();
extern void _ZN7S3752C2D1Ev();
Name_Map name_map_S3752C2[] = {
  NSPAIR(_ZN7S3752C2C1Ev),
  NSPAIR(_ZN7S3752C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
static Base_Class bases_S3752C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3752C2[];
extern void _ZN7S3752C2D1Ev();
extern void _ZN7S3752C2D0Ev();
extern void _ZN7S3752C22v8Ev();
extern void _ZN7S3752C22v9Ev();
extern void _ZN7S3752C23v10Ev();
extern void _ZN7S3752C23v11Ev();
extern void _ZN7S3752C23v12Ev();
extern void _ZN7S3752C23v13Ev();
extern void _ZN7S3752C23v14Ev();
extern void _ZN7S3752C23v15Ev();
extern void _ZN7S3752C23v16Ev();
extern void _ZN7S3752C23v17Ev();
extern void _ZN7S3752C23v18Ev();
extern void _ZN7S3752C23v19Ev();
static  VTBL_ENTRY vtc_S3752C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3752C2[0]),
  (VTBL_ENTRY)&_ZN7S3752C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3752C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3752C22v8Ev,
  (VTBL_ENTRY)&_ZN7S3752C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3752C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3752C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3752C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3752C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3752C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3752C23v15Ev,
  (VTBL_ENTRY)&_ZN7S3752C23v16Ev,
  (VTBL_ENTRY)&_ZN7S3752C23v17Ev,
  (VTBL_ENTRY)&_ZN7S3752C23v18Ev,
  (VTBL_ENTRY)&_ZN7S3752C23v19Ev,
};
extern VTBL_ENTRY _ZTI7S3752C2[];
extern  VTBL_ENTRY _ZTV7S3752C2[];
Class_Descriptor cd_S3752C2 = {  "S3752C2", // class name
  bases_S3752C2, 1,
  &(vtc_S3752C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3752C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3752C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3752C6_nt  {
  void *s3752c6f0[2];
  void  mf3752c6(); // _ZN10S3752C6_nt8mf3752c6Ev
};
//SIG(-1 S3752C6_nt) C1{ m Fp[2]}


void  S3752C6_nt ::mf3752c6(){}

//skip512 S3752C6_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3752C1  : S3752C2 {
  ::S3765C5_nt s3752c1f0;
  ::S79C38_nt s3752c1f1;
  ::S79C38_nt s3752c1f2;
  ::S3752C6_nt s3752c1f3;
  ::S3752C6_nt s3752c1f4;
  ::S1679C8_nt s3752c1f5;
  virtual  ~S3752C1(); // _ZN7S3752C1D1Ev
  virtual void  v1(); // _ZN7S3752C12v1Ev
  virtual void  v2(); // _ZN7S3752C12v2Ev
  virtual void  v3(); // _ZN7S3752C12v3Ev
  virtual void  v4(); // _ZN7S3752C12v4Ev
  virtual void  v5(); // _ZN7S3752C12v5Ev
  virtual void  v6(); // _ZN7S3752C12v6Ev
  virtual void  v7(); // _ZN7S3752C12v7Ev
  S3752C1(); // tgen
};
//SIG(1 S3752C1) C1{ BC2{ BC3{ vd m Fi} v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19} vd v1 v2 v3 v4 v5 v6 v7 FC4{ m Fp[2]} FC5{ m Fp[2]} FC5 FC6{ m Fp[2]} FC6 FC7{ m FC8{ m Fp Fi[2] FC9{ m}} Fp[2]}}


 S3752C1 ::~S3752C1(){ note_dtor("S3752C1", this);}
void  S3752C1 ::v1(){vfunc_called(this, "_ZN7S3752C12v1Ev");}
void  S3752C1 ::v2(){vfunc_called(this, "_ZN7S3752C12v2Ev");}
void  S3752C1 ::v3(){vfunc_called(this, "_ZN7S3752C12v3Ev");}
void  S3752C1 ::v4(){vfunc_called(this, "_ZN7S3752C12v4Ev");}
void  S3752C1 ::v5(){vfunc_called(this, "_ZN7S3752C12v5Ev");}
void  S3752C1 ::v6(){vfunc_called(this, "_ZN7S3752C12v6Ev");}
void  S3752C1 ::v7(){vfunc_called(this, "_ZN7S3752C12v7Ev");}
S3752C1 ::S3752C1(){ note_ctor("S3752C1", this);} // tgen

static void Test_S3752C1()
{
  extern Class_Descriptor cd_S3752C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,19)];
    init_test(&cd_S3752C1, buf);
    S3752C1 *dp, &lv = *(dp=new (buf) S3752C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,72), "sizeof(S3752C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3752C1)");
    check_base_class_offset(lv, (S1679C4_nt*)(S3752C2*), 0, "S3752C1");
    check_base_class_offset(lv, (S3752C2*), 0, "S3752C1");
    check_field_offset(lv, s3752c1f0, ABISELECT(16,8), "S3752C1.s3752c1f0");
    check_field_offset(lv, s3752c1f1, ABISELECT(32,16), "S3752C1.s3752c1f1");
    check_field_offset(lv, s3752c1f2, ABISELECT(48,24), "S3752C1.s3752c1f2");
    check_field_offset(lv, s3752c1f3, ABISELECT(64,32), "S3752C1.s3752c1f3");
    check_field_offset(lv, s3752c1f4, ABISELECT(80,40), "S3752C1.s3752c1f4");
    check_field_offset(lv, s3752c1f5, ABISELECT(96,48), "S3752C1.s3752c1f5");
    test_class_info(&lv, &cd_S3752C1);
    dp->~S3752C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3752C1(Test_S3752C1, "S3752C1", ABISELECT(136,72));

#else // __cplusplus

extern void _ZN7S3752C1C1Ev();
extern void _ZN7S3752C1D1Ev();
Name_Map name_map_S3752C1[] = {
  NSPAIR(_ZN7S3752C1C1Ev),
  NSPAIR(_ZN7S3752C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
extern Class_Descriptor cd_S3752C2;
extern VTBL_ENTRY _ZTI7S3752C2[];
extern  VTBL_ENTRY _ZTV7S3752C2[];
static Base_Class bases_S3752C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3752C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3752C1[];
extern void _ZN7S3752C1D1Ev();
extern void _ZN7S3752C1D0Ev();
extern void _ZN7S3752C22v8Ev();
extern void _ZN7S3752C22v9Ev();
extern void _ZN7S3752C23v10Ev();
extern void _ZN7S3752C23v11Ev();
extern void _ZN7S3752C23v12Ev();
extern void _ZN7S3752C23v13Ev();
extern void _ZN7S3752C23v14Ev();
extern void _ZN7S3752C23v15Ev();
extern void _ZN7S3752C23v16Ev();
extern void _ZN7S3752C23v17Ev();
extern void _ZN7S3752C23v18Ev();
extern void _ZN7S3752C23v19Ev();
extern void _ZN7S3752C12v1Ev();
extern void _ZN7S3752C12v2Ev();
extern void _ZN7S3752C12v3Ev();
extern void _ZN7S3752C12v4Ev();
extern void _ZN7S3752C12v5Ev();
extern void _ZN7S3752C12v6Ev();
extern void _ZN7S3752C12v7Ev();
static  VTBL_ENTRY vtc_S3752C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3752C1[0]),
  (VTBL_ENTRY)&_ZN7S3752C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3752C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3752C22v8Ev,
  (VTBL_ENTRY)&_ZN7S3752C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3752C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3752C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3752C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3752C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3752C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3752C23v15Ev,
  (VTBL_ENTRY)&_ZN7S3752C23v16Ev,
  (VTBL_ENTRY)&_ZN7S3752C23v17Ev,
  (VTBL_ENTRY)&_ZN7S3752C23v18Ev,
  (VTBL_ENTRY)&_ZN7S3752C23v19Ev,
  (VTBL_ENTRY)&_ZN7S3752C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3752C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3752C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3752C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3752C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3752C12v6Ev,
  (VTBL_ENTRY)&_ZN7S3752C12v7Ev,
};
extern VTBL_ENTRY _ZTI7S3752C1[];
extern  VTBL_ENTRY _ZTV7S3752C1[];
Class_Descriptor cd_S3752C1 = {  "S3752C1", // class name
  bases_S3752C1, 2,
  &(vtc_S3752C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,72), // object size
  NSPAIRA(_ZTI7S3752C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3752C1),23, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3756C2  : S1679C4_nt {
  virtual void  v8(); // _ZN7S3756C22v8Ev
  virtual void  v9(); // _ZN7S3756C22v9Ev
  virtual void  v10(); // _ZN7S3756C23v10Ev
  virtual void  v11(); // _ZN7S3756C23v11Ev
  virtual void  v12(); // _ZN7S3756C23v12Ev
  virtual void  v13(); // _ZN7S3756C23v13Ev
  virtual void  v14(); // _ZN7S3756C23v14Ev
  virtual void  v15(); // _ZN7S3756C23v15Ev
  virtual void  v16(); // _ZN7S3756C23v16Ev
  virtual void  v17(); // _ZN7S3756C23v17Ev
  virtual void  v18(); // _ZN7S3756C23v18Ev
  virtual void  v19(); // _ZN7S3756C23v19Ev
  ~S3756C2(); // tgen
  S3756C2(); // tgen
};
//SIG(-1 S3756C2) C1{ BC2{ vd m Fi} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


void  S3756C2 ::v8(){vfunc_called(this, "_ZN7S3756C22v8Ev");}
void  S3756C2 ::v9(){vfunc_called(this, "_ZN7S3756C22v9Ev");}
void  S3756C2 ::v10(){vfunc_called(this, "_ZN7S3756C23v10Ev");}
void  S3756C2 ::v11(){vfunc_called(this, "_ZN7S3756C23v11Ev");}
void  S3756C2 ::v12(){vfunc_called(this, "_ZN7S3756C23v12Ev");}
void  S3756C2 ::v13(){vfunc_called(this, "_ZN7S3756C23v13Ev");}
void  S3756C2 ::v14(){vfunc_called(this, "_ZN7S3756C23v14Ev");}
void  S3756C2 ::v15(){vfunc_called(this, "_ZN7S3756C23v15Ev");}
void  S3756C2 ::v16(){vfunc_called(this, "_ZN7S3756C23v16Ev");}
void  S3756C2 ::v17(){vfunc_called(this, "_ZN7S3756C23v17Ev");}
void  S3756C2 ::v18(){vfunc_called(this, "_ZN7S3756C23v18Ev");}
void  S3756C2 ::v19(){vfunc_called(this, "_ZN7S3756C23v19Ev");}
S3756C2 ::~S3756C2(){ note_dtor("S3756C2", this);} // tgen
S3756C2 ::S3756C2(){ note_ctor("S3756C2", this);} // tgen

static void Test_S3756C2()
{
  extern Class_Descriptor cd_S3756C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3756C2, buf);
    S3756C2 *dp, &lv = *(dp=new (buf) S3756C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3756C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3756C2)");
    check_base_class_offset(lv, (S1679C4_nt*), 0, "S3756C2");
    test_class_info(&lv, &cd_S3756C2);
    dp->~S3756C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3756C2(Test_S3756C2, "S3756C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3756C2C1Ev();
extern void _ZN7S3756C2D1Ev();
Name_Map name_map_S3756C2[] = {
  NSPAIR(_ZN7S3756C2C1Ev),
  NSPAIR(_ZN7S3756C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
static Base_Class bases_S3756C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3756C2[];
extern void _ZN7S3756C2D1Ev();
extern void _ZN7S3756C2D0Ev();
extern void _ZN7S3756C22v8Ev();
extern void _ZN7S3756C22v9Ev();
extern void _ZN7S3756C23v10Ev();
extern void _ZN7S3756C23v11Ev();
extern void _ZN7S3756C23v12Ev();
extern void _ZN7S3756C23v13Ev();
extern void _ZN7S3756C23v14Ev();
extern void _ZN7S3756C23v15Ev();
extern void _ZN7S3756C23v16Ev();
extern void _ZN7S3756C23v17Ev();
extern void _ZN7S3756C23v18Ev();
extern void _ZN7S3756C23v19Ev();
static  VTBL_ENTRY vtc_S3756C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3756C2[0]),
  (VTBL_ENTRY)&_ZN7S3756C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3756C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3756C22v8Ev,
  (VTBL_ENTRY)&_ZN7S3756C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3756C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3756C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3756C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3756C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3756C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3756C23v15Ev,
  (VTBL_ENTRY)&_ZN7S3756C23v16Ev,
  (VTBL_ENTRY)&_ZN7S3756C23v17Ev,
  (VTBL_ENTRY)&_ZN7S3756C23v18Ev,
  (VTBL_ENTRY)&_ZN7S3756C23v19Ev,
};
extern VTBL_ENTRY _ZTI7S3756C2[];
extern  VTBL_ENTRY _ZTV7S3756C2[];
Class_Descriptor cd_S3756C2 = {  "S3756C2", // class name
  bases_S3756C2, 1,
  &(vtc_S3756C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3756C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3756C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3756C1  : S3756C2 {
  ::S3765C5_nt s3756c1f0;
  void *s3756c1f1;
  ::S5266C36 s3756c1f2;
  int s3756c1f3;
  ::S1679C8_nt s3756c1f4;
  virtual  ~S3756C1(); // _ZN7S3756C1D1Ev
  virtual void  v1(); // _ZN7S3756C12v1Ev
  virtual void  v2(); // _ZN7S3756C12v2Ev
  virtual void  v3(); // _ZN7S3756C12v3Ev
  virtual void  v4(); // _ZN7S3756C12v4Ev
  virtual void  v5(); // _ZN7S3756C12v5Ev
  virtual void  v6(); // _ZN7S3756C12v6Ev
  virtual void  v7(); // _ZN7S3756C12v7Ev
  S3756C1(); // tgen
};
//SIG(1 S3756C1) C1{ BC2{ BC3{ vd m Fi} v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19} vd v1 v2 v3 v4 v5 v6 v7 FC4{ m Fp[2]} Fp FC5{ m Fp Fi[2] FC6{ m}} Fi FC7{ m FC8{ m Fp Fi[2] FC6} Fp[2]}}


 S3756C1 ::~S3756C1(){ note_dtor("S3756C1", this);}
void  S3756C1 ::v1(){vfunc_called(this, "_ZN7S3756C12v1Ev");}
void  S3756C1 ::v2(){vfunc_called(this, "_ZN7S3756C12v2Ev");}
void  S3756C1 ::v3(){vfunc_called(this, "_ZN7S3756C12v3Ev");}
void  S3756C1 ::v4(){vfunc_called(this, "_ZN7S3756C12v4Ev");}
void  S3756C1 ::v5(){vfunc_called(this, "_ZN7S3756C12v5Ev");}
void  S3756C1 ::v6(){vfunc_called(this, "_ZN7S3756C12v6Ev");}
void  S3756C1 ::v7(){vfunc_called(this, "_ZN7S3756C12v7Ev");}
S3756C1 ::S3756C1(){ note_ctor("S3756C1", this);} // tgen

static void Test_S3756C1()
{
  extern Class_Descriptor cd_S3756C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,17)];
    init_test(&cd_S3756C1, buf);
    S3756C1 *dp, &lv = *(dp=new (buf) S3756C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,64), "sizeof(S3756C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3756C1)");
    check_base_class_offset(lv, (S1679C4_nt*)(S3756C2*), 0, "S3756C1");
    check_base_class_offset(lv, (S3756C2*), 0, "S3756C1");
    check_field_offset(lv, s3756c1f0, ABISELECT(16,8), "S3756C1.s3756c1f0");
    check_field_offset(lv, s3756c1f1, ABISELECT(32,16), "S3756C1.s3756c1f1");
    check_field_offset(lv, s3756c1f2, ABISELECT(40,20), "S3756C1.s3756c1f2");
    check_field_offset(lv, s3756c1f3, ABISELECT(64,36), "S3756C1.s3756c1f3");
    check_field_offset(lv, s3756c1f4, ABISELECT(72,40), "S3756C1.s3756c1f4");
    test_class_info(&lv, &cd_S3756C1);
    dp->~S3756C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3756C1(Test_S3756C1, "S3756C1", ABISELECT(112,64));

#else // __cplusplus

extern void _ZN7S3756C1C1Ev();
extern void _ZN7S3756C1D1Ev();
Name_Map name_map_S3756C1[] = {
  NSPAIR(_ZN7S3756C1C1Ev),
  NSPAIR(_ZN7S3756C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
extern Class_Descriptor cd_S3756C2;
extern VTBL_ENTRY _ZTI7S3756C2[];
extern  VTBL_ENTRY _ZTV7S3756C2[];
static Base_Class bases_S3756C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3756C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3756C1[];
extern void _ZN7S3756C1D1Ev();
extern void _ZN7S3756C1D0Ev();
extern void _ZN7S3756C22v8Ev();
extern void _ZN7S3756C22v9Ev();
extern void _ZN7S3756C23v10Ev();
extern void _ZN7S3756C23v11Ev();
extern void _ZN7S3756C23v12Ev();
extern void _ZN7S3756C23v13Ev();
extern void _ZN7S3756C23v14Ev();
extern void _ZN7S3756C23v15Ev();
extern void _ZN7S3756C23v16Ev();
extern void _ZN7S3756C23v17Ev();
extern void _ZN7S3756C23v18Ev();
extern void _ZN7S3756C23v19Ev();
extern void _ZN7S3756C12v1Ev();
extern void _ZN7S3756C12v2Ev();
extern void _ZN7S3756C12v3Ev();
extern void _ZN7S3756C12v4Ev();
extern void _ZN7S3756C12v5Ev();
extern void _ZN7S3756C12v6Ev();
extern void _ZN7S3756C12v7Ev();
static  VTBL_ENTRY vtc_S3756C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3756C1[0]),
  (VTBL_ENTRY)&_ZN7S3756C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3756C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3756C22v8Ev,
  (VTBL_ENTRY)&_ZN7S3756C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3756C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3756C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3756C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3756C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3756C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3756C23v15Ev,
  (VTBL_ENTRY)&_ZN7S3756C23v16Ev,
  (VTBL_ENTRY)&_ZN7S3756C23v17Ev,
  (VTBL_ENTRY)&_ZN7S3756C23v18Ev,
  (VTBL_ENTRY)&_ZN7S3756C23v19Ev,
  (VTBL_ENTRY)&_ZN7S3756C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3756C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3756C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3756C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3756C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3756C12v6Ev,
  (VTBL_ENTRY)&_ZN7S3756C12v7Ev,
};
extern VTBL_ENTRY _ZTI7S3756C1[];
extern  VTBL_ENTRY _ZTV7S3756C1[];
Class_Descriptor cd_S3756C1 = {  "S3756C1", // class name
  bases_S3756C1, 2,
  &(vtc_S3756C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,64), // object size
  NSPAIRA(_ZTI7S3756C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3756C1),23, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15476C5  : virtual S19905C19 {
  long double s15476c5f0;
  char s15476c5f1;
  short s15476c5f2[4];
  ~S15476C5(); // tgen
  S15476C5(); // tgen
};
//SIG(-1 S15476C5) C1{ VBC2{ vd m} FD Fc Fs[4]}


S15476C5 ::~S15476C5(){ note_dtor("S15476C5", this);} // tgen
S15476C5 ::S15476C5(){ note_ctor("S15476C5", this);} // tgen

static void Test_S15476C5()
{
  extern Class_Descriptor cd_S15476C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,8)];
    init_test(&cd_S15476C5, buf);
    S15476C5 *dp, &lv = *(dp=new (buf) S15476C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S15476C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S15476C5)");
    check_base_class_offset(lv, (S19905C19*), 0, "S15476C5");
    check_field_offset(lv, s15476c5f0, ABISELECT(16,4), "S15476C5.s15476c5f0");
    check_field_offset(lv, s15476c5f1, ABISELECT(32,16), "S15476C5.s15476c5f1");
    check_field_offset(lv, s15476c5f2, ABISELECT(34,18), "S15476C5.s15476c5f2");
    test_class_info(&lv, &cd_S15476C5);
    dp->~S15476C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS15476C5(Test_S15476C5, "S15476C5", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN8S15476C5C1Ev();
extern void _ZN8S15476C5D1Ev();
Name_Map name_map_S15476C5[] = {
  NSPAIR(_ZN8S15476C5C1Ev),
  NSPAIR(_ZN8S15476C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
static Base_Class bases_S15476C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19905C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S15476C5[];
extern void _ZN8S15476C5D1Ev();
extern void _ZN8S15476C5D0Ev();
static  VTBL_ENTRY vtc_S15476C5[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S15476C5[0]),
  (VTBL_ENTRY)&_ZN8S15476C5D1Ev,
  (VTBL_ENTRY)&_ZN8S15476C5D0Ev,
};
extern VTBL_ENTRY _ZTV8S15476C5[];
static  VTT_ENTRY vtt_S15476C5[] = {
  {&(_ZTV8S15476C5[4]),  4,6},
  {&(_ZTV8S15476C5[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S15476C5[];
extern  VTBL_ENTRY _ZTV8S15476C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S15476C5[];
Class_Descriptor cd_S15476C5 = {  "S15476C5", // class name
  bases_S15476C5, 1,
  &(vtc_S15476C5[0]), // expected_vtbl_contents
  &(vtt_S15476C5[0]), // expected_vtt_contents
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI8S15476C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S15476C5),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S15476C5),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15476C10  : virtual S19905C19 , virtual S15476C5 {
  int s15476c10f0;
  virtual  ~S15476C10(); // _ZN9S15476C10D2Ev
  S15476C10(); // tgen
};
//SIG(-1 S15476C10) C1{ VBC2{ vd m} VBC3{ VBC2 FD Fc Fs[4]} vd Fi}


 S15476C10 ::~S15476C10(){ note_dtor("S15476C10", this);}
S15476C10 ::S15476C10(){ note_ctor("S15476C10", this);} // tgen

static void Test_S15476C10()
{
  extern Class_Descriptor cd_S15476C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,10)];
    init_test(&cd_S15476C10, buf);
    S15476C10 *dp, &lv = *(dp=new (buf) S15476C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S15476C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S15476C10)");
    check_base_class_offset(lv, (S19905C19*), 0, "S15476C10");
    check_base_class_offset(lv, (S19905C19*)(S15476C5*), 0, "S15476C10");
    check_base_class_offset(lv, (S15476C5*), ABISELECT(16,8), "S15476C10");
    check_field_offset(lv, s15476c10f0, ABISELECT(8,4), "S15476C10.s15476c10f0");
    test_class_info(&lv, &cd_S15476C10);
    dp->~S15476C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS15476C10(Test_S15476C10, "S15476C10", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN9S15476C10C1Ev();
extern void _ZN9S15476C10D2Ev();
Name_Map name_map_S15476C10[] = {
  NSPAIR(_ZN9S15476C10C1Ev),
  NSPAIR(_ZN9S15476C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S15476C5;
extern VTBL_ENTRY _ZTI8S15476C5[];
extern  VTBL_ENTRY _ZTV8S15476C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S15476C5[];
static Base_Class bases_S15476C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19905C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S15476C5,    ABISELECT(16,8), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S15476C10[];
extern void _ZN9S15476C10D1Ev();
extern void _ZN9S15476C10D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S15476C10D1Ev,_ZTv0_n12_N9S15476C10D1Ev)();
extern void ABISELECT(_ZThn16_N9S15476C10D1Ev,_ZThn8_N9S15476C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S15476C10D0Ev,_ZTv0_n12_N9S15476C10D0Ev)();
extern void ABISELECT(_ZThn16_N9S15476C10D0Ev,_ZThn8_N9S15476C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S15476C10[] = {
  ABISELECT(16,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S15476C10[0]),
  (VTBL_ENTRY)&_ZN9S15476C10D1Ev,
  (VTBL_ENTRY)&_ZN9S15476C10D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S15476C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S15476C10D1Ev,_ZTv0_n12_N9S15476C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S15476C10D0Ev,_ZTv0_n12_N9S15476C10D0Ev),
};
extern VTBL_ENTRY _ZTV9S15476C10[];
extern void ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev)();
extern void _ZN8S15476C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev)();
extern void _ZN8S15476C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C5__9S15476C10[] = {
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S15476C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S15476C5__9S15476C10[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S15476C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev),
};
static  VTT_ENTRY vtt_S15476C10[] = {
  {&(_ZTV9S15476C10[5]),  5,13},
  {&(_ZTV9S15476C10[5]),  5,13},
  {&(_ZTV9S15476C10[11]),  11,13},
  {&(_tg__ZTV8S15476C5__9S15476C10[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S15476C5__9S15476C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S15476C10[];
extern  VTBL_ENTRY _ZTV9S15476C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S15476C10[];
static VTBL_ENTRY alt_thunk_names99[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S15476C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S15476C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S15476C10D0Ev,_ZTv0_n12_N9S15476C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S15476C10D0Ev,_ZThn8_N9S15476C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S15476C10D1Ev,_ZTv0_n12_N9S15476C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S15476C10D1Ev,_ZThn8_N9S15476C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S15476C10 = {  "S15476C10", // class name
  bases_S15476C10, 2,
  &(vtc_S15476C10[0]), // expected_vtbl_contents
  &(vtt_S15476C10[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI9S15476C10),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S15476C10),13, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S15476C10),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names99,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15476C9  : virtual S19905C19 , S15476C10 , S17777C6_nt {
  short s15476c9f0;
  __tsi64 s15476c9f1;
  void *s15476c9f2;
  __tsi64 s15476c9f3;
  virtual  ~S15476C9(); // _ZN8S15476C9D2Ev
  S15476C9(); // tgen
};
//SIG(-1 S15476C9) C1{ VBC2{ vd m} BC3{ VBC2 VBC4{ VBC2 FD Fc Fs[4]} vd Fi} BC5{ m Fp} vd Fs FL Fp FL}


 S15476C9 ::~S15476C9(){ note_dtor("S15476C9", this);}
S15476C9 ::S15476C9(){ note_ctor("S15476C9", this);} // tgen

static void Test_S15476C9()
{
  extern Class_Descriptor cd_S15476C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(8,17)];
    init_test(&cd_S15476C9, buf);
    S15476C9 *dp, &lv = *(dp=new (buf) S15476C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,64), "sizeof(S15476C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S15476C9)");
    check_base_class_offset(lv, (S19905C19*), 0, "S15476C9");
    check_base_class_offset(lv, (S19905C19*)(S15476C10*), 0, "S15476C9");
    check_base_class_offset(lv, (S19905C19*)(S15476C5*), 0, "S15476C9");
    check_base_class_offset(lv, (S15476C5*)(S15476C10*), ABISELECT(64,36), "S15476C9");
    check_base_class_offset(lv, (S15476C10*), 0, "S15476C9");
    check_base_class_offset(lv, (S17777C6_nt*), ABISELECT(16,8), "S15476C9");
    check_field_offset(lv, s15476c9f0, ABISELECT(24,12), "S15476C9.s15476c9f0");
    check_field_offset(lv, s15476c9f1, ABISELECT(32,16), "S15476C9.s15476c9f1");
    check_field_offset(lv, s15476c9f2, ABISELECT(40,24), "S15476C9.s15476c9f2");
    check_field_offset(lv, s15476c9f3, ABISELECT(48,28), "S15476C9.s15476c9f3");
    test_class_info(&lv, &cd_S15476C9);
    dp->~S15476C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS15476C9(Test_S15476C9, "S15476C9", ABISELECT(112,64));

#else // __cplusplus

extern void _ZN8S15476C9C1Ev();
extern void _ZN8S15476C9D2Ev();
Name_Map name_map_S15476C9[] = {
  NSPAIR(_ZN8S15476C9C1Ev),
  NSPAIR(_ZN8S15476C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S15476C5;
extern VTBL_ENTRY _ZTI8S15476C5[];
extern  VTBL_ENTRY _ZTV8S15476C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S15476C5[];
extern Class_Descriptor cd_S15476C10;
extern VTBL_ENTRY _ZTI9S15476C10[];
extern  VTBL_ENTRY _ZTV9S15476C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S15476C10[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
static Base_Class bases_S15476C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19905C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S15476C5,    ABISELECT(64,36), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S15476C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S17777C6_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S15476C9[];
extern void _ZN8S15476C9D1Ev();
extern void _ZN8S15476C9D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S15476C9D1Ev,_ZTv0_n12_N8S15476C9D1Ev)();
extern void ABISELECT(_ZThn64_N8S15476C9D1Ev,_ZThn36_N8S15476C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C9D0Ev,_ZTv0_n12_N8S15476C9D0Ev)();
extern void ABISELECT(_ZThn64_N8S15476C9D0Ev,_ZThn36_N8S15476C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S15476C9[] = {
  ABISELECT(64,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S15476C9[0]),
  (VTBL_ENTRY)&_ZN8S15476C9D1Ev,
  (VTBL_ENTRY)&_ZN8S15476C9D0Ev,
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S15476C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C9D1Ev,_ZTv0_n12_N8S15476C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C9D0Ev,_ZTv0_n12_N8S15476C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S15476C9[];
extern void ABISELECT(_ZTv0_n24_N9S15476C10D1Ev,_ZTv0_n12_N9S15476C10D1Ev)();
extern void _ZN9S15476C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S15476C10D0Ev,_ZTv0_n12_N9S15476C10D0Ev)();
extern void _ZN9S15476C10D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S15476C10__8S15476C9[] = {
  ABISELECT(64,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S15476C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S15476C10D1Ev,_ZTv0_n12_N9S15476C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S15476C10D0Ev,_ZTv0_n12_N9S15476C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S15476C10D1Ev,_ZTv0_n12_N9S15476C10D1Ev)();
extern void ABISELECT(_ZThn64_N9S15476C10D1Ev,_ZThn36_N9S15476C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S15476C10D0Ev,_ZTv0_n12_N9S15476C10D0Ev)();
extern void ABISELECT(_ZThn64_N9S15476C10D0Ev,_ZThn36_N9S15476C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C5__9S15476C10__8S15476C9[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S15476C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S15476C10D1Ev,_ZTv0_n12_N9S15476C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S15476C10D0Ev,_ZTv0_n12_N9S15476C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev)();
extern void _ZN8S15476C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev)();
extern void _ZN8S15476C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C5__8S15476C9[] = {
  ABISELECT(-64,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S15476C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S15476C5__8S15476C9[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S15476C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev),
};
static  VTT_ENTRY vtt_S15476C9[] = {
  {&(_ZTV8S15476C9[5]),  5,13},
  {&(_tg__ZTV9S15476C10__8S15476C9[5]),  5,7},
  {&(_tg__ZTV9S15476C10__8S15476C9[5]),  5,7},
  {&(_tg__ZTV8S15476C5__9S15476C10__8S15476C9[4]),  4,6},
  {&(_ZTV8S15476C9[5]),  5,13},
  {&(_ZTV8S15476C9[11]),  11,13},
  {&(_tg__ZTV8S15476C5__8S15476C9[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S15476C5__8S15476C9[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S15476C9[];
extern  VTBL_ENTRY _ZTV8S15476C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S15476C9[];
static VTBL_ENTRY alt_thunk_names100[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S15476C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S15476C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S15476C10D0Ev,_ZTv0_n12_N9S15476C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S15476C10D0Ev,_ZThn36_N9S15476C10D0Ev),
  (VTBL_ENTRY)_ZN9S15476C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S15476C10D1Ev,_ZTv0_n12_N9S15476C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S15476C10D1Ev,_ZThn36_N9S15476C10D1Ev),
  (VTBL_ENTRY)_ZN9S15476C10D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S15476C9D0Ev,_ZTv0_n12_N8S15476C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S15476C9D0Ev,_ZThn36_N8S15476C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S15476C9D1Ev,_ZTv0_n12_N8S15476C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S15476C9D1Ev,_ZThn36_N8S15476C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S15476C9 = {  "S15476C9", // class name
  bases_S15476C9, 4,
  &(vtc_S15476C9[0]), // expected_vtbl_contents
  &(vtt_S15476C9[0]), // expected_vtt_contents
  ABISELECT(112,64), // object size
  NSPAIRA(_ZTI8S15476C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S15476C9),13, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S15476C9),8, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names100,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15476C8  : virtual S15476C9 , S17777C6_nt , S19905C19 , S15476C5 {
  int s15476c8f0;
  virtual  ~S15476C8(); // _ZN8S15476C8D2Ev
  S15476C8(); // tgen
};
//SIG(-1 S15476C8) C1{ VBC2{ VBC3{ vd m} BC4{ VBC3 VBC5{ VBC3 FD Fc Fs[4]} vd Fi} BC6{ m Fp} vd Fs FL Fp FL} BC6 BC3 BC5 vd Fi}


 S15476C8 ::~S15476C8(){ note_dtor("S15476C8", this);}
S15476C8 ::S15476C8(){ note_ctor("S15476C8", this);} // tgen

static void Test_S15476C8()
{
  extern Class_Descriptor cd_S15476C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,27)];
    init_test(&cd_S15476C8, buf);
    S15476C8 *dp, &lv = *(dp=new (buf) S15476C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,104), "sizeof(S15476C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S15476C8)");
    check_base_class_offset(lv, (S19905C19*)(S15476C9*), ABISELECT(64,40), "S15476C8");
    check_base_class_offset(lv, (S19905C19*)(S15476C10*)(S15476C9*), ABISELECT(64,40), "S15476C8");
    /*is_ambiguous_... S15476C8::S15476C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S15476C5*), ABISELECT(64,40), "S15476C8");
    /*is_ambiguous_... S15476C8::S15476C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S15476C5*), ABISELECT(64,40), "S15476C8");
    check_base_class_offset(lv, (S15476C5*)(S15476C10*)(S15476C9*), ABISELECT(128,76), "S15476C8");
    check_base_class_offset(lv, (S15476C10*)(S15476C9*), ABISELECT(64,40), "S15476C8");
    check_base_class_offset(lv, (S17777C6_nt*)(S15476C9*), ABISELECT(80,48), "S15476C8");
    check_base_class_offset(lv, (S15476C9*), ABISELECT(64,40), "S15476C8");
    /*is_ambiguous_... S15476C8::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*), ABISELECT(8,4), "S15476C8");
    /*is_ambiguous_... S15476C8::S19905C19 */ AMB_check_base_class_offset(lv, (S19905C19*), 0, "S15476C8");
    /*is_ambiguous_... S15476C8::S15476C5 */ AMB_check_base_class_offset(lv, (S15476C5*), ABISELECT(16,8), "S15476C8");
    check_field_offset(lv, s15476c8f0, ABISELECT(60,36), "S15476C8.s15476c8f0");
    test_class_info(&lv, &cd_S15476C8);
    dp->~S15476C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS15476C8(Test_S15476C8, "S15476C8", ABISELECT(176,104));

#else // __cplusplus

extern void _ZN8S15476C8C1Ev();
extern void _ZN8S15476C8D2Ev();
Name_Map name_map_S15476C8[] = {
  NSPAIR(_ZN8S15476C8C1Ev),
  NSPAIR(_ZN8S15476C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S15476C5;
extern VTBL_ENTRY _ZTI8S15476C5[];
extern  VTBL_ENTRY _ZTV8S15476C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S15476C5[];
extern Class_Descriptor cd_S15476C10;
extern VTBL_ENTRY _ZTI9S15476C10[];
extern  VTBL_ENTRY _ZTV9S15476C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S15476C10[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S15476C9;
extern VTBL_ENTRY _ZTI8S15476C9[];
extern  VTBL_ENTRY _ZTV8S15476C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S15476C9[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S15476C5;
extern VTBL_ENTRY _ZTI8S15476C5[];
extern  VTBL_ENTRY _ZTV8S15476C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S15476C5[];
static Base_Class bases_S15476C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19905C19,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S15476C5,    ABISELECT(128,76), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S15476C10,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S15476C9,    ABISELECT(64,40), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S17777C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19905C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S15476C5,    ABISELECT(16,8), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S15476C8[];
extern void _ZN8S15476C8D1Ev();
extern void _ZN8S15476C8D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S15476C8D1Ev,_ZTv0_n12_N8S15476C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S15476C8D1Ev,_ZThn8_N8S15476C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C8D0Ev,_ZTv0_n12_N8S15476C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S15476C8D0Ev,_ZThn8_N8S15476C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C8D1Ev,_ZTv0_n12_N8S15476C8D1Ev)();
extern void ABISELECT(_ZThn64_N8S15476C8D1Ev,_ZThn40_N8S15476C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C8D0Ev,_ZTv0_n12_N8S15476C8D0Ev)();
extern void ABISELECT(_ZThn64_N8S15476C8D0Ev,_ZThn40_N8S15476C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C8D1Ev,_ZTv0_n12_N8S15476C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S15476C8D1Ev,_ZThn76_N8S15476C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C8D0Ev,_ZTv0_n12_N8S15476C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S15476C8D0Ev,_ZThn76_N8S15476C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S15476C8[] = {
  ABISELECT(128,76),
  ABISELECT(64,40),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S15476C8[0]),
  (VTBL_ENTRY)&_ZN8S15476C8D1Ev,
  (VTBL_ENTRY)&_ZN8S15476C8D0Ev,
  ABISELECT(48,32),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S15476C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C8D1Ev,_ZTv0_n12_N8S15476C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C8D0Ev,_ZTv0_n12_N8S15476C8D0Ev),
  ABISELECT(64,36),
  0,
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S15476C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C8D1Ev,_ZTv0_n12_N8S15476C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C8D0Ev,_ZTv0_n12_N8S15476C8D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S15476C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C8D1Ev,_ZTv0_n12_N8S15476C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C8D0Ev,_ZTv0_n12_N8S15476C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S15476C8[];
extern void ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev)();
extern void _ZN8S15476C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev)();
extern void _ZN8S15476C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C5__A__8S15476C8[] = {
  ABISELECT(48,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S15476C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev)();
extern void ABISELECT(_ZThn48_N8S15476C5D1Ev,_ZThn32_N8S15476C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev)();
extern void ABISELECT(_ZThn48_N8S15476C5D0Ev,_ZThn32_N8S15476C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S15476C5__A__8S15476C8[] = {
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S15476C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C9D1Ev,_ZTv0_n12_N8S15476C9D1Ev)();
extern void _ZN8S15476C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C9D0Ev,_ZTv0_n12_N8S15476C9D0Ev)();
extern void _ZN8S15476C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C9__8S15476C8[] = {
  ABISELECT(64,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S15476C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C9D1Ev,_ZTv0_n12_N8S15476C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C9D0Ev,_ZTv0_n12_N8S15476C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S15476C10D1Ev,_ZTv0_n12_N9S15476C10D1Ev)();
extern void _ZN9S15476C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S15476C10D0Ev,_ZTv0_n12_N9S15476C10D0Ev)();
extern void _ZN9S15476C10D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S15476C108S15476C9__8S15476C8[] = {
  ABISELECT(64,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S15476C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S15476C10D1Ev,_ZTv0_n12_N9S15476C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S15476C10D0Ev,_ZTv0_n12_N9S15476C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S15476C10D1Ev,_ZTv0_n12_N9S15476C10D1Ev)();
extern void ABISELECT(_ZThn64_N9S15476C10D1Ev,_ZThn36_N9S15476C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S15476C10D0Ev,_ZTv0_n12_N9S15476C10D0Ev)();
extern void ABISELECT(_ZThn64_N9S15476C10D0Ev,_ZThn36_N9S15476C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C5__9S15476C108S15476C9__8S15476C8[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S15476C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S15476C10D1Ev,_ZTv0_n12_N9S15476C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S15476C10D0Ev,_ZTv0_n12_N9S15476C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C9D1Ev,_ZTv0_n12_N8S15476C9D1Ev)();
extern void ABISELECT(_ZThn64_N8S15476C9D1Ev,_ZThn36_N8S15476C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C9D0Ev,_ZTv0_n12_N8S15476C9D0Ev)();
extern void ABISELECT(_ZThn64_N8S15476C9D0Ev,_ZThn36_N8S15476C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C5__8S15476C9__8S15476C8[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S15476C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C9D1Ev,_ZTv0_n12_N8S15476C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C9D0Ev,_ZTv0_n12_N8S15476C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev)();
extern void _ZN8S15476C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev)();
extern void _ZN8S15476C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C5__8S15476C8[] = {
  ABISELECT(-64,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S15476C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S15476C5__8S15476C8[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S15476C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev),
};
static  VTT_ENTRY vtt_S15476C8[] = {
  {&(_ZTV8S15476C8[5]),  5,26},
  {&(_tg__ZTV8S15476C5__A__8S15476C8[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S15476C5__A__8S15476C8[3]),  3,5},
  {&(_ZTV8S15476C8[18]),  18,26},
  {&(_ZTV8S15476C8[18]),  18,26},
  {&(_ZTV8S15476C8[24]),  24,26},
  {&(_ZTV8S15476C8[11]),  11,26},
  {&(_tg__ZTV8S15476C9__8S15476C8[5]),  5,7},
  {&(_tg__ZTV9S15476C108S15476C9__8S15476C8[5]),  5,7},
  {&(_tg__ZTV9S15476C108S15476C9__8S15476C8[5]),  5,7},
  {&(_tg__ZTV8S15476C5__9S15476C108S15476C9__8S15476C8[4]),  4,6},
  {&(_tg__ZTV8S15476C9__8S15476C8[5]),  5,7},
  {&(_tg__ZTV8S15476C5__8S15476C9__8S15476C8[4]),  4,6},
  {&(_tg__ZTV8S15476C5__8S15476C8[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S15476C5__8S15476C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S15476C8[];
extern  VTBL_ENTRY _ZTV8S15476C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S15476C8[];
static VTBL_ENTRY alt_thunk_names101[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S15476C10D0Ev,_ZTv0_n12_N9S15476C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S15476C10D0Ev,_ZThn36_N9S15476C10D0Ev),
  (VTBL_ENTRY)_ZN9S15476C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S15476C10D1Ev,_ZTv0_n12_N9S15476C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S15476C10D1Ev,_ZThn36_N9S15476C10D1Ev),
  (VTBL_ENTRY)_ZN9S15476C10D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S15476C9D0Ev,_ZTv0_n12_N8S15476C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S15476C9D0Ev,_ZThn36_N8S15476C9D0Ev),
  (VTBL_ENTRY)_ZN8S15476C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S15476C9D1Ev,_ZTv0_n12_N8S15476C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S15476C9D1Ev,_ZThn36_N8S15476C9D1Ev),
  (VTBL_ENTRY)_ZN8S15476C9D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S15476C5D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S15476C5D0Ev,_ZThn32_N8S15476C5D0Ev),
  (VTBL_ENTRY)_ZN8S15476C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S15476C5D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S15476C5D1Ev,_ZThn32_N8S15476C5D1Ev),
  (VTBL_ENTRY)_ZN8S15476C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S15476C8D0Ev,_ZTv0_n12_N8S15476C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S15476C8D0Ev,_ZThn76_N8S15476C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S15476C8D0Ev,_ZThn40_N8S15476C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S15476C8D0Ev,_ZThn8_N8S15476C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S15476C8D1Ev,_ZTv0_n12_N8S15476C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S15476C8D1Ev,_ZThn76_N8S15476C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S15476C8D1Ev,_ZThn40_N8S15476C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S15476C8D1Ev,_ZThn8_N8S15476C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S15476C8 = {  "S15476C8", // class name
  bases_S15476C8, 8,
  &(vtc_S15476C8[0]), // expected_vtbl_contents
  &(vtt_S15476C8[0]), // expected_vtt_contents
  ABISELECT(176,104), // object size
  NSPAIRA(_ZTI8S15476C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S15476C8),26, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S15476C8),15, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names101,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15476C6  : virtual S5266C29 , virtual S15476C8 , S15476C5 {
  short s15476c6f0;
  virtual  ~S15476C6(); // _ZN8S15476C6D2Ev
  S15476C6(); // tgen
};
//SIG(-1 S15476C6) C1{ VBC2{ m} VBC3{ VBC4{ VBC5{ vd m} BC6{ VBC5 VBC7{ VBC5 FD Fc Fs[4]} vd Fi} BC8{ m Fp} vd Fs FL Fp FL} BC8 BC5 BC7 vd Fi} BC7 vd Fs}


 S15476C6 ::~S15476C6(){ note_dtor("S15476C6", this);}
S15476C6 ::S15476C6(){ note_ctor("S15476C6", this);} // tgen

static void Test_S15476C6()
{
  extern Class_Descriptor cd_S15476C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(15,34)];
    init_test(&cd_S15476C6, buf);
    S15476C6 *dp, &lv = *(dp=new (buf) S15476C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,132), "sizeof(S15476C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S15476C6)");
    check_base_class_offset(lv, (S5266C29*), 0, "S15476C6");
    check_base_class_offset(lv, (S19905C19*)(S15476C9*), ABISELECT(112,68), "S15476C6");
    check_base_class_offset(lv, (S19905C19*)(S15476C10*)(S15476C9*), ABISELECT(112,68), "S15476C6");
    /*is_ambiguous_... S15476C6::S15476C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S15476C5*), ABISELECT(112,68), "S15476C6");
    /*is_ambiguous_... S15476C8::S15476C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S15476C5*)(S15476C8*), ABISELECT(112,68), "S15476C6");
    /*is_ambiguous_... S15476C6::S15476C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S15476C5*), ABISELECT(112,68), "S15476C6");
    check_base_class_offset(lv, (S15476C5*)(S15476C10*)(S15476C9*), ABISELECT(176,104), "S15476C6");
    check_base_class_offset(lv, (S15476C10*)(S15476C9*), ABISELECT(112,68), "S15476C6");
    check_base_class_offset(lv, (S17777C6_nt*)(S15476C9*), ABISELECT(128,76), "S15476C6");
    check_base_class_offset(lv, (S15476C9*)(S15476C8*), ABISELECT(112,68), "S15476C6");
    /*is_ambiguous_... S15476C8::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S15476C8*), ABISELECT(56,32), "S15476C6");
    /*is_ambiguous_... S15476C8::S19905C19 */ AMB_check_base_class_offset(lv, (S19905C19*)(S15476C8*), ABISELECT(48,28), "S15476C6");
    /*is_ambiguous_... S15476C8::S15476C5 */ AMB_check_base_class_offset(lv, (S15476C5*)(S15476C8*), ABISELECT(64,36), "S15476C6");
    check_base_class_offset(lv, (S15476C8*), ABISELECT(48,28), "S15476C6");
    /*is_ambiguous_... S15476C6::S15476C5 */ AMB_check_base_class_offset(lv, (S15476C5*), 0, "S15476C6");
    check_field_offset(lv, s15476c6f0, ABISELECT(42,26), "S15476C6.s15476c6f0");
    test_class_info(&lv, &cd_S15476C6);
    dp->~S15476C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS15476C6(Test_S15476C6, "S15476C6", ABISELECT(224,132));

#else // __cplusplus

extern void _ZN8S15476C6C1Ev();
extern void _ZN8S15476C6D2Ev();
Name_Map name_map_S15476C6[] = {
  NSPAIR(_ZN8S15476C6C1Ev),
  NSPAIR(_ZN8S15476C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S15476C5;
extern VTBL_ENTRY _ZTI8S15476C5[];
extern  VTBL_ENTRY _ZTV8S15476C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S15476C5[];
extern Class_Descriptor cd_S15476C10;
extern VTBL_ENTRY _ZTI9S15476C10[];
extern  VTBL_ENTRY _ZTV9S15476C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S15476C10[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S15476C9;
extern VTBL_ENTRY _ZTI8S15476C9[];
extern  VTBL_ENTRY _ZTV8S15476C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S15476C9[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S15476C5;
extern VTBL_ENTRY _ZTI8S15476C5[];
extern  VTBL_ENTRY _ZTV8S15476C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S15476C5[];
extern Class_Descriptor cd_S15476C8;
extern VTBL_ENTRY _ZTI8S15476C8[];
extern  VTBL_ENTRY _ZTV8S15476C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S15476C8[];
extern Class_Descriptor cd_S15476C5;
extern VTBL_ENTRY _ZTI8S15476C5[];
extern  VTBL_ENTRY _ZTV8S15476C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S15476C5[];
static Base_Class bases_S15476C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19905C19,    ABISELECT(112,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S15476C5,    ABISELECT(176,104), //bcp->offset
    31, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S15476C10,    ABISELECT(112,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(128,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S15476C9,    ABISELECT(112,68), //bcp->offset
    24, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S17777C6_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19905C19,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S15476C5,    ABISELECT(64,36), //bcp->offset
    18, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S15476C8,    ABISELECT(48,28), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S15476C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S15476C6[];
extern void ABISELECT(_ZTv0_n24_N8S15476C6D1Ev,_ZTv0_n12_N8S15476C6D1Ev)();
extern void _ZN8S15476C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C6D0Ev,_ZTv0_n12_N8S15476C6D0Ev)();
extern void _ZN8S15476C6D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S15476C6D1Ev,_ZTv0_n24_N8S15476C6D1Ev)();
extern void ABISELECT(_ZThn48_N8S15476C6D1Ev,_ZThn28_N8S15476C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S15476C6D0Ev,_ZTv0_n24_N8S15476C6D0Ev)();
extern void ABISELECT(_ZThn48_N8S15476C6D0Ev,_ZThn28_N8S15476C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C6D1Ev,_ZTv0_n12_N8S15476C6D1Ev)();
extern void ABISELECT(_ZThn64_N8S15476C6D1Ev,_ZThn36_N8S15476C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C6D0Ev,_ZTv0_n12_N8S15476C6D0Ev)();
extern void ABISELECT(_ZThn64_N8S15476C6D0Ev,_ZThn36_N8S15476C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C6D1Ev,_ZTv0_n12_N8S15476C6D1Ev)();
extern void ABISELECT(_ZThn112_N8S15476C6D1Ev,_ZThn68_N8S15476C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C6D0Ev,_ZTv0_n12_N8S15476C6D0Ev)();
extern void ABISELECT(_ZThn112_N8S15476C6D0Ev,_ZThn68_N8S15476C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C6D1Ev,_ZTv0_n12_N8S15476C6D1Ev)();
extern void ABISELECT(_ZThn176_N8S15476C6D1Ev,_ZThn104_N8S15476C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C6D0Ev,_ZTv0_n12_N8S15476C6D0Ev)();
extern void ABISELECT(_ZThn176_N8S15476C6D0Ev,_ZThn104_N8S15476C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S15476C6[] = {
  ABISELECT(176,104),
  ABISELECT(112,68),
  ABISELECT(48,28),
  0,
  ABISELECT(112,68),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S15476C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C6D1Ev,_ZTv0_n12_N8S15476C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C6D0Ev,_ZTv0_n12_N8S15476C6D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(128,76),
  ABISELECT(64,40),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S15476C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S15476C6D1Ev,_ZTv0_n24_N8S15476C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S15476C6D0Ev,_ZTv0_n24_N8S15476C6D0Ev),
  ABISELECT(48,32),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S15476C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C6D1Ev,_ZTv0_n12_N8S15476C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C6D0Ev,_ZTv0_n12_N8S15476C6D0Ev),
  ABISELECT(64,36),
  0,
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S15476C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C6D1Ev,_ZTv0_n12_N8S15476C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C6D0Ev,_ZTv0_n12_N8S15476C6D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI8S15476C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C6D1Ev,_ZTv0_n12_N8S15476C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C6D0Ev,_ZTv0_n12_N8S15476C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S15476C6[];
extern void ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev)();
extern void _ZN8S15476C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev)();
extern void _ZN8S15476C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C5__A__8S15476C6[] = {
  ABISELECT(112,68),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S15476C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev)();
extern void ABISELECT(_ZThn112_N8S15476C5D1Ev,_ZThn68_N8S15476C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev)();
extern void ABISELECT(_ZThn112_N8S15476C5D0Ev,_ZThn68_N8S15476C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S15476C5__A__8S15476C6[] = {
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S15476C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev),
};
extern void _ZN8S15476C8D1Ev();
extern void _ZN8S15476C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S15476C8__8S15476C6[] = {
  ABISELECT(128,76),
  ABISELECT(64,40),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S15476C8[0]),
  (VTBL_ENTRY)&_ZN8S15476C8D1Ev,
  (VTBL_ENTRY)&_ZN8S15476C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev)();
extern void _ZN8S15476C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev)();
extern void _ZN8S15476C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C58S15476C8__A1__8S15476C6[] = {
  ABISELECT(48,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S15476C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev)();
extern void ABISELECT(_ZThn48_N8S15476C5D1Ev,_ZThn32_N8S15476C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev)();
extern void ABISELECT(_ZThn48_N8S15476C5D0Ev,_ZThn32_N8S15476C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S15476C58S15476C8__A1__8S15476C6[] = {
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S15476C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C8D1Ev,_ZTv0_n12_N8S15476C8D1Ev)();
extern void ABISELECT(_ZThn64_N8S15476C8D1Ev,_ZThn40_N8S15476C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C8D0Ev,_ZTv0_n12_N8S15476C8D0Ev)();
extern void ABISELECT(_ZThn64_N8S15476C8D0Ev,_ZThn40_N8S15476C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C9__8S15476C8__8S15476C6[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S15476C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C8D1Ev,_ZTv0_n12_N8S15476C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C8D0Ev,_ZTv0_n12_N8S15476C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C8D1Ev,_ZTv0_n12_N8S15476C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S15476C8D1Ev,_ZThn76_N8S15476C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C8D0Ev,_ZTv0_n12_N8S15476C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S15476C8D0Ev,_ZThn76_N8S15476C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C5__8S15476C8__8S15476C6[] = {
  ABISELECT(-64,-36),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S15476C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C8D1Ev,_ZTv0_n12_N8S15476C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C8D0Ev,_ZTv0_n12_N8S15476C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C8D1Ev,_ZTv0_n12_N8S15476C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S15476C8D1Ev,_ZThn8_N8S15476C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C8D0Ev,_ZTv0_n12_N8S15476C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S15476C8D0Ev,_ZThn8_N8S15476C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C5__A__8S15476C8__8S15476C6[] = {
  ABISELECT(48,32),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S15476C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C8D1Ev,_ZTv0_n12_N8S15476C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C8D0Ev,_ZTv0_n12_N8S15476C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C9D1Ev,_ZTv0_n12_N8S15476C9D1Ev)();
extern void _ZN8S15476C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C9D0Ev,_ZTv0_n12_N8S15476C9D0Ev)();
extern void _ZN8S15476C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C9__8S15476C6[] = {
  ABISELECT(64,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S15476C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C9D1Ev,_ZTv0_n12_N8S15476C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C9D0Ev,_ZTv0_n12_N8S15476C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S15476C10D1Ev,_ZTv0_n12_N9S15476C10D1Ev)();
extern void _ZN9S15476C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S15476C10D0Ev,_ZTv0_n12_N9S15476C10D0Ev)();
extern void _ZN9S15476C10D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S15476C108S15476C9__8S15476C6[] = {
  ABISELECT(64,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S15476C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S15476C10D1Ev,_ZTv0_n12_N9S15476C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S15476C10D0Ev,_ZTv0_n12_N9S15476C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S15476C10D1Ev,_ZTv0_n12_N9S15476C10D1Ev)();
extern void ABISELECT(_ZThn64_N9S15476C10D1Ev,_ZThn36_N9S15476C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S15476C10D0Ev,_ZTv0_n12_N9S15476C10D0Ev)();
extern void ABISELECT(_ZThn64_N9S15476C10D0Ev,_ZThn36_N9S15476C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C5__9S15476C108S15476C9__8S15476C6[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S15476C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S15476C10D1Ev,_ZTv0_n12_N9S15476C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S15476C10D0Ev,_ZTv0_n12_N9S15476C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C9D1Ev,_ZTv0_n12_N8S15476C9D1Ev)();
extern void ABISELECT(_ZThn64_N8S15476C9D1Ev,_ZThn36_N8S15476C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C9D0Ev,_ZTv0_n12_N8S15476C9D0Ev)();
extern void ABISELECT(_ZThn64_N8S15476C9D0Ev,_ZThn36_N8S15476C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C5__8S15476C9__8S15476C6[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S15476C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C9D1Ev,_ZTv0_n12_N8S15476C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C9D0Ev,_ZTv0_n12_N8S15476C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev)();
extern void _ZN8S15476C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev)();
extern void _ZN8S15476C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C5__8S15476C6[] = {
  ABISELECT(-64,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S15476C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S15476C5__8S15476C6[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S15476C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev),
};
static  VTT_ENTRY vtt_S15476C6[] = {
  {&(_ZTV8S15476C6[8]),  8,37},
  {&(_tg__ZTV8S15476C5__A__8S15476C6[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S15476C5__A__8S15476C6[3]),  3,5},
  {&(_ZTV8S15476C6[16]),  16,37},
  {&(_ZTV8S15476C6[29]),  29,37},
  {&(_ZTV8S15476C6[29]),  29,37},
  {&(_ZTV8S15476C6[35]),  35,37},
  {&(_ZTV8S15476C6[22]),  22,37},
  {&(_tg__ZTV8S15476C8__8S15476C6[5]),  5,7},
  {&(_tg__ZTV8S15476C58S15476C8__A1__8S15476C6[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S15476C58S15476C8__A1__8S15476C6[3]),  3,5},
  {&(_tg__ZTV8S15476C9__8S15476C8__8S15476C6[5]),  5,7},
  {&(_tg__ZTV8S15476C9__8S15476C8__8S15476C6[5]),  5,7},
  {&(_tg__ZTV8S15476C5__8S15476C8__8S15476C6[4]),  4,6},
  {&(_tg__ZTV8S15476C5__A__8S15476C8__8S15476C6[4]),  4,6},
  {&(_tg__ZTV8S15476C9__8S15476C6[5]),  5,7},
  {&(_tg__ZTV9S15476C108S15476C9__8S15476C6[5]),  5,7},
  {&(_tg__ZTV9S15476C108S15476C9__8S15476C6[5]),  5,7},
  {&(_tg__ZTV8S15476C5__9S15476C108S15476C9__8S15476C6[4]),  4,6},
  {&(_tg__ZTV8S15476C9__8S15476C6[5]),  5,7},
  {&(_tg__ZTV8S15476C5__8S15476C9__8S15476C6[4]),  4,6},
  {&(_tg__ZTV8S15476C5__8S15476C6[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S15476C5__8S15476C6[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S15476C6[];
extern  VTBL_ENTRY _ZTV8S15476C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S15476C6[];
static VTBL_ENTRY alt_thunk_names102[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S15476C10D0Ev,_ZTv0_n12_N9S15476C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S15476C10D0Ev,_ZThn36_N9S15476C10D0Ev),
  (VTBL_ENTRY)_ZN9S15476C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S15476C10D1Ev,_ZTv0_n12_N9S15476C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S15476C10D1Ev,_ZThn36_N9S15476C10D1Ev),
  (VTBL_ENTRY)_ZN9S15476C10D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S15476C9D0Ev,_ZTv0_n12_N8S15476C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S15476C9D0Ev,_ZThn36_N8S15476C9D0Ev),
  (VTBL_ENTRY)_ZN8S15476C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S15476C9D1Ev,_ZTv0_n12_N8S15476C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S15476C9D1Ev,_ZThn36_N8S15476C9D1Ev),
  (VTBL_ENTRY)_ZN8S15476C9D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S15476C8D0Ev,_ZTv0_n12_N8S15476C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S15476C8D0Ev,_ZThn8_N8S15476C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S15476C8D0Ev,_ZThn76_N8S15476C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S15476C8D0Ev,_ZThn40_N8S15476C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S15476C8D1Ev,_ZTv0_n12_N8S15476C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S15476C8D1Ev,_ZThn8_N8S15476C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S15476C8D1Ev,_ZThn76_N8S15476C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S15476C8D1Ev,_ZThn40_N8S15476C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S15476C5D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S15476C5D0Ev,_ZThn32_N8S15476C5D0Ev),
  (VTBL_ENTRY)_ZN8S15476C5D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S15476C5D0Ev,_ZThn68_N8S15476C5D0Ev),
  (VTBL_ENTRY)_ZN8S15476C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S15476C5D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S15476C5D1Ev,_ZThn32_N8S15476C5D1Ev),
  (VTBL_ENTRY)_ZN8S15476C5D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S15476C5D1Ev,_ZThn68_N8S15476C5D1Ev),
  (VTBL_ENTRY)_ZN8S15476C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S15476C6D0Ev,_ZTv0_n24_N8S15476C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S15476C6D0Ev,_ZThn28_N8S15476C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S15476C6D1Ev,_ZTv0_n24_N8S15476C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S15476C6D1Ev,_ZThn28_N8S15476C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S15476C6D0Ev,_ZTv0_n12_N8S15476C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S15476C6D0Ev,_ZThn104_N8S15476C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S15476C6D0Ev,_ZThn68_N8S15476C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S15476C6D0Ev,_ZThn36_N8S15476C6D0Ev),
  (VTBL_ENTRY)_ZN8S15476C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S15476C6D1Ev,_ZTv0_n12_N8S15476C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S15476C6D1Ev,_ZThn104_N8S15476C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S15476C6D1Ev,_ZThn68_N8S15476C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S15476C6D1Ev,_ZThn36_N8S15476C6D1Ev),
  (VTBL_ENTRY)_ZN8S15476C6D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S15476C6 = {  "S15476C6", // class name
  bases_S15476C6, 11,
  &(vtc_S15476C6[0]), // expected_vtbl_contents
  &(vtt_S15476C6[0]), // expected_vtt_contents
  ABISELECT(224,132), // object size
  NSPAIRA(_ZTI8S15476C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S15476C6),37, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S15476C6),23, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names102,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15476C3  : virtual S19905C19 , S15476C5 , virtual S15476C6 , S15476C9 {
  void *s15476c3f0;
  ~S15476C3(); // tgen
  S15476C3(); // tgen
};
//SIG(-1 S15476C3) C1{ VBC2{ vd m} BC3{ VBC2 FD Fc Fs[4]} VBC4{ VBC5{ m} VBC6{ VBC7{ VBC2 BC8{ VBC2 VBC3 vd Fi} BC9{ m Fp} vd Fs FL Fp FL} BC9 BC2 BC3 vd Fi} BC3 vd Fs} BC7 Fp}


S15476C3 ::~S15476C3(){ note_dtor("S15476C3", this);} // tgen
S15476C3 ::S15476C3(){ note_ctor("S15476C3", this);} // tgen

static void Test_S15476C3()
{
  extern Class_Descriptor cd_S15476C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(22,51)];
    init_test(&cd_S15476C3, buf);
    S15476C3 *dp, &lv = *(dp=new (buf) S15476C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(336,200), "sizeof(S15476C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S15476C3)");
    /*is_ambiguous_... S15476C3::S19905C19 */ AMB_check_base_class_offset(lv, (S19905C19*), 0, "S15476C3");
    /*is_ambiguous_... S15476C3::S15476C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S15476C5*), 0, "S15476C3");
    /*is_ambiguous_... S15476C3::S15476C9 */ AMB_check_base_class_offset(lv, (S19905C19*)(S15476C9*), 0, "S15476C3");
    /*is_ambiguous_... S15476C3::S15476C9 */ AMB_check_base_class_offset(lv, (S19905C19*)(S15476C10*)(S15476C9*), 0, "S15476C3");
    /*is_ambiguous_... S15476C3::S15476C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S15476C5*), 0, "S15476C3");
    /*is_ambiguous_... S15476C8::S15476C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S15476C5*)(S15476C8*), 0, "S15476C3");
    /*is_ambiguous_... S15476C6::S15476C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S15476C5*)(S15476C6*), 0, "S15476C3");
    /*is_ambiguous_... S15476C3::S15476C9 */ AMB_check_base_class_offset(lv, (S19905C19*)(S15476C9*), 0, "S15476C3");
    /*is_ambiguous_... S15476C3::S15476C9 */ AMB_check_base_class_offset(lv, (S19905C19*)(S15476C10*)(S15476C9*), 0, "S15476C3");
    /*is_ambiguous_... S15476C3::S15476C5 */ AMB_check_base_class_offset(lv, (S15476C5*), 0, "S15476C3");
    check_base_class_offset(lv, (S5266C29*)(S15476C6*), 0, "S15476C3");
    /*is_ambiguous_... S15476C3::S15476C9 */ AMB_check_base_class_offset(lv, (S15476C5*)(S15476C10*)(S15476C9*), ABISELECT(288,172), "S15476C3");
    /*is_ambiguous_... S15476C3::S15476C9 */ AMB_check_base_class_offset(lv, (S15476C5*)(S15476C10*)(S15476C9*), ABISELECT(288,172), "S15476C3");
    /*is_ambiguous_... S15476C3::S15476C9 */ AMB_check_base_class_offset(lv, (S15476C10*)(S15476C9*), ABISELECT(224,136), "S15476C3");
    /*is_ambiguous_... S15476C3::S15476C9 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S15476C9*), ABISELECT(240,144), "S15476C3");
    check_base_class_offset(lv, (S15476C9*)(S15476C8*), ABISELECT(224,136), "S15476C3");
    /*is_ambiguous_... S15476C8::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S15476C8*), ABISELECT(168,100), "S15476C3");
    /*is_ambiguous_... S15476C8::S19905C19 */ AMB_check_base_class_offset(lv, (S19905C19*)(S15476C8*), ABISELECT(160,96), "S15476C3");
    /*is_ambiguous_... S15476C8::S15476C5 */ AMB_check_base_class_offset(lv, (S15476C5*)(S15476C8*), ABISELECT(176,104), "S15476C3");
    check_base_class_offset(lv, (S15476C8*)(S15476C6*), ABISELECT(160,96), "S15476C3");
    /*is_ambiguous_... S15476C6::S15476C5 */ AMB_check_base_class_offset(lv, (S15476C5*)(S15476C6*), ABISELECT(112,68), "S15476C3");
    check_base_class_offset(lv, (S15476C6*), ABISELECT(112,68), "S15476C3");
    /*is_ambiguous_... S15476C3::S15476C9 */ AMB_check_base_class_offset(lv, (S15476C10*)(S15476C9*), ABISELECT(48,28), "S15476C3");
    /*is_ambiguous_... S15476C3::S15476C9 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S15476C9*), ABISELECT(64,36), "S15476C3");
    /*is_ambiguous_... S15476C3::S15476C9 */ AMB_check_base_class_offset(lv, (S15476C9*), ABISELECT(48,28), "S15476C3");
    check_field_offset(lv, s15476c3f0, ABISELECT(104,64), "S15476C3.s15476c3f0");
    test_class_info(&lv, &cd_S15476C3);
    dp->~S15476C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS15476C3(Test_S15476C3, "S15476C3", ABISELECT(336,200));

#else // __cplusplus

extern void _ZN8S15476C3C1Ev();
extern void _ZN8S15476C3D1Ev();
Name_Map name_map_S15476C3[] = {
  NSPAIR(_ZN8S15476C3C1Ev),
  NSPAIR(_ZN8S15476C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S15476C5;
extern VTBL_ENTRY _ZTI8S15476C5[];
extern  VTBL_ENTRY _ZTV8S15476C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S15476C5[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S15476C5;
extern VTBL_ENTRY _ZTI8S15476C5[];
extern  VTBL_ENTRY _ZTV8S15476C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S15476C5[];
extern Class_Descriptor cd_S15476C10;
extern VTBL_ENTRY _ZTI9S15476C10[];
extern  VTBL_ENTRY _ZTV9S15476C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S15476C10[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S15476C9;
extern VTBL_ENTRY _ZTI8S15476C9[];
extern  VTBL_ENTRY _ZTV8S15476C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S15476C9[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S15476C5;
extern VTBL_ENTRY _ZTI8S15476C5[];
extern  VTBL_ENTRY _ZTV8S15476C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S15476C5[];
extern Class_Descriptor cd_S15476C8;
extern VTBL_ENTRY _ZTI8S15476C8[];
extern  VTBL_ENTRY _ZTV8S15476C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S15476C8[];
extern Class_Descriptor cd_S15476C5;
extern VTBL_ENTRY _ZTI8S15476C5[];
extern  VTBL_ENTRY _ZTV8S15476C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S15476C5[];
extern Class_Descriptor cd_S15476C6;
extern VTBL_ENTRY _ZTI8S15476C6[];
extern  VTBL_ENTRY _ZTV8S15476C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S15476C6[];
extern Class_Descriptor cd_S15476C10;
extern VTBL_ENTRY _ZTI9S15476C10[];
extern  VTBL_ENTRY _ZTV9S15476C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S15476C10[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S15476C9;
extern VTBL_ENTRY _ZTI8S15476C9[];
extern  VTBL_ENTRY _ZTV8S15476C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S15476C9[];
static Base_Class bases_S15476C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19905C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S15476C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S15476C5,    ABISELECT(288,172), //bcp->offset
    49, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S15476C10,    ABISELECT(224,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(240,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S15476C9,    ABISELECT(224,136), //bcp->offset
    42, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S17777C6_nt,    ABISELECT(168,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19905C19,    ABISELECT(160,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S15476C5,    ABISELECT(176,104), //bcp->offset
    36, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S15476C8,    ABISELECT(160,96), //bcp->offset
    28, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S15476C5,    ABISELECT(112,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S15476C6,    ABISELECT(112,68), //bcp->offset
    18, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S15476C10,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S15476C9,    ABISELECT(48,28), //bcp->offset
    11, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S15476C3[];
extern void ABISELECT(_ZTv0_n24_N8S15476C3D1Ev,_ZTv0_n12_N8S15476C3D1Ev)();
extern void _ZN8S15476C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C3D0Ev,_ZTv0_n12_N8S15476C3D0Ev)();
extern void _ZN8S15476C3D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C3D1Ev,_ZTv0_n12_N8S15476C3D1Ev)();
extern void ABISELECT(_ZThn48_N8S15476C3D1Ev,_ZThn28_N8S15476C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C3D0Ev,_ZTv0_n12_N8S15476C3D0Ev)();
extern void ABISELECT(_ZThn48_N8S15476C3D0Ev,_ZThn28_N8S15476C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C3D1Ev,_ZTv0_n12_N8S15476C3D1Ev)();
extern void ABISELECT(_ZThn112_N8S15476C3D1Ev,_ZThn68_N8S15476C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C3D0Ev,_ZTv0_n12_N8S15476C3D0Ev)();
extern void ABISELECT(_ZThn112_N8S15476C3D0Ev,_ZThn68_N8S15476C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S15476C3D1Ev,_ZTv0_n24_N8S15476C3D1Ev)();
extern void ABISELECT(_ZThn160_N8S15476C3D1Ev,_ZThn96_N8S15476C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S15476C3D0Ev,_ZTv0_n24_N8S15476C3D0Ev)();
extern void ABISELECT(_ZThn160_N8S15476C3D0Ev,_ZThn96_N8S15476C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C3D1Ev,_ZTv0_n12_N8S15476C3D1Ev)();
extern void ABISELECT(_ZThn176_N8S15476C3D1Ev,_ZThn104_N8S15476C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C3D0Ev,_ZTv0_n12_N8S15476C3D0Ev)();
extern void ABISELECT(_ZThn176_N8S15476C3D0Ev,_ZThn104_N8S15476C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C3D1Ev,_ZTv0_n12_N8S15476C3D1Ev)();
extern void ABISELECT(_ZThn224_N8S15476C3D1Ev,_ZThn136_N8S15476C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C3D0Ev,_ZTv0_n12_N8S15476C3D0Ev)();
extern void ABISELECT(_ZThn224_N8S15476C3D0Ev,_ZThn136_N8S15476C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C3D1Ev,_ZTv0_n12_N8S15476C3D1Ev)();
extern void ABISELECT(_ZThn288_N8S15476C3D1Ev,_ZThn172_N8S15476C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C3D0Ev,_ZTv0_n12_N8S15476C3D0Ev)();
extern void ABISELECT(_ZThn288_N8S15476C3D0Ev,_ZThn172_N8S15476C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S15476C3[] = {
  ABISELECT(288,172),
  ABISELECT(224,136),
  ABISELECT(160,96),
  0,
  ABISELECT(112,68),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S15476C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C3D1Ev,_ZTv0_n12_N8S15476C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C3D0Ev,_ZTv0_n12_N8S15476C3D0Ev),
  ABISELECT(240,144),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S15476C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C3D1Ev,_ZTv0_n12_N8S15476C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C3D0Ev,_ZTv0_n12_N8S15476C3D0Ev),
  ABISELECT(176,104),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S15476C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C3D1Ev,_ZTv0_n12_N8S15476C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C3D0Ev,_ZTv0_n12_N8S15476C3D0Ev),
  ABISELECT(-160,-96),
  ABISELECT(128,76),
  ABISELECT(-160,-96),
  ABISELECT(64,40),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI8S15476C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S15476C3D1Ev,_ZTv0_n24_N8S15476C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S15476C3D0Ev,_ZTv0_n24_N8S15476C3D0Ev),
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI8S15476C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C3D1Ev,_ZTv0_n12_N8S15476C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C3D0Ev,_ZTv0_n12_N8S15476C3D0Ev),
  ABISELECT(64,36),
  ABISELECT(-224,-136),
  ABISELECT(-224,-136),
  ABISELECT(-224,-136),
  (VTBL_ENTRY)&(_ZTI8S15476C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C3D1Ev,_ZTv0_n12_N8S15476C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C3D0Ev,_ZTv0_n12_N8S15476C3D0Ev),
  ABISELECT(-288,-172),
  ABISELECT(-288,-172),
  ABISELECT(-288,-172),
  (VTBL_ENTRY)&(_ZTI8S15476C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C3D1Ev,_ZTv0_n12_N8S15476C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C3D0Ev,_ZTv0_n12_N8S15476C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S15476C3[];
extern void ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev)();
extern void _ZN8S15476C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev)();
extern void _ZN8S15476C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C5__A__8S15476C3[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S15476C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C9D1Ev,_ZTv0_n12_N8S15476C9D1Ev)();
extern void _ZN8S15476C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C9D0Ev,_ZTv0_n12_N8S15476C9D0Ev)();
extern void _ZN8S15476C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C9__A__8S15476C3[] = {
  ABISELECT(240,144),
  ABISELECT(-48,-28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S15476C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C9D1Ev,_ZTv0_n12_N8S15476C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C9D0Ev,_ZTv0_n12_N8S15476C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S15476C10D1Ev,_ZTv0_n12_N9S15476C10D1Ev)();
extern void _ZN9S15476C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S15476C10D0Ev,_ZTv0_n12_N9S15476C10D0Ev)();
extern void _ZN9S15476C10D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S15476C108S15476C9__A1__8S15476C3[] = {
  ABISELECT(240,144),
  ABISELECT(-48,-28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S15476C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S15476C10D1Ev,_ZTv0_n12_N9S15476C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S15476C10D0Ev,_ZTv0_n12_N9S15476C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S15476C10D1Ev,_ZTv0_n12_N9S15476C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S15476C10D0Ev,_ZTv0_n12_N9S15476C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__9S15476C108S15476C9__A1__8S15476C3[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S15476C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S15476C10D1Ev,_ZTv0_n12_N9S15476C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S15476C10D0Ev,_ZTv0_n12_N9S15476C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S15476C10D1Ev,_ZTv0_n12_N9S15476C10D1Ev)();
extern void ABISELECT(_ZThn240_N9S15476C10D1Ev,_ZThn144_N9S15476C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S15476C10D0Ev,_ZTv0_n12_N9S15476C10D0Ev)();
extern void ABISELECT(_ZThn240_N9S15476C10D0Ev,_ZThn144_N9S15476C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C5__9S15476C108S15476C9__A1__8S15476C3[] = {
  ABISELECT(-288,-172),
  ABISELECT(-240,-144),
  ABISELECT(-240,-144),
  (VTBL_ENTRY)&(_ZTI9S15476C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S15476C10D1Ev,_ZTv0_n12_N9S15476C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S15476C10D0Ev,_ZTv0_n12_N9S15476C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C9D1Ev,_ZTv0_n12_N8S15476C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S15476C9D0Ev,_ZTv0_n12_N8S15476C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S15476C9__A__8S15476C3[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S15476C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C9D1Ev,_ZTv0_n12_N8S15476C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C9D0Ev,_ZTv0_n12_N8S15476C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C9D1Ev,_ZTv0_n12_N8S15476C9D1Ev)();
extern void ABISELECT(_ZThn240_N8S15476C9D1Ev,_ZThn144_N8S15476C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C9D0Ev,_ZTv0_n12_N8S15476C9D0Ev)();
extern void ABISELECT(_ZThn240_N8S15476C9D0Ev,_ZThn144_N8S15476C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C5__8S15476C9__A__8S15476C3[] = {
  ABISELECT(-288,-172),
  ABISELECT(-240,-144),
  ABISELECT(-240,-144),
  (VTBL_ENTRY)&(_ZTI8S15476C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C9D1Ev,_ZTv0_n12_N8S15476C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C9D0Ev,_ZTv0_n12_N8S15476C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C6D1Ev,_ZTv0_n12_N8S15476C6D1Ev)();
extern void _ZN8S15476C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C6D0Ev,_ZTv0_n12_N8S15476C6D0Ev)();
extern void _ZN8S15476C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C6__8S15476C3[] = {
  ABISELECT(176,104),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S15476C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C6D1Ev,_ZTv0_n12_N8S15476C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C6D0Ev,_ZTv0_n12_N8S15476C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev)();
extern void _ZN8S15476C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev)();
extern void _ZN8S15476C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C58S15476C6__A3__8S15476C3[] = {
  ABISELECT(-112,-68),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S15476C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S15476C58S15476C6__A3__8S15476C3[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI8S15476C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S15476C6D1Ev,_ZTv0_n24_N8S15476C6D1Ev)();
extern void ABISELECT(_ZThn48_N8S15476C6D1Ev,_ZThn28_N8S15476C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S15476C6D0Ev,_ZTv0_n24_N8S15476C6D0Ev)();
extern void ABISELECT(_ZThn48_N8S15476C6D0Ev,_ZThn28_N8S15476C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C8__8S15476C6__8S15476C3[] = {
  ABISELECT(-48,-28),
  ABISELECT(128,76),
  ABISELECT(-160,-96),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S15476C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S15476C6D1Ev,_ZTv0_n24_N8S15476C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S15476C6D0Ev,_ZTv0_n24_N8S15476C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C6D1Ev,_ZTv0_n12_N8S15476C6D1Ev)();
extern void ABISELECT(_ZThn112_N8S15476C6D1Ev,_ZThn68_N8S15476C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C6D0Ev,_ZTv0_n12_N8S15476C6D0Ev)();
extern void ABISELECT(_ZThn112_N8S15476C6D0Ev,_ZThn68_N8S15476C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C9__8S15476C6__8S15476C3[] = {
  ABISELECT(64,36),
  ABISELECT(-224,-136),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S15476C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C6D1Ev,_ZTv0_n12_N8S15476C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C6D0Ev,_ZTv0_n12_N8S15476C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C6D1Ev,_ZTv0_n12_N8S15476C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S15476C6D0Ev,_ZTv0_n12_N8S15476C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S15476C6__8S15476C3[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI8S15476C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C6D1Ev,_ZTv0_n12_N8S15476C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C6D0Ev,_ZTv0_n12_N8S15476C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C6D1Ev,_ZTv0_n12_N8S15476C6D1Ev)();
extern void ABISELECT(_ZThn176_N8S15476C6D1Ev,_ZThn104_N8S15476C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C6D0Ev,_ZTv0_n12_N8S15476C6D0Ev)();
extern void ABISELECT(_ZThn176_N8S15476C6D0Ev,_ZThn104_N8S15476C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C5__8S15476C6__8S15476C3[] = {
  ABISELECT(-288,-172),
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI8S15476C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C6D1Ev,_ZTv0_n12_N8S15476C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C6D0Ev,_ZTv0_n12_N8S15476C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C6D1Ev,_ZTv0_n12_N8S15476C6D1Ev)();
extern void ABISELECT(_ZThn64_N8S15476C6D1Ev,_ZThn36_N8S15476C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C6D0Ev,_ZTv0_n12_N8S15476C6D0Ev)();
extern void ABISELECT(_ZThn64_N8S15476C6D0Ev,_ZThn36_N8S15476C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C58S15476C8__A1__8S15476C6__8S15476C3[] = {
  ABISELECT(-176,-104),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S15476C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C6D1Ev,_ZTv0_n12_N8S15476C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C6D0Ev,_ZTv0_n12_N8S15476C6D0Ev),
};
extern void _ZN8S15476C8D1Ev();
extern void _ZN8S15476C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S15476C8__8S15476C3[] = {
  ABISELECT(128,76),
  ABISELECT(-160,-96),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S15476C8[0]),
  (VTBL_ENTRY)&_ZN8S15476C8D1Ev,
  (VTBL_ENTRY)&_ZN8S15476C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev)();
extern void _ZN8S15476C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev)();
extern void _ZN8S15476C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C58S15476C8__A2__8S15476C3[] = {
  ABISELECT(-176,-104),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S15476C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S15476C58S15476C8__A2__8S15476C3[] = {
  ABISELECT(176,104),
  ABISELECT(176,104),
  (VTBL_ENTRY)&(_ZTI8S15476C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C8D1Ev,_ZTv0_n12_N8S15476C8D1Ev)();
extern void ABISELECT(_ZThn64_N8S15476C8D1Ev,_ZThn40_N8S15476C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C8D0Ev,_ZTv0_n12_N8S15476C8D0Ev)();
extern void ABISELECT(_ZThn64_N8S15476C8D0Ev,_ZThn40_N8S15476C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C9__8S15476C8__8S15476C3[] = {
  ABISELECT(64,36),
  ABISELECT(-224,-136),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S15476C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C8D1Ev,_ZTv0_n12_N8S15476C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C8D0Ev,_ZTv0_n12_N8S15476C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C8D1Ev,_ZTv0_n12_N8S15476C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S15476C8D0Ev,_ZTv0_n12_N8S15476C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S15476C8__8S15476C3[] = {
  ABISELECT(160,96),
  ABISELECT(160,96),
  (VTBL_ENTRY)&(_ZTI8S15476C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C8D1Ev,_ZTv0_n12_N8S15476C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C8D0Ev,_ZTv0_n12_N8S15476C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C8D1Ev,_ZTv0_n12_N8S15476C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S15476C8D1Ev,_ZThn76_N8S15476C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C8D0Ev,_ZTv0_n12_N8S15476C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S15476C8D0Ev,_ZThn76_N8S15476C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C5__8S15476C8__8S15476C3[] = {
  ABISELECT(-288,-172),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S15476C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C8D1Ev,_ZTv0_n12_N8S15476C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C8D0Ev,_ZTv0_n12_N8S15476C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C8D1Ev,_ZTv0_n12_N8S15476C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S15476C8D1Ev,_ZThn8_N8S15476C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C8D0Ev,_ZTv0_n12_N8S15476C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S15476C8D0Ev,_ZThn8_N8S15476C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C5__A__8S15476C8__8S15476C3[] = {
  ABISELECT(-176,-104),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S15476C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C8D1Ev,_ZTv0_n12_N8S15476C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C8D0Ev,_ZTv0_n12_N8S15476C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C9D1Ev,_ZTv0_n12_N8S15476C9D1Ev)();
extern void _ZN8S15476C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C9D0Ev,_ZTv0_n12_N8S15476C9D0Ev)();
extern void _ZN8S15476C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C9__8S15476C3[] = {
  ABISELECT(64,36),
  ABISELECT(-224,-136),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S15476C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C9D1Ev,_ZTv0_n12_N8S15476C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C9D0Ev,_ZTv0_n12_N8S15476C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S15476C10D1Ev,_ZTv0_n12_N9S15476C10D1Ev)();
extern void _ZN9S15476C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S15476C10D0Ev,_ZTv0_n12_N9S15476C10D0Ev)();
extern void _ZN9S15476C10D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S15476C108S15476C9__8S15476C3[] = {
  ABISELECT(64,36),
  ABISELECT(-224,-136),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S15476C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S15476C10D1Ev,_ZTv0_n12_N9S15476C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S15476C10D0Ev,_ZTv0_n12_N9S15476C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S15476C10D1Ev,_ZTv0_n12_N9S15476C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S15476C10D0Ev,_ZTv0_n12_N9S15476C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__9S15476C108S15476C9__8S15476C3[] = {
  ABISELECT(224,136),
  ABISELECT(224,136),
  (VTBL_ENTRY)&(_ZTI9S15476C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S15476C10D1Ev,_ZTv0_n12_N9S15476C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S15476C10D0Ev,_ZTv0_n12_N9S15476C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S15476C10D1Ev,_ZTv0_n12_N9S15476C10D1Ev)();
extern void ABISELECT(_ZThn64_N9S15476C10D1Ev,_ZThn36_N9S15476C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S15476C10D0Ev,_ZTv0_n12_N9S15476C10D0Ev)();
extern void ABISELECT(_ZThn64_N9S15476C10D0Ev,_ZThn36_N9S15476C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C5__9S15476C108S15476C9__8S15476C3[] = {
  ABISELECT(-288,-172),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S15476C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S15476C10D1Ev,_ZTv0_n12_N9S15476C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S15476C10D0Ev,_ZTv0_n12_N9S15476C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C9D1Ev,_ZTv0_n12_N8S15476C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S15476C9D0Ev,_ZTv0_n12_N8S15476C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S15476C9__8S15476C3[] = {
  ABISELECT(224,136),
  ABISELECT(224,136),
  (VTBL_ENTRY)&(_ZTI8S15476C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C9D1Ev,_ZTv0_n12_N8S15476C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C9D0Ev,_ZTv0_n12_N8S15476C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C9D1Ev,_ZTv0_n12_N8S15476C9D1Ev)();
extern void ABISELECT(_ZThn64_N8S15476C9D1Ev,_ZThn36_N8S15476C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C9D0Ev,_ZTv0_n12_N8S15476C9D0Ev)();
extern void ABISELECT(_ZThn64_N8S15476C9D0Ev,_ZThn36_N8S15476C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C5__8S15476C9__8S15476C3[] = {
  ABISELECT(-288,-172),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S15476C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C9D1Ev,_ZTv0_n12_N8S15476C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C9D0Ev,_ZTv0_n12_N8S15476C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev)();
extern void _ZN8S15476C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev)();
extern void _ZN8S15476C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C5__A1__8S15476C3[] = {
  ABISELECT(-288,-172),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S15476C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S15476C5__A1__8S15476C3[] = {
  ABISELECT(288,172),
  ABISELECT(288,172),
  (VTBL_ENTRY)&(_ZTI8S15476C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev),
};
static  VTT_ENTRY vtt_S15476C3[] = {
  {&(_ZTV8S15476C3[9]),  9,55},
  {&(_tg__ZTV8S15476C5__A__8S15476C3[4]),  4,6},
  {&(_tg__ZTV8S15476C5__A__8S15476C3[4]),  4,6},
  {&(_tg__ZTV8S15476C9__A__8S15476C3[5]),  5,7},
  {&(_tg__ZTV9S15476C108S15476C9__A1__8S15476C3[5]),  5,7},
  {&(_tg__ZTV9S19905C19__9S15476C108S15476C9__A1__8S15476C3[3]),  3,5},
  {&(_tg__ZTV8S15476C5__9S15476C108S15476C9__A1__8S15476C3[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S15476C9__A__8S15476C3[3]),  3,5},
  {&(_tg__ZTV8S15476C5__8S15476C9__A__8S15476C3[4]),  4,6},
  {&(_ZTV8S15476C3[9]),  9,55},
  {&(_ZTV8S15476C3[26]),  26,55},
  {&(_ZTV8S15476C3[34]),  34,55},
  {&(_ZTV8S15476C3[47]),  47,55},
  {&(_ZTV8S15476C3[53]),  53,55},
  {&(_ZTV8S15476C3[40]),  40,55},
  {&(_ZTV8S15476C3[16]),  16,55},
  {&(_tg__ZTV8S15476C6__8S15476C3[8]),  8,10},
  {&(_tg__ZTV8S15476C58S15476C6__A3__8S15476C3[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S15476C58S15476C6__A3__8S15476C3[3]),  3,5},
  {&(_tg__ZTV8S15476C8__8S15476C6__8S15476C3[6]),  6,8},
  {&(_tg__ZTV8S15476C9__8S15476C6__8S15476C3[5]),  5,7},
  {&(_tg__ZTV9S19905C19__8S15476C6__8S15476C3[3]),  3,5},
  {&(_tg__ZTV8S15476C5__8S15476C6__8S15476C3[4]),  4,6},
  {&(_tg__ZTV8S15476C58S15476C8__A1__8S15476C6__8S15476C3[4]),  4,6},
  {&(_tg__ZTV8S15476C8__8S15476C3[5]),  5,7},
  {&(_tg__ZTV8S15476C58S15476C8__A2__8S15476C3[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S15476C58S15476C8__A2__8S15476C3[3]),  3,5},
  {&(_tg__ZTV8S15476C9__8S15476C8__8S15476C3[5]),  5,7},
  {&(_tg__ZTV9S19905C19__8S15476C8__8S15476C3[3]),  3,5},
  {&(_tg__ZTV8S15476C5__8S15476C8__8S15476C3[4]),  4,6},
  {&(_tg__ZTV8S15476C5__A__8S15476C8__8S15476C3[4]),  4,6},
  {&(_tg__ZTV8S15476C9__8S15476C3[5]),  5,7},
  {&(_tg__ZTV9S15476C108S15476C9__8S15476C3[5]),  5,7},
  {&(_tg__ZTV9S19905C19__9S15476C108S15476C9__8S15476C3[3]),  3,5},
  {&(_tg__ZTV8S15476C5__9S15476C108S15476C9__8S15476C3[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S15476C9__8S15476C3[3]),  3,5},
  {&(_tg__ZTV8S15476C5__8S15476C9__8S15476C3[4]),  4,6},
  {&(_tg__ZTV8S15476C5__A1__8S15476C3[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S15476C5__A1__8S15476C3[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S15476C3[];
extern  VTBL_ENTRY _ZTV8S15476C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S15476C3[];
static VTBL_ENTRY alt_thunk_names103[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S15476C8D0Ev,_ZTv0_n12_N8S15476C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S15476C8D0Ev,_ZThn8_N8S15476C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S15476C8D0Ev,_ZThn76_N8S15476C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S15476C8D0Ev,_ZThn40_N8S15476C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S15476C8D1Ev,_ZTv0_n12_N8S15476C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S15476C8D1Ev,_ZThn8_N8S15476C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S15476C8D1Ev,_ZThn76_N8S15476C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S15476C8D1Ev,_ZThn40_N8S15476C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S15476C6D0Ev,_ZTv0_n24_N8S15476C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S15476C6D0Ev,_ZThn28_N8S15476C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S15476C6D1Ev,_ZTv0_n24_N8S15476C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S15476C6D1Ev,_ZThn28_N8S15476C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S15476C6D0Ev,_ZTv0_n12_N8S15476C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S15476C6D0Ev,_ZThn36_N8S15476C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S15476C6D0Ev,_ZThn104_N8S15476C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S15476C6D0Ev,_ZThn68_N8S15476C6D0Ev),
  (VTBL_ENTRY)_ZN8S15476C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S15476C6D1Ev,_ZTv0_n12_N8S15476C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S15476C6D1Ev,_ZThn36_N8S15476C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S15476C6D1Ev,_ZThn104_N8S15476C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S15476C6D1Ev,_ZThn68_N8S15476C6D1Ev),
  (VTBL_ENTRY)_ZN8S15476C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S15476C10D0Ev,_ZTv0_n12_N9S15476C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S15476C10D0Ev,_ZThn36_N9S15476C10D0Ev),
  (VTBL_ENTRY)_ZN9S15476C10D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S15476C10D0Ev,_ZThn144_N9S15476C10D0Ev),
  (VTBL_ENTRY)_ZN9S15476C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S15476C10D1Ev,_ZTv0_n12_N9S15476C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S15476C10D1Ev,_ZThn36_N9S15476C10D1Ev),
  (VTBL_ENTRY)_ZN9S15476C10D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S15476C10D1Ev,_ZThn144_N9S15476C10D1Ev),
  (VTBL_ENTRY)_ZN9S15476C10D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S15476C9D0Ev,_ZTv0_n12_N8S15476C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S15476C9D0Ev,_ZThn36_N8S15476C9D0Ev),
  (VTBL_ENTRY)_ZN8S15476C9D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S15476C9D0Ev,_ZThn144_N8S15476C9D0Ev),
  (VTBL_ENTRY)_ZN8S15476C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S15476C9D1Ev,_ZTv0_n12_N8S15476C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S15476C9D1Ev,_ZThn36_N8S15476C9D1Ev),
  (VTBL_ENTRY)_ZN8S15476C9D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S15476C9D1Ev,_ZThn144_N8S15476C9D1Ev),
  (VTBL_ENTRY)_ZN8S15476C9D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S15476C5D0Ev,
  (VTBL_ENTRY)_ZN8S15476C5D0Ev,
  (VTBL_ENTRY)_ZN8S15476C5D0Ev,
  (VTBL_ENTRY)_ZN8S15476C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S15476C5D1Ev,
  (VTBL_ENTRY)_ZN8S15476C5D1Ev,
  (VTBL_ENTRY)_ZN8S15476C5D1Ev,
  (VTBL_ENTRY)_ZN8S15476C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S15476C3D0Ev,_ZTv0_n24_N8S15476C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S15476C3D0Ev,_ZThn96_N8S15476C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S15476C3D1Ev,_ZTv0_n24_N8S15476C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S15476C3D1Ev,_ZThn96_N8S15476C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S15476C3D0Ev,_ZTv0_n12_N8S15476C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S15476C3D0Ev,_ZThn172_N8S15476C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S15476C3D0Ev,_ZThn136_N8S15476C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S15476C3D0Ev,_ZThn104_N8S15476C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S15476C3D0Ev,_ZThn68_N8S15476C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S15476C3D0Ev,_ZThn28_N8S15476C3D0Ev),
  (VTBL_ENTRY)_ZN8S15476C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S15476C3D1Ev,_ZTv0_n12_N8S15476C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S15476C3D1Ev,_ZThn172_N8S15476C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S15476C3D1Ev,_ZThn136_N8S15476C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S15476C3D1Ev,_ZThn104_N8S15476C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S15476C3D1Ev,_ZThn68_N8S15476C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S15476C3D1Ev,_ZThn28_N8S15476C3D1Ev),
  (VTBL_ENTRY)_ZN8S15476C3D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S15476C3 = {  "S15476C3", // class name
  bases_S15476C3, 16,
  &(vtc_S15476C3[0]), // expected_vtbl_contents
  &(vtt_S15476C3[0]), // expected_vtt_contents
  ABISELECT(336,200), // object size
  NSPAIRA(_ZTI8S15476C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S15476C3),55, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S15476C3),39, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names103,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15476C2  : S15476C3 {
  void *s15476c2f0;
  ~S15476C2(); // tgen
  S15476C2(); // tgen
};
//SIG(-1 S15476C2) C1{ BC2{ VBC3{ vd m} BC4{ VBC3 FD Fc Fs[4]} VBC5{ VBC6{ m} VBC7{ VBC8{ VBC3 BC9{ VBC3 VBC4 vd Fi} BC10{ m Fp} vd Fs FL Fp FL} BC10 BC3 BC4 vd Fi} BC4 vd Fs} BC8 Fp} Fp}


S15476C2 ::~S15476C2(){ note_dtor("S15476C2", this);} // tgen
S15476C2 ::S15476C2(){ note_ctor("S15476C2", this);} // tgen

static void Test_S15476C2()
{
  extern Class_Descriptor cd_S15476C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,52)];
    init_test(&cd_S15476C2, buf);
    S15476C2 *dp, &lv = *(dp=new (buf) S15476C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,204), "sizeof(S15476C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S15476C2)");
    /*is_ambiguous_... S15476C3::S19905C19 */ AMB_check_base_class_offset(lv, (S19905C19*)(S15476C3*), 0, "S15476C2");
    /*is_ambiguous_... S15476C3::S15476C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S15476C5*)(S15476C3*), 0, "S15476C2");
    /*is_ambiguous_... S15476C2::S15476C9 */ AMB_check_base_class_offset(lv, (S19905C19*)(S15476C9*), 0, "S15476C2");
    /*is_ambiguous_... S15476C2::S15476C9 */ AMB_check_base_class_offset(lv, (S19905C19*)(S15476C10*)(S15476C9*), 0, "S15476C2");
    /*is_ambiguous_... S15476C2::S15476C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S15476C5*), 0, "S15476C2");
    /*is_ambiguous_... S15476C8::S15476C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S15476C5*)(S15476C8*), 0, "S15476C2");
    /*is_ambiguous_... S15476C6::S15476C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S15476C5*)(S15476C6*), 0, "S15476C2");
    /*is_ambiguous_... S15476C3::S15476C9 */ AMB_check_base_class_offset(lv, (S19905C19*)(S15476C9*)(S15476C3*), 0, "S15476C2");
    /*is_ambiguous_... S15476C3::S15476C9 */ AMB_check_base_class_offset(lv, (S19905C19*)(S15476C10*)(S15476C9*)(S15476C3*), 0, "S15476C2");
    /*is_ambiguous_... S15476C3::S15476C5 */ AMB_check_base_class_offset(lv, (S15476C5*)(S15476C3*), 0, "S15476C2");
    check_base_class_offset(lv, (S5266C29*)(S15476C6*), 0, "S15476C2");
    /*is_ambiguous_... S15476C2::S15476C9 */ AMB_check_base_class_offset(lv, (S15476C5*)(S15476C10*)(S15476C9*), ABISELECT(304,176), "S15476C2");
    /*is_ambiguous_... S15476C3::S15476C9 */ AMB_check_base_class_offset(lv, (S15476C5*)(S15476C10*)(S15476C9*)(S15476C3*), ABISELECT(304,176), "S15476C2");
    /*is_ambiguous_... S15476C2::S15476C9 */ AMB_check_base_class_offset(lv, (S15476C10*)(S15476C9*), ABISELECT(240,140), "S15476C2");
    /*is_ambiguous_... S15476C2::S15476C9 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S15476C9*), ABISELECT(256,148), "S15476C2");
    check_base_class_offset(lv, (S15476C9*)(S15476C8*), ABISELECT(240,140), "S15476C2");
    /*is_ambiguous_... S15476C8::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S15476C8*), ABISELECT(184,104), "S15476C2");
    /*is_ambiguous_... S15476C8::S19905C19 */ AMB_check_base_class_offset(lv, (S19905C19*)(S15476C8*), ABISELECT(176,100), "S15476C2");
    /*is_ambiguous_... S15476C8::S15476C5 */ AMB_check_base_class_offset(lv, (S15476C5*)(S15476C8*), ABISELECT(192,108), "S15476C2");
    check_base_class_offset(lv, (S15476C8*)(S15476C6*), ABISELECT(176,100), "S15476C2");
    /*is_ambiguous_... S15476C6::S15476C5 */ AMB_check_base_class_offset(lv, (S15476C5*)(S15476C6*), ABISELECT(128,72), "S15476C2");
    check_base_class_offset(lv, (S15476C6*)(S15476C3*), ABISELECT(128,72), "S15476C2");
    /*is_ambiguous_... S15476C3::S15476C9 */ AMB_check_base_class_offset(lv, (S15476C10*)(S15476C9*)(S15476C3*), ABISELECT(48,28), "S15476C2");
    /*is_ambiguous_... S15476C3::S15476C9 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S15476C9*)(S15476C3*), ABISELECT(64,36), "S15476C2");
    /*is_ambiguous_... S15476C3::S15476C9 */ AMB_check_base_class_offset(lv, (S15476C9*)(S15476C3*), ABISELECT(48,28), "S15476C2");
    check_base_class_offset(lv, (S15476C3*), 0, "S15476C2");
    check_field_offset(lv, s15476c2f0, ABISELECT(112,68), "S15476C2.s15476c2f0");
    test_class_info(&lv, &cd_S15476C2);
    dp->~S15476C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS15476C2(Test_S15476C2, "S15476C2", ABISELECT(352,204));

#else // __cplusplus

extern void _ZN8S15476C2C1Ev();
extern void _ZN8S15476C2D1Ev();
Name_Map name_map_S15476C2[] = {
  NSPAIR(_ZN8S15476C2C1Ev),
  NSPAIR(_ZN8S15476C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S15476C5;
extern VTBL_ENTRY _ZTI8S15476C5[];
extern  VTBL_ENTRY _ZTV8S15476C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S15476C5[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S15476C5;
extern VTBL_ENTRY _ZTI8S15476C5[];
extern  VTBL_ENTRY _ZTV8S15476C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S15476C5[];
extern Class_Descriptor cd_S15476C10;
extern VTBL_ENTRY _ZTI9S15476C10[];
extern  VTBL_ENTRY _ZTV9S15476C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S15476C10[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S15476C9;
extern VTBL_ENTRY _ZTI8S15476C9[];
extern  VTBL_ENTRY _ZTV8S15476C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S15476C9[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S15476C5;
extern VTBL_ENTRY _ZTI8S15476C5[];
extern  VTBL_ENTRY _ZTV8S15476C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S15476C5[];
extern Class_Descriptor cd_S15476C8;
extern VTBL_ENTRY _ZTI8S15476C8[];
extern  VTBL_ENTRY _ZTV8S15476C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S15476C8[];
extern Class_Descriptor cd_S15476C5;
extern VTBL_ENTRY _ZTI8S15476C5[];
extern  VTBL_ENTRY _ZTV8S15476C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S15476C5[];
extern Class_Descriptor cd_S15476C6;
extern VTBL_ENTRY _ZTI8S15476C6[];
extern  VTBL_ENTRY _ZTV8S15476C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S15476C6[];
extern Class_Descriptor cd_S15476C10;
extern VTBL_ENTRY _ZTI9S15476C10[];
extern  VTBL_ENTRY _ZTV9S15476C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S15476C10[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S15476C9;
extern VTBL_ENTRY _ZTI8S15476C9[];
extern  VTBL_ENTRY _ZTV8S15476C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S15476C9[];
extern Class_Descriptor cd_S15476C3;
extern VTBL_ENTRY _ZTI8S15476C3[];
extern  VTBL_ENTRY _ZTV8S15476C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S15476C3[];
static Base_Class bases_S15476C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19905C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S15476C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S15476C5,    ABISELECT(304,176), //bcp->offset
    49, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S15476C10,    ABISELECT(240,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(256,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S15476C9,    ABISELECT(240,140), //bcp->offset
    42, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S17777C6_nt,    ABISELECT(184,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19905C19,    ABISELECT(176,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S15476C5,    ABISELECT(192,108), //bcp->offset
    36, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S15476C8,    ABISELECT(176,100), //bcp->offset
    28, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S15476C5,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S15476C6,    ABISELECT(128,72), //bcp->offset
    18, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S15476C10,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S15476C9,    ABISELECT(48,28), //bcp->offset
    11, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S15476C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S15476C2[];
extern void ABISELECT(_ZTv0_n24_N8S15476C2D1Ev,_ZTv0_n12_N8S15476C2D1Ev)();
extern void _ZN8S15476C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C2D0Ev,_ZTv0_n12_N8S15476C2D0Ev)();
extern void _ZN8S15476C2D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C2D1Ev,_ZTv0_n12_N8S15476C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S15476C2D1Ev,_ZThn28_N8S15476C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C2D0Ev,_ZTv0_n12_N8S15476C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S15476C2D0Ev,_ZThn28_N8S15476C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C2D1Ev,_ZTv0_n12_N8S15476C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S15476C2D1Ev,_ZThn72_N8S15476C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C2D0Ev,_ZTv0_n12_N8S15476C2D0Ev)();
extern void ABISELECT(_ZThn128_N8S15476C2D0Ev,_ZThn72_N8S15476C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S15476C2D1Ev,_ZTv0_n24_N8S15476C2D1Ev)();
extern void ABISELECT(_ZThn176_N8S15476C2D1Ev,_ZThn100_N8S15476C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S15476C2D0Ev,_ZTv0_n24_N8S15476C2D0Ev)();
extern void ABISELECT(_ZThn176_N8S15476C2D0Ev,_ZThn100_N8S15476C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C2D1Ev,_ZTv0_n12_N8S15476C2D1Ev)();
extern void ABISELECT(_ZThn192_N8S15476C2D1Ev,_ZThn108_N8S15476C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C2D0Ev,_ZTv0_n12_N8S15476C2D0Ev)();
extern void ABISELECT(_ZThn192_N8S15476C2D0Ev,_ZThn108_N8S15476C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C2D1Ev,_ZTv0_n12_N8S15476C2D1Ev)();
extern void ABISELECT(_ZThn240_N8S15476C2D1Ev,_ZThn140_N8S15476C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C2D0Ev,_ZTv0_n12_N8S15476C2D0Ev)();
extern void ABISELECT(_ZThn240_N8S15476C2D0Ev,_ZThn140_N8S15476C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C2D1Ev,_ZTv0_n12_N8S15476C2D1Ev)();
extern void ABISELECT(_ZThn304_N8S15476C2D1Ev,_ZThn176_N8S15476C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C2D0Ev,_ZTv0_n12_N8S15476C2D0Ev)();
extern void ABISELECT(_ZThn304_N8S15476C2D0Ev,_ZThn176_N8S15476C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S15476C2[] = {
  ABISELECT(304,176),
  ABISELECT(240,140),
  ABISELECT(176,100),
  0,
  ABISELECT(128,72),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S15476C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C2D1Ev,_ZTv0_n12_N8S15476C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C2D0Ev,_ZTv0_n12_N8S15476C2D0Ev),
  ABISELECT(256,148),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S15476C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C2D1Ev,_ZTv0_n12_N8S15476C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C2D0Ev,_ZTv0_n12_N8S15476C2D0Ev),
  ABISELECT(176,104),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S15476C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C2D1Ev,_ZTv0_n12_N8S15476C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C2D0Ev,_ZTv0_n12_N8S15476C2D0Ev),
  ABISELECT(-176,-100),
  ABISELECT(128,76),
  ABISELECT(-176,-100),
  ABISELECT(64,40),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI8S15476C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S15476C2D1Ev,_ZTv0_n24_N8S15476C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S15476C2D0Ev,_ZTv0_n24_N8S15476C2D0Ev),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI8S15476C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C2D1Ev,_ZTv0_n12_N8S15476C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C2D0Ev,_ZTv0_n12_N8S15476C2D0Ev),
  ABISELECT(64,36),
  ABISELECT(-240,-140),
  ABISELECT(-240,-140),
  ABISELECT(-240,-140),
  (VTBL_ENTRY)&(_ZTI8S15476C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C2D1Ev,_ZTv0_n12_N8S15476C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C2D0Ev,_ZTv0_n12_N8S15476C2D0Ev),
  ABISELECT(-304,-176),
  ABISELECT(-304,-176),
  ABISELECT(-304,-176),
  (VTBL_ENTRY)&(_ZTI8S15476C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C2D1Ev,_ZTv0_n12_N8S15476C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C2D0Ev,_ZTv0_n12_N8S15476C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S15476C2[];
extern void ABISELECT(_ZTv0_n24_N8S15476C3D1Ev,_ZTv0_n12_N8S15476C3D1Ev)();
extern void _ZN8S15476C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C3D0Ev,_ZTv0_n12_N8S15476C3D0Ev)();
extern void _ZN8S15476C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C3__8S15476C2[] = {
  ABISELECT(304,176),
  ABISELECT(240,140),
  ABISELECT(176,100),
  0,
  ABISELECT(128,72),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S15476C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C3D1Ev,_ZTv0_n12_N8S15476C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C3D0Ev,_ZTv0_n12_N8S15476C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev)();
extern void _ZN8S15476C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev)();
extern void _ZN8S15476C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C58S15476C3__8S15476C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S15476C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C9D1Ev,_ZTv0_n12_N8S15476C9D1Ev)();
extern void _ZN8S15476C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C9D0Ev,_ZTv0_n12_N8S15476C9D0Ev)();
extern void _ZN8S15476C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C98S15476C3__A1__8S15476C2[] = {
  ABISELECT(256,148),
  ABISELECT(-48,-28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S15476C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C9D1Ev,_ZTv0_n12_N8S15476C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C9D0Ev,_ZTv0_n12_N8S15476C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S15476C10D1Ev,_ZTv0_n12_N9S15476C10D1Ev)();
extern void _ZN9S15476C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S15476C10D0Ev,_ZTv0_n12_N9S15476C10D0Ev)();
extern void _ZN9S15476C10D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S15476C108S15476C98S15476C3__A1__8S15476C2[] = {
  ABISELECT(256,148),
  ABISELECT(-48,-28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S15476C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S15476C10D1Ev,_ZTv0_n12_N9S15476C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S15476C10D0Ev,_ZTv0_n12_N9S15476C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S15476C10D1Ev,_ZTv0_n12_N9S15476C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S15476C10D0Ev,_ZTv0_n12_N9S15476C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__9S15476C108S15476C98S15476C3__A1__8S15476C2[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S15476C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S15476C10D1Ev,_ZTv0_n12_N9S15476C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S15476C10D0Ev,_ZTv0_n12_N9S15476C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S15476C10D1Ev,_ZTv0_n12_N9S15476C10D1Ev)();
extern void ABISELECT(_ZThn256_N9S15476C10D1Ev,_ZThn148_N9S15476C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S15476C10D0Ev,_ZTv0_n12_N9S15476C10D0Ev)();
extern void ABISELECT(_ZThn256_N9S15476C10D0Ev,_ZThn148_N9S15476C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C5__9S15476C108S15476C98S15476C3__A1__8S15476C2[] = {
  ABISELECT(-304,-176),
  ABISELECT(-256,-148),
  ABISELECT(-256,-148),
  (VTBL_ENTRY)&(_ZTI9S15476C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S15476C10D1Ev,_ZTv0_n12_N9S15476C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S15476C10D0Ev,_ZTv0_n12_N9S15476C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C9D1Ev,_ZTv0_n12_N8S15476C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S15476C9D0Ev,_ZTv0_n12_N8S15476C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S15476C98S15476C3__A1__8S15476C2[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S15476C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C9D1Ev,_ZTv0_n12_N8S15476C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C9D0Ev,_ZTv0_n12_N8S15476C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C9D1Ev,_ZTv0_n12_N8S15476C9D1Ev)();
extern void ABISELECT(_ZThn256_N8S15476C9D1Ev,_ZThn148_N8S15476C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C9D0Ev,_ZTv0_n12_N8S15476C9D0Ev)();
extern void ABISELECT(_ZThn256_N8S15476C9D0Ev,_ZThn148_N8S15476C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C5__8S15476C98S15476C3__A1__8S15476C2[] = {
  ABISELECT(-304,-176),
  ABISELECT(-256,-148),
  ABISELECT(-256,-148),
  (VTBL_ENTRY)&(_ZTI8S15476C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C9D1Ev,_ZTv0_n12_N8S15476C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C9D0Ev,_ZTv0_n12_N8S15476C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C3D1Ev,_ZTv0_n12_N8S15476C3D1Ev)();
extern void ABISELECT(_ZThn128_N8S15476C3D1Ev,_ZThn72_N8S15476C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C3D0Ev,_ZTv0_n12_N8S15476C3D0Ev)();
extern void ABISELECT(_ZThn128_N8S15476C3D0Ev,_ZThn72_N8S15476C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C6__8S15476C3__8S15476C2[] = {
  ABISELECT(176,104),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S15476C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C3D1Ev,_ZTv0_n12_N8S15476C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C3D0Ev,_ZTv0_n12_N8S15476C3D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S15476C3D1Ev,_ZTv0_n24_N8S15476C3D1Ev)();
extern void ABISELECT(_ZThn176_N8S15476C3D1Ev,_ZThn100_N8S15476C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S15476C3D0Ev,_ZTv0_n24_N8S15476C3D0Ev)();
extern void ABISELECT(_ZThn176_N8S15476C3D0Ev,_ZThn100_N8S15476C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C8__8S15476C3__8S15476C2[] = {
  ABISELECT(-176,-100),
  ABISELECT(128,76),
  ABISELECT(-176,-100),
  ABISELECT(64,40),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI8S15476C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S15476C3D1Ev,_ZTv0_n24_N8S15476C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S15476C3D0Ev,_ZTv0_n24_N8S15476C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C3D1Ev,_ZTv0_n12_N8S15476C3D1Ev)();
extern void ABISELECT(_ZThn240_N8S15476C3D1Ev,_ZThn140_N8S15476C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C3D0Ev,_ZTv0_n12_N8S15476C3D0Ev)();
extern void ABISELECT(_ZThn240_N8S15476C3D0Ev,_ZThn140_N8S15476C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C9__8S15476C3__8S15476C2[] = {
  ABISELECT(64,36),
  ABISELECT(-240,-140),
  ABISELECT(-240,-140),
  ABISELECT(-240,-140),
  (VTBL_ENTRY)&(_ZTI8S15476C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C3D1Ev,_ZTv0_n12_N8S15476C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C3D0Ev,_ZTv0_n12_N8S15476C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C3D1Ev,_ZTv0_n12_N8S15476C3D1Ev)();
extern void ABISELECT(_ZThn304_N8S15476C3D1Ev,_ZThn176_N8S15476C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C3D0Ev,_ZTv0_n12_N8S15476C3D0Ev)();
extern void ABISELECT(_ZThn304_N8S15476C3D0Ev,_ZThn176_N8S15476C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C5__A1__8S15476C3__8S15476C2[] = {
  ABISELECT(-304,-176),
  ABISELECT(-304,-176),
  ABISELECT(-304,-176),
  (VTBL_ENTRY)&(_ZTI8S15476C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C3D1Ev,_ZTv0_n12_N8S15476C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C3D0Ev,_ZTv0_n12_N8S15476C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C3D1Ev,_ZTv0_n12_N8S15476C3D1Ev)();
extern void ABISELECT(_ZThn192_N8S15476C3D1Ev,_ZThn108_N8S15476C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C3D0Ev,_ZTv0_n12_N8S15476C3D0Ev)();
extern void ABISELECT(_ZThn192_N8S15476C3D0Ev,_ZThn108_N8S15476C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C58S15476C8__A2__8S15476C3__8S15476C2[] = {
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI8S15476C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C3D1Ev,_ZTv0_n12_N8S15476C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C3D0Ev,_ZTv0_n12_N8S15476C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C3D1Ev,_ZTv0_n12_N8S15476C3D1Ev)();
extern void ABISELECT(_ZThn48_N8S15476C3D1Ev,_ZThn28_N8S15476C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C3D0Ev,_ZTv0_n12_N8S15476C3D0Ev)();
extern void ABISELECT(_ZThn48_N8S15476C3D0Ev,_ZThn28_N8S15476C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C9__A__8S15476C3__8S15476C2[] = {
  ABISELECT(256,148),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S15476C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C3D1Ev,_ZTv0_n12_N8S15476C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C3D0Ev,_ZTv0_n12_N8S15476C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C6D1Ev,_ZTv0_n12_N8S15476C6D1Ev)();
extern void _ZN8S15476C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C6D0Ev,_ZTv0_n12_N8S15476C6D0Ev)();
extern void _ZN8S15476C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C6__8S15476C2[] = {
  ABISELECT(176,104),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S15476C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C6D1Ev,_ZTv0_n12_N8S15476C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C6D0Ev,_ZTv0_n12_N8S15476C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev)();
extern void _ZN8S15476C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev)();
extern void _ZN8S15476C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C58S15476C6__A3__8S15476C2[] = {
  ABISELECT(-128,-72),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S15476C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S15476C58S15476C6__A3__8S15476C2[] = {
  ABISELECT(128,72),
  ABISELECT(128,72),
  (VTBL_ENTRY)&(_ZTI8S15476C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S15476C6D1Ev,_ZTv0_n24_N8S15476C6D1Ev)();
extern void ABISELECT(_ZThn48_N8S15476C6D1Ev,_ZThn28_N8S15476C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S15476C6D0Ev,_ZTv0_n24_N8S15476C6D0Ev)();
extern void ABISELECT(_ZThn48_N8S15476C6D0Ev,_ZThn28_N8S15476C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C8__8S15476C6__8S15476C2[] = {
  ABISELECT(-48,-28),
  ABISELECT(128,76),
  ABISELECT(-176,-100),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S15476C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S15476C6D1Ev,_ZTv0_n24_N8S15476C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S15476C6D0Ev,_ZTv0_n24_N8S15476C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C6D1Ev,_ZTv0_n12_N8S15476C6D1Ev)();
extern void ABISELECT(_ZThn112_N8S15476C6D1Ev,_ZThn68_N8S15476C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C6D0Ev,_ZTv0_n12_N8S15476C6D0Ev)();
extern void ABISELECT(_ZThn112_N8S15476C6D0Ev,_ZThn68_N8S15476C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C9__8S15476C6__8S15476C2[] = {
  ABISELECT(64,36),
  ABISELECT(-240,-140),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S15476C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C6D1Ev,_ZTv0_n12_N8S15476C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C6D0Ev,_ZTv0_n12_N8S15476C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C6D1Ev,_ZTv0_n12_N8S15476C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S15476C6D0Ev,_ZTv0_n12_N8S15476C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S15476C6__8S15476C2[] = {
  ABISELECT(128,72),
  ABISELECT(128,72),
  (VTBL_ENTRY)&(_ZTI8S15476C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C6D1Ev,_ZTv0_n12_N8S15476C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C6D0Ev,_ZTv0_n12_N8S15476C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C6D1Ev,_ZTv0_n12_N8S15476C6D1Ev)();
extern void ABISELECT(_ZThn176_N8S15476C6D1Ev,_ZThn104_N8S15476C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C6D0Ev,_ZTv0_n12_N8S15476C6D0Ev)();
extern void ABISELECT(_ZThn176_N8S15476C6D0Ev,_ZThn104_N8S15476C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C5__8S15476C6__8S15476C2[] = {
  ABISELECT(-304,-176),
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI8S15476C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C6D1Ev,_ZTv0_n12_N8S15476C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C6D0Ev,_ZTv0_n12_N8S15476C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C6D1Ev,_ZTv0_n12_N8S15476C6D1Ev)();
extern void ABISELECT(_ZThn64_N8S15476C6D1Ev,_ZThn36_N8S15476C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C6D0Ev,_ZTv0_n12_N8S15476C6D0Ev)();
extern void ABISELECT(_ZThn64_N8S15476C6D0Ev,_ZThn36_N8S15476C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C58S15476C8__A1__8S15476C6__8S15476C2[] = {
  ABISELECT(-192,-108),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S15476C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C6D1Ev,_ZTv0_n12_N8S15476C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C6D0Ev,_ZTv0_n12_N8S15476C6D0Ev),
};
extern void _ZN8S15476C8D1Ev();
extern void _ZN8S15476C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S15476C8__8S15476C2[] = {
  ABISELECT(128,76),
  ABISELECT(-176,-100),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S15476C8[0]),
  (VTBL_ENTRY)&_ZN8S15476C8D1Ev,
  (VTBL_ENTRY)&_ZN8S15476C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev)();
extern void _ZN8S15476C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev)();
extern void _ZN8S15476C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C58S15476C8__A2__8S15476C2[] = {
  ABISELECT(-192,-108),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S15476C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S15476C58S15476C8__A2__8S15476C2[] = {
  ABISELECT(192,108),
  ABISELECT(192,108),
  (VTBL_ENTRY)&(_ZTI8S15476C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C8D1Ev,_ZTv0_n12_N8S15476C8D1Ev)();
extern void ABISELECT(_ZThn64_N8S15476C8D1Ev,_ZThn40_N8S15476C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C8D0Ev,_ZTv0_n12_N8S15476C8D0Ev)();
extern void ABISELECT(_ZThn64_N8S15476C8D0Ev,_ZThn40_N8S15476C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C9__8S15476C8__8S15476C2[] = {
  ABISELECT(64,36),
  ABISELECT(-240,-140),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S15476C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C8D1Ev,_ZTv0_n12_N8S15476C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C8D0Ev,_ZTv0_n12_N8S15476C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C8D1Ev,_ZTv0_n12_N8S15476C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S15476C8D0Ev,_ZTv0_n12_N8S15476C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S15476C8__8S15476C2[] = {
  ABISELECT(176,100),
  ABISELECT(176,100),
  (VTBL_ENTRY)&(_ZTI8S15476C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C8D1Ev,_ZTv0_n12_N8S15476C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C8D0Ev,_ZTv0_n12_N8S15476C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C8D1Ev,_ZTv0_n12_N8S15476C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S15476C8D1Ev,_ZThn76_N8S15476C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C8D0Ev,_ZTv0_n12_N8S15476C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S15476C8D0Ev,_ZThn76_N8S15476C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C5__8S15476C8__8S15476C2[] = {
  ABISELECT(-304,-176),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S15476C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C8D1Ev,_ZTv0_n12_N8S15476C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C8D0Ev,_ZTv0_n12_N8S15476C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C8D1Ev,_ZTv0_n12_N8S15476C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S15476C8D1Ev,_ZThn8_N8S15476C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C8D0Ev,_ZTv0_n12_N8S15476C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S15476C8D0Ev,_ZThn8_N8S15476C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C5__A__8S15476C8__8S15476C2[] = {
  ABISELECT(-192,-108),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S15476C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C8D1Ev,_ZTv0_n12_N8S15476C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C8D0Ev,_ZTv0_n12_N8S15476C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C9D1Ev,_ZTv0_n12_N8S15476C9D1Ev)();
extern void _ZN8S15476C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C9D0Ev,_ZTv0_n12_N8S15476C9D0Ev)();
extern void _ZN8S15476C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C9__8S15476C2[] = {
  ABISELECT(64,36),
  ABISELECT(-240,-140),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S15476C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C9D1Ev,_ZTv0_n12_N8S15476C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C9D0Ev,_ZTv0_n12_N8S15476C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S15476C10D1Ev,_ZTv0_n12_N9S15476C10D1Ev)();
extern void _ZN9S15476C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S15476C10D0Ev,_ZTv0_n12_N9S15476C10D0Ev)();
extern void _ZN9S15476C10D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S15476C108S15476C9__8S15476C2[] = {
  ABISELECT(64,36),
  ABISELECT(-240,-140),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S15476C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S15476C10D1Ev,_ZTv0_n12_N9S15476C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S15476C10D0Ev,_ZTv0_n12_N9S15476C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S15476C10D1Ev,_ZTv0_n12_N9S15476C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S15476C10D0Ev,_ZTv0_n12_N9S15476C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__9S15476C108S15476C9__8S15476C2[] = {
  ABISELECT(240,140),
  ABISELECT(240,140),
  (VTBL_ENTRY)&(_ZTI9S15476C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S15476C10D1Ev,_ZTv0_n12_N9S15476C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S15476C10D0Ev,_ZTv0_n12_N9S15476C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S15476C10D1Ev,_ZTv0_n12_N9S15476C10D1Ev)();
extern void ABISELECT(_ZThn64_N9S15476C10D1Ev,_ZThn36_N9S15476C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S15476C10D0Ev,_ZTv0_n12_N9S15476C10D0Ev)();
extern void ABISELECT(_ZThn64_N9S15476C10D0Ev,_ZThn36_N9S15476C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C5__9S15476C108S15476C9__8S15476C2[] = {
  ABISELECT(-304,-176),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S15476C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S15476C10D1Ev,_ZTv0_n12_N9S15476C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S15476C10D0Ev,_ZTv0_n12_N9S15476C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C9D1Ev,_ZTv0_n12_N8S15476C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S15476C9D0Ev,_ZTv0_n12_N8S15476C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S15476C9__8S15476C2[] = {
  ABISELECT(240,140),
  ABISELECT(240,140),
  (VTBL_ENTRY)&(_ZTI8S15476C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C9D1Ev,_ZTv0_n12_N8S15476C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C9D0Ev,_ZTv0_n12_N8S15476C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C9D1Ev,_ZTv0_n12_N8S15476C9D1Ev)();
extern void ABISELECT(_ZThn64_N8S15476C9D1Ev,_ZThn36_N8S15476C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C9D0Ev,_ZTv0_n12_N8S15476C9D0Ev)();
extern void ABISELECT(_ZThn64_N8S15476C9D0Ev,_ZThn36_N8S15476C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C5__8S15476C9__8S15476C2[] = {
  ABISELECT(-304,-176),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S15476C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C9D1Ev,_ZTv0_n12_N8S15476C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C9D0Ev,_ZTv0_n12_N8S15476C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev)();
extern void _ZN8S15476C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev)();
extern void _ZN8S15476C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S15476C5__A1__8S15476C2[] = {
  ABISELECT(-304,-176),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S15476C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S15476C5__A1__8S15476C2[] = {
  ABISELECT(304,176),
  ABISELECT(304,176),
  (VTBL_ENTRY)&(_ZTI8S15476C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev),
};
static  VTT_ENTRY vtt_S15476C2[] = {
  {&(_ZTV8S15476C2[9]),  9,55},
  {&(_tg__ZTV8S15476C3__8S15476C2[9]),  9,11},
  {&(_tg__ZTV8S15476C58S15476C3__8S15476C2[4]),  4,6},
  {&(_tg__ZTV8S15476C58S15476C3__8S15476C2[4]),  4,6},
  {&(_tg__ZTV8S15476C98S15476C3__A1__8S15476C2[5]),  5,7},
  {&(_tg__ZTV9S15476C108S15476C98S15476C3__A1__8S15476C2[5]),  5,7},
  {&(_tg__ZTV9S19905C19__9S15476C108S15476C98S15476C3__A1__8S15476C2[3]),  3,5},
  {&(_tg__ZTV8S15476C5__9S15476C108S15476C98S15476C3__A1__8S15476C2[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S15476C98S15476C3__A1__8S15476C2[3]),  3,5},
  {&(_tg__ZTV8S15476C5__8S15476C98S15476C3__A1__8S15476C2[4]),  4,6},
  {&(_tg__ZTV8S15476C3__8S15476C2[9]),  9,11},
  {&(_tg__ZTV8S15476C6__8S15476C3__8S15476C2[8]),  8,10},
  {&(_tg__ZTV8S15476C8__8S15476C3__8S15476C2[6]),  6,8},
  {&(_tg__ZTV8S15476C9__8S15476C3__8S15476C2[5]),  5,7},
  {&(_tg__ZTV8S15476C5__A1__8S15476C3__8S15476C2[4]),  4,6},
  {&(_tg__ZTV8S15476C58S15476C8__A2__8S15476C3__8S15476C2[4]),  4,6},
  {&(_tg__ZTV8S15476C9__A__8S15476C3__8S15476C2[5]),  5,7},
  {&(_ZTV8S15476C2[9]),  9,55},
  {&(_ZTV8S15476C2[26]),  26,55},
  {&(_ZTV8S15476C2[34]),  34,55},
  {&(_ZTV8S15476C2[47]),  47,55},
  {&(_ZTV8S15476C2[53]),  53,55},
  {&(_ZTV8S15476C2[40]),  40,55},
  {&(_ZTV8S15476C2[16]),  16,55},
  {&(_tg__ZTV8S15476C6__8S15476C2[8]),  8,10},
  {&(_tg__ZTV8S15476C58S15476C6__A3__8S15476C2[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S15476C58S15476C6__A3__8S15476C2[3]),  3,5},
  {&(_tg__ZTV8S15476C8__8S15476C6__8S15476C2[6]),  6,8},
  {&(_tg__ZTV8S15476C9__8S15476C6__8S15476C2[5]),  5,7},
  {&(_tg__ZTV9S19905C19__8S15476C6__8S15476C2[3]),  3,5},
  {&(_tg__ZTV8S15476C5__8S15476C6__8S15476C2[4]),  4,6},
  {&(_tg__ZTV8S15476C58S15476C8__A1__8S15476C6__8S15476C2[4]),  4,6},
  {&(_tg__ZTV8S15476C8__8S15476C2[5]),  5,7},
  {&(_tg__ZTV8S15476C58S15476C8__A2__8S15476C2[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S15476C58S15476C8__A2__8S15476C2[3]),  3,5},
  {&(_tg__ZTV8S15476C9__8S15476C8__8S15476C2[5]),  5,7},
  {&(_tg__ZTV9S19905C19__8S15476C8__8S15476C2[3]),  3,5},
  {&(_tg__ZTV8S15476C5__8S15476C8__8S15476C2[4]),  4,6},
  {&(_tg__ZTV8S15476C5__A__8S15476C8__8S15476C2[4]),  4,6},
  {&(_tg__ZTV8S15476C9__8S15476C2[5]),  5,7},
  {&(_tg__ZTV9S15476C108S15476C9__8S15476C2[5]),  5,7},
  {&(_tg__ZTV9S19905C19__9S15476C108S15476C9__8S15476C2[3]),  3,5},
  {&(_tg__ZTV8S15476C5__9S15476C108S15476C9__8S15476C2[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S15476C9__8S15476C2[3]),  3,5},
  {&(_tg__ZTV8S15476C5__8S15476C9__8S15476C2[4]),  4,6},
  {&(_tg__ZTV8S15476C5__A1__8S15476C2[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S15476C5__A1__8S15476C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S15476C2[];
extern  VTBL_ENTRY _ZTV8S15476C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S15476C2[];
static VTBL_ENTRY alt_thunk_names104[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S15476C8D0Ev,_ZTv0_n12_N8S15476C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S15476C8D0Ev,_ZThn8_N8S15476C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S15476C8D0Ev,_ZThn76_N8S15476C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S15476C8D0Ev,_ZThn40_N8S15476C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S15476C8D1Ev,_ZTv0_n12_N8S15476C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S15476C8D1Ev,_ZThn8_N8S15476C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S15476C8D1Ev,_ZThn76_N8S15476C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S15476C8D1Ev,_ZThn40_N8S15476C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S15476C6D0Ev,_ZTv0_n24_N8S15476C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S15476C6D0Ev,_ZThn28_N8S15476C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S15476C6D1Ev,_ZTv0_n24_N8S15476C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S15476C6D1Ev,_ZThn28_N8S15476C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S15476C6D0Ev,_ZTv0_n12_N8S15476C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S15476C6D0Ev,_ZThn36_N8S15476C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S15476C6D0Ev,_ZThn104_N8S15476C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S15476C6D0Ev,_ZThn68_N8S15476C6D0Ev),
  (VTBL_ENTRY)_ZN8S15476C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S15476C6D1Ev,_ZTv0_n12_N8S15476C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S15476C6D1Ev,_ZThn36_N8S15476C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S15476C6D1Ev,_ZThn104_N8S15476C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S15476C6D1Ev,_ZThn68_N8S15476C6D1Ev),
  (VTBL_ENTRY)_ZN8S15476C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S15476C3D0Ev,_ZTv0_n24_N8S15476C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S15476C3D0Ev,_ZThn100_N8S15476C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S15476C3D1Ev,_ZTv0_n24_N8S15476C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S15476C3D1Ev,_ZThn100_N8S15476C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S15476C10D0Ev,_ZTv0_n12_N9S15476C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S15476C10D0Ev,_ZThn36_N9S15476C10D0Ev),
  (VTBL_ENTRY)_ZN9S15476C10D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S15476C10D0Ev,_ZThn148_N9S15476C10D0Ev),
  (VTBL_ENTRY)_ZN9S15476C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S15476C10D1Ev,_ZTv0_n12_N9S15476C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S15476C10D1Ev,_ZThn36_N9S15476C10D1Ev),
  (VTBL_ENTRY)_ZN9S15476C10D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S15476C10D1Ev,_ZThn148_N9S15476C10D1Ev),
  (VTBL_ENTRY)_ZN9S15476C10D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S15476C9D0Ev,_ZTv0_n12_N8S15476C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S15476C9D0Ev,_ZThn36_N8S15476C9D0Ev),
  (VTBL_ENTRY)_ZN8S15476C9D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S15476C9D0Ev,_ZThn148_N8S15476C9D0Ev),
  (VTBL_ENTRY)_ZN8S15476C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S15476C9D1Ev,_ZTv0_n12_N8S15476C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S15476C9D1Ev,_ZThn36_N8S15476C9D1Ev),
  (VTBL_ENTRY)_ZN8S15476C9D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S15476C9D1Ev,_ZThn148_N8S15476C9D1Ev),
  (VTBL_ENTRY)_ZN8S15476C9D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S15476C5D0Ev,_ZTv0_n12_N8S15476C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S15476C5D0Ev,
  (VTBL_ENTRY)_ZN8S15476C5D0Ev,
  (VTBL_ENTRY)_ZN8S15476C5D0Ev,
  (VTBL_ENTRY)_ZN8S15476C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S15476C5D1Ev,_ZTv0_n12_N8S15476C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S15476C5D1Ev,
  (VTBL_ENTRY)_ZN8S15476C5D1Ev,
  (VTBL_ENTRY)_ZN8S15476C5D1Ev,
  (VTBL_ENTRY)_ZN8S15476C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S15476C3D0Ev,_ZTv0_n12_N8S15476C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S15476C3D0Ev,_ZThn28_N8S15476C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S15476C3D0Ev,_ZThn108_N8S15476C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S15476C3D0Ev,_ZThn176_N8S15476C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S15476C3D0Ev,_ZThn140_N8S15476C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S15476C3D0Ev,_ZThn72_N8S15476C3D0Ev),
  (VTBL_ENTRY)_ZN8S15476C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S15476C3D1Ev,_ZTv0_n12_N8S15476C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S15476C3D1Ev,_ZThn28_N8S15476C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S15476C3D1Ev,_ZThn108_N8S15476C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S15476C3D1Ev,_ZThn176_N8S15476C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S15476C3D1Ev,_ZThn140_N8S15476C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S15476C3D1Ev,_ZThn72_N8S15476C3D1Ev),
  (VTBL_ENTRY)_ZN8S15476C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S15476C2D0Ev,_ZTv0_n24_N8S15476C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S15476C2D0Ev,_ZThn100_N8S15476C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S15476C2D1Ev,_ZTv0_n24_N8S15476C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S15476C2D1Ev,_ZThn100_N8S15476C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S15476C2D0Ev,_ZTv0_n12_N8S15476C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S15476C2D0Ev,_ZThn176_N8S15476C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S15476C2D0Ev,_ZThn140_N8S15476C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S15476C2D0Ev,_ZThn108_N8S15476C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S15476C2D0Ev,_ZThn72_N8S15476C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S15476C2D0Ev,_ZThn28_N8S15476C2D0Ev),
  (VTBL_ENTRY)_ZN8S15476C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S15476C2D1Ev,_ZTv0_n12_N8S15476C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S15476C2D1Ev,_ZThn176_N8S15476C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S15476C2D1Ev,_ZThn140_N8S15476C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S15476C2D1Ev,_ZThn108_N8S15476C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S15476C2D1Ev,_ZThn72_N8S15476C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S15476C2D1Ev,_ZThn28_N8S15476C2D1Ev),
  (VTBL_ENTRY)_ZN8S15476C2D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S15476C2 = {  "S15476C2", // class name
  bases_S15476C2, 17,
  &(vtc_S15476C2[0]), // expected_vtbl_contents
  &(vtt_S15476C2[0]), // expected_vtt_contents
  ABISELECT(352,204), // object size
  NSPAIRA(_ZTI8S15476C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S15476C2),55, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S15476C2),47, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names104,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15476C1  {
  ::S15476C2 s15476c1f0;
  __tsi64 s15476c1f1:20;
  void  mf15476c1(); // _ZN8S15476C19mf15476c1Ev
};
//SIG(1 S15476C1) C1{ m FC2{ BC3{ VBC4{ vd m} BC5{ VBC4 FD Fc Fs[4]} VBC6{ VBC7{ m} VBC8{ VBC9{ VBC4 BC10{ VBC4 VBC5 vd Fi} BC11{ m Fp} vd Fs FL Fp FL} BC11 BC4 BC5 vd Fi} BC5 vd Fs} BC9 Fp} Fp} FL:20}


void  S15476C1 ::mf15476c1(){}

static void Test_S15476C1()
{
  {
    init_simple_test("S15476C1");
    static S15476C1 lv;
    check2(sizeof(lv), ABISELECT(368,208), "sizeof(S15476C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S15476C1)");
    check_field_offset(lv, s15476c1f0, 0, "S15476C1.s15476c1f0");
    set_bf_and_test(lv, s15476c1f1, ABISELECT(352,204), 0, 20, 1, "S15476C1");
    set_bf_and_test(lv, s15476c1f1, ABISELECT(352,204), 0, 20, hide_sll(1LL<<19), "S15476C1");
  }
}
static Arrange_To_Call_Me vS15476C1(Test_S15476C1, "S15476C1", ABISELECT(368,208));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3755C2  : S1679C4_nt {
  virtual void  v8(); // _ZN7S3755C22v8Ev
  virtual void  v9(); // _ZN7S3755C22v9Ev
  virtual void  v10(); // _ZN7S3755C23v10Ev
  virtual void  v11(); // _ZN7S3755C23v11Ev
  virtual void  v12(); // _ZN7S3755C23v12Ev
  virtual void  v13(); // _ZN7S3755C23v13Ev
  virtual void  v14(); // _ZN7S3755C23v14Ev
  virtual void  v15(); // _ZN7S3755C23v15Ev
  virtual void  v16(); // _ZN7S3755C23v16Ev
  virtual void  v17(); // _ZN7S3755C23v17Ev
  virtual void  v18(); // _ZN7S3755C23v18Ev
  virtual void  v19(); // _ZN7S3755C23v19Ev
  ~S3755C2(); // tgen
  S3755C2(); // tgen
};
//SIG(-1 S3755C2) C1{ BC2{ vd m Fi} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


void  S3755C2 ::v8(){vfunc_called(this, "_ZN7S3755C22v8Ev");}
void  S3755C2 ::v9(){vfunc_called(this, "_ZN7S3755C22v9Ev");}
void  S3755C2 ::v10(){vfunc_called(this, "_ZN7S3755C23v10Ev");}
void  S3755C2 ::v11(){vfunc_called(this, "_ZN7S3755C23v11Ev");}
void  S3755C2 ::v12(){vfunc_called(this, "_ZN7S3755C23v12Ev");}
void  S3755C2 ::v13(){vfunc_called(this, "_ZN7S3755C23v13Ev");}
void  S3755C2 ::v14(){vfunc_called(this, "_ZN7S3755C23v14Ev");}
void  S3755C2 ::v15(){vfunc_called(this, "_ZN7S3755C23v15Ev");}
void  S3755C2 ::v16(){vfunc_called(this, "_ZN7S3755C23v16Ev");}
void  S3755C2 ::v17(){vfunc_called(this, "_ZN7S3755C23v17Ev");}
void  S3755C2 ::v18(){vfunc_called(this, "_ZN7S3755C23v18Ev");}
void  S3755C2 ::v19(){vfunc_called(this, "_ZN7S3755C23v19Ev");}
S3755C2 ::~S3755C2(){ note_dtor("S3755C2", this);} // tgen
S3755C2 ::S3755C2(){ note_ctor("S3755C2", this);} // tgen

static void Test_S3755C2()
{
  extern Class_Descriptor cd_S3755C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3755C2, buf);
    S3755C2 *dp, &lv = *(dp=new (buf) S3755C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3755C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3755C2)");
    check_base_class_offset(lv, (S1679C4_nt*), 0, "S3755C2");
    test_class_info(&lv, &cd_S3755C2);
    dp->~S3755C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3755C2(Test_S3755C2, "S3755C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3755C2C1Ev();
extern void _ZN7S3755C2D1Ev();
Name_Map name_map_S3755C2[] = {
  NSPAIR(_ZN7S3755C2C1Ev),
  NSPAIR(_ZN7S3755C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
static Base_Class bases_S3755C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3755C2[];
extern void _ZN7S3755C2D1Ev();
extern void _ZN7S3755C2D0Ev();
extern void _ZN7S3755C22v8Ev();
extern void _ZN7S3755C22v9Ev();
extern void _ZN7S3755C23v10Ev();
extern void _ZN7S3755C23v11Ev();
extern void _ZN7S3755C23v12Ev();
extern void _ZN7S3755C23v13Ev();
extern void _ZN7S3755C23v14Ev();
extern void _ZN7S3755C23v15Ev();
extern void _ZN7S3755C23v16Ev();
extern void _ZN7S3755C23v17Ev();
extern void _ZN7S3755C23v18Ev();
extern void _ZN7S3755C23v19Ev();
static  VTBL_ENTRY vtc_S3755C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3755C2[0]),
  (VTBL_ENTRY)&_ZN7S3755C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3755C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3755C22v8Ev,
  (VTBL_ENTRY)&_ZN7S3755C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3755C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3755C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3755C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3755C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3755C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3755C23v15Ev,
  (VTBL_ENTRY)&_ZN7S3755C23v16Ev,
  (VTBL_ENTRY)&_ZN7S3755C23v17Ev,
  (VTBL_ENTRY)&_ZN7S3755C23v18Ev,
  (VTBL_ENTRY)&_ZN7S3755C23v19Ev,
};
extern VTBL_ENTRY _ZTI7S3755C2[];
extern  VTBL_ENTRY _ZTV7S3755C2[];
Class_Descriptor cd_S3755C2 = {  "S3755C2", // class name
  bases_S3755C2, 1,
  &(vtc_S3755C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3755C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3755C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3755C1  : S3755C2 {
  ::S3765C5_nt s3755c1f0;
  void *s3755c1f1;
  ::S5266C36 s3755c1f2;
  ::S1679C8_nt s3755c1f3;
  virtual  ~S3755C1(); // _ZN7S3755C1D1Ev
  virtual void  v1(); // _ZN7S3755C12v1Ev
  virtual void  v2(); // _ZN7S3755C12v2Ev
  virtual void  v3(); // _ZN7S3755C12v3Ev
  virtual void  v4(); // _ZN7S3755C12v4Ev
  virtual void  v5(); // _ZN7S3755C12v5Ev
  virtual void  v6(); // _ZN7S3755C12v6Ev
  virtual void  v7(); // _ZN7S3755C12v7Ev
  S3755C1(); // tgen
};
//SIG(1 S3755C1) C1{ BC2{ BC3{ vd m Fi} v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19} vd v1 v2 v3 v4 v5 v6 v7 FC4{ m Fp[2]} Fp FC5{ m Fp Fi[2] FC6{ m}} FC7{ m FC8{ m Fp Fi[2] FC6} Fp[2]}}


 S3755C1 ::~S3755C1(){ note_dtor("S3755C1", this);}
void  S3755C1 ::v1(){vfunc_called(this, "_ZN7S3755C12v1Ev");}
void  S3755C1 ::v2(){vfunc_called(this, "_ZN7S3755C12v2Ev");}
void  S3755C1 ::v3(){vfunc_called(this, "_ZN7S3755C12v3Ev");}
void  S3755C1 ::v4(){vfunc_called(this, "_ZN7S3755C12v4Ev");}
void  S3755C1 ::v5(){vfunc_called(this, "_ZN7S3755C12v5Ev");}
void  S3755C1 ::v6(){vfunc_called(this, "_ZN7S3755C12v6Ev");}
void  S3755C1 ::v7(){vfunc_called(this, "_ZN7S3755C12v7Ev");}
S3755C1 ::S3755C1(){ note_ctor("S3755C1", this);} // tgen

static void Test_S3755C1()
{
  extern Class_Descriptor cd_S3755C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,16)];
    init_test(&cd_S3755C1, buf);
    S3755C1 *dp, &lv = *(dp=new (buf) S3755C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,60), "sizeof(S3755C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3755C1)");
    check_base_class_offset(lv, (S1679C4_nt*)(S3755C2*), 0, "S3755C1");
    check_base_class_offset(lv, (S3755C2*), 0, "S3755C1");
    check_field_offset(lv, s3755c1f0, ABISELECT(16,8), "S3755C1.s3755c1f0");
    check_field_offset(lv, s3755c1f1, ABISELECT(32,16), "S3755C1.s3755c1f1");
    check_field_offset(lv, s3755c1f2, ABISELECT(40,20), "S3755C1.s3755c1f2");
    check_field_offset(lv, s3755c1f3, ABISELECT(64,36), "S3755C1.s3755c1f3");
    test_class_info(&lv, &cd_S3755C1);
    dp->~S3755C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3755C1(Test_S3755C1, "S3755C1", ABISELECT(104,60));

#else // __cplusplus

extern void _ZN7S3755C1C1Ev();
extern void _ZN7S3755C1D1Ev();
Name_Map name_map_S3755C1[] = {
  NSPAIR(_ZN7S3755C1C1Ev),
  NSPAIR(_ZN7S3755C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
extern Class_Descriptor cd_S3755C2;
extern VTBL_ENTRY _ZTI7S3755C2[];
extern  VTBL_ENTRY _ZTV7S3755C2[];
static Base_Class bases_S3755C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3755C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3755C1[];
extern void _ZN7S3755C1D1Ev();
extern void _ZN7S3755C1D0Ev();
extern void _ZN7S3755C22v8Ev();
extern void _ZN7S3755C22v9Ev();
extern void _ZN7S3755C23v10Ev();
extern void _ZN7S3755C23v11Ev();
extern void _ZN7S3755C23v12Ev();
extern void _ZN7S3755C23v13Ev();
extern void _ZN7S3755C23v14Ev();
extern void _ZN7S3755C23v15Ev();
extern void _ZN7S3755C23v16Ev();
extern void _ZN7S3755C23v17Ev();
extern void _ZN7S3755C23v18Ev();
extern void _ZN7S3755C23v19Ev();
extern void _ZN7S3755C12v1Ev();
extern void _ZN7S3755C12v2Ev();
extern void _ZN7S3755C12v3Ev();
extern void _ZN7S3755C12v4Ev();
extern void _ZN7S3755C12v5Ev();
extern void _ZN7S3755C12v6Ev();
extern void _ZN7S3755C12v7Ev();
static  VTBL_ENTRY vtc_S3755C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3755C1[0]),
  (VTBL_ENTRY)&_ZN7S3755C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3755C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3755C22v8Ev,
  (VTBL_ENTRY)&_ZN7S3755C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3755C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3755C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3755C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3755C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3755C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3755C23v15Ev,
  (VTBL_ENTRY)&_ZN7S3755C23v16Ev,
  (VTBL_ENTRY)&_ZN7S3755C23v17Ev,
  (VTBL_ENTRY)&_ZN7S3755C23v18Ev,
  (VTBL_ENTRY)&_ZN7S3755C23v19Ev,
  (VTBL_ENTRY)&_ZN7S3755C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3755C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3755C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3755C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3755C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3755C12v6Ev,
  (VTBL_ENTRY)&_ZN7S3755C12v7Ev,
};
extern VTBL_ENTRY _ZTI7S3755C1[];
extern  VTBL_ENTRY _ZTV7S3755C1[];
Class_Descriptor cd_S3755C1 = {  "S3755C1", // class name
  bases_S3755C1, 2,
  &(vtc_S3755C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(104,60), // object size
  NSPAIRA(_ZTI7S3755C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3755C1),23, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3760C2  : S1679C4_nt {
  virtual void  v8(); // _ZN7S3760C22v8Ev
  virtual void  v9(); // _ZN7S3760C22v9Ev
  virtual void  v10(); // _ZN7S3760C23v10Ev
  virtual void  v11(); // _ZN7S3760C23v11Ev
  virtual void  v12(); // _ZN7S3760C23v12Ev
  virtual void  v13(); // _ZN7S3760C23v13Ev
  virtual void  v14(); // _ZN7S3760C23v14Ev
  virtual void  v15(); // _ZN7S3760C23v15Ev
  virtual void  v16(); // _ZN7S3760C23v16Ev
  virtual void  v17(); // _ZN7S3760C23v17Ev
  virtual void  v18(); // _ZN7S3760C23v18Ev
  virtual void  v19(); // _ZN7S3760C23v19Ev
  ~S3760C2(); // tgen
  S3760C2(); // tgen
};
//SIG(-1 S3760C2) C1{ BC2{ vd m Fi} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


void  S3760C2 ::v8(){vfunc_called(this, "_ZN7S3760C22v8Ev");}
void  S3760C2 ::v9(){vfunc_called(this, "_ZN7S3760C22v9Ev");}
void  S3760C2 ::v10(){vfunc_called(this, "_ZN7S3760C23v10Ev");}
void  S3760C2 ::v11(){vfunc_called(this, "_ZN7S3760C23v11Ev");}
void  S3760C2 ::v12(){vfunc_called(this, "_ZN7S3760C23v12Ev");}
void  S3760C2 ::v13(){vfunc_called(this, "_ZN7S3760C23v13Ev");}
void  S3760C2 ::v14(){vfunc_called(this, "_ZN7S3760C23v14Ev");}
void  S3760C2 ::v15(){vfunc_called(this, "_ZN7S3760C23v15Ev");}
void  S3760C2 ::v16(){vfunc_called(this, "_ZN7S3760C23v16Ev");}
void  S3760C2 ::v17(){vfunc_called(this, "_ZN7S3760C23v17Ev");}
void  S3760C2 ::v18(){vfunc_called(this, "_ZN7S3760C23v18Ev");}
void  S3760C2 ::v19(){vfunc_called(this, "_ZN7S3760C23v19Ev");}
S3760C2 ::~S3760C2(){ note_dtor("S3760C2", this);} // tgen
S3760C2 ::S3760C2(){ note_ctor("S3760C2", this);} // tgen

static void Test_S3760C2()
{
  extern Class_Descriptor cd_S3760C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3760C2, buf);
    S3760C2 *dp, &lv = *(dp=new (buf) S3760C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3760C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3760C2)");
    check_base_class_offset(lv, (S1679C4_nt*), 0, "S3760C2");
    test_class_info(&lv, &cd_S3760C2);
    dp->~S3760C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3760C2(Test_S3760C2, "S3760C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3760C2C1Ev();
extern void _ZN7S3760C2D1Ev();
Name_Map name_map_S3760C2[] = {
  NSPAIR(_ZN7S3760C2C1Ev),
  NSPAIR(_ZN7S3760C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
static Base_Class bases_S3760C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3760C2[];
extern void _ZN7S3760C2D1Ev();
extern void _ZN7S3760C2D0Ev();
extern void _ZN7S3760C22v8Ev();
extern void _ZN7S3760C22v9Ev();
extern void _ZN7S3760C23v10Ev();
extern void _ZN7S3760C23v11Ev();
extern void _ZN7S3760C23v12Ev();
extern void _ZN7S3760C23v13Ev();
extern void _ZN7S3760C23v14Ev();
extern void _ZN7S3760C23v15Ev();
extern void _ZN7S3760C23v16Ev();
extern void _ZN7S3760C23v17Ev();
extern void _ZN7S3760C23v18Ev();
extern void _ZN7S3760C23v19Ev();
static  VTBL_ENTRY vtc_S3760C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3760C2[0]),
  (VTBL_ENTRY)&_ZN7S3760C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3760C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3760C22v8Ev,
  (VTBL_ENTRY)&_ZN7S3760C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3760C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3760C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3760C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3760C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3760C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3760C23v15Ev,
  (VTBL_ENTRY)&_ZN7S3760C23v16Ev,
  (VTBL_ENTRY)&_ZN7S3760C23v17Ev,
  (VTBL_ENTRY)&_ZN7S3760C23v18Ev,
  (VTBL_ENTRY)&_ZN7S3760C23v19Ev,
};
extern VTBL_ENTRY _ZTI7S3760C2[];
extern  VTBL_ENTRY _ZTV7S3760C2[];
Class_Descriptor cd_S3760C2 = {  "S3760C2", // class name
  bases_S3760C2, 1,
  &(vtc_S3760C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3760C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3760C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3760C8  {
  virtual  ~S3760C8(); // _ZN7S3760C8D1Ev
  virtual void  v22(); // _ZN7S3760C83v22Ev
  virtual void  v23(); // _ZN7S3760C83v23Ev
  S3760C8(); // tgen
};
//SIG(-1 S3760C8) C1{ vd v1 v2}


 S3760C8 ::~S3760C8(){ note_dtor("S3760C8", this);}
void  S3760C8 ::v22(){vfunc_called(this, "_ZN7S3760C83v22Ev");}
void  S3760C8 ::v23(){vfunc_called(this, "_ZN7S3760C83v23Ev");}
S3760C8 ::S3760C8(){ note_ctor("S3760C8", this);} // tgen

static void Test_S3760C8()
{
  extern Class_Descriptor cd_S3760C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3760C8, buf);
    S3760C8 *dp, &lv = *(dp=new (buf) S3760C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3760C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3760C8)");
    test_class_info(&lv, &cd_S3760C8);
    dp->~S3760C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3760C8(Test_S3760C8, "S3760C8", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3760C8C1Ev();
extern void _ZN7S3760C8D1Ev();
Name_Map name_map_S3760C8[] = {
  NSPAIR(_ZN7S3760C8C1Ev),
  NSPAIR(_ZN7S3760C8D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3760C8[];
extern void _ZN7S3760C8D1Ev();
extern void _ZN7S3760C8D0Ev();
extern void _ZN7S3760C83v22Ev();
extern void _ZN7S3760C83v23Ev();
static  VTBL_ENTRY vtc_S3760C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3760C8[0]),
  (VTBL_ENTRY)&_ZN7S3760C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3760C8D0Ev,
  (VTBL_ENTRY)&_ZN7S3760C83v22Ev,
  (VTBL_ENTRY)&_ZN7S3760C83v23Ev,
};
extern VTBL_ENTRY _ZTI7S3760C8[];
extern  VTBL_ENTRY _ZTV7S3760C8[];
Class_Descriptor cd_S3760C8 = {  "S3760C8", // class name
  0,0,//no base classes
  &(vtc_S3760C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3760C8),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3760C8),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3760C5_nt  : S5266C36 , S3760C8 {
  virtual  ~S3760C5_nt(); // _ZN10S3760C5_ntD1Ev
  virtual void  v20(); // _ZN10S3760C5_nt3v20Ev
  virtual void  v21(); // _ZN10S3760C5_nt3v21Ev
  S3760C5_nt(); // tgen
};
//SIG(-1 S3760C5_nt) C1{ BC2{ m Fp Fi[2] FC3{ m}} BC4{ vd v3 v4} vd v1 v2}


 S3760C5_nt ::~S3760C5_nt(){ note_dtor("S3760C5_nt", this);}
void  S3760C5_nt ::v20(){vfunc_called(this, "_ZN10S3760C5_nt3v20Ev");}
void  S3760C5_nt ::v21(){vfunc_called(this, "_ZN10S3760C5_nt3v21Ev");}
S3760C5_nt ::S3760C5_nt(){ note_ctor("S3760C5_nt", this);} // tgen

//skip512 S3760C5_nt

#else // __cplusplus

extern void _ZN10S3760C5_ntC1Ev();
extern void _ZN10S3760C5_ntD1Ev();
Name_Map name_map_S3760C5_nt[] = {
  NSPAIR(_ZN10S3760C5_ntC1Ev),
  NSPAIR(_ZN10S3760C5_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5266C36;
extern VTBL_ENTRY _ZTI8S5266C36[];
extern Class_Descriptor cd_S3760C8;
extern VTBL_ENTRY _ZTI7S3760C8[];
extern  VTBL_ENTRY _ZTV7S3760C8[];
static Base_Class bases_S3760C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C36,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3760C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S3760C5_nt[];
extern void _ZN10S3760C5_ntD1Ev();
extern void _ZN10S3760C5_ntD0Ev();
extern void _ZN7S3760C83v22Ev();
extern void _ZN7S3760C83v23Ev();
extern void _ZN10S3760C5_nt3v20Ev();
extern void _ZN10S3760C5_nt3v21Ev();
static  VTBL_ENTRY vtc_S3760C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3760C5_nt[0]),
  (VTBL_ENTRY)&_ZN10S3760C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S3760C5_ntD0Ev,
  (VTBL_ENTRY)&_ZN7S3760C83v22Ev,
  (VTBL_ENTRY)&_ZN7S3760C83v23Ev,
  (VTBL_ENTRY)&_ZN10S3760C5_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S3760C5_nt3v21Ev,
};
extern VTBL_ENTRY _ZTI10S3760C5_nt[];
VTBL_ENTRY *P__ZTI10S3760C5_nt = _ZTI10S3760C5_nt; 
extern  VTBL_ENTRY _ZTV10S3760C5_nt[];
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3760C1  : S3760C2 {
  int s3760c1f0;
  ::S3765C5_nt s3760c1f1;
  ::S3760C5_nt s3760c1f2;
  void *s3760c1f3;
  virtual  ~S3760C1(); // _ZN7S3760C1D1Ev
  virtual void  v1(); // _ZN7S3760C12v1Ev
  virtual void  v2(); // _ZN7S3760C12v2Ev
  virtual void  v3(); // _ZN7S3760C12v3Ev
  virtual void  v4(); // _ZN7S3760C12v4Ev
  virtual void  v5(); // _ZN7S3760C12v5Ev
  virtual void  v6(); // _ZN7S3760C12v6Ev
  virtual void  v7(); // _ZN7S3760C12v7Ev
  S3760C1(); // tgen
};
//SIG(1 S3760C1) C1{ BC2{ BC3{ vd m Fi} v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19} vd v1 v2 v3 v4 v5 v6 v7 Fi FC4{ m Fp[2]} FC5{ BC6{ m Fp Fi[2] FC7{ m}} BC8{ vd v22 v23} vd v20 v21} Fp}


 S3760C1 ::~S3760C1(){ note_dtor("S3760C1", this);}
void  S3760C1 ::v1(){vfunc_called(this, "_ZN7S3760C12v1Ev");}
void  S3760C1 ::v2(){vfunc_called(this, "_ZN7S3760C12v2Ev");}
void  S3760C1 ::v3(){vfunc_called(this, "_ZN7S3760C12v3Ev");}
void  S3760C1 ::v4(){vfunc_called(this, "_ZN7S3760C12v4Ev");}
void  S3760C1 ::v5(){vfunc_called(this, "_ZN7S3760C12v5Ev");}
void  S3760C1 ::v6(){vfunc_called(this, "_ZN7S3760C12v6Ev");}
void  S3760C1 ::v7(){vfunc_called(this, "_ZN7S3760C12v7Ev");}
S3760C1 ::S3760C1(){ note_ctor("S3760C1", this);} // tgen

static void Test_S3760C1()
{
  extern Class_Descriptor cd_S3760C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,12)];
    init_test(&cd_S3760C1, buf);
    S3760C1 *dp, &lv = *(dp=new (buf) S3760C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S3760C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3760C1)");
    check_base_class_offset(lv, (S1679C4_nt*)(S3760C2*), 0, "S3760C1");
    check_base_class_offset(lv, (S3760C2*), 0, "S3760C1");
    check_field_offset(lv, s3760c1f0, ABISELECT(12,8), "S3760C1.s3760c1f0");
    check_field_offset(lv, s3760c1f1, ABISELECT(16,12), "S3760C1.s3760c1f1");
    check_field_offset(lv, s3760c1f2, ABISELECT(32,20), "S3760C1.s3760c1f2");
    check_field_offset(lv, s3760c1f3, ABISELECT(64,40), "S3760C1.s3760c1f3");
    test_class_info(&lv, &cd_S3760C1);
    dp->~S3760C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3760C1(Test_S3760C1, "S3760C1", ABISELECT(72,44));

#else // __cplusplus

extern void _ZN7S3760C1C1Ev();
extern void _ZN7S3760C1D1Ev();
Name_Map name_map_S3760C1[] = {
  NSPAIR(_ZN7S3760C1C1Ev),
  NSPAIR(_ZN7S3760C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
extern Class_Descriptor cd_S3760C2;
extern VTBL_ENTRY _ZTI7S3760C2[];
extern  VTBL_ENTRY _ZTV7S3760C2[];
static Base_Class bases_S3760C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3760C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3760C1[];
extern void _ZN7S3760C1D1Ev();
extern void _ZN7S3760C1D0Ev();
extern void _ZN7S3760C22v8Ev();
extern void _ZN7S3760C22v9Ev();
extern void _ZN7S3760C23v10Ev();
extern void _ZN7S3760C23v11Ev();
extern void _ZN7S3760C23v12Ev();
extern void _ZN7S3760C23v13Ev();
extern void _ZN7S3760C23v14Ev();
extern void _ZN7S3760C23v15Ev();
extern void _ZN7S3760C23v16Ev();
extern void _ZN7S3760C23v17Ev();
extern void _ZN7S3760C23v18Ev();
extern void _ZN7S3760C23v19Ev();
extern void _ZN7S3760C12v1Ev();
extern void _ZN7S3760C12v2Ev();
extern void _ZN7S3760C12v3Ev();
extern void _ZN7S3760C12v4Ev();
extern void _ZN7S3760C12v5Ev();
extern void _ZN7S3760C12v6Ev();
extern void _ZN7S3760C12v7Ev();
static  VTBL_ENTRY vtc_S3760C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3760C1[0]),
  (VTBL_ENTRY)&_ZN7S3760C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3760C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3760C22v8Ev,
  (VTBL_ENTRY)&_ZN7S3760C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3760C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3760C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3760C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3760C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3760C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3760C23v15Ev,
  (VTBL_ENTRY)&_ZN7S3760C23v16Ev,
  (VTBL_ENTRY)&_ZN7S3760C23v17Ev,
  (VTBL_ENTRY)&_ZN7S3760C23v18Ev,
  (VTBL_ENTRY)&_ZN7S3760C23v19Ev,
  (VTBL_ENTRY)&_ZN7S3760C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3760C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3760C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3760C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3760C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3760C12v6Ev,
  (VTBL_ENTRY)&_ZN7S3760C12v7Ev,
};
extern VTBL_ENTRY _ZTI7S3760C1[];
extern  VTBL_ENTRY _ZTV7S3760C1[];
Class_Descriptor cd_S3760C1 = {  "S3760C1", // class name
  bases_S3760C1, 2,
  &(vtc_S3760C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,44), // object size
  NSPAIRA(_ZTI7S3760C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3760C1),23, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19595C5  : virtual S19905C19 {
  long double s19595c5f0;
  char s19595c5f1;
  short s19595c5f2[4];
  ~S19595C5(); // tgen
  S19595C5(); // tgen
};
//SIG(-1 S19595C5) C1{ VBC2{ vd m} FD Fc Fs[4]}


S19595C5 ::~S19595C5(){ note_dtor("S19595C5", this);} // tgen
S19595C5 ::S19595C5(){ note_ctor("S19595C5", this);} // tgen

static void Test_S19595C5()
{
  extern Class_Descriptor cd_S19595C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,8)];
    init_test(&cd_S19595C5, buf);
    S19595C5 *dp, &lv = *(dp=new (buf) S19595C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S19595C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19595C5)");
    check_base_class_offset(lv, (S19905C19*), 0, "S19595C5");
    check_field_offset(lv, s19595c5f0, ABISELECT(16,4), "S19595C5.s19595c5f0");
    check_field_offset(lv, s19595c5f1, ABISELECT(32,16), "S19595C5.s19595c5f1");
    check_field_offset(lv, s19595c5f2, ABISELECT(34,18), "S19595C5.s19595c5f2");
    test_class_info(&lv, &cd_S19595C5);
    dp->~S19595C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19595C5(Test_S19595C5, "S19595C5", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN8S19595C5C1Ev();
extern void _ZN8S19595C5D1Ev();
Name_Map name_map_S19595C5[] = {
  NSPAIR(_ZN8S19595C5C1Ev),
  NSPAIR(_ZN8S19595C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
static Base_Class bases_S19595C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19905C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19595C5[];
extern void _ZN8S19595C5D1Ev();
extern void _ZN8S19595C5D0Ev();
static  VTBL_ENTRY vtc_S19595C5[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19595C5[0]),
  (VTBL_ENTRY)&_ZN8S19595C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19595C5D0Ev,
};
extern VTBL_ENTRY _ZTV8S19595C5[];
static  VTT_ENTRY vtt_S19595C5[] = {
  {&(_ZTV8S19595C5[4]),  4,6},
  {&(_ZTV8S19595C5[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S19595C5[];
extern  VTBL_ENTRY _ZTV8S19595C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19595C5[];
Class_Descriptor cd_S19595C5 = {  "S19595C5", // class name
  bases_S19595C5, 1,
  &(vtc_S19595C5[0]), // expected_vtbl_contents
  &(vtt_S19595C5[0]), // expected_vtt_contents
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI8S19595C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19595C5),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19595C5),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19595C10  : virtual S19905C19 , virtual S19595C5 {
  int s19595c10f0;
  virtual  ~S19595C10(); // _ZN9S19595C10D2Ev
  S19595C10(); // tgen
};
//SIG(-1 S19595C10) C1{ VBC2{ vd m} VBC3{ VBC2 FD Fc Fs[4]} vd Fi}


 S19595C10 ::~S19595C10(){ note_dtor("S19595C10", this);}
S19595C10 ::S19595C10(){ note_ctor("S19595C10", this);} // tgen

static void Test_S19595C10()
{
  extern Class_Descriptor cd_S19595C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,10)];
    init_test(&cd_S19595C10, buf);
    S19595C10 *dp, &lv = *(dp=new (buf) S19595C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S19595C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19595C10)");
    check_base_class_offset(lv, (S19905C19*), 0, "S19595C10");
    check_base_class_offset(lv, (S19905C19*)(S19595C5*), 0, "S19595C10");
    check_base_class_offset(lv, (S19595C5*), ABISELECT(16,8), "S19595C10");
    check_field_offset(lv, s19595c10f0, ABISELECT(8,4), "S19595C10.s19595c10f0");
    test_class_info(&lv, &cd_S19595C10);
    dp->~S19595C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19595C10(Test_S19595C10, "S19595C10", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN9S19595C10C1Ev();
extern void _ZN9S19595C10D2Ev();
Name_Map name_map_S19595C10[] = {
  NSPAIR(_ZN9S19595C10C1Ev),
  NSPAIR(_ZN9S19595C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S19595C5;
extern VTBL_ENTRY _ZTI8S19595C5[];
extern  VTBL_ENTRY _ZTV8S19595C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19595C5[];
static Base_Class bases_S19595C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19905C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19595C5,    ABISELECT(16,8), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19595C10[];
extern void _ZN9S19595C10D1Ev();
extern void _ZN9S19595C10D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev)();
extern void ABISELECT(_ZThn16_N9S19595C10D1Ev,_ZThn8_N9S19595C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev)();
extern void ABISELECT(_ZThn16_N9S19595C10D0Ev,_ZThn8_N9S19595C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19595C10[] = {
  ABISELECT(16,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19595C10[0]),
  (VTBL_ENTRY)&_ZN9S19595C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19595C10D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19595C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev),
};
extern VTBL_ENTRY _ZTV9S19595C10[];
extern void ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev)();
extern void _ZN8S19595C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev)();
extern void _ZN8S19595C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C5__9S19595C10[] = {
  ABISELECT(-16,-8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19595C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S19595C5__9S19595C10[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19595C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev),
};
static  VTT_ENTRY vtt_S19595C10[] = {
  {&(_ZTV9S19595C10[5]),  5,13},
  {&(_ZTV9S19595C10[5]),  5,13},
  {&(_ZTV9S19595C10[11]),  11,13},
  {&(_tg__ZTV8S19595C5__9S19595C10[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S19595C5__9S19595C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19595C10[];
extern  VTBL_ENTRY _ZTV9S19595C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19595C10[];
static VTBL_ENTRY alt_thunk_names105[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S19595C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S19595C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19595C10D0Ev,_ZThn8_N9S19595C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19595C10D1Ev,_ZThn8_N9S19595C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19595C10 = {  "S19595C10", // class name
  bases_S19595C10, 2,
  &(vtc_S19595C10[0]), // expected_vtbl_contents
  &(vtt_S19595C10[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI9S19595C10),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19595C10),13, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19595C10),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names105,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19595C9  : virtual S19905C19 , S19595C10 , S17777C6_nt {
  short s19595c9f0;
  __tsi64 s19595c9f1;
  void *s19595c9f2;
  __tsi64 s19595c9f3;
  virtual  ~S19595C9(); // _ZN8S19595C9D2Ev
  S19595C9(); // tgen
};
//SIG(-1 S19595C9) C1{ VBC2{ vd m} BC3{ VBC2 VBC4{ VBC2 FD Fc Fs[4]} vd Fi} BC5{ m Fp} vd Fs FL Fp FL}


 S19595C9 ::~S19595C9(){ note_dtor("S19595C9", this);}
S19595C9 ::S19595C9(){ note_ctor("S19595C9", this);} // tgen

static void Test_S19595C9()
{
  extern Class_Descriptor cd_S19595C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(8,17)];
    init_test(&cd_S19595C9, buf);
    S19595C9 *dp, &lv = *(dp=new (buf) S19595C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,64), "sizeof(S19595C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19595C9)");
    check_base_class_offset(lv, (S19905C19*), 0, "S19595C9");
    check_base_class_offset(lv, (S19905C19*)(S19595C10*), 0, "S19595C9");
    check_base_class_offset(lv, (S19905C19*)(S19595C5*), 0, "S19595C9");
    check_base_class_offset(lv, (S19595C5*)(S19595C10*), ABISELECT(64,36), "S19595C9");
    check_base_class_offset(lv, (S19595C10*), 0, "S19595C9");
    check_base_class_offset(lv, (S17777C6_nt*), ABISELECT(16,8), "S19595C9");
    check_field_offset(lv, s19595c9f0, ABISELECT(24,12), "S19595C9.s19595c9f0");
    check_field_offset(lv, s19595c9f1, ABISELECT(32,16), "S19595C9.s19595c9f1");
    check_field_offset(lv, s19595c9f2, ABISELECT(40,24), "S19595C9.s19595c9f2");
    check_field_offset(lv, s19595c9f3, ABISELECT(48,28), "S19595C9.s19595c9f3");
    test_class_info(&lv, &cd_S19595C9);
    dp->~S19595C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19595C9(Test_S19595C9, "S19595C9", ABISELECT(112,64));

#else // __cplusplus

extern void _ZN8S19595C9C1Ev();
extern void _ZN8S19595C9D2Ev();
Name_Map name_map_S19595C9[] = {
  NSPAIR(_ZN8S19595C9C1Ev),
  NSPAIR(_ZN8S19595C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S19595C5;
extern VTBL_ENTRY _ZTI8S19595C5[];
extern  VTBL_ENTRY _ZTV8S19595C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19595C5[];
extern Class_Descriptor cd_S19595C10;
extern VTBL_ENTRY _ZTI9S19595C10[];
extern  VTBL_ENTRY _ZTV9S19595C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19595C10[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
static Base_Class bases_S19595C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19905C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19595C5,    ABISELECT(64,36), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19595C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S17777C6_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19595C9[];
extern void _ZN8S19595C9D1Ev();
extern void _ZN8S19595C9D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev)();
extern void ABISELECT(_ZThn64_N8S19595C9D1Ev,_ZThn36_N8S19595C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev)();
extern void ABISELECT(_ZThn64_N8S19595C9D0Ev,_ZThn36_N8S19595C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19595C9[] = {
  ABISELECT(64,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19595C9[0]),
  (VTBL_ENTRY)&_ZN8S19595C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19595C9D0Ev,
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19595C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S19595C9[];
extern void ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev)();
extern void _ZN9S19595C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev)();
extern void _ZN9S19595C10D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19595C10__8S19595C9[] = {
  ABISELECT(64,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19595C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev)();
extern void ABISELECT(_ZThn64_N9S19595C10D1Ev,_ZThn36_N9S19595C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev)();
extern void ABISELECT(_ZThn64_N9S19595C10D0Ev,_ZThn36_N9S19595C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C5__9S19595C10__8S19595C9[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19595C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev)();
extern void _ZN8S19595C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev)();
extern void _ZN8S19595C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C5__8S19595C9[] = {
  ABISELECT(-64,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19595C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S19595C5__8S19595C9[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S19595C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev),
};
static  VTT_ENTRY vtt_S19595C9[] = {
  {&(_ZTV8S19595C9[5]),  5,13},
  {&(_tg__ZTV9S19595C10__8S19595C9[5]),  5,7},
  {&(_tg__ZTV9S19595C10__8S19595C9[5]),  5,7},
  {&(_tg__ZTV8S19595C5__9S19595C10__8S19595C9[4]),  4,6},
  {&(_ZTV8S19595C9[5]),  5,13},
  {&(_ZTV8S19595C9[11]),  11,13},
  {&(_tg__ZTV8S19595C5__8S19595C9[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S19595C5__8S19595C9[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19595C9[];
extern  VTBL_ENTRY _ZTV8S19595C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19595C9[];
static VTBL_ENTRY alt_thunk_names106[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S19595C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S19595C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19595C10D0Ev,_ZThn36_N9S19595C10D0Ev),
  (VTBL_ENTRY)_ZN9S19595C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19595C10D1Ev,_ZThn36_N9S19595C10D1Ev),
  (VTBL_ENTRY)_ZN9S19595C10D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19595C9D0Ev,_ZThn36_N8S19595C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19595C9D1Ev,_ZThn36_N8S19595C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19595C9 = {  "S19595C9", // class name
  bases_S19595C9, 4,
  &(vtc_S19595C9[0]), // expected_vtbl_contents
  &(vtt_S19595C9[0]), // expected_vtt_contents
  ABISELECT(112,64), // object size
  NSPAIRA(_ZTI8S19595C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19595C9),13, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19595C9),8, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names106,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19595C8  : virtual S19595C9 , S17777C6_nt , S19905C19 , S19595C5 {
  int s19595c8f0;
  virtual  ~S19595C8(); // _ZN8S19595C8D2Ev
  S19595C8(); // tgen
};
//SIG(-1 S19595C8) C1{ VBC2{ VBC3{ vd m} BC4{ VBC3 VBC5{ VBC3 FD Fc Fs[4]} vd Fi} BC6{ m Fp} vd Fs FL Fp FL} BC6 BC3 BC5 vd Fi}


 S19595C8 ::~S19595C8(){ note_dtor("S19595C8", this);}
S19595C8 ::S19595C8(){ note_ctor("S19595C8", this);} // tgen

static void Test_S19595C8()
{
  extern Class_Descriptor cd_S19595C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,27)];
    init_test(&cd_S19595C8, buf);
    S19595C8 *dp, &lv = *(dp=new (buf) S19595C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,104), "sizeof(S19595C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19595C8)");
    check_base_class_offset(lv, (S19905C19*)(S19595C9*), ABISELECT(64,40), "S19595C8");
    check_base_class_offset(lv, (S19905C19*)(S19595C10*)(S19595C9*), ABISELECT(64,40), "S19595C8");
    /*is_ambiguous_... S19595C8::S19595C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S19595C5*), ABISELECT(64,40), "S19595C8");
    /*is_ambiguous_... S19595C8::S19595C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S19595C5*), ABISELECT(64,40), "S19595C8");
    check_base_class_offset(lv, (S19595C5*)(S19595C10*)(S19595C9*), ABISELECT(128,76), "S19595C8");
    check_base_class_offset(lv, (S19595C10*)(S19595C9*), ABISELECT(64,40), "S19595C8");
    check_base_class_offset(lv, (S17777C6_nt*)(S19595C9*), ABISELECT(80,48), "S19595C8");
    check_base_class_offset(lv, (S19595C9*), ABISELECT(64,40), "S19595C8");
    /*is_ambiguous_... S19595C8::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*), ABISELECT(8,4), "S19595C8");
    /*is_ambiguous_... S19595C8::S19905C19 */ AMB_check_base_class_offset(lv, (S19905C19*), 0, "S19595C8");
    /*is_ambiguous_... S19595C8::S19595C5 */ AMB_check_base_class_offset(lv, (S19595C5*), ABISELECT(16,8), "S19595C8");
    check_field_offset(lv, s19595c8f0, ABISELECT(60,36), "S19595C8.s19595c8f0");
    test_class_info(&lv, &cd_S19595C8);
    dp->~S19595C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19595C8(Test_S19595C8, "S19595C8", ABISELECT(176,104));

#else // __cplusplus

extern void _ZN8S19595C8C1Ev();
extern void _ZN8S19595C8D2Ev();
Name_Map name_map_S19595C8[] = {
  NSPAIR(_ZN8S19595C8C1Ev),
  NSPAIR(_ZN8S19595C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S19595C5;
extern VTBL_ENTRY _ZTI8S19595C5[];
extern  VTBL_ENTRY _ZTV8S19595C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19595C5[];
extern Class_Descriptor cd_S19595C10;
extern VTBL_ENTRY _ZTI9S19595C10[];
extern  VTBL_ENTRY _ZTV9S19595C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19595C10[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19595C9;
extern VTBL_ENTRY _ZTI8S19595C9[];
extern  VTBL_ENTRY _ZTV8S19595C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19595C9[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S19595C5;
extern VTBL_ENTRY _ZTI8S19595C5[];
extern  VTBL_ENTRY _ZTV8S19595C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19595C5[];
static Base_Class bases_S19595C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19905C19,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19595C5,    ABISELECT(128,76), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19595C10,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19595C9,    ABISELECT(64,40), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S17777C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19905C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19595C5,    ABISELECT(16,8), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19595C8[];
extern void _ZN8S19595C8D1Ev();
extern void _ZN8S19595C8D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S19595C8D1Ev,_ZThn8_N8S19595C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S19595C8D0Ev,_ZThn8_N8S19595C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev)();
extern void ABISELECT(_ZThn64_N8S19595C8D1Ev,_ZThn40_N8S19595C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev)();
extern void ABISELECT(_ZThn64_N8S19595C8D0Ev,_ZThn40_N8S19595C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S19595C8D1Ev,_ZThn76_N8S19595C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S19595C8D0Ev,_ZThn76_N8S19595C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19595C8[] = {
  ABISELECT(128,76),
  ABISELECT(64,40),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19595C8[0]),
  (VTBL_ENTRY)&_ZN8S19595C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19595C8D0Ev,
  ABISELECT(48,32),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19595C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev),
  ABISELECT(64,36),
  0,
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19595C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S19595C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S19595C8[];
extern void ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev)();
extern void _ZN8S19595C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev)();
extern void _ZN8S19595C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C5__A__8S19595C8[] = {
  ABISELECT(48,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19595C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev)();
extern void ABISELECT(_ZThn48_N8S19595C5D1Ev,_ZThn32_N8S19595C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev)();
extern void ABISELECT(_ZThn48_N8S19595C5D0Ev,_ZThn32_N8S19595C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S19595C5__A__8S19595C8[] = {
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S19595C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev)();
extern void _ZN8S19595C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev)();
extern void _ZN8S19595C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C9__8S19595C8[] = {
  ABISELECT(64,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19595C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev)();
extern void _ZN9S19595C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev)();
extern void _ZN9S19595C10D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19595C108S19595C9__8S19595C8[] = {
  ABISELECT(64,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19595C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev)();
extern void ABISELECT(_ZThn64_N9S19595C10D1Ev,_ZThn36_N9S19595C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev)();
extern void ABISELECT(_ZThn64_N9S19595C10D0Ev,_ZThn36_N9S19595C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C5__9S19595C108S19595C9__8S19595C8[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19595C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev)();
extern void ABISELECT(_ZThn64_N8S19595C9D1Ev,_ZThn36_N8S19595C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev)();
extern void ABISELECT(_ZThn64_N8S19595C9D0Ev,_ZThn36_N8S19595C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C5__8S19595C9__8S19595C8[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19595C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev)();
extern void _ZN8S19595C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev)();
extern void _ZN8S19595C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C5__8S19595C8[] = {
  ABISELECT(-64,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19595C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S19595C5__8S19595C8[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S19595C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev),
};
static  VTT_ENTRY vtt_S19595C8[] = {
  {&(_ZTV8S19595C8[5]),  5,26},
  {&(_tg__ZTV8S19595C5__A__8S19595C8[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S19595C5__A__8S19595C8[3]),  3,5},
  {&(_ZTV8S19595C8[18]),  18,26},
  {&(_ZTV8S19595C8[18]),  18,26},
  {&(_ZTV8S19595C8[24]),  24,26},
  {&(_ZTV8S19595C8[11]),  11,26},
  {&(_tg__ZTV8S19595C9__8S19595C8[5]),  5,7},
  {&(_tg__ZTV9S19595C108S19595C9__8S19595C8[5]),  5,7},
  {&(_tg__ZTV9S19595C108S19595C9__8S19595C8[5]),  5,7},
  {&(_tg__ZTV8S19595C5__9S19595C108S19595C9__8S19595C8[4]),  4,6},
  {&(_tg__ZTV8S19595C9__8S19595C8[5]),  5,7},
  {&(_tg__ZTV8S19595C5__8S19595C9__8S19595C8[4]),  4,6},
  {&(_tg__ZTV8S19595C5__8S19595C8[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S19595C5__8S19595C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19595C8[];
extern  VTBL_ENTRY _ZTV8S19595C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19595C8[];
static VTBL_ENTRY alt_thunk_names107[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19595C10D0Ev,_ZThn36_N9S19595C10D0Ev),
  (VTBL_ENTRY)_ZN9S19595C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19595C10D1Ev,_ZThn36_N9S19595C10D1Ev),
  (VTBL_ENTRY)_ZN9S19595C10D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19595C9D0Ev,_ZThn36_N8S19595C9D0Ev),
  (VTBL_ENTRY)_ZN8S19595C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19595C9D1Ev,_ZThn36_N8S19595C9D1Ev),
  (VTBL_ENTRY)_ZN8S19595C9D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S19595C5D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19595C5D0Ev,_ZThn32_N8S19595C5D0Ev),
  (VTBL_ENTRY)_ZN8S19595C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S19595C5D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19595C5D1Ev,_ZThn32_N8S19595C5D1Ev),
  (VTBL_ENTRY)_ZN8S19595C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19595C8D0Ev,_ZThn76_N8S19595C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19595C8D0Ev,_ZThn40_N8S19595C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19595C8D0Ev,_ZThn8_N8S19595C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19595C8D1Ev,_ZThn76_N8S19595C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19595C8D1Ev,_ZThn40_N8S19595C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19595C8D1Ev,_ZThn8_N8S19595C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19595C8 = {  "S19595C8", // class name
  bases_S19595C8, 8,
  &(vtc_S19595C8[0]), // expected_vtbl_contents
  &(vtt_S19595C8[0]), // expected_vtt_contents
  ABISELECT(176,104), // object size
  NSPAIRA(_ZTI8S19595C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19595C8),26, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19595C8),15, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names107,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19595C6  : virtual S5266C29 , virtual S19595C8 , S19595C5 {
  short s19595c6f0;
  virtual  ~S19595C6(); // _ZN8S19595C6D2Ev
  S19595C6(); // tgen
};
//SIG(-1 S19595C6) C1{ VBC2{ m} VBC3{ VBC4{ VBC5{ vd m} BC6{ VBC5 VBC7{ VBC5 FD Fc Fs[4]} vd Fi} BC8{ m Fp} vd Fs FL Fp FL} BC8 BC5 BC7 vd Fi} BC7 vd Fs}


 S19595C6 ::~S19595C6(){ note_dtor("S19595C6", this);}
S19595C6 ::S19595C6(){ note_ctor("S19595C6", this);} // tgen

static void Test_S19595C6()
{
  extern Class_Descriptor cd_S19595C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(15,34)];
    init_test(&cd_S19595C6, buf);
    S19595C6 *dp, &lv = *(dp=new (buf) S19595C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,132), "sizeof(S19595C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19595C6)");
    check_base_class_offset(lv, (S5266C29*), 0, "S19595C6");
    check_base_class_offset(lv, (S19905C19*)(S19595C9*), ABISELECT(112,68), "S19595C6");
    check_base_class_offset(lv, (S19905C19*)(S19595C10*)(S19595C9*), ABISELECT(112,68), "S19595C6");
    /*is_ambiguous_... S19595C6::S19595C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S19595C5*), ABISELECT(112,68), "S19595C6");
    /*is_ambiguous_... S19595C8::S19595C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S19595C5*)(S19595C8*), ABISELECT(112,68), "S19595C6");
    /*is_ambiguous_... S19595C6::S19595C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S19595C5*), ABISELECT(112,68), "S19595C6");
    check_base_class_offset(lv, (S19595C5*)(S19595C10*)(S19595C9*), ABISELECT(176,104), "S19595C6");
    check_base_class_offset(lv, (S19595C10*)(S19595C9*), ABISELECT(112,68), "S19595C6");
    check_base_class_offset(lv, (S17777C6_nt*)(S19595C9*), ABISELECT(128,76), "S19595C6");
    check_base_class_offset(lv, (S19595C9*)(S19595C8*), ABISELECT(112,68), "S19595C6");
    /*is_ambiguous_... S19595C8::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S19595C8*), ABISELECT(56,32), "S19595C6");
    /*is_ambiguous_... S19595C8::S19905C19 */ AMB_check_base_class_offset(lv, (S19905C19*)(S19595C8*), ABISELECT(48,28), "S19595C6");
    /*is_ambiguous_... S19595C8::S19595C5 */ AMB_check_base_class_offset(lv, (S19595C5*)(S19595C8*), ABISELECT(64,36), "S19595C6");
    check_base_class_offset(lv, (S19595C8*), ABISELECT(48,28), "S19595C6");
    /*is_ambiguous_... S19595C6::S19595C5 */ AMB_check_base_class_offset(lv, (S19595C5*), 0, "S19595C6");
    check_field_offset(lv, s19595c6f0, ABISELECT(42,26), "S19595C6.s19595c6f0");
    test_class_info(&lv, &cd_S19595C6);
    dp->~S19595C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19595C6(Test_S19595C6, "S19595C6", ABISELECT(224,132));

#else // __cplusplus

extern void _ZN8S19595C6C1Ev();
extern void _ZN8S19595C6D2Ev();
Name_Map name_map_S19595C6[] = {
  NSPAIR(_ZN8S19595C6C1Ev),
  NSPAIR(_ZN8S19595C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S19595C5;
extern VTBL_ENTRY _ZTI8S19595C5[];
extern  VTBL_ENTRY _ZTV8S19595C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19595C5[];
extern Class_Descriptor cd_S19595C10;
extern VTBL_ENTRY _ZTI9S19595C10[];
extern  VTBL_ENTRY _ZTV9S19595C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19595C10[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19595C9;
extern VTBL_ENTRY _ZTI8S19595C9[];
extern  VTBL_ENTRY _ZTV8S19595C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19595C9[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S19595C5;
extern VTBL_ENTRY _ZTI8S19595C5[];
extern  VTBL_ENTRY _ZTV8S19595C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19595C5[];
extern Class_Descriptor cd_S19595C8;
extern VTBL_ENTRY _ZTI8S19595C8[];
extern  VTBL_ENTRY _ZTV8S19595C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19595C8[];
extern Class_Descriptor cd_S19595C5;
extern VTBL_ENTRY _ZTI8S19595C5[];
extern  VTBL_ENTRY _ZTV8S19595C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19595C5[];
static Base_Class bases_S19595C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19905C19,    ABISELECT(112,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19595C5,    ABISELECT(176,104), //bcp->offset
    31, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19595C10,    ABISELECT(112,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(128,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19595C9,    ABISELECT(112,68), //bcp->offset
    24, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S17777C6_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19905C19,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19595C5,    ABISELECT(64,36), //bcp->offset
    18, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19595C8,    ABISELECT(48,28), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19595C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19595C6[];
extern void ABISELECT(_ZTv0_n24_N8S19595C6D1Ev,_ZTv0_n12_N8S19595C6D1Ev)();
extern void _ZN8S19595C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C6D0Ev,_ZTv0_n12_N8S19595C6D0Ev)();
extern void _ZN8S19595C6D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19595C6D1Ev,_ZTv0_n24_N8S19595C6D1Ev)();
extern void ABISELECT(_ZThn48_N8S19595C6D1Ev,_ZThn28_N8S19595C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19595C6D0Ev,_ZTv0_n24_N8S19595C6D0Ev)();
extern void ABISELECT(_ZThn48_N8S19595C6D0Ev,_ZThn28_N8S19595C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C6D1Ev,_ZTv0_n12_N8S19595C6D1Ev)();
extern void ABISELECT(_ZThn64_N8S19595C6D1Ev,_ZThn36_N8S19595C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C6D0Ev,_ZTv0_n12_N8S19595C6D0Ev)();
extern void ABISELECT(_ZThn64_N8S19595C6D0Ev,_ZThn36_N8S19595C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C6D1Ev,_ZTv0_n12_N8S19595C6D1Ev)();
extern void ABISELECT(_ZThn112_N8S19595C6D1Ev,_ZThn68_N8S19595C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C6D0Ev,_ZTv0_n12_N8S19595C6D0Ev)();
extern void ABISELECT(_ZThn112_N8S19595C6D0Ev,_ZThn68_N8S19595C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C6D1Ev,_ZTv0_n12_N8S19595C6D1Ev)();
extern void ABISELECT(_ZThn176_N8S19595C6D1Ev,_ZThn104_N8S19595C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C6D0Ev,_ZTv0_n12_N8S19595C6D0Ev)();
extern void ABISELECT(_ZThn176_N8S19595C6D0Ev,_ZThn104_N8S19595C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19595C6[] = {
  ABISELECT(176,104),
  ABISELECT(112,68),
  ABISELECT(48,28),
  0,
  ABISELECT(112,68),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19595C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C6D1Ev,_ZTv0_n12_N8S19595C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C6D0Ev,_ZTv0_n12_N8S19595C6D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(128,76),
  ABISELECT(64,40),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19595C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19595C6D1Ev,_ZTv0_n24_N8S19595C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19595C6D0Ev,_ZTv0_n24_N8S19595C6D0Ev),
  ABISELECT(48,32),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19595C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C6D1Ev,_ZTv0_n12_N8S19595C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C6D0Ev,_ZTv0_n12_N8S19595C6D0Ev),
  ABISELECT(64,36),
  0,
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S19595C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C6D1Ev,_ZTv0_n12_N8S19595C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C6D0Ev,_ZTv0_n12_N8S19595C6D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI8S19595C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C6D1Ev,_ZTv0_n12_N8S19595C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C6D0Ev,_ZTv0_n12_N8S19595C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S19595C6[];
extern void ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev)();
extern void _ZN8S19595C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev)();
extern void _ZN8S19595C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C5__A__8S19595C6[] = {
  ABISELECT(112,68),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19595C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev)();
extern void ABISELECT(_ZThn112_N8S19595C5D1Ev,_ZThn68_N8S19595C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev)();
extern void ABISELECT(_ZThn112_N8S19595C5D0Ev,_ZThn68_N8S19595C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S19595C5__A__8S19595C6[] = {
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S19595C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev),
};
extern void _ZN8S19595C8D1Ev();
extern void _ZN8S19595C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19595C8__8S19595C6[] = {
  ABISELECT(128,76),
  ABISELECT(64,40),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19595C8[0]),
  (VTBL_ENTRY)&_ZN8S19595C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19595C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev)();
extern void _ZN8S19595C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev)();
extern void _ZN8S19595C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C58S19595C8__A1__8S19595C6[] = {
  ABISELECT(48,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19595C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev)();
extern void ABISELECT(_ZThn48_N8S19595C5D1Ev,_ZThn32_N8S19595C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev)();
extern void ABISELECT(_ZThn48_N8S19595C5D0Ev,_ZThn32_N8S19595C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S19595C58S19595C8__A1__8S19595C6[] = {
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S19595C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev)();
extern void ABISELECT(_ZThn64_N8S19595C8D1Ev,_ZThn40_N8S19595C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev)();
extern void ABISELECT(_ZThn64_N8S19595C8D0Ev,_ZThn40_N8S19595C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C9__8S19595C8__8S19595C6[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19595C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S19595C8D1Ev,_ZThn76_N8S19595C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S19595C8D0Ev,_ZThn76_N8S19595C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C5__8S19595C8__8S19595C6[] = {
  ABISELECT(-64,-36),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S19595C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S19595C8D1Ev,_ZThn8_N8S19595C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S19595C8D0Ev,_ZThn8_N8S19595C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C5__A__8S19595C8__8S19595C6[] = {
  ABISELECT(48,32),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19595C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev)();
extern void _ZN8S19595C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev)();
extern void _ZN8S19595C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C9__8S19595C6[] = {
  ABISELECT(64,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19595C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev)();
extern void _ZN9S19595C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev)();
extern void _ZN9S19595C10D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19595C108S19595C9__8S19595C6[] = {
  ABISELECT(64,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19595C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev)();
extern void ABISELECT(_ZThn64_N9S19595C10D1Ev,_ZThn36_N9S19595C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev)();
extern void ABISELECT(_ZThn64_N9S19595C10D0Ev,_ZThn36_N9S19595C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C5__9S19595C108S19595C9__8S19595C6[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19595C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev)();
extern void ABISELECT(_ZThn64_N8S19595C9D1Ev,_ZThn36_N8S19595C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev)();
extern void ABISELECT(_ZThn64_N8S19595C9D0Ev,_ZThn36_N8S19595C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C5__8S19595C9__8S19595C6[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19595C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev)();
extern void _ZN8S19595C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev)();
extern void _ZN8S19595C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C5__8S19595C6[] = {
  ABISELECT(-64,-36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19595C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S19595C5__8S19595C6[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S19595C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev),
};
static  VTT_ENTRY vtt_S19595C6[] = {
  {&(_ZTV8S19595C6[8]),  8,37},
  {&(_tg__ZTV8S19595C5__A__8S19595C6[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S19595C5__A__8S19595C6[3]),  3,5},
  {&(_ZTV8S19595C6[16]),  16,37},
  {&(_ZTV8S19595C6[29]),  29,37},
  {&(_ZTV8S19595C6[29]),  29,37},
  {&(_ZTV8S19595C6[35]),  35,37},
  {&(_ZTV8S19595C6[22]),  22,37},
  {&(_tg__ZTV8S19595C8__8S19595C6[5]),  5,7},
  {&(_tg__ZTV8S19595C58S19595C8__A1__8S19595C6[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S19595C58S19595C8__A1__8S19595C6[3]),  3,5},
  {&(_tg__ZTV8S19595C9__8S19595C8__8S19595C6[5]),  5,7},
  {&(_tg__ZTV8S19595C9__8S19595C8__8S19595C6[5]),  5,7},
  {&(_tg__ZTV8S19595C5__8S19595C8__8S19595C6[4]),  4,6},
  {&(_tg__ZTV8S19595C5__A__8S19595C8__8S19595C6[4]),  4,6},
  {&(_tg__ZTV8S19595C9__8S19595C6[5]),  5,7},
  {&(_tg__ZTV9S19595C108S19595C9__8S19595C6[5]),  5,7},
  {&(_tg__ZTV9S19595C108S19595C9__8S19595C6[5]),  5,7},
  {&(_tg__ZTV8S19595C5__9S19595C108S19595C9__8S19595C6[4]),  4,6},
  {&(_tg__ZTV8S19595C9__8S19595C6[5]),  5,7},
  {&(_tg__ZTV8S19595C5__8S19595C9__8S19595C6[4]),  4,6},
  {&(_tg__ZTV8S19595C5__8S19595C6[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S19595C5__8S19595C6[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19595C6[];
extern  VTBL_ENTRY _ZTV8S19595C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19595C6[];
static VTBL_ENTRY alt_thunk_names108[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19595C10D0Ev,_ZThn36_N9S19595C10D0Ev),
  (VTBL_ENTRY)_ZN9S19595C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19595C10D1Ev,_ZThn36_N9S19595C10D1Ev),
  (VTBL_ENTRY)_ZN9S19595C10D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19595C9D0Ev,_ZThn36_N8S19595C9D0Ev),
  (VTBL_ENTRY)_ZN8S19595C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19595C9D1Ev,_ZThn36_N8S19595C9D1Ev),
  (VTBL_ENTRY)_ZN8S19595C9D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19595C8D0Ev,_ZThn8_N8S19595C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19595C8D0Ev,_ZThn76_N8S19595C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19595C8D0Ev,_ZThn40_N8S19595C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19595C8D1Ev,_ZThn8_N8S19595C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19595C8D1Ev,_ZThn76_N8S19595C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19595C8D1Ev,_ZThn40_N8S19595C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S19595C5D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19595C5D0Ev,_ZThn32_N8S19595C5D0Ev),
  (VTBL_ENTRY)_ZN8S19595C5D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19595C5D0Ev,_ZThn68_N8S19595C5D0Ev),
  (VTBL_ENTRY)_ZN8S19595C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S19595C5D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19595C5D1Ev,_ZThn32_N8S19595C5D1Ev),
  (VTBL_ENTRY)_ZN8S19595C5D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19595C5D1Ev,_ZThn68_N8S19595C5D1Ev),
  (VTBL_ENTRY)_ZN8S19595C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19595C6D0Ev,_ZTv0_n24_N8S19595C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19595C6D0Ev,_ZThn28_N8S19595C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19595C6D1Ev,_ZTv0_n24_N8S19595C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19595C6D1Ev,_ZThn28_N8S19595C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C6D0Ev,_ZTv0_n12_N8S19595C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19595C6D0Ev,_ZThn104_N8S19595C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19595C6D0Ev,_ZThn68_N8S19595C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19595C6D0Ev,_ZThn36_N8S19595C6D0Ev),
  (VTBL_ENTRY)_ZN8S19595C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C6D1Ev,_ZTv0_n12_N8S19595C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19595C6D1Ev,_ZThn104_N8S19595C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19595C6D1Ev,_ZThn68_N8S19595C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19595C6D1Ev,_ZThn36_N8S19595C6D1Ev),
  (VTBL_ENTRY)_ZN8S19595C6D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19595C6 = {  "S19595C6", // class name
  bases_S19595C6, 11,
  &(vtc_S19595C6[0]), // expected_vtbl_contents
  &(vtt_S19595C6[0]), // expected_vtt_contents
  ABISELECT(224,132), // object size
  NSPAIRA(_ZTI8S19595C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19595C6),37, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19595C6),23, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names108,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19595C3  : virtual S19905C19 , S19595C5 , virtual S19595C6 , S19595C9 {
  void *s19595c3f0;
  ~S19595C3(); // tgen
  S19595C3(); // tgen
};
//SIG(-1 S19595C3) C1{ VBC2{ vd m} BC3{ VBC2 FD Fc Fs[4]} VBC4{ VBC5{ m} VBC6{ VBC7{ VBC2 BC8{ VBC2 VBC3 vd Fi} BC9{ m Fp} vd Fs FL Fp FL} BC9 BC2 BC3 vd Fi} BC3 vd Fs} BC7 Fp}


S19595C3 ::~S19595C3(){ note_dtor("S19595C3", this);} // tgen
S19595C3 ::S19595C3(){ note_ctor("S19595C3", this);} // tgen

static void Test_S19595C3()
{
  extern Class_Descriptor cd_S19595C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(22,51)];
    init_test(&cd_S19595C3, buf);
    S19595C3 *dp, &lv = *(dp=new (buf) S19595C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(336,200), "sizeof(S19595C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19595C3)");
    /*is_ambiguous_... S19595C3::S19905C19 */ AMB_check_base_class_offset(lv, (S19905C19*), 0, "S19595C3");
    /*is_ambiguous_... S19595C3::S19595C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S19595C5*), 0, "S19595C3");
    /*is_ambiguous_... S19595C3::S19595C9 */ AMB_check_base_class_offset(lv, (S19905C19*)(S19595C9*), 0, "S19595C3");
    /*is_ambiguous_... S19595C3::S19595C9 */ AMB_check_base_class_offset(lv, (S19905C19*)(S19595C10*)(S19595C9*), 0, "S19595C3");
    /*is_ambiguous_... S19595C3::S19595C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S19595C5*), 0, "S19595C3");
    /*is_ambiguous_... S19595C8::S19595C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S19595C5*)(S19595C8*), 0, "S19595C3");
    /*is_ambiguous_... S19595C6::S19595C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S19595C5*)(S19595C6*), 0, "S19595C3");
    /*is_ambiguous_... S19595C3::S19595C9 */ AMB_check_base_class_offset(lv, (S19905C19*)(S19595C9*), 0, "S19595C3");
    /*is_ambiguous_... S19595C3::S19595C9 */ AMB_check_base_class_offset(lv, (S19905C19*)(S19595C10*)(S19595C9*), 0, "S19595C3");
    /*is_ambiguous_... S19595C3::S19595C5 */ AMB_check_base_class_offset(lv, (S19595C5*), 0, "S19595C3");
    check_base_class_offset(lv, (S5266C29*)(S19595C6*), 0, "S19595C3");
    /*is_ambiguous_... S19595C3::S19595C9 */ AMB_check_base_class_offset(lv, (S19595C5*)(S19595C10*)(S19595C9*), ABISELECT(288,172), "S19595C3");
    /*is_ambiguous_... S19595C3::S19595C9 */ AMB_check_base_class_offset(lv, (S19595C5*)(S19595C10*)(S19595C9*), ABISELECT(288,172), "S19595C3");
    /*is_ambiguous_... S19595C3::S19595C9 */ AMB_check_base_class_offset(lv, (S19595C10*)(S19595C9*), ABISELECT(224,136), "S19595C3");
    /*is_ambiguous_... S19595C3::S19595C9 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S19595C9*), ABISELECT(240,144), "S19595C3");
    check_base_class_offset(lv, (S19595C9*)(S19595C8*), ABISELECT(224,136), "S19595C3");
    /*is_ambiguous_... S19595C8::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S19595C8*), ABISELECT(168,100), "S19595C3");
    /*is_ambiguous_... S19595C8::S19905C19 */ AMB_check_base_class_offset(lv, (S19905C19*)(S19595C8*), ABISELECT(160,96), "S19595C3");
    /*is_ambiguous_... S19595C8::S19595C5 */ AMB_check_base_class_offset(lv, (S19595C5*)(S19595C8*), ABISELECT(176,104), "S19595C3");
    check_base_class_offset(lv, (S19595C8*)(S19595C6*), ABISELECT(160,96), "S19595C3");
    /*is_ambiguous_... S19595C6::S19595C5 */ AMB_check_base_class_offset(lv, (S19595C5*)(S19595C6*), ABISELECT(112,68), "S19595C3");
    check_base_class_offset(lv, (S19595C6*), ABISELECT(112,68), "S19595C3");
    /*is_ambiguous_... S19595C3::S19595C9 */ AMB_check_base_class_offset(lv, (S19595C10*)(S19595C9*), ABISELECT(48,28), "S19595C3");
    /*is_ambiguous_... S19595C3::S19595C9 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S19595C9*), ABISELECT(64,36), "S19595C3");
    /*is_ambiguous_... S19595C3::S19595C9 */ AMB_check_base_class_offset(lv, (S19595C9*), ABISELECT(48,28), "S19595C3");
    check_field_offset(lv, s19595c3f0, ABISELECT(104,64), "S19595C3.s19595c3f0");
    test_class_info(&lv, &cd_S19595C3);
    dp->~S19595C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19595C3(Test_S19595C3, "S19595C3", ABISELECT(336,200));

#else // __cplusplus

extern void _ZN8S19595C3C1Ev();
extern void _ZN8S19595C3D1Ev();
Name_Map name_map_S19595C3[] = {
  NSPAIR(_ZN8S19595C3C1Ev),
  NSPAIR(_ZN8S19595C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S19595C5;
extern VTBL_ENTRY _ZTI8S19595C5[];
extern  VTBL_ENTRY _ZTV8S19595C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19595C5[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S19595C5;
extern VTBL_ENTRY _ZTI8S19595C5[];
extern  VTBL_ENTRY _ZTV8S19595C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19595C5[];
extern Class_Descriptor cd_S19595C10;
extern VTBL_ENTRY _ZTI9S19595C10[];
extern  VTBL_ENTRY _ZTV9S19595C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19595C10[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19595C9;
extern VTBL_ENTRY _ZTI8S19595C9[];
extern  VTBL_ENTRY _ZTV8S19595C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19595C9[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S19595C5;
extern VTBL_ENTRY _ZTI8S19595C5[];
extern  VTBL_ENTRY _ZTV8S19595C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19595C5[];
extern Class_Descriptor cd_S19595C8;
extern VTBL_ENTRY _ZTI8S19595C8[];
extern  VTBL_ENTRY _ZTV8S19595C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19595C8[];
extern Class_Descriptor cd_S19595C5;
extern VTBL_ENTRY _ZTI8S19595C5[];
extern  VTBL_ENTRY _ZTV8S19595C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19595C5[];
extern Class_Descriptor cd_S19595C6;
extern VTBL_ENTRY _ZTI8S19595C6[];
extern  VTBL_ENTRY _ZTV8S19595C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19595C6[];
extern Class_Descriptor cd_S19595C10;
extern VTBL_ENTRY _ZTI9S19595C10[];
extern  VTBL_ENTRY _ZTV9S19595C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19595C10[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19595C9;
extern VTBL_ENTRY _ZTI8S19595C9[];
extern  VTBL_ENTRY _ZTV8S19595C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19595C9[];
static Base_Class bases_S19595C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19905C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19595C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19595C5,    ABISELECT(288,172), //bcp->offset
    49, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19595C10,    ABISELECT(224,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(240,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19595C9,    ABISELECT(224,136), //bcp->offset
    42, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S17777C6_nt,    ABISELECT(168,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19905C19,    ABISELECT(160,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19595C5,    ABISELECT(176,104), //bcp->offset
    36, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19595C8,    ABISELECT(160,96), //bcp->offset
    28, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19595C5,    ABISELECT(112,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19595C6,    ABISELECT(112,68), //bcp->offset
    18, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19595C10,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19595C9,    ABISELECT(48,28), //bcp->offset
    11, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19595C3[];
extern void ABISELECT(_ZTv0_n24_N8S19595C3D1Ev,_ZTv0_n12_N8S19595C3D1Ev)();
extern void _ZN8S19595C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C3D0Ev,_ZTv0_n12_N8S19595C3D0Ev)();
extern void _ZN8S19595C3D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C3D1Ev,_ZTv0_n12_N8S19595C3D1Ev)();
extern void ABISELECT(_ZThn48_N8S19595C3D1Ev,_ZThn28_N8S19595C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C3D0Ev,_ZTv0_n12_N8S19595C3D0Ev)();
extern void ABISELECT(_ZThn48_N8S19595C3D0Ev,_ZThn28_N8S19595C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C3D1Ev,_ZTv0_n12_N8S19595C3D1Ev)();
extern void ABISELECT(_ZThn112_N8S19595C3D1Ev,_ZThn68_N8S19595C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C3D0Ev,_ZTv0_n12_N8S19595C3D0Ev)();
extern void ABISELECT(_ZThn112_N8S19595C3D0Ev,_ZThn68_N8S19595C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19595C3D1Ev,_ZTv0_n24_N8S19595C3D1Ev)();
extern void ABISELECT(_ZThn160_N8S19595C3D1Ev,_ZThn96_N8S19595C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19595C3D0Ev,_ZTv0_n24_N8S19595C3D0Ev)();
extern void ABISELECT(_ZThn160_N8S19595C3D0Ev,_ZThn96_N8S19595C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C3D1Ev,_ZTv0_n12_N8S19595C3D1Ev)();
extern void ABISELECT(_ZThn176_N8S19595C3D1Ev,_ZThn104_N8S19595C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C3D0Ev,_ZTv0_n12_N8S19595C3D0Ev)();
extern void ABISELECT(_ZThn176_N8S19595C3D0Ev,_ZThn104_N8S19595C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C3D1Ev,_ZTv0_n12_N8S19595C3D1Ev)();
extern void ABISELECT(_ZThn224_N8S19595C3D1Ev,_ZThn136_N8S19595C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C3D0Ev,_ZTv0_n12_N8S19595C3D0Ev)();
extern void ABISELECT(_ZThn224_N8S19595C3D0Ev,_ZThn136_N8S19595C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C3D1Ev,_ZTv0_n12_N8S19595C3D1Ev)();
extern void ABISELECT(_ZThn288_N8S19595C3D1Ev,_ZThn172_N8S19595C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C3D0Ev,_ZTv0_n12_N8S19595C3D0Ev)();
extern void ABISELECT(_ZThn288_N8S19595C3D0Ev,_ZThn172_N8S19595C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19595C3[] = {
  ABISELECT(288,172),
  ABISELECT(224,136),
  ABISELECT(160,96),
  0,
  ABISELECT(112,68),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19595C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C3D1Ev,_ZTv0_n12_N8S19595C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C3D0Ev,_ZTv0_n12_N8S19595C3D0Ev),
  ABISELECT(240,144),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19595C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C3D1Ev,_ZTv0_n12_N8S19595C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C3D0Ev,_ZTv0_n12_N8S19595C3D0Ev),
  ABISELECT(176,104),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S19595C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C3D1Ev,_ZTv0_n12_N8S19595C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C3D0Ev,_ZTv0_n12_N8S19595C3D0Ev),
  ABISELECT(-160,-96),
  ABISELECT(128,76),
  ABISELECT(-160,-96),
  ABISELECT(64,40),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI8S19595C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19595C3D1Ev,_ZTv0_n24_N8S19595C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19595C3D0Ev,_ZTv0_n24_N8S19595C3D0Ev),
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI8S19595C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C3D1Ev,_ZTv0_n12_N8S19595C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C3D0Ev,_ZTv0_n12_N8S19595C3D0Ev),
  ABISELECT(64,36),
  ABISELECT(-224,-136),
  ABISELECT(-224,-136),
  ABISELECT(-224,-136),
  (VTBL_ENTRY)&(_ZTI8S19595C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C3D1Ev,_ZTv0_n12_N8S19595C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C3D0Ev,_ZTv0_n12_N8S19595C3D0Ev),
  ABISELECT(-288,-172),
  ABISELECT(-288,-172),
  ABISELECT(-288,-172),
  (VTBL_ENTRY)&(_ZTI8S19595C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C3D1Ev,_ZTv0_n12_N8S19595C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C3D0Ev,_ZTv0_n12_N8S19595C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S19595C3[];
extern void ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev)();
extern void _ZN8S19595C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev)();
extern void _ZN8S19595C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C5__A__8S19595C3[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19595C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev)();
extern void _ZN8S19595C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev)();
extern void _ZN8S19595C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C9__A__8S19595C3[] = {
  ABISELECT(240,144),
  ABISELECT(-48,-28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19595C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev)();
extern void _ZN9S19595C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev)();
extern void _ZN9S19595C10D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19595C108S19595C9__A1__8S19595C3[] = {
  ABISELECT(240,144),
  ABISELECT(-48,-28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19595C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__9S19595C108S19595C9__A1__8S19595C3[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19595C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev)();
extern void ABISELECT(_ZThn240_N9S19595C10D1Ev,_ZThn144_N9S19595C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev)();
extern void ABISELECT(_ZThn240_N9S19595C10D0Ev,_ZThn144_N9S19595C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C5__9S19595C108S19595C9__A1__8S19595C3[] = {
  ABISELECT(-288,-172),
  ABISELECT(-240,-144),
  ABISELECT(-240,-144),
  (VTBL_ENTRY)&(_ZTI9S19595C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S19595C9__A__8S19595C3[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19595C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev)();
extern void ABISELECT(_ZThn240_N8S19595C9D1Ev,_ZThn144_N8S19595C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev)();
extern void ABISELECT(_ZThn240_N8S19595C9D0Ev,_ZThn144_N8S19595C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C5__8S19595C9__A__8S19595C3[] = {
  ABISELECT(-288,-172),
  ABISELECT(-240,-144),
  ABISELECT(-240,-144),
  (VTBL_ENTRY)&(_ZTI8S19595C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C6D1Ev,_ZTv0_n12_N8S19595C6D1Ev)();
extern void _ZN8S19595C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C6D0Ev,_ZTv0_n12_N8S19595C6D0Ev)();
extern void _ZN8S19595C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C6__8S19595C3[] = {
  ABISELECT(176,104),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19595C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C6D1Ev,_ZTv0_n12_N8S19595C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C6D0Ev,_ZTv0_n12_N8S19595C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev)();
extern void _ZN8S19595C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev)();
extern void _ZN8S19595C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C58S19595C6__A3__8S19595C3[] = {
  ABISELECT(-112,-68),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19595C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S19595C58S19595C6__A3__8S19595C3[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI8S19595C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19595C6D1Ev,_ZTv0_n24_N8S19595C6D1Ev)();
extern void ABISELECT(_ZThn48_N8S19595C6D1Ev,_ZThn28_N8S19595C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19595C6D0Ev,_ZTv0_n24_N8S19595C6D0Ev)();
extern void ABISELECT(_ZThn48_N8S19595C6D0Ev,_ZThn28_N8S19595C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C8__8S19595C6__8S19595C3[] = {
  ABISELECT(-48,-28),
  ABISELECT(128,76),
  ABISELECT(-160,-96),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19595C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19595C6D1Ev,_ZTv0_n24_N8S19595C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19595C6D0Ev,_ZTv0_n24_N8S19595C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C6D1Ev,_ZTv0_n12_N8S19595C6D1Ev)();
extern void ABISELECT(_ZThn112_N8S19595C6D1Ev,_ZThn68_N8S19595C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C6D0Ev,_ZTv0_n12_N8S19595C6D0Ev)();
extern void ABISELECT(_ZThn112_N8S19595C6D0Ev,_ZThn68_N8S19595C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C9__8S19595C6__8S19595C3[] = {
  ABISELECT(64,36),
  ABISELECT(-224,-136),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S19595C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C6D1Ev,_ZTv0_n12_N8S19595C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C6D0Ev,_ZTv0_n12_N8S19595C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C6D1Ev,_ZTv0_n12_N8S19595C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19595C6D0Ev,_ZTv0_n12_N8S19595C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S19595C6__8S19595C3[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI8S19595C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C6D1Ev,_ZTv0_n12_N8S19595C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C6D0Ev,_ZTv0_n12_N8S19595C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C6D1Ev,_ZTv0_n12_N8S19595C6D1Ev)();
extern void ABISELECT(_ZThn176_N8S19595C6D1Ev,_ZThn104_N8S19595C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C6D0Ev,_ZTv0_n12_N8S19595C6D0Ev)();
extern void ABISELECT(_ZThn176_N8S19595C6D0Ev,_ZThn104_N8S19595C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C5__8S19595C6__8S19595C3[] = {
  ABISELECT(-288,-172),
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI8S19595C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C6D1Ev,_ZTv0_n12_N8S19595C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C6D0Ev,_ZTv0_n12_N8S19595C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C6D1Ev,_ZTv0_n12_N8S19595C6D1Ev)();
extern void ABISELECT(_ZThn64_N8S19595C6D1Ev,_ZThn36_N8S19595C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C6D0Ev,_ZTv0_n12_N8S19595C6D0Ev)();
extern void ABISELECT(_ZThn64_N8S19595C6D0Ev,_ZThn36_N8S19595C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C58S19595C8__A1__8S19595C6__8S19595C3[] = {
  ABISELECT(-176,-104),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19595C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C6D1Ev,_ZTv0_n12_N8S19595C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C6D0Ev,_ZTv0_n12_N8S19595C6D0Ev),
};
extern void _ZN8S19595C8D1Ev();
extern void _ZN8S19595C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19595C8__8S19595C3[] = {
  ABISELECT(128,76),
  ABISELECT(-160,-96),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19595C8[0]),
  (VTBL_ENTRY)&_ZN8S19595C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19595C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev)();
extern void _ZN8S19595C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev)();
extern void _ZN8S19595C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C58S19595C8__A2__8S19595C3[] = {
  ABISELECT(-176,-104),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19595C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S19595C58S19595C8__A2__8S19595C3[] = {
  ABISELECT(176,104),
  ABISELECT(176,104),
  (VTBL_ENTRY)&(_ZTI8S19595C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev)();
extern void ABISELECT(_ZThn64_N8S19595C8D1Ev,_ZThn40_N8S19595C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev)();
extern void ABISELECT(_ZThn64_N8S19595C8D0Ev,_ZThn40_N8S19595C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C9__8S19595C8__8S19595C3[] = {
  ABISELECT(64,36),
  ABISELECT(-224,-136),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19595C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S19595C8__8S19595C3[] = {
  ABISELECT(160,96),
  ABISELECT(160,96),
  (VTBL_ENTRY)&(_ZTI8S19595C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S19595C8D1Ev,_ZThn76_N8S19595C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S19595C8D0Ev,_ZThn76_N8S19595C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C5__8S19595C8__8S19595C3[] = {
  ABISELECT(-288,-172),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S19595C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S19595C8D1Ev,_ZThn8_N8S19595C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S19595C8D0Ev,_ZThn8_N8S19595C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C5__A__8S19595C8__8S19595C3[] = {
  ABISELECT(-176,-104),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19595C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev)();
extern void _ZN8S19595C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev)();
extern void _ZN8S19595C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C9__8S19595C3[] = {
  ABISELECT(64,36),
  ABISELECT(-224,-136),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19595C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev)();
extern void _ZN9S19595C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev)();
extern void _ZN9S19595C10D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19595C108S19595C9__8S19595C3[] = {
  ABISELECT(64,36),
  ABISELECT(-224,-136),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19595C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__9S19595C108S19595C9__8S19595C3[] = {
  ABISELECT(224,136),
  ABISELECT(224,136),
  (VTBL_ENTRY)&(_ZTI9S19595C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev)();
extern void ABISELECT(_ZThn64_N9S19595C10D1Ev,_ZThn36_N9S19595C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev)();
extern void ABISELECT(_ZThn64_N9S19595C10D0Ev,_ZThn36_N9S19595C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C5__9S19595C108S19595C9__8S19595C3[] = {
  ABISELECT(-288,-172),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19595C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S19595C9__8S19595C3[] = {
  ABISELECT(224,136),
  ABISELECT(224,136),
  (VTBL_ENTRY)&(_ZTI8S19595C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev)();
extern void ABISELECT(_ZThn64_N8S19595C9D1Ev,_ZThn36_N8S19595C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev)();
extern void ABISELECT(_ZThn64_N8S19595C9D0Ev,_ZThn36_N8S19595C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C5__8S19595C9__8S19595C3[] = {
  ABISELECT(-288,-172),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19595C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev)();
extern void _ZN8S19595C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev)();
extern void _ZN8S19595C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C5__A1__8S19595C3[] = {
  ABISELECT(-288,-172),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19595C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S19595C5__A1__8S19595C3[] = {
  ABISELECT(288,172),
  ABISELECT(288,172),
  (VTBL_ENTRY)&(_ZTI8S19595C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev),
};
static  VTT_ENTRY vtt_S19595C3[] = {
  {&(_ZTV8S19595C3[9]),  9,55},
  {&(_tg__ZTV8S19595C5__A__8S19595C3[4]),  4,6},
  {&(_tg__ZTV8S19595C5__A__8S19595C3[4]),  4,6},
  {&(_tg__ZTV8S19595C9__A__8S19595C3[5]),  5,7},
  {&(_tg__ZTV9S19595C108S19595C9__A1__8S19595C3[5]),  5,7},
  {&(_tg__ZTV9S19905C19__9S19595C108S19595C9__A1__8S19595C3[3]),  3,5},
  {&(_tg__ZTV8S19595C5__9S19595C108S19595C9__A1__8S19595C3[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S19595C9__A__8S19595C3[3]),  3,5},
  {&(_tg__ZTV8S19595C5__8S19595C9__A__8S19595C3[4]),  4,6},
  {&(_ZTV8S19595C3[9]),  9,55},
  {&(_ZTV8S19595C3[26]),  26,55},
  {&(_ZTV8S19595C3[34]),  34,55},
  {&(_ZTV8S19595C3[47]),  47,55},
  {&(_ZTV8S19595C3[53]),  53,55},
  {&(_ZTV8S19595C3[40]),  40,55},
  {&(_ZTV8S19595C3[16]),  16,55},
  {&(_tg__ZTV8S19595C6__8S19595C3[8]),  8,10},
  {&(_tg__ZTV8S19595C58S19595C6__A3__8S19595C3[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S19595C58S19595C6__A3__8S19595C3[3]),  3,5},
  {&(_tg__ZTV8S19595C8__8S19595C6__8S19595C3[6]),  6,8},
  {&(_tg__ZTV8S19595C9__8S19595C6__8S19595C3[5]),  5,7},
  {&(_tg__ZTV9S19905C19__8S19595C6__8S19595C3[3]),  3,5},
  {&(_tg__ZTV8S19595C5__8S19595C6__8S19595C3[4]),  4,6},
  {&(_tg__ZTV8S19595C58S19595C8__A1__8S19595C6__8S19595C3[4]),  4,6},
  {&(_tg__ZTV8S19595C8__8S19595C3[5]),  5,7},
  {&(_tg__ZTV8S19595C58S19595C8__A2__8S19595C3[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S19595C58S19595C8__A2__8S19595C3[3]),  3,5},
  {&(_tg__ZTV8S19595C9__8S19595C8__8S19595C3[5]),  5,7},
  {&(_tg__ZTV9S19905C19__8S19595C8__8S19595C3[3]),  3,5},
  {&(_tg__ZTV8S19595C5__8S19595C8__8S19595C3[4]),  4,6},
  {&(_tg__ZTV8S19595C5__A__8S19595C8__8S19595C3[4]),  4,6},
  {&(_tg__ZTV8S19595C9__8S19595C3[5]),  5,7},
  {&(_tg__ZTV9S19595C108S19595C9__8S19595C3[5]),  5,7},
  {&(_tg__ZTV9S19905C19__9S19595C108S19595C9__8S19595C3[3]),  3,5},
  {&(_tg__ZTV8S19595C5__9S19595C108S19595C9__8S19595C3[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S19595C9__8S19595C3[3]),  3,5},
  {&(_tg__ZTV8S19595C5__8S19595C9__8S19595C3[4]),  4,6},
  {&(_tg__ZTV8S19595C5__A1__8S19595C3[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S19595C5__A1__8S19595C3[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19595C3[];
extern  VTBL_ENTRY _ZTV8S19595C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19595C3[];
static VTBL_ENTRY alt_thunk_names109[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19595C8D0Ev,_ZThn8_N8S19595C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19595C8D0Ev,_ZThn76_N8S19595C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19595C8D0Ev,_ZThn40_N8S19595C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19595C8D1Ev,_ZThn8_N8S19595C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19595C8D1Ev,_ZThn76_N8S19595C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19595C8D1Ev,_ZThn40_N8S19595C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19595C6D0Ev,_ZTv0_n24_N8S19595C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19595C6D0Ev,_ZThn28_N8S19595C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19595C6D1Ev,_ZTv0_n24_N8S19595C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19595C6D1Ev,_ZThn28_N8S19595C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C6D0Ev,_ZTv0_n12_N8S19595C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19595C6D0Ev,_ZThn36_N8S19595C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19595C6D0Ev,_ZThn104_N8S19595C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19595C6D0Ev,_ZThn68_N8S19595C6D0Ev),
  (VTBL_ENTRY)_ZN8S19595C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C6D1Ev,_ZTv0_n12_N8S19595C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19595C6D1Ev,_ZThn36_N8S19595C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19595C6D1Ev,_ZThn104_N8S19595C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19595C6D1Ev,_ZThn68_N8S19595C6D1Ev),
  (VTBL_ENTRY)_ZN8S19595C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19595C10D0Ev,_ZThn36_N9S19595C10D0Ev),
  (VTBL_ENTRY)_ZN9S19595C10D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S19595C10D0Ev,_ZThn144_N9S19595C10D0Ev),
  (VTBL_ENTRY)_ZN9S19595C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19595C10D1Ev,_ZThn36_N9S19595C10D1Ev),
  (VTBL_ENTRY)_ZN9S19595C10D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S19595C10D1Ev,_ZThn144_N9S19595C10D1Ev),
  (VTBL_ENTRY)_ZN9S19595C10D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19595C9D0Ev,_ZThn36_N8S19595C9D0Ev),
  (VTBL_ENTRY)_ZN8S19595C9D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19595C9D0Ev,_ZThn144_N8S19595C9D0Ev),
  (VTBL_ENTRY)_ZN8S19595C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19595C9D1Ev,_ZThn36_N8S19595C9D1Ev),
  (VTBL_ENTRY)_ZN8S19595C9D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19595C9D1Ev,_ZThn144_N8S19595C9D1Ev),
  (VTBL_ENTRY)_ZN8S19595C9D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S19595C5D0Ev,
  (VTBL_ENTRY)_ZN8S19595C5D0Ev,
  (VTBL_ENTRY)_ZN8S19595C5D0Ev,
  (VTBL_ENTRY)_ZN8S19595C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S19595C5D1Ev,
  (VTBL_ENTRY)_ZN8S19595C5D1Ev,
  (VTBL_ENTRY)_ZN8S19595C5D1Ev,
  (VTBL_ENTRY)_ZN8S19595C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19595C3D0Ev,_ZTv0_n24_N8S19595C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19595C3D0Ev,_ZThn96_N8S19595C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19595C3D1Ev,_ZTv0_n24_N8S19595C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19595C3D1Ev,_ZThn96_N8S19595C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C3D0Ev,_ZTv0_n12_N8S19595C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S19595C3D0Ev,_ZThn172_N8S19595C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S19595C3D0Ev,_ZThn136_N8S19595C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19595C3D0Ev,_ZThn104_N8S19595C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19595C3D0Ev,_ZThn68_N8S19595C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19595C3D0Ev,_ZThn28_N8S19595C3D0Ev),
  (VTBL_ENTRY)_ZN8S19595C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C3D1Ev,_ZTv0_n12_N8S19595C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S19595C3D1Ev,_ZThn172_N8S19595C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S19595C3D1Ev,_ZThn136_N8S19595C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19595C3D1Ev,_ZThn104_N8S19595C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19595C3D1Ev,_ZThn68_N8S19595C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19595C3D1Ev,_ZThn28_N8S19595C3D1Ev),
  (VTBL_ENTRY)_ZN8S19595C3D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19595C3 = {  "S19595C3", // class name
  bases_S19595C3, 16,
  &(vtc_S19595C3[0]), // expected_vtbl_contents
  &(vtt_S19595C3[0]), // expected_vtt_contents
  ABISELECT(336,200), // object size
  NSPAIRA(_ZTI8S19595C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19595C3),55, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19595C3),39, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names109,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19595C2  : S19595C3 {
  void *s19595c2f0;
  ~S19595C2(); // tgen
  S19595C2(); // tgen
};
//SIG(-1 S19595C2) C1{ BC2{ VBC3{ vd m} BC4{ VBC3 FD Fc Fs[4]} VBC5{ VBC6{ m} VBC7{ VBC8{ VBC3 BC9{ VBC3 VBC4 vd Fi} BC10{ m Fp} vd Fs FL Fp FL} BC10 BC3 BC4 vd Fi} BC4 vd Fs} BC8 Fp} Fp}


S19595C2 ::~S19595C2(){ note_dtor("S19595C2", this);} // tgen
S19595C2 ::S19595C2(){ note_ctor("S19595C2", this);} // tgen

static void Test_S19595C2()
{
  extern Class_Descriptor cd_S19595C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,52)];
    init_test(&cd_S19595C2, buf);
    S19595C2 *dp, &lv = *(dp=new (buf) S19595C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,204), "sizeof(S19595C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19595C2)");
    /*is_ambiguous_... S19595C3::S19905C19 */ AMB_check_base_class_offset(lv, (S19905C19*)(S19595C3*), 0, "S19595C2");
    /*is_ambiguous_... S19595C3::S19595C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S19595C5*)(S19595C3*), 0, "S19595C2");
    /*is_ambiguous_... S19595C2::S19595C9 */ AMB_check_base_class_offset(lv, (S19905C19*)(S19595C9*), 0, "S19595C2");
    /*is_ambiguous_... S19595C2::S19595C9 */ AMB_check_base_class_offset(lv, (S19905C19*)(S19595C10*)(S19595C9*), 0, "S19595C2");
    /*is_ambiguous_... S19595C2::S19595C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S19595C5*), 0, "S19595C2");
    /*is_ambiguous_... S19595C8::S19595C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S19595C5*)(S19595C8*), 0, "S19595C2");
    /*is_ambiguous_... S19595C6::S19595C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S19595C5*)(S19595C6*), 0, "S19595C2");
    /*is_ambiguous_... S19595C3::S19595C9 */ AMB_check_base_class_offset(lv, (S19905C19*)(S19595C9*)(S19595C3*), 0, "S19595C2");
    /*is_ambiguous_... S19595C3::S19595C9 */ AMB_check_base_class_offset(lv, (S19905C19*)(S19595C10*)(S19595C9*)(S19595C3*), 0, "S19595C2");
    /*is_ambiguous_... S19595C3::S19595C5 */ AMB_check_base_class_offset(lv, (S19595C5*)(S19595C3*), 0, "S19595C2");
    check_base_class_offset(lv, (S5266C29*)(S19595C6*), 0, "S19595C2");
    /*is_ambiguous_... S19595C2::S19595C9 */ AMB_check_base_class_offset(lv, (S19595C5*)(S19595C10*)(S19595C9*), ABISELECT(304,176), "S19595C2");
    /*is_ambiguous_... S19595C3::S19595C9 */ AMB_check_base_class_offset(lv, (S19595C5*)(S19595C10*)(S19595C9*)(S19595C3*), ABISELECT(304,176), "S19595C2");
    /*is_ambiguous_... S19595C2::S19595C9 */ AMB_check_base_class_offset(lv, (S19595C10*)(S19595C9*), ABISELECT(240,140), "S19595C2");
    /*is_ambiguous_... S19595C2::S19595C9 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S19595C9*), ABISELECT(256,148), "S19595C2");
    check_base_class_offset(lv, (S19595C9*)(S19595C8*), ABISELECT(240,140), "S19595C2");
    /*is_ambiguous_... S19595C8::S17777C6_nt */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S19595C8*), ABISELECT(184,104), "S19595C2");
    /*is_ambiguous_... S19595C8::S19905C19 */ AMB_check_base_class_offset(lv, (S19905C19*)(S19595C8*), ABISELECT(176,100), "S19595C2");
    /*is_ambiguous_... S19595C8::S19595C5 */ AMB_check_base_class_offset(lv, (S19595C5*)(S19595C8*), ABISELECT(192,108), "S19595C2");
    check_base_class_offset(lv, (S19595C8*)(S19595C6*), ABISELECT(176,100), "S19595C2");
    /*is_ambiguous_... S19595C6::S19595C5 */ AMB_check_base_class_offset(lv, (S19595C5*)(S19595C6*), ABISELECT(128,72), "S19595C2");
    check_base_class_offset(lv, (S19595C6*)(S19595C3*), ABISELECT(128,72), "S19595C2");
    /*is_ambiguous_... S19595C3::S19595C9 */ AMB_check_base_class_offset(lv, (S19595C10*)(S19595C9*)(S19595C3*), ABISELECT(48,28), "S19595C2");
    /*is_ambiguous_... S19595C3::S19595C9 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S19595C9*)(S19595C3*), ABISELECT(64,36), "S19595C2");
    /*is_ambiguous_... S19595C3::S19595C9 */ AMB_check_base_class_offset(lv, (S19595C9*)(S19595C3*), ABISELECT(48,28), "S19595C2");
    check_base_class_offset(lv, (S19595C3*), 0, "S19595C2");
    check_field_offset(lv, s19595c2f0, ABISELECT(112,68), "S19595C2.s19595c2f0");
    test_class_info(&lv, &cd_S19595C2);
    dp->~S19595C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19595C2(Test_S19595C2, "S19595C2", ABISELECT(352,204));

#else // __cplusplus

extern void _ZN8S19595C2C1Ev();
extern void _ZN8S19595C2D1Ev();
Name_Map name_map_S19595C2[] = {
  NSPAIR(_ZN8S19595C2C1Ev),
  NSPAIR(_ZN8S19595C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S19595C5;
extern VTBL_ENTRY _ZTI8S19595C5[];
extern  VTBL_ENTRY _ZTV8S19595C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19595C5[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S19595C5;
extern VTBL_ENTRY _ZTI8S19595C5[];
extern  VTBL_ENTRY _ZTV8S19595C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19595C5[];
extern Class_Descriptor cd_S19595C10;
extern VTBL_ENTRY _ZTI9S19595C10[];
extern  VTBL_ENTRY _ZTV9S19595C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19595C10[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19595C9;
extern VTBL_ENTRY _ZTI8S19595C9[];
extern  VTBL_ENTRY _ZTV8S19595C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19595C9[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S19595C5;
extern VTBL_ENTRY _ZTI8S19595C5[];
extern  VTBL_ENTRY _ZTV8S19595C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19595C5[];
extern Class_Descriptor cd_S19595C8;
extern VTBL_ENTRY _ZTI8S19595C8[];
extern  VTBL_ENTRY _ZTV8S19595C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19595C8[];
extern Class_Descriptor cd_S19595C5;
extern VTBL_ENTRY _ZTI8S19595C5[];
extern  VTBL_ENTRY _ZTV8S19595C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19595C5[];
extern Class_Descriptor cd_S19595C6;
extern VTBL_ENTRY _ZTI8S19595C6[];
extern  VTBL_ENTRY _ZTV8S19595C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19595C6[];
extern Class_Descriptor cd_S19595C10;
extern VTBL_ENTRY _ZTI9S19595C10[];
extern  VTBL_ENTRY _ZTV9S19595C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19595C10[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19595C9;
extern VTBL_ENTRY _ZTI8S19595C9[];
extern  VTBL_ENTRY _ZTV8S19595C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19595C9[];
extern Class_Descriptor cd_S19595C3;
extern VTBL_ENTRY _ZTI8S19595C3[];
extern  VTBL_ENTRY _ZTV8S19595C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19595C3[];
static Base_Class bases_S19595C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19905C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19595C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19595C5,    ABISELECT(304,176), //bcp->offset
    49, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19595C10,    ABISELECT(240,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(256,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19595C9,    ABISELECT(240,140), //bcp->offset
    42, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S17777C6_nt,    ABISELECT(184,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19905C19,    ABISELECT(176,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19595C5,    ABISELECT(192,108), //bcp->offset
    36, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19595C8,    ABISELECT(176,100), //bcp->offset
    28, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19595C5,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19595C6,    ABISELECT(128,72), //bcp->offset
    18, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19595C10,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19595C9,    ABISELECT(48,28), //bcp->offset
    11, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19595C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19595C2[];
extern void ABISELECT(_ZTv0_n24_N8S19595C2D1Ev,_ZTv0_n12_N8S19595C2D1Ev)();
extern void _ZN8S19595C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C2D0Ev,_ZTv0_n12_N8S19595C2D0Ev)();
extern void _ZN8S19595C2D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C2D1Ev,_ZTv0_n12_N8S19595C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S19595C2D1Ev,_ZThn28_N8S19595C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C2D0Ev,_ZTv0_n12_N8S19595C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S19595C2D0Ev,_ZThn28_N8S19595C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C2D1Ev,_ZTv0_n12_N8S19595C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S19595C2D1Ev,_ZThn72_N8S19595C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C2D0Ev,_ZTv0_n12_N8S19595C2D0Ev)();
extern void ABISELECT(_ZThn128_N8S19595C2D0Ev,_ZThn72_N8S19595C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19595C2D1Ev,_ZTv0_n24_N8S19595C2D1Ev)();
extern void ABISELECT(_ZThn176_N8S19595C2D1Ev,_ZThn100_N8S19595C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19595C2D0Ev,_ZTv0_n24_N8S19595C2D0Ev)();
extern void ABISELECT(_ZThn176_N8S19595C2D0Ev,_ZThn100_N8S19595C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C2D1Ev,_ZTv0_n12_N8S19595C2D1Ev)();
extern void ABISELECT(_ZThn192_N8S19595C2D1Ev,_ZThn108_N8S19595C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C2D0Ev,_ZTv0_n12_N8S19595C2D0Ev)();
extern void ABISELECT(_ZThn192_N8S19595C2D0Ev,_ZThn108_N8S19595C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C2D1Ev,_ZTv0_n12_N8S19595C2D1Ev)();
extern void ABISELECT(_ZThn240_N8S19595C2D1Ev,_ZThn140_N8S19595C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C2D0Ev,_ZTv0_n12_N8S19595C2D0Ev)();
extern void ABISELECT(_ZThn240_N8S19595C2D0Ev,_ZThn140_N8S19595C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C2D1Ev,_ZTv0_n12_N8S19595C2D1Ev)();
extern void ABISELECT(_ZThn304_N8S19595C2D1Ev,_ZThn176_N8S19595C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C2D0Ev,_ZTv0_n12_N8S19595C2D0Ev)();
extern void ABISELECT(_ZThn304_N8S19595C2D0Ev,_ZThn176_N8S19595C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19595C2[] = {
  ABISELECT(304,176),
  ABISELECT(240,140),
  ABISELECT(176,100),
  0,
  ABISELECT(128,72),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19595C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C2D1Ev,_ZTv0_n12_N8S19595C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C2D0Ev,_ZTv0_n12_N8S19595C2D0Ev),
  ABISELECT(256,148),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19595C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C2D1Ev,_ZTv0_n12_N8S19595C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C2D0Ev,_ZTv0_n12_N8S19595C2D0Ev),
  ABISELECT(176,104),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S19595C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C2D1Ev,_ZTv0_n12_N8S19595C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C2D0Ev,_ZTv0_n12_N8S19595C2D0Ev),
  ABISELECT(-176,-100),
  ABISELECT(128,76),
  ABISELECT(-176,-100),
  ABISELECT(64,40),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI8S19595C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19595C2D1Ev,_ZTv0_n24_N8S19595C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19595C2D0Ev,_ZTv0_n24_N8S19595C2D0Ev),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI8S19595C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C2D1Ev,_ZTv0_n12_N8S19595C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C2D0Ev,_ZTv0_n12_N8S19595C2D0Ev),
  ABISELECT(64,36),
  ABISELECT(-240,-140),
  ABISELECT(-240,-140),
  ABISELECT(-240,-140),
  (VTBL_ENTRY)&(_ZTI8S19595C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C2D1Ev,_ZTv0_n12_N8S19595C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C2D0Ev,_ZTv0_n12_N8S19595C2D0Ev),
  ABISELECT(-304,-176),
  ABISELECT(-304,-176),
  ABISELECT(-304,-176),
  (VTBL_ENTRY)&(_ZTI8S19595C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C2D1Ev,_ZTv0_n12_N8S19595C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C2D0Ev,_ZTv0_n12_N8S19595C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S19595C2[];
extern void ABISELECT(_ZTv0_n24_N8S19595C3D1Ev,_ZTv0_n12_N8S19595C3D1Ev)();
extern void _ZN8S19595C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C3D0Ev,_ZTv0_n12_N8S19595C3D0Ev)();
extern void _ZN8S19595C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C3__8S19595C2[] = {
  ABISELECT(304,176),
  ABISELECT(240,140),
  ABISELECT(176,100),
  0,
  ABISELECT(128,72),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19595C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C3D1Ev,_ZTv0_n12_N8S19595C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C3D0Ev,_ZTv0_n12_N8S19595C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev)();
extern void _ZN8S19595C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev)();
extern void _ZN8S19595C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C58S19595C3__8S19595C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19595C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev)();
extern void _ZN8S19595C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev)();
extern void _ZN8S19595C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C98S19595C3__A1__8S19595C2[] = {
  ABISELECT(256,148),
  ABISELECT(-48,-28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19595C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev)();
extern void _ZN9S19595C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev)();
extern void _ZN9S19595C10D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19595C108S19595C98S19595C3__A1__8S19595C2[] = {
  ABISELECT(256,148),
  ABISELECT(-48,-28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19595C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__9S19595C108S19595C98S19595C3__A1__8S19595C2[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19595C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev)();
extern void ABISELECT(_ZThn256_N9S19595C10D1Ev,_ZThn148_N9S19595C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev)();
extern void ABISELECT(_ZThn256_N9S19595C10D0Ev,_ZThn148_N9S19595C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C5__9S19595C108S19595C98S19595C3__A1__8S19595C2[] = {
  ABISELECT(-304,-176),
  ABISELECT(-256,-148),
  ABISELECT(-256,-148),
  (VTBL_ENTRY)&(_ZTI9S19595C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S19595C98S19595C3__A1__8S19595C2[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19595C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev)();
extern void ABISELECT(_ZThn256_N8S19595C9D1Ev,_ZThn148_N8S19595C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev)();
extern void ABISELECT(_ZThn256_N8S19595C9D0Ev,_ZThn148_N8S19595C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C5__8S19595C98S19595C3__A1__8S19595C2[] = {
  ABISELECT(-304,-176),
  ABISELECT(-256,-148),
  ABISELECT(-256,-148),
  (VTBL_ENTRY)&(_ZTI8S19595C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C3D1Ev,_ZTv0_n12_N8S19595C3D1Ev)();
extern void ABISELECT(_ZThn128_N8S19595C3D1Ev,_ZThn72_N8S19595C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C3D0Ev,_ZTv0_n12_N8S19595C3D0Ev)();
extern void ABISELECT(_ZThn128_N8S19595C3D0Ev,_ZThn72_N8S19595C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C6__8S19595C3__8S19595C2[] = {
  ABISELECT(176,104),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S19595C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C3D1Ev,_ZTv0_n12_N8S19595C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C3D0Ev,_ZTv0_n12_N8S19595C3D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19595C3D1Ev,_ZTv0_n24_N8S19595C3D1Ev)();
extern void ABISELECT(_ZThn176_N8S19595C3D1Ev,_ZThn100_N8S19595C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19595C3D0Ev,_ZTv0_n24_N8S19595C3D0Ev)();
extern void ABISELECT(_ZThn176_N8S19595C3D0Ev,_ZThn100_N8S19595C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C8__8S19595C3__8S19595C2[] = {
  ABISELECT(-176,-100),
  ABISELECT(128,76),
  ABISELECT(-176,-100),
  ABISELECT(64,40),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI8S19595C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19595C3D1Ev,_ZTv0_n24_N8S19595C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19595C3D0Ev,_ZTv0_n24_N8S19595C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C3D1Ev,_ZTv0_n12_N8S19595C3D1Ev)();
extern void ABISELECT(_ZThn240_N8S19595C3D1Ev,_ZThn140_N8S19595C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C3D0Ev,_ZTv0_n12_N8S19595C3D0Ev)();
extern void ABISELECT(_ZThn240_N8S19595C3D0Ev,_ZThn140_N8S19595C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C9__8S19595C3__8S19595C2[] = {
  ABISELECT(64,36),
  ABISELECT(-240,-140),
  ABISELECT(-240,-140),
  ABISELECT(-240,-140),
  (VTBL_ENTRY)&(_ZTI8S19595C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C3D1Ev,_ZTv0_n12_N8S19595C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C3D0Ev,_ZTv0_n12_N8S19595C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C3D1Ev,_ZTv0_n12_N8S19595C3D1Ev)();
extern void ABISELECT(_ZThn304_N8S19595C3D1Ev,_ZThn176_N8S19595C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C3D0Ev,_ZTv0_n12_N8S19595C3D0Ev)();
extern void ABISELECT(_ZThn304_N8S19595C3D0Ev,_ZThn176_N8S19595C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C5__A1__8S19595C3__8S19595C2[] = {
  ABISELECT(-304,-176),
  ABISELECT(-304,-176),
  ABISELECT(-304,-176),
  (VTBL_ENTRY)&(_ZTI8S19595C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C3D1Ev,_ZTv0_n12_N8S19595C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C3D0Ev,_ZTv0_n12_N8S19595C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C3D1Ev,_ZTv0_n12_N8S19595C3D1Ev)();
extern void ABISELECT(_ZThn192_N8S19595C3D1Ev,_ZThn108_N8S19595C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C3D0Ev,_ZTv0_n12_N8S19595C3D0Ev)();
extern void ABISELECT(_ZThn192_N8S19595C3D0Ev,_ZThn108_N8S19595C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C58S19595C8__A2__8S19595C3__8S19595C2[] = {
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI8S19595C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C3D1Ev,_ZTv0_n12_N8S19595C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C3D0Ev,_ZTv0_n12_N8S19595C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C3D1Ev,_ZTv0_n12_N8S19595C3D1Ev)();
extern void ABISELECT(_ZThn48_N8S19595C3D1Ev,_ZThn28_N8S19595C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C3D0Ev,_ZTv0_n12_N8S19595C3D0Ev)();
extern void ABISELECT(_ZThn48_N8S19595C3D0Ev,_ZThn28_N8S19595C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C9__A__8S19595C3__8S19595C2[] = {
  ABISELECT(256,148),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19595C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C3D1Ev,_ZTv0_n12_N8S19595C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C3D0Ev,_ZTv0_n12_N8S19595C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C6D1Ev,_ZTv0_n12_N8S19595C6D1Ev)();
extern void _ZN8S19595C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C6D0Ev,_ZTv0_n12_N8S19595C6D0Ev)();
extern void _ZN8S19595C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C6__8S19595C2[] = {
  ABISELECT(176,104),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19595C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C6D1Ev,_ZTv0_n12_N8S19595C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C6D0Ev,_ZTv0_n12_N8S19595C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev)();
extern void _ZN8S19595C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev)();
extern void _ZN8S19595C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C58S19595C6__A3__8S19595C2[] = {
  ABISELECT(-128,-72),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19595C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S19595C58S19595C6__A3__8S19595C2[] = {
  ABISELECT(128,72),
  ABISELECT(128,72),
  (VTBL_ENTRY)&(_ZTI8S19595C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19595C6D1Ev,_ZTv0_n24_N8S19595C6D1Ev)();
extern void ABISELECT(_ZThn48_N8S19595C6D1Ev,_ZThn28_N8S19595C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19595C6D0Ev,_ZTv0_n24_N8S19595C6D0Ev)();
extern void ABISELECT(_ZThn48_N8S19595C6D0Ev,_ZThn28_N8S19595C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C8__8S19595C6__8S19595C2[] = {
  ABISELECT(-48,-28),
  ABISELECT(128,76),
  ABISELECT(-176,-100),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19595C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19595C6D1Ev,_ZTv0_n24_N8S19595C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19595C6D0Ev,_ZTv0_n24_N8S19595C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C6D1Ev,_ZTv0_n12_N8S19595C6D1Ev)();
extern void ABISELECT(_ZThn112_N8S19595C6D1Ev,_ZThn68_N8S19595C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C6D0Ev,_ZTv0_n12_N8S19595C6D0Ev)();
extern void ABISELECT(_ZThn112_N8S19595C6D0Ev,_ZThn68_N8S19595C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C9__8S19595C6__8S19595C2[] = {
  ABISELECT(64,36),
  ABISELECT(-240,-140),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S19595C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C6D1Ev,_ZTv0_n12_N8S19595C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C6D0Ev,_ZTv0_n12_N8S19595C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C6D1Ev,_ZTv0_n12_N8S19595C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19595C6D0Ev,_ZTv0_n12_N8S19595C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S19595C6__8S19595C2[] = {
  ABISELECT(128,72),
  ABISELECT(128,72),
  (VTBL_ENTRY)&(_ZTI8S19595C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C6D1Ev,_ZTv0_n12_N8S19595C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C6D0Ev,_ZTv0_n12_N8S19595C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C6D1Ev,_ZTv0_n12_N8S19595C6D1Ev)();
extern void ABISELECT(_ZThn176_N8S19595C6D1Ev,_ZThn104_N8S19595C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C6D0Ev,_ZTv0_n12_N8S19595C6D0Ev)();
extern void ABISELECT(_ZThn176_N8S19595C6D0Ev,_ZThn104_N8S19595C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C5__8S19595C6__8S19595C2[] = {
  ABISELECT(-304,-176),
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI8S19595C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C6D1Ev,_ZTv0_n12_N8S19595C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C6D0Ev,_ZTv0_n12_N8S19595C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C6D1Ev,_ZTv0_n12_N8S19595C6D1Ev)();
extern void ABISELECT(_ZThn64_N8S19595C6D1Ev,_ZThn36_N8S19595C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C6D0Ev,_ZTv0_n12_N8S19595C6D0Ev)();
extern void ABISELECT(_ZThn64_N8S19595C6D0Ev,_ZThn36_N8S19595C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C58S19595C8__A1__8S19595C6__8S19595C2[] = {
  ABISELECT(-192,-108),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19595C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C6D1Ev,_ZTv0_n12_N8S19595C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C6D0Ev,_ZTv0_n12_N8S19595C6D0Ev),
};
extern void _ZN8S19595C8D1Ev();
extern void _ZN8S19595C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19595C8__8S19595C2[] = {
  ABISELECT(128,76),
  ABISELECT(-176,-100),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19595C8[0]),
  (VTBL_ENTRY)&_ZN8S19595C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19595C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev)();
extern void _ZN8S19595C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev)();
extern void _ZN8S19595C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C58S19595C8__A2__8S19595C2[] = {
  ABISELECT(-192,-108),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19595C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S19595C58S19595C8__A2__8S19595C2[] = {
  ABISELECT(192,108),
  ABISELECT(192,108),
  (VTBL_ENTRY)&(_ZTI8S19595C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev)();
extern void ABISELECT(_ZThn64_N8S19595C8D1Ev,_ZThn40_N8S19595C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev)();
extern void ABISELECT(_ZThn64_N8S19595C8D0Ev,_ZThn40_N8S19595C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C9__8S19595C8__8S19595C2[] = {
  ABISELECT(64,36),
  ABISELECT(-240,-140),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19595C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S19595C8__8S19595C2[] = {
  ABISELECT(176,100),
  ABISELECT(176,100),
  (VTBL_ENTRY)&(_ZTI8S19595C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S19595C8D1Ev,_ZThn76_N8S19595C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S19595C8D0Ev,_ZThn76_N8S19595C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C5__8S19595C8__8S19595C2[] = {
  ABISELECT(-304,-176),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S19595C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S19595C8D1Ev,_ZThn8_N8S19595C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S19595C8D0Ev,_ZThn8_N8S19595C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C5__A__8S19595C8__8S19595C2[] = {
  ABISELECT(-192,-108),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19595C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev)();
extern void _ZN8S19595C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev)();
extern void _ZN8S19595C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C9__8S19595C2[] = {
  ABISELECT(64,36),
  ABISELECT(-240,-140),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19595C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev)();
extern void _ZN9S19595C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev)();
extern void _ZN9S19595C10D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19595C108S19595C9__8S19595C2[] = {
  ABISELECT(64,36),
  ABISELECT(-240,-140),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19595C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__9S19595C108S19595C9__8S19595C2[] = {
  ABISELECT(240,140),
  ABISELECT(240,140),
  (VTBL_ENTRY)&(_ZTI9S19595C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev)();
extern void ABISELECT(_ZThn64_N9S19595C10D1Ev,_ZThn36_N9S19595C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev)();
extern void ABISELECT(_ZThn64_N9S19595C10D0Ev,_ZThn36_N9S19595C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C5__9S19595C108S19595C9__8S19595C2[] = {
  ABISELECT(-304,-176),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19595C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S19595C9__8S19595C2[] = {
  ABISELECT(240,140),
  ABISELECT(240,140),
  (VTBL_ENTRY)&(_ZTI8S19595C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev)();
extern void ABISELECT(_ZThn64_N8S19595C9D1Ev,_ZThn36_N8S19595C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev)();
extern void ABISELECT(_ZThn64_N8S19595C9D0Ev,_ZThn36_N8S19595C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C5__8S19595C9__8S19595C2[] = {
  ABISELECT(-304,-176),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19595C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev)();
extern void _ZN8S19595C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev)();
extern void _ZN8S19595C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C5__A1__8S19595C2[] = {
  ABISELECT(-304,-176),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19595C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S19595C5__A1__8S19595C2[] = {
  ABISELECT(304,176),
  ABISELECT(304,176),
  (VTBL_ENTRY)&(_ZTI8S19595C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev),
};
static  VTT_ENTRY vtt_S19595C2[] = {
  {&(_ZTV8S19595C2[9]),  9,55},
  {&(_tg__ZTV8S19595C3__8S19595C2[9]),  9,11},
  {&(_tg__ZTV8S19595C58S19595C3__8S19595C2[4]),  4,6},
  {&(_tg__ZTV8S19595C58S19595C3__8S19595C2[4]),  4,6},
  {&(_tg__ZTV8S19595C98S19595C3__A1__8S19595C2[5]),  5,7},
  {&(_tg__ZTV9S19595C108S19595C98S19595C3__A1__8S19595C2[5]),  5,7},
  {&(_tg__ZTV9S19905C19__9S19595C108S19595C98S19595C3__A1__8S19595C2[3]),  3,5},
  {&(_tg__ZTV8S19595C5__9S19595C108S19595C98S19595C3__A1__8S19595C2[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S19595C98S19595C3__A1__8S19595C2[3]),  3,5},
  {&(_tg__ZTV8S19595C5__8S19595C98S19595C3__A1__8S19595C2[4]),  4,6},
  {&(_tg__ZTV8S19595C3__8S19595C2[9]),  9,11},
  {&(_tg__ZTV8S19595C6__8S19595C3__8S19595C2[8]),  8,10},
  {&(_tg__ZTV8S19595C8__8S19595C3__8S19595C2[6]),  6,8},
  {&(_tg__ZTV8S19595C9__8S19595C3__8S19595C2[5]),  5,7},
  {&(_tg__ZTV8S19595C5__A1__8S19595C3__8S19595C2[4]),  4,6},
  {&(_tg__ZTV8S19595C58S19595C8__A2__8S19595C3__8S19595C2[4]),  4,6},
  {&(_tg__ZTV8S19595C9__A__8S19595C3__8S19595C2[5]),  5,7},
  {&(_ZTV8S19595C2[9]),  9,55},
  {&(_ZTV8S19595C2[26]),  26,55},
  {&(_ZTV8S19595C2[34]),  34,55},
  {&(_ZTV8S19595C2[47]),  47,55},
  {&(_ZTV8S19595C2[53]),  53,55},
  {&(_ZTV8S19595C2[40]),  40,55},
  {&(_ZTV8S19595C2[16]),  16,55},
  {&(_tg__ZTV8S19595C6__8S19595C2[8]),  8,10},
  {&(_tg__ZTV8S19595C58S19595C6__A3__8S19595C2[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S19595C58S19595C6__A3__8S19595C2[3]),  3,5},
  {&(_tg__ZTV8S19595C8__8S19595C6__8S19595C2[6]),  6,8},
  {&(_tg__ZTV8S19595C9__8S19595C6__8S19595C2[5]),  5,7},
  {&(_tg__ZTV9S19905C19__8S19595C6__8S19595C2[3]),  3,5},
  {&(_tg__ZTV8S19595C5__8S19595C6__8S19595C2[4]),  4,6},
  {&(_tg__ZTV8S19595C58S19595C8__A1__8S19595C6__8S19595C2[4]),  4,6},
  {&(_tg__ZTV8S19595C8__8S19595C2[5]),  5,7},
  {&(_tg__ZTV8S19595C58S19595C8__A2__8S19595C2[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S19595C58S19595C8__A2__8S19595C2[3]),  3,5},
  {&(_tg__ZTV8S19595C9__8S19595C8__8S19595C2[5]),  5,7},
  {&(_tg__ZTV9S19905C19__8S19595C8__8S19595C2[3]),  3,5},
  {&(_tg__ZTV8S19595C5__8S19595C8__8S19595C2[4]),  4,6},
  {&(_tg__ZTV8S19595C5__A__8S19595C8__8S19595C2[4]),  4,6},
  {&(_tg__ZTV8S19595C9__8S19595C2[5]),  5,7},
  {&(_tg__ZTV9S19595C108S19595C9__8S19595C2[5]),  5,7},
  {&(_tg__ZTV9S19905C19__9S19595C108S19595C9__8S19595C2[3]),  3,5},
  {&(_tg__ZTV8S19595C5__9S19595C108S19595C9__8S19595C2[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S19595C9__8S19595C2[3]),  3,5},
  {&(_tg__ZTV8S19595C5__8S19595C9__8S19595C2[4]),  4,6},
  {&(_tg__ZTV8S19595C5__A1__8S19595C2[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S19595C5__A1__8S19595C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19595C2[];
extern  VTBL_ENTRY _ZTV8S19595C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19595C2[];
static VTBL_ENTRY alt_thunk_names110[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19595C8D0Ev,_ZThn8_N8S19595C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19595C8D0Ev,_ZThn76_N8S19595C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19595C8D0Ev,_ZThn40_N8S19595C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19595C8D1Ev,_ZThn8_N8S19595C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19595C8D1Ev,_ZThn76_N8S19595C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19595C8D1Ev,_ZThn40_N8S19595C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19595C6D0Ev,_ZTv0_n24_N8S19595C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19595C6D0Ev,_ZThn28_N8S19595C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19595C6D1Ev,_ZTv0_n24_N8S19595C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19595C6D1Ev,_ZThn28_N8S19595C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C6D0Ev,_ZTv0_n12_N8S19595C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19595C6D0Ev,_ZThn36_N8S19595C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19595C6D0Ev,_ZThn104_N8S19595C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19595C6D0Ev,_ZThn68_N8S19595C6D0Ev),
  (VTBL_ENTRY)_ZN8S19595C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C6D1Ev,_ZTv0_n12_N8S19595C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19595C6D1Ev,_ZThn36_N8S19595C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19595C6D1Ev,_ZThn104_N8S19595C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19595C6D1Ev,_ZThn68_N8S19595C6D1Ev),
  (VTBL_ENTRY)_ZN8S19595C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19595C3D0Ev,_ZTv0_n24_N8S19595C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19595C3D0Ev,_ZThn100_N8S19595C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19595C3D1Ev,_ZTv0_n24_N8S19595C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19595C3D1Ev,_ZThn100_N8S19595C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19595C10D0Ev,_ZThn36_N9S19595C10D0Ev),
  (VTBL_ENTRY)_ZN9S19595C10D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S19595C10D0Ev,_ZThn148_N9S19595C10D0Ev),
  (VTBL_ENTRY)_ZN9S19595C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19595C10D1Ev,_ZThn36_N9S19595C10D1Ev),
  (VTBL_ENTRY)_ZN9S19595C10D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S19595C10D1Ev,_ZThn148_N9S19595C10D1Ev),
  (VTBL_ENTRY)_ZN9S19595C10D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19595C9D0Ev,_ZThn36_N8S19595C9D0Ev),
  (VTBL_ENTRY)_ZN8S19595C9D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19595C9D0Ev,_ZThn148_N8S19595C9D0Ev),
  (VTBL_ENTRY)_ZN8S19595C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19595C9D1Ev,_ZThn36_N8S19595C9D1Ev),
  (VTBL_ENTRY)_ZN8S19595C9D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19595C9D1Ev,_ZThn148_N8S19595C9D1Ev),
  (VTBL_ENTRY)_ZN8S19595C9D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S19595C5D0Ev,
  (VTBL_ENTRY)_ZN8S19595C5D0Ev,
  (VTBL_ENTRY)_ZN8S19595C5D0Ev,
  (VTBL_ENTRY)_ZN8S19595C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S19595C5D1Ev,
  (VTBL_ENTRY)_ZN8S19595C5D1Ev,
  (VTBL_ENTRY)_ZN8S19595C5D1Ev,
  (VTBL_ENTRY)_ZN8S19595C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C3D0Ev,_ZTv0_n12_N8S19595C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19595C3D0Ev,_ZThn28_N8S19595C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19595C3D0Ev,_ZThn108_N8S19595C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S19595C3D0Ev,_ZThn176_N8S19595C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19595C3D0Ev,_ZThn140_N8S19595C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19595C3D0Ev,_ZThn72_N8S19595C3D0Ev),
  (VTBL_ENTRY)_ZN8S19595C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C3D1Ev,_ZTv0_n12_N8S19595C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19595C3D1Ev,_ZThn28_N8S19595C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19595C3D1Ev,_ZThn108_N8S19595C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S19595C3D1Ev,_ZThn176_N8S19595C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19595C3D1Ev,_ZThn140_N8S19595C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19595C3D1Ev,_ZThn72_N8S19595C3D1Ev),
  (VTBL_ENTRY)_ZN8S19595C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19595C2D0Ev,_ZTv0_n24_N8S19595C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19595C2D0Ev,_ZThn100_N8S19595C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19595C2D1Ev,_ZTv0_n24_N8S19595C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19595C2D1Ev,_ZThn100_N8S19595C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C2D0Ev,_ZTv0_n12_N8S19595C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S19595C2D0Ev,_ZThn176_N8S19595C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19595C2D0Ev,_ZThn140_N8S19595C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19595C2D0Ev,_ZThn108_N8S19595C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19595C2D0Ev,_ZThn72_N8S19595C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19595C2D0Ev,_ZThn28_N8S19595C2D0Ev),
  (VTBL_ENTRY)_ZN8S19595C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C2D1Ev,_ZTv0_n12_N8S19595C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S19595C2D1Ev,_ZThn176_N8S19595C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19595C2D1Ev,_ZThn140_N8S19595C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19595C2D1Ev,_ZThn108_N8S19595C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19595C2D1Ev,_ZThn72_N8S19595C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19595C2D1Ev,_ZThn28_N8S19595C2D1Ev),
  (VTBL_ENTRY)_ZN8S19595C2D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19595C2 = {  "S19595C2", // class name
  bases_S19595C2, 17,
  &(vtc_S19595C2[0]), // expected_vtbl_contents
  &(vtt_S19595C2[0]), // expected_vtt_contents
  ABISELECT(352,204), // object size
  NSPAIRA(_ZTI8S19595C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19595C2),55, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19595C2),47, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names110,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19595C1  : virtual S19595C2 , S19595C8 {
  ~S19595C1(); // tgen
  S19595C1(); // tgen
};
//SIG(1 S19595C1) C1{ VBC2{ BC3{ VBC4{ vd m} BC5{ VBC4 FD Fc Fs[4]} VBC6{ VBC7{ m} VBC8{ VBC9{ VBC4 BC10{ VBC4 VBC5 vd Fi} BC11{ m Fp} vd Fs FL Fp FL} BC11 BC4 BC5 vd Fi} BC5 vd Fs} BC9 Fp} Fp} BC8}


S19595C1 ::~S19595C1(){ note_dtor("S19595C1", this);} // tgen
S19595C1 ::S19595C1(){ note_ctor("S19595C1", this);} // tgen

static void Test_S19595C1()
{
  extern Class_Descriptor cd_S19595C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(27,62)];
    init_test(&cd_S19595C1, buf);
    S19595C1 *dp, &lv = *(dp=new (buf) S19595C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(416,244), "sizeof(S19595C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19595C1)");
    /*is_ambiguous_... S19595C3::S19905C19 */ AMB_check_base_class_offset(lv, (S19905C19*)(S19595C3*)(S19595C2*), ABISELECT(64,40), "S19595C1");
    /*is_ambiguous_... S19595C3::S19595C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S19595C5*)(S19595C3*)(S19595C2*), ABISELECT(64,40), "S19595C1");
    /*is_ambiguous_... S19595C1::S19595C9 */ AMB_check_base_class_offset(lv, (S19905C19*)(S19595C9*), ABISELECT(64,40), "S19595C1");
    /*is_ambiguous_... S19595C1::S19595C9 */ AMB_check_base_class_offset(lv, (S19905C19*)(S19595C10*)(S19595C9*), ABISELECT(64,40), "S19595C1");
    /*is_ambiguous_... S19595C1::S19595C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S19595C5*), ABISELECT(64,40), "S19595C1");
    /*is_ambiguous_... S19595C1::S19595C8 */ AMB_check_base_class_offset(lv, (S19905C19*)(S19595C5*)(S19595C8*), ABISELECT(64,40), "S19595C1");
    /*is_ambiguous_... S19595C6::S19595C5 */ AMB_check_base_class_offset(lv, (S19905C19*)(S19595C5*)(S19595C6*), ABISELECT(64,40), "S19595C1");
    /*is_ambiguous_... S19595C3::S19595C9 */ AMB_check_base_class_offset(lv, (S19905C19*)(S19595C9*)(S19595C3*)(S19595C2*), ABISELECT(64,40), "S19595C1");
    /*is_ambiguous_... S19595C3::S19595C9 */ AMB_check_base_class_offset(lv, (S19905C19*)(S19595C10*)(S19595C9*)(S19595C3*)(S19595C2*), ABISELECT(64,40), "S19595C1");
    /*is_ambiguous_... S19595C1::S19595C8 */ AMB_check_base_class_offset(lv, (S19905C19*)(S19595C5*)(S19595C8*), ABISELECT(64,40), "S19595C1");
    /*is_ambiguous_... S19595C3::S19595C5 */ AMB_check_base_class_offset(lv, (S19595C5*)(S19595C3*)(S19595C2*), ABISELECT(64,40), "S19595C1");
    check_base_class_offset(lv, (S5266C29*)(S19595C6*), 0, "S19595C1");
    /*is_ambiguous_... S19595C1::S19595C9 */ AMB_check_base_class_offset(lv, (S19595C5*)(S19595C10*)(S19595C9*), ABISELECT(368,216), "S19595C1");
    /*is_ambiguous_... S19595C3::S19595C9 */ AMB_check_base_class_offset(lv, (S19595C5*)(S19595C10*)(S19595C9*)(S19595C3*)(S19595C2*), ABISELECT(368,216), "S19595C1");
    /*is_ambiguous_... S19595C1::S19595C9 */ AMB_check_base_class_offset(lv, (S19595C10*)(S19595C9*), ABISELECT(304,180), "S19595C1");
    /*is_ambiguous_... S19595C1::S19595C9 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S19595C9*), ABISELECT(320,188), "S19595C1");
    /*is_ambiguous_... S19595C1::S19595C8 */ AMB_check_base_class_offset(lv, (S19595C9*)(S19595C8*), ABISELECT(304,180), "S19595C1");
    /*is_ambiguous_... S19595C1::S19595C8 */ AMB_check_base_class_offset(lv, (S19595C9*)(S19595C8*), ABISELECT(304,180), "S19595C1");
    /*is_ambiguous_... S19595C1::S19595C8 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S19595C8*), ABISELECT(248,144), "S19595C1");
    /*is_ambiguous_... S19595C1::S19595C8 */ AMB_check_base_class_offset(lv, (S19905C19*)(S19595C8*), ABISELECT(240,140), "S19595C1");
    /*is_ambiguous_... S19595C1::S19595C8 */ AMB_check_base_class_offset(lv, (S19595C5*)(S19595C8*), ABISELECT(256,148), "S19595C1");
    check_base_class_offset(lv, (S19595C8*)(S19595C6*), ABISELECT(240,140), "S19595C1");
    /*is_ambiguous_... S19595C6::S19595C5 */ AMB_check_base_class_offset(lv, (S19595C5*)(S19595C6*), ABISELECT(192,112), "S19595C1");
    check_base_class_offset(lv, (S19595C6*)(S19595C3*)(S19595C2*), ABISELECT(192,112), "S19595C1");
    /*is_ambiguous_... S19595C3::S19595C9 */ AMB_check_base_class_offset(lv, (S19595C10*)(S19595C9*)(S19595C3*)(S19595C2*), ABISELECT(112,68), "S19595C1");
    /*is_ambiguous_... S19595C3::S19595C9 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S19595C9*)(S19595C3*)(S19595C2*), ABISELECT(128,76), "S19595C1");
    /*is_ambiguous_... S19595C3::S19595C9 */ AMB_check_base_class_offset(lv, (S19595C9*)(S19595C3*)(S19595C2*), ABISELECT(112,68), "S19595C1");
    check_base_class_offset(lv, (S19595C3*)(S19595C2*), ABISELECT(64,40), "S19595C1");
    check_base_class_offset(lv, (S19595C2*), ABISELECT(64,40), "S19595C1");
    /*is_ambiguous_... S19595C1::S19595C8 */ AMB_check_base_class_offset(lv, (S17777C6_nt*)(S19595C8*), ABISELECT(8,4), "S19595C1");
    /*is_ambiguous_... S19595C1::S19595C8 */ AMB_check_base_class_offset(lv, (S19905C19*)(S19595C8*), 0, "S19595C1");
    /*is_ambiguous_... S19595C1::S19595C8 */ AMB_check_base_class_offset(lv, (S19595C5*)(S19595C8*), ABISELECT(16,8), "S19595C1");
    /*is_ambiguous_... S19595C1::S19595C8 */ AMB_check_base_class_offset(lv, (S19595C8*), 0, "S19595C1");
    test_class_info(&lv, &cd_S19595C1);
    dp->~S19595C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19595C1(Test_S19595C1, "S19595C1", ABISELECT(416,244));

#else // __cplusplus

extern void _ZN8S19595C1C1Ev();
extern void _ZN8S19595C1D1Ev();
Name_Map name_map_S19595C1[] = {
  NSPAIR(_ZN8S19595C1C1Ev),
  NSPAIR(_ZN8S19595C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S19595C5;
extern VTBL_ENTRY _ZTI8S19595C5[];
extern  VTBL_ENTRY _ZTV8S19595C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19595C5[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S19595C5;
extern VTBL_ENTRY _ZTI8S19595C5[];
extern  VTBL_ENTRY _ZTV8S19595C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19595C5[];
extern Class_Descriptor cd_S19595C10;
extern VTBL_ENTRY _ZTI9S19595C10[];
extern  VTBL_ENTRY _ZTV9S19595C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19595C10[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19595C9;
extern VTBL_ENTRY _ZTI8S19595C9[];
extern  VTBL_ENTRY _ZTV8S19595C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19595C9[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S19595C5;
extern VTBL_ENTRY _ZTI8S19595C5[];
extern  VTBL_ENTRY _ZTV8S19595C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19595C5[];
extern Class_Descriptor cd_S19595C8;
extern VTBL_ENTRY _ZTI8S19595C8[];
extern  VTBL_ENTRY _ZTV8S19595C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19595C8[];
extern Class_Descriptor cd_S19595C5;
extern VTBL_ENTRY _ZTI8S19595C5[];
extern  VTBL_ENTRY _ZTV8S19595C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19595C5[];
extern Class_Descriptor cd_S19595C6;
extern VTBL_ENTRY _ZTI8S19595C6[];
extern  VTBL_ENTRY _ZTV8S19595C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19595C6[];
extern Class_Descriptor cd_S19595C10;
extern VTBL_ENTRY _ZTI9S19595C10[];
extern  VTBL_ENTRY _ZTV9S19595C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19595C10[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19595C9;
extern VTBL_ENTRY _ZTI8S19595C9[];
extern  VTBL_ENTRY _ZTV8S19595C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19595C9[];
extern Class_Descriptor cd_S19595C3;
extern VTBL_ENTRY _ZTI8S19595C3[];
extern  VTBL_ENTRY _ZTV8S19595C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19595C3[];
extern Class_Descriptor cd_S19595C2;
extern VTBL_ENTRY _ZTI8S19595C2[];
extern  VTBL_ENTRY _ZTV8S19595C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19595C2[];
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S19595C5;
extern VTBL_ENTRY _ZTI8S19595C5[];
extern  VTBL_ENTRY _ZTV8S19595C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19595C5[];
extern Class_Descriptor cd_S19595C8;
extern VTBL_ENTRY _ZTI8S19595C8[];
extern  VTBL_ENTRY _ZTV8S19595C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19595C8[];
static Base_Class bases_S19595C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19905C19,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19595C5,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19595C5,    ABISELECT(368,216), //bcp->offset
    66, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19595C10,    ABISELECT(304,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(320,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19595C9,    ABISELECT(304,180), //bcp->offset
    59, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S17777C6_nt,    ABISELECT(248,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19905C19,    ABISELECT(240,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19595C5,    ABISELECT(256,148), //bcp->offset
    53, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19595C8,    ABISELECT(240,140), //bcp->offset
    45, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19595C5,    ABISELECT(192,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19595C6,    ABISELECT(192,112), //bcp->offset
    35, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19595C10,    ABISELECT(112,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S17777C6_nt,    ABISELECT(128,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19595C9,    ABISELECT(112,68), //bcp->offset
    28, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19595C3,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19595C2,    ABISELECT(64,40), //bcp->offset
    17, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S17777C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19905C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19595C5,    ABISELECT(16,8), //bcp->offset
    11, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19595C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19595C1[];
extern void _ZN8S19595C1D1Ev();
extern void _ZN8S19595C1D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19595C1D1Ev,_ZTv0_n12_N8S19595C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S19595C1D1Ev,_ZThn8_N8S19595C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C1D0Ev,_ZTv0_n12_N8S19595C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S19595C1D0Ev,_ZThn8_N8S19595C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C1D1Ev,_ZTv0_n12_N8S19595C1D1Ev)();
extern void ABISELECT(_ZThn64_N8S19595C1D1Ev,_ZThn40_N8S19595C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C1D0Ev,_ZTv0_n12_N8S19595C1D0Ev)();
extern void ABISELECT(_ZThn64_N8S19595C1D0Ev,_ZThn40_N8S19595C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C1D1Ev,_ZTv0_n12_N8S19595C1D1Ev)();
extern void ABISELECT(_ZThn112_N8S19595C1D1Ev,_ZThn68_N8S19595C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C1D0Ev,_ZTv0_n12_N8S19595C1D0Ev)();
extern void ABISELECT(_ZThn112_N8S19595C1D0Ev,_ZThn68_N8S19595C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C1D1Ev,_ZTv0_n12_N8S19595C1D1Ev)();
extern void ABISELECT(_ZThn192_N8S19595C1D1Ev,_ZThn112_N8S19595C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C1D0Ev,_ZTv0_n12_N8S19595C1D0Ev)();
extern void ABISELECT(_ZThn192_N8S19595C1D0Ev,_ZThn112_N8S19595C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19595C1D1Ev,_ZTv0_n24_N8S19595C1D1Ev)();
extern void ABISELECT(_ZThn240_N8S19595C1D1Ev,_ZThn140_N8S19595C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19595C1D0Ev,_ZTv0_n24_N8S19595C1D0Ev)();
extern void ABISELECT(_ZThn240_N8S19595C1D0Ev,_ZThn140_N8S19595C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C1D1Ev,_ZTv0_n12_N8S19595C1D1Ev)();
extern void ABISELECT(_ZThn256_N8S19595C1D1Ev,_ZThn148_N8S19595C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C1D0Ev,_ZTv0_n12_N8S19595C1D0Ev)();
extern void ABISELECT(_ZThn256_N8S19595C1D0Ev,_ZThn148_N8S19595C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C1D1Ev,_ZTv0_n12_N8S19595C1D1Ev)();
extern void ABISELECT(_ZThn304_N8S19595C1D1Ev,_ZThn180_N8S19595C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C1D0Ev,_ZTv0_n12_N8S19595C1D0Ev)();
extern void ABISELECT(_ZThn304_N8S19595C1D0Ev,_ZThn180_N8S19595C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C1D1Ev,_ZTv0_n12_N8S19595C1D1Ev)();
extern void ABISELECT(_ZThn368_N8S19595C1D1Ev,_ZThn216_N8S19595C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C1D0Ev,_ZTv0_n12_N8S19595C1D0Ev)();
extern void ABISELECT(_ZThn368_N8S19595C1D0Ev,_ZThn216_N8S19595C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19595C1[] = {
  ABISELECT(240,140),
  0,
  ABISELECT(192,112),
  ABISELECT(64,40),
  ABISELECT(368,216),
  ABISELECT(64,40),
  ABISELECT(304,180),
  0,
  (VTBL_ENTRY)&(_ZTI8S19595C1[0]),
  (VTBL_ENTRY)&_ZN8S19595C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19595C1D0Ev,
  ABISELECT(48,32),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19595C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C1D1Ev,_ZTv0_n12_N8S19595C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C1D0Ev,_ZTv0_n12_N8S19595C1D0Ev),
  ABISELECT(304,176),
  ABISELECT(240,140),
  ABISELECT(176,100),
  ABISELECT(-64,-40),
  ABISELECT(128,72),
  0,
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19595C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C1D1Ev,_ZTv0_n12_N8S19595C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C1D0Ev,_ZTv0_n12_N8S19595C1D0Ev),
  ABISELECT(256,148),
  ABISELECT(-48,-28),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S19595C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C1D1Ev,_ZTv0_n12_N8S19595C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C1D0Ev,_ZTv0_n12_N8S19595C1D0Ev),
  ABISELECT(176,104),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-192,-112),
  ABISELECT(-128,-72),
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI8S19595C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C1D1Ev,_ZTv0_n12_N8S19595C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C1D0Ev,_ZTv0_n12_N8S19595C1D0Ev),
  ABISELECT(-240,-140),
  ABISELECT(128,76),
  ABISELECT(-176,-100),
  ABISELECT(64,40),
  ABISELECT(-240,-140),
  (VTBL_ENTRY)&(_ZTI8S19595C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19595C1D1Ev,_ZTv0_n24_N8S19595C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19595C1D0Ev,_ZTv0_n24_N8S19595C1D0Ev),
  ABISELECT(-192,-108),
  ABISELECT(-256,-148),
  ABISELECT(-256,-148),
  (VTBL_ENTRY)&(_ZTI8S19595C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C1D1Ev,_ZTv0_n12_N8S19595C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C1D0Ev,_ZTv0_n12_N8S19595C1D0Ev),
  ABISELECT(64,36),
  ABISELECT(-240,-140),
  ABISELECT(-304,-180),
  ABISELECT(-304,-180),
  (VTBL_ENTRY)&(_ZTI8S19595C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C1D1Ev,_ZTv0_n12_N8S19595C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C1D0Ev,_ZTv0_n12_N8S19595C1D0Ev),
  ABISELECT(-304,-176),
  ABISELECT(-368,-216),
  ABISELECT(-368,-216),
  (VTBL_ENTRY)&(_ZTI8S19595C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C1D1Ev,_ZTv0_n12_N8S19595C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C1D0Ev,_ZTv0_n12_N8S19595C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19595C1[];
extern void _ZN8S19595C8D1Ev();
extern void _ZN8S19595C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19595C8__A__8S19595C1[] = {
  ABISELECT(368,216),
  ABISELECT(64,40),
  ABISELECT(304,180),
  0,
  (VTBL_ENTRY)&(_ZTI8S19595C8[0]),
  (VTBL_ENTRY)&_ZN8S19595C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19595C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev)();
extern void _ZN8S19595C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev)();
extern void _ZN8S19595C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C58S19595C8__A4__8S19595C1[] = {
  ABISELECT(48,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19595C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev)();
extern void ABISELECT(_ZThn48_N8S19595C5D1Ev,_ZThn32_N8S19595C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev)();
extern void ABISELECT(_ZThn48_N8S19595C5D0Ev,_ZThn32_N8S19595C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S19595C58S19595C8__A4__8S19595C1[] = {
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S19595C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev)();
extern void ABISELECT(_ZThn304_N8S19595C8D1Ev,_ZThn180_N8S19595C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev)();
extern void ABISELECT(_ZThn304_N8S19595C8D0Ev,_ZThn180_N8S19595C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C9__8S19595C8__A__8S19595C1[] = {
  ABISELECT(64,36),
  ABISELECT(-240,-140),
  ABISELECT(-304,-180),
  ABISELECT(-304,-180),
  (VTBL_ENTRY)&(_ZTI8S19595C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev)();
extern void ABISELECT(_ZThn64_N8S19595C8D1Ev,_ZThn40_N8S19595C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev)();
extern void ABISELECT(_ZThn64_N8S19595C8D0Ev,_ZThn40_N8S19595C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S19595C8__A__8S19595C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19595C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev)();
extern void ABISELECT(_ZThn368_N8S19595C8D1Ev,_ZThn216_N8S19595C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev)();
extern void ABISELECT(_ZThn368_N8S19595C8D0Ev,_ZThn216_N8S19595C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C5__8S19595C8__A__8S19595C1[] = {
  ABISELECT(-304,-176),
  ABISELECT(-368,-216),
  ABISELECT(-368,-216),
  (VTBL_ENTRY)&(_ZTI8S19595C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S19595C8D1Ev,_ZThn8_N8S19595C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S19595C8D0Ev,_ZThn8_N8S19595C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C5__A__8S19595C8__A__8S19595C1[] = {
  ABISELECT(48,32),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19595C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C2D1Ev,_ZTv0_n12_N8S19595C2D1Ev)();
extern void _ZN8S19595C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C2D0Ev,_ZTv0_n12_N8S19595C2D0Ev)();
extern void _ZN8S19595C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C2__8S19595C1[] = {
  ABISELECT(304,176),
  ABISELECT(240,140),
  ABISELECT(176,100),
  ABISELECT(-64,-40),
  ABISELECT(128,72),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19595C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C2D1Ev,_ZTv0_n12_N8S19595C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C2D0Ev,_ZTv0_n12_N8S19595C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C3D1Ev,_ZTv0_n12_N8S19595C3D1Ev)();
extern void _ZN8S19595C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C3D0Ev,_ZTv0_n12_N8S19595C3D0Ev)();
extern void _ZN8S19595C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C38S19595C2__8S19595C1[] = {
  ABISELECT(304,176),
  ABISELECT(240,140),
  ABISELECT(176,100),
  ABISELECT(-64,-40),
  ABISELECT(128,72),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19595C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C3D1Ev,_ZTv0_n12_N8S19595C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C3D0Ev,_ZTv0_n12_N8S19595C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev)();
extern void _ZN8S19595C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev)();
extern void _ZN8S19595C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C58S19595C38S19595C2__8S19595C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19595C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev)();
extern void _ZN8S19595C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev)();
extern void _ZN8S19595C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C98S19595C38S19595C2__A1__8S19595C1[] = {
  ABISELECT(256,148),
  ABISELECT(-48,-28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19595C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev)();
extern void _ZN9S19595C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev)();
extern void _ZN9S19595C10D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19595C108S19595C98S19595C38S19595C2__A1__8S19595C1[] = {
  ABISELECT(256,148),
  ABISELECT(-48,-28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19595C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__9S19595C108S19595C98S19595C38S19595C2__A1__8S19595C1[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19595C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev)();
extern void ABISELECT(_ZThn256_N9S19595C10D1Ev,_ZThn148_N9S19595C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev)();
extern void ABISELECT(_ZThn256_N9S19595C10D0Ev,_ZThn148_N9S19595C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C5__9S19595C108S19595C98S19595C38S19595C2__A1__8S19595C1[] = {
  ABISELECT(-304,-176),
  ABISELECT(-256,-148),
  ABISELECT(-256,-148),
  (VTBL_ENTRY)&(_ZTI9S19595C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S19595C98S19595C38S19595C2__A1__8S19595C1[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19595C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev)();
extern void ABISELECT(_ZThn256_N8S19595C9D1Ev,_ZThn148_N8S19595C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev)();
extern void ABISELECT(_ZThn256_N8S19595C9D0Ev,_ZThn148_N8S19595C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C5__8S19595C98S19595C38S19595C2__A1__8S19595C1[] = {
  ABISELECT(-304,-176),
  ABISELECT(-256,-148),
  ABISELECT(-256,-148),
  (VTBL_ENTRY)&(_ZTI8S19595C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C3D1Ev,_ZTv0_n12_N8S19595C3D1Ev)();
extern void ABISELECT(_ZThn128_N8S19595C3D1Ev,_ZThn72_N8S19595C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C3D0Ev,_ZTv0_n12_N8S19595C3D0Ev)();
extern void ABISELECT(_ZThn128_N8S19595C3D0Ev,_ZThn72_N8S19595C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C6__8S19595C38S19595C2__8S19595C1[] = {
  ABISELECT(176,104),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-192,-112),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S19595C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C3D1Ev,_ZTv0_n12_N8S19595C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C3D0Ev,_ZTv0_n12_N8S19595C3D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19595C3D1Ev,_ZTv0_n24_N8S19595C3D1Ev)();
extern void ABISELECT(_ZThn176_N8S19595C3D1Ev,_ZThn100_N8S19595C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19595C3D0Ev,_ZTv0_n24_N8S19595C3D0Ev)();
extern void ABISELECT(_ZThn176_N8S19595C3D0Ev,_ZThn100_N8S19595C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C8__8S19595C38S19595C2__8S19595C1[] = {
  ABISELECT(-176,-100),
  ABISELECT(128,76),
  ABISELECT(-176,-100),
  ABISELECT(64,40),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI8S19595C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19595C3D1Ev,_ZTv0_n24_N8S19595C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19595C3D0Ev,_ZTv0_n24_N8S19595C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C3D1Ev,_ZTv0_n12_N8S19595C3D1Ev)();
extern void ABISELECT(_ZThn240_N8S19595C3D1Ev,_ZThn140_N8S19595C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C3D0Ev,_ZTv0_n12_N8S19595C3D0Ev)();
extern void ABISELECT(_ZThn240_N8S19595C3D0Ev,_ZThn140_N8S19595C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C9__8S19595C38S19595C2__8S19595C1[] = {
  ABISELECT(64,36),
  ABISELECT(-240,-140),
  ABISELECT(-240,-140),
  ABISELECT(-240,-140),
  (VTBL_ENTRY)&(_ZTI8S19595C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C3D1Ev,_ZTv0_n12_N8S19595C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C3D0Ev,_ZTv0_n12_N8S19595C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C3D1Ev,_ZTv0_n12_N8S19595C3D1Ev)();
extern void ABISELECT(_ZThn304_N8S19595C3D1Ev,_ZThn176_N8S19595C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C3D0Ev,_ZTv0_n12_N8S19595C3D0Ev)();
extern void ABISELECT(_ZThn304_N8S19595C3D0Ev,_ZThn176_N8S19595C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C5__A1__8S19595C38S19595C2__8S19595C1[] = {
  ABISELECT(-304,-176),
  ABISELECT(-304,-176),
  ABISELECT(-304,-176),
  (VTBL_ENTRY)&(_ZTI8S19595C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C3D1Ev,_ZTv0_n12_N8S19595C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C3D0Ev,_ZTv0_n12_N8S19595C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C3D1Ev,_ZTv0_n12_N8S19595C3D1Ev)();
extern void ABISELECT(_ZThn192_N8S19595C3D1Ev,_ZThn108_N8S19595C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C3D0Ev,_ZTv0_n12_N8S19595C3D0Ev)();
extern void ABISELECT(_ZThn192_N8S19595C3D0Ev,_ZThn108_N8S19595C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C58S19595C8__A2__8S19595C38S19595C2__8S19595C1[] = {
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI8S19595C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C3D1Ev,_ZTv0_n12_N8S19595C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C3D0Ev,_ZTv0_n12_N8S19595C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C3D1Ev,_ZTv0_n12_N8S19595C3D1Ev)();
extern void ABISELECT(_ZThn48_N8S19595C3D1Ev,_ZThn28_N8S19595C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C3D0Ev,_ZTv0_n12_N8S19595C3D0Ev)();
extern void ABISELECT(_ZThn48_N8S19595C3D0Ev,_ZThn28_N8S19595C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C9__A__8S19595C38S19595C2__8S19595C1[] = {
  ABISELECT(256,148),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19595C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C3D1Ev,_ZTv0_n12_N8S19595C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C3D0Ev,_ZTv0_n12_N8S19595C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C2D1Ev,_ZTv0_n12_N8S19595C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S19595C2D1Ev,_ZThn72_N8S19595C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C2D0Ev,_ZTv0_n12_N8S19595C2D0Ev)();
extern void ABISELECT(_ZThn128_N8S19595C2D0Ev,_ZThn72_N8S19595C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C6__8S19595C2__8S19595C1[] = {
  ABISELECT(176,104),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-192,-112),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S19595C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C2D1Ev,_ZTv0_n12_N8S19595C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C2D0Ev,_ZTv0_n12_N8S19595C2D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19595C2D1Ev,_ZTv0_n24_N8S19595C2D1Ev)();
extern void ABISELECT(_ZThn176_N8S19595C2D1Ev,_ZThn100_N8S19595C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19595C2D0Ev,_ZTv0_n24_N8S19595C2D0Ev)();
extern void ABISELECT(_ZThn176_N8S19595C2D0Ev,_ZThn100_N8S19595C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C8__8S19595C2__8S19595C1[] = {
  ABISELECT(-176,-100),
  ABISELECT(128,76),
  ABISELECT(-176,-100),
  ABISELECT(64,40),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI8S19595C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19595C2D1Ev,_ZTv0_n24_N8S19595C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19595C2D0Ev,_ZTv0_n24_N8S19595C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C2D1Ev,_ZTv0_n12_N8S19595C2D1Ev)();
extern void ABISELECT(_ZThn240_N8S19595C2D1Ev,_ZThn140_N8S19595C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C2D0Ev,_ZTv0_n12_N8S19595C2D0Ev)();
extern void ABISELECT(_ZThn240_N8S19595C2D0Ev,_ZThn140_N8S19595C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C9__8S19595C2__8S19595C1[] = {
  ABISELECT(64,36),
  ABISELECT(-240,-140),
  ABISELECT(-240,-140),
  ABISELECT(-240,-140),
  (VTBL_ENTRY)&(_ZTI8S19595C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C2D1Ev,_ZTv0_n12_N8S19595C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C2D0Ev,_ZTv0_n12_N8S19595C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C2D1Ev,_ZTv0_n12_N8S19595C2D1Ev)();
extern void ABISELECT(_ZThn304_N8S19595C2D1Ev,_ZThn176_N8S19595C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C2D0Ev,_ZTv0_n12_N8S19595C2D0Ev)();
extern void ABISELECT(_ZThn304_N8S19595C2D0Ev,_ZThn176_N8S19595C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C5__A1__8S19595C2__8S19595C1[] = {
  ABISELECT(-304,-176),
  ABISELECT(-304,-176),
  ABISELECT(-304,-176),
  (VTBL_ENTRY)&(_ZTI8S19595C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C2D1Ev,_ZTv0_n12_N8S19595C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C2D0Ev,_ZTv0_n12_N8S19595C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C2D1Ev,_ZTv0_n12_N8S19595C2D1Ev)();
extern void ABISELECT(_ZThn192_N8S19595C2D1Ev,_ZThn108_N8S19595C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C2D0Ev,_ZTv0_n12_N8S19595C2D0Ev)();
extern void ABISELECT(_ZThn192_N8S19595C2D0Ev,_ZThn108_N8S19595C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C58S19595C8__A2__8S19595C2__8S19595C1[] = {
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI8S19595C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C2D1Ev,_ZTv0_n12_N8S19595C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C2D0Ev,_ZTv0_n12_N8S19595C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C2D1Ev,_ZTv0_n12_N8S19595C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S19595C2D1Ev,_ZThn28_N8S19595C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C2D0Ev,_ZTv0_n12_N8S19595C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S19595C2D0Ev,_ZThn28_N8S19595C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C98S19595C3__A1__8S19595C2__8S19595C1[] = {
  ABISELECT(256,148),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19595C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C2D1Ev,_ZTv0_n12_N8S19595C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C2D0Ev,_ZTv0_n12_N8S19595C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C6D1Ev,_ZTv0_n12_N8S19595C6D1Ev)();
extern void _ZN8S19595C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C6D0Ev,_ZTv0_n12_N8S19595C6D0Ev)();
extern void _ZN8S19595C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C6__8S19595C1[] = {
  ABISELECT(176,104),
  ABISELECT(112,68),
  ABISELECT(48,28),
  ABISELECT(-192,-112),
  ABISELECT(-128,-72),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19595C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C6D1Ev,_ZTv0_n12_N8S19595C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C6D0Ev,_ZTv0_n12_N8S19595C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev)();
extern void _ZN8S19595C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev)();
extern void _ZN8S19595C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C58S19595C6__A3__8S19595C1[] = {
  ABISELECT(-128,-72),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19595C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S19595C58S19595C6__A3__8S19595C1[] = {
  ABISELECT(128,72),
  ABISELECT(128,72),
  (VTBL_ENTRY)&(_ZTI8S19595C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19595C6D1Ev,_ZTv0_n24_N8S19595C6D1Ev)();
extern void ABISELECT(_ZThn48_N8S19595C6D1Ev,_ZThn28_N8S19595C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19595C6D0Ev,_ZTv0_n24_N8S19595C6D0Ev)();
extern void ABISELECT(_ZThn48_N8S19595C6D0Ev,_ZThn28_N8S19595C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C8__8S19595C6__8S19595C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(128,76),
  ABISELECT(-176,-100),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19595C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19595C6D1Ev,_ZTv0_n24_N8S19595C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19595C6D0Ev,_ZTv0_n24_N8S19595C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C6D1Ev,_ZTv0_n12_N8S19595C6D1Ev)();
extern void ABISELECT(_ZThn112_N8S19595C6D1Ev,_ZThn68_N8S19595C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C6D0Ev,_ZTv0_n12_N8S19595C6D0Ev)();
extern void ABISELECT(_ZThn112_N8S19595C6D0Ev,_ZThn68_N8S19595C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C9__8S19595C6__8S19595C1[] = {
  ABISELECT(64,36),
  ABISELECT(-240,-140),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S19595C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C6D1Ev,_ZTv0_n12_N8S19595C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C6D0Ev,_ZTv0_n12_N8S19595C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C6D1Ev,_ZTv0_n12_N8S19595C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19595C6D0Ev,_ZTv0_n12_N8S19595C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S19595C6__8S19595C1[] = {
  ABISELECT(128,72),
  ABISELECT(128,72),
  (VTBL_ENTRY)&(_ZTI8S19595C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C6D1Ev,_ZTv0_n12_N8S19595C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C6D0Ev,_ZTv0_n12_N8S19595C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C6D1Ev,_ZTv0_n12_N8S19595C6D1Ev)();
extern void ABISELECT(_ZThn176_N8S19595C6D1Ev,_ZThn104_N8S19595C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C6D0Ev,_ZTv0_n12_N8S19595C6D0Ev)();
extern void ABISELECT(_ZThn176_N8S19595C6D0Ev,_ZThn104_N8S19595C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C5__8S19595C6__8S19595C1[] = {
  ABISELECT(-304,-176),
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI8S19595C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C6D1Ev,_ZTv0_n12_N8S19595C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C6D0Ev,_ZTv0_n12_N8S19595C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C6D1Ev,_ZTv0_n12_N8S19595C6D1Ev)();
extern void ABISELECT(_ZThn64_N8S19595C6D1Ev,_ZThn36_N8S19595C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C6D0Ev,_ZTv0_n12_N8S19595C6D0Ev)();
extern void ABISELECT(_ZThn64_N8S19595C6D0Ev,_ZThn36_N8S19595C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C58S19595C8__A1__8S19595C6__8S19595C1[] = {
  ABISELECT(-192,-108),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19595C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C6D1Ev,_ZTv0_n12_N8S19595C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C6D0Ev,_ZTv0_n12_N8S19595C6D0Ev),
};
extern void _ZN8S19595C8D1Ev();
extern void _ZN8S19595C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19595C8__8S19595C1[] = {
  ABISELECT(128,76),
  ABISELECT(-176,-100),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19595C8[0]),
  (VTBL_ENTRY)&_ZN8S19595C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19595C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev)();
extern void _ZN8S19595C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev)();
extern void _ZN8S19595C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C58S19595C8__A2__8S19595C1[] = {
  ABISELECT(-192,-108),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19595C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S19595C58S19595C8__A2__8S19595C1[] = {
  ABISELECT(192,108),
  ABISELECT(192,108),
  (VTBL_ENTRY)&(_ZTI8S19595C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev)();
extern void ABISELECT(_ZThn64_N8S19595C8D1Ev,_ZThn40_N8S19595C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev)();
extern void ABISELECT(_ZThn64_N8S19595C8D0Ev,_ZThn40_N8S19595C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C9__8S19595C8__8S19595C1[] = {
  ABISELECT(64,36),
  ABISELECT(-240,-140),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19595C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S19595C8__8S19595C1[] = {
  ABISELECT(176,100),
  ABISELECT(176,100),
  (VTBL_ENTRY)&(_ZTI8S19595C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S19595C8D1Ev,_ZThn76_N8S19595C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S19595C8D0Ev,_ZThn76_N8S19595C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C5__8S19595C8__8S19595C1[] = {
  ABISELECT(-304,-176),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S19595C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S19595C8D1Ev,_ZThn8_N8S19595C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S19595C8D0Ev,_ZThn8_N8S19595C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C5__A__8S19595C8__8S19595C1[] = {
  ABISELECT(-192,-108),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19595C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev)();
extern void _ZN8S19595C9D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev)();
extern void _ZN8S19595C9D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C9__8S19595C1[] = {
  ABISELECT(64,36),
  ABISELECT(-240,-140),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19595C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev)();
extern void _ZN9S19595C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev)();
extern void _ZN9S19595C10D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19595C108S19595C9__8S19595C1[] = {
  ABISELECT(64,36),
  ABISELECT(-240,-140),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19595C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__9S19595C108S19595C9__8S19595C1[] = {
  ABISELECT(240,140),
  ABISELECT(240,140),
  (VTBL_ENTRY)&(_ZTI9S19595C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev)();
extern void ABISELECT(_ZThn64_N9S19595C10D1Ev,_ZThn36_N9S19595C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev)();
extern void ABISELECT(_ZThn64_N9S19595C10D0Ev,_ZThn36_N9S19595C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C5__9S19595C108S19595C9__8S19595C1[] = {
  ABISELECT(-304,-176),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19595C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S19595C9__8S19595C1[] = {
  ABISELECT(240,140),
  ABISELECT(240,140),
  (VTBL_ENTRY)&(_ZTI8S19595C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev)();
extern void ABISELECT(_ZThn64_N8S19595C9D1Ev,_ZThn36_N8S19595C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev)();
extern void ABISELECT(_ZThn64_N8S19595C9D0Ev,_ZThn36_N8S19595C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C5__8S19595C9__8S19595C1[] = {
  ABISELECT(-304,-176),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19595C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev)();
extern void _ZN8S19595C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev)();
extern void _ZN8S19595C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19595C5__A1__8S19595C1[] = {
  ABISELECT(-304,-176),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19595C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19905C19__8S19595C5__A1__8S19595C1[] = {
  ABISELECT(304,176),
  ABISELECT(304,176),
  (VTBL_ENTRY)&(_ZTI8S19595C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev),
};
static  VTT_ENTRY vtt_S19595C1[] = {
  {&(_ZTV8S19595C1[9]),  9,72},
  {&(_tg__ZTV8S19595C8__A__8S19595C1[5]),  5,7},
  {&(_tg__ZTV8S19595C58S19595C8__A4__8S19595C1[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S19595C58S19595C8__A4__8S19595C1[3]),  3,5},
  {&(_tg__ZTV8S19595C9__8S19595C8__A__8S19595C1[5]),  5,7},
  {&(_tg__ZTV9S19905C19__8S19595C8__A__8S19595C1[3]),  3,5},
  {&(_tg__ZTV8S19595C5__8S19595C8__A__8S19595C1[4]),  4,6},
  {&(_tg__ZTV8S19595C5__A__8S19595C8__A__8S19595C1[4]),  4,6},
  {&(_ZTV8S19595C1[26]),  26,72},
  {&(_ZTV8S19595C1[26]),  26,72},
  {&(_ZTV8S19595C1[43]),  43,72},
  {&(_ZTV8S19595C1[51]),  51,72},
  {&(_ZTV8S19595C1[64]),  64,72},
  {&(_ZTV8S19595C1[70]),  70,72},
  {&(_ZTV8S19595C1[57]),  57,72},
  {&(_ZTV8S19595C1[33]),  33,72},
  {&(_ZTV8S19595C1[15]),  15,72},
  {&(_tg__ZTV8S19595C2__8S19595C1[9]),  9,11},
  {&(_tg__ZTV8S19595C38S19595C2__8S19595C1[9]),  9,11},
  {&(_tg__ZTV8S19595C58S19595C38S19595C2__8S19595C1[4]),  4,6},
  {&(_tg__ZTV8S19595C58S19595C38S19595C2__8S19595C1[4]),  4,6},
  {&(_tg__ZTV8S19595C98S19595C38S19595C2__A1__8S19595C1[5]),  5,7},
  {&(_tg__ZTV9S19595C108S19595C98S19595C38S19595C2__A1__8S19595C1[5]),  5,7},
  {&(_tg__ZTV9S19905C19__9S19595C108S19595C98S19595C38S19595C2__A1__8S19595C1[3]),  3,5},
  {&(_tg__ZTV8S19595C5__9S19595C108S19595C98S19595C38S19595C2__A1__8S19595C1[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S19595C98S19595C38S19595C2__A1__8S19595C1[3]),  3,5},
  {&(_tg__ZTV8S19595C5__8S19595C98S19595C38S19595C2__A1__8S19595C1[4]),  4,6},
  {&(_tg__ZTV8S19595C38S19595C2__8S19595C1[9]),  9,11},
  {&(_tg__ZTV8S19595C6__8S19595C38S19595C2__8S19595C1[8]),  8,10},
  {&(_tg__ZTV8S19595C8__8S19595C38S19595C2__8S19595C1[6]),  6,8},
  {&(_tg__ZTV8S19595C9__8S19595C38S19595C2__8S19595C1[5]),  5,7},
  {&(_tg__ZTV8S19595C5__A1__8S19595C38S19595C2__8S19595C1[4]),  4,6},
  {&(_tg__ZTV8S19595C58S19595C8__A2__8S19595C38S19595C2__8S19595C1[4]),  4,6},
  {&(_tg__ZTV8S19595C9__A__8S19595C38S19595C2__8S19595C1[5]),  5,7},
  {&(_tg__ZTV8S19595C2__8S19595C1[9]),  9,11},
  {&(_tg__ZTV8S19595C6__8S19595C2__8S19595C1[8]),  8,10},
  {&(_tg__ZTV8S19595C8__8S19595C2__8S19595C1[6]),  6,8},
  {&(_tg__ZTV8S19595C9__8S19595C2__8S19595C1[5]),  5,7},
  {&(_tg__ZTV8S19595C5__A1__8S19595C2__8S19595C1[4]),  4,6},
  {&(_tg__ZTV8S19595C58S19595C8__A2__8S19595C2__8S19595C1[4]),  4,6},
  {&(_tg__ZTV8S19595C98S19595C3__A1__8S19595C2__8S19595C1[5]),  5,7},
  {&(_tg__ZTV8S19595C6__8S19595C1[8]),  8,10},
  {&(_tg__ZTV8S19595C58S19595C6__A3__8S19595C1[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S19595C58S19595C6__A3__8S19595C1[3]),  3,5},
  {&(_tg__ZTV8S19595C8__8S19595C6__8S19595C1[6]),  6,8},
  {&(_tg__ZTV8S19595C9__8S19595C6__8S19595C1[5]),  5,7},
  {&(_tg__ZTV9S19905C19__8S19595C6__8S19595C1[3]),  3,5},
  {&(_tg__ZTV8S19595C5__8S19595C6__8S19595C1[4]),  4,6},
  {&(_tg__ZTV8S19595C58S19595C8__A1__8S19595C6__8S19595C1[4]),  4,6},
  {&(_tg__ZTV8S19595C8__8S19595C1[5]),  5,7},
  {&(_tg__ZTV8S19595C58S19595C8__A2__8S19595C1[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S19595C58S19595C8__A2__8S19595C1[3]),  3,5},
  {&(_tg__ZTV8S19595C9__8S19595C8__8S19595C1[5]),  5,7},
  {&(_tg__ZTV9S19905C19__8S19595C8__8S19595C1[3]),  3,5},
  {&(_tg__ZTV8S19595C5__8S19595C8__8S19595C1[4]),  4,6},
  {&(_tg__ZTV8S19595C5__A__8S19595C8__8S19595C1[4]),  4,6},
  {&(_tg__ZTV8S19595C9__8S19595C1[5]),  5,7},
  {&(_tg__ZTV9S19595C108S19595C9__8S19595C1[5]),  5,7},
  {&(_tg__ZTV9S19905C19__9S19595C108S19595C9__8S19595C1[3]),  3,5},
  {&(_tg__ZTV8S19595C5__9S19595C108S19595C9__8S19595C1[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S19595C9__8S19595C1[3]),  3,5},
  {&(_tg__ZTV8S19595C5__8S19595C9__8S19595C1[4]),  4,6},
  {&(_tg__ZTV8S19595C5__A1__8S19595C1[4]),  4,6},
  {&(_tg__ZTV9S19905C19__8S19595C5__A1__8S19595C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19595C1[];
extern  VTBL_ENTRY _ZTV8S19595C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19595C1[];
static VTBL_ENTRY alt_thunk_names111[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19595C6D0Ev,_ZTv0_n24_N8S19595C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19595C6D0Ev,_ZThn28_N8S19595C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19595C6D1Ev,_ZTv0_n24_N8S19595C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19595C6D1Ev,_ZThn28_N8S19595C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C6D0Ev,_ZTv0_n12_N8S19595C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19595C6D0Ev,_ZThn36_N8S19595C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19595C6D0Ev,_ZThn104_N8S19595C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19595C6D0Ev,_ZThn68_N8S19595C6D0Ev),
  (VTBL_ENTRY)_ZN8S19595C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C6D1Ev,_ZTv0_n12_N8S19595C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19595C6D1Ev,_ZThn36_N8S19595C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19595C6D1Ev,_ZThn104_N8S19595C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19595C6D1Ev,_ZThn68_N8S19595C6D1Ev),
  (VTBL_ENTRY)_ZN8S19595C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19595C2D0Ev,_ZTv0_n24_N8S19595C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19595C2D0Ev,_ZThn100_N8S19595C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19595C2D1Ev,_ZTv0_n24_N8S19595C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19595C2D1Ev,_ZThn100_N8S19595C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19595C3D0Ev,_ZTv0_n24_N8S19595C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19595C3D0Ev,_ZThn100_N8S19595C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19595C3D1Ev,_ZTv0_n24_N8S19595C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19595C3D1Ev,_ZThn100_N8S19595C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19595C10D0Ev,_ZTv0_n12_N9S19595C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19595C10D0Ev,_ZThn36_N9S19595C10D0Ev),
  (VTBL_ENTRY)_ZN9S19595C10D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S19595C10D0Ev,_ZThn148_N9S19595C10D0Ev),
  (VTBL_ENTRY)_ZN9S19595C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19595C10D1Ev,_ZTv0_n12_N9S19595C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19595C10D1Ev,_ZThn36_N9S19595C10D1Ev),
  (VTBL_ENTRY)_ZN9S19595C10D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S19595C10D1Ev,_ZThn148_N9S19595C10D1Ev),
  (VTBL_ENTRY)_ZN9S19595C10D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C9D0Ev,_ZTv0_n12_N8S19595C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19595C9D0Ev,_ZThn36_N8S19595C9D0Ev),
  (VTBL_ENTRY)_ZN8S19595C9D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19595C9D0Ev,_ZThn148_N8S19595C9D0Ev),
  (VTBL_ENTRY)_ZN8S19595C9D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C9D1Ev,_ZTv0_n12_N8S19595C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19595C9D1Ev,_ZThn36_N8S19595C9D1Ev),
  (VTBL_ENTRY)_ZN8S19595C9D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19595C9D1Ev,_ZThn148_N8S19595C9D1Ev),
  (VTBL_ENTRY)_ZN8S19595C9D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C3D0Ev,_ZTv0_n12_N8S19595C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19595C3D0Ev,_ZThn28_N8S19595C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19595C3D0Ev,_ZThn108_N8S19595C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S19595C3D0Ev,_ZThn176_N8S19595C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19595C3D0Ev,_ZThn140_N8S19595C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19595C3D0Ev,_ZThn72_N8S19595C3D0Ev),
  (VTBL_ENTRY)_ZN8S19595C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C3D1Ev,_ZTv0_n12_N8S19595C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19595C3D1Ev,_ZThn28_N8S19595C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19595C3D1Ev,_ZThn108_N8S19595C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S19595C3D1Ev,_ZThn176_N8S19595C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19595C3D1Ev,_ZThn140_N8S19595C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19595C3D1Ev,_ZThn72_N8S19595C3D1Ev),
  (VTBL_ENTRY)_ZN8S19595C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C2D0Ev,_ZTv0_n12_N8S19595C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19595C2D0Ev,_ZThn28_N8S19595C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19595C2D0Ev,_ZThn108_N8S19595C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S19595C2D0Ev,_ZThn176_N8S19595C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19595C2D0Ev,_ZThn140_N8S19595C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19595C2D0Ev,_ZThn72_N8S19595C2D0Ev),
  (VTBL_ENTRY)_ZN8S19595C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C2D1Ev,_ZTv0_n12_N8S19595C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19595C2D1Ev,_ZThn28_N8S19595C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19595C2D1Ev,_ZThn108_N8S19595C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S19595C2D1Ev,_ZThn176_N8S19595C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19595C2D1Ev,_ZThn140_N8S19595C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19595C2D1Ev,_ZThn72_N8S19595C2D1Ev),
  (VTBL_ENTRY)_ZN8S19595C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C8D0Ev,_ZTv0_n12_N8S19595C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19595C8D0Ev,_ZThn8_N8S19595C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19595C8D0Ev,_ZThn76_N8S19595C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19595C8D0Ev,_ZThn40_N8S19595C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19595C8D0Ev,_ZThn8_N8S19595C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S19595C8D0Ev,_ZThn216_N8S19595C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19595C8D0Ev,_ZThn40_N8S19595C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S19595C8D0Ev,_ZThn180_N8S19595C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C8D1Ev,_ZTv0_n12_N8S19595C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19595C8D1Ev,_ZThn8_N8S19595C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19595C8D1Ev,_ZThn76_N8S19595C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19595C8D1Ev,_ZThn40_N8S19595C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19595C8D1Ev,_ZThn8_N8S19595C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S19595C8D1Ev,_ZThn216_N8S19595C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19595C8D1Ev,_ZThn40_N8S19595C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S19595C8D1Ev,_ZThn180_N8S19595C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C5D0Ev,_ZTv0_n12_N8S19595C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S19595C5D0Ev,
  (VTBL_ENTRY)_ZN8S19595C5D0Ev,
  (VTBL_ENTRY)_ZN8S19595C5D0Ev,
  (VTBL_ENTRY)_ZN8S19595C5D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19595C5D0Ev,_ZThn32_N8S19595C5D0Ev),
  (VTBL_ENTRY)_ZN8S19595C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C5D1Ev,_ZTv0_n12_N8S19595C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S19595C5D1Ev,
  (VTBL_ENTRY)_ZN8S19595C5D1Ev,
  (VTBL_ENTRY)_ZN8S19595C5D1Ev,
  (VTBL_ENTRY)_ZN8S19595C5D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19595C5D1Ev,_ZThn32_N8S19595C5D1Ev),
  (VTBL_ENTRY)_ZN8S19595C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19595C1D0Ev,_ZTv0_n24_N8S19595C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19595C1D0Ev,_ZThn140_N8S19595C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19595C1D1Ev,_ZTv0_n24_N8S19595C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19595C1D1Ev,_ZThn140_N8S19595C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C1D0Ev,_ZTv0_n12_N8S19595C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S19595C1D0Ev,_ZThn216_N8S19595C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S19595C1D0Ev,_ZThn180_N8S19595C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19595C1D0Ev,_ZThn148_N8S19595C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19595C1D0Ev,_ZThn112_N8S19595C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19595C1D0Ev,_ZThn68_N8S19595C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19595C1D0Ev,_ZThn40_N8S19595C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19595C1D0Ev,_ZThn8_N8S19595C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19595C1D1Ev,_ZTv0_n12_N8S19595C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S19595C1D1Ev,_ZThn216_N8S19595C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S19595C1D1Ev,_ZThn180_N8S19595C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19595C1D1Ev,_ZThn148_N8S19595C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19595C1D1Ev,_ZThn112_N8S19595C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19595C1D1Ev,_ZThn68_N8S19595C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19595C1D1Ev,_ZThn40_N8S19595C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19595C1D1Ev,_ZThn8_N8S19595C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19595C1 = {  "S19595C1", // class name
  bases_S19595C1, 22,
  &(vtc_S19595C1[0]), // expected_vtbl_contents
  &(vtt_S19595C1[0]), // expected_vtt_contents
  ABISELECT(416,244), // object size
  NSPAIRA(_ZTI8S19595C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19595C1),72, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19595C1),64, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names111,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2515C4  : virtual S3589C9_nt {
  void *s2515c4f0[2];
  ~S2515C4(); // tgen
  S2515C4(); // tgen
};
//SIG(-1 S2515C4) C1{ VBC2{ vd m Fi Fc Fi} Fp[2]}


S2515C4 ::~S2515C4(){ note_dtor("S2515C4", this);} // tgen
S2515C4 ::S2515C4(){ note_ctor("S2515C4", this);} // tgen

static void Test_S2515C4()
{
  extern Class_Descriptor cd_S2515C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S2515C4, buf);
    S2515C4 *dp, &lv = *(dp=new (buf) S2515C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S2515C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2515C4)");
    check_base_class_offset(lv, (S3589C9_nt*), ABISELECT(24,12), "S2515C4");
    check_field_offset(lv, s2515c4f0, ABISELECT(8,4), "S2515C4.s2515c4f0");
    test_class_info(&lv, &cd_S2515C4);
    dp->~S2515C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2515C4(Test_S2515C4, "S2515C4", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN7S2515C4C1Ev();
extern void _ZN7S2515C4D1Ev();
Name_Map name_map_S2515C4[] = {
  NSPAIR(_ZN7S2515C4C1Ev),
  NSPAIR(_ZN7S2515C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3589C9_nt;
extern VTBL_ENTRY _ZTI10S3589C9_nt[];
extern  VTBL_ENTRY _ZTV10S3589C9_nt[];
static Base_Class bases_S2515C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3589C9_nt,    ABISELECT(24,12), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S2515C4[];
extern void _ZN7S2515C4D1Ev();
extern void _ZN7S2515C4D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S2515C4D1Ev,_ZTv0_n12_N7S2515C4D1Ev)();
extern void ABISELECT(_ZThn24_N7S2515C4D1Ev,_ZThn12_N7S2515C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2515C4D0Ev,_ZTv0_n12_N7S2515C4D0Ev)();
extern void ABISELECT(_ZThn24_N7S2515C4D0Ev,_ZThn12_N7S2515C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2515C4[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S2515C4[0]),
  (VTBL_ENTRY)&_ZN7S2515C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2515C4D0Ev,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S2515C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2515C4D1Ev,_ZTv0_n12_N7S2515C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2515C4D0Ev,_ZTv0_n12_N7S2515C4D0Ev),
};
extern VTBL_ENTRY _ZTV7S2515C4[];
static  VTT_ENTRY vtt_S2515C4[] = {
  {&(_ZTV7S2515C4[3]),  3,10},
  {&(_ZTV7S2515C4[8]),  8,10},
};
extern VTBL_ENTRY _ZTI7S2515C4[];
extern  VTBL_ENTRY _ZTV7S2515C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2515C4[];
static VTBL_ENTRY alt_thunk_names112[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2515C4D0Ev,_ZTv0_n12_N7S2515C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S2515C4D0Ev,_ZThn12_N7S2515C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2515C4D1Ev,_ZTv0_n12_N7S2515C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S2515C4D1Ev,_ZThn12_N7S2515C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2515C4 = {  "S2515C4", // class name
  bases_S2515C4, 1,
  &(vtc_S2515C4[0]), // expected_vtbl_contents
  &(vtt_S2515C4[0]), // expected_vtt_contents
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI7S2515C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S2515C4),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2515C4),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names112,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2515C7  : S3589C3 {
  __tsi64 s2515c7f0;
  ::S3589C4 s2515c7f1;
  virtual  ~S2515C7(); // _ZN7S2515C7D1Ev
  S2515C7(); // tgen
};
//SIG(-1 S2515C7) C1{ BC2{ vd m Fc FU3{ m Fc[6]}} vd FL FU3}


 S2515C7 ::~S2515C7(){ note_dtor("S2515C7", this);}
S2515C7 ::S2515C7(){ note_ctor("S2515C7", this);} // tgen

static void Test_S2515C7()
{
  extern Class_Descriptor cd_S2515C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,8)];
    init_test(&cd_S2515C7, buf);
    S2515C7 *dp, &lv = *(dp=new (buf) S2515C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,28), "sizeof(S2515C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2515C7)");
    check_base_class_offset(lv, (S3589C3*), 0, "S2515C7");
    check_field_offset(lv, s2515c7f0, ABISELECT(16,12), "S2515C7.s2515c7f0");
    check_field_offset(lv, s2515c7f1, ABISELECT(24,20), "S2515C7.s2515c7f1");
    test_class_info(&lv, &cd_S2515C7);
    dp->~S2515C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2515C7(Test_S2515C7, "S2515C7", ABISELECT(32,28));

#else // __cplusplus

extern void _ZN7S2515C7C1Ev();
extern void _ZN7S2515C7D1Ev();
Name_Map name_map_S2515C7[] = {
  NSPAIR(_ZN7S2515C7C1Ev),
  NSPAIR(_ZN7S2515C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
static Base_Class bases_S2515C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3589C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2515C7[];
extern void _ZN7S2515C7D1Ev();
extern void _ZN7S2515C7D0Ev();
static  VTBL_ENTRY vtc_S2515C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2515C7[0]),
  (VTBL_ENTRY)&_ZN7S2515C7D1Ev,
  (VTBL_ENTRY)&_ZN7S2515C7D0Ev,
};
extern VTBL_ENTRY _ZTI7S2515C7[];
extern  VTBL_ENTRY _ZTV7S2515C7[];
Class_Descriptor cd_S2515C7 = {  "S2515C7", // class name
  bases_S2515C7, 1,
  &(vtc_S2515C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,28), // object size
  NSPAIRA(_ZTI7S2515C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2515C7),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2515C6  : virtual S2515C7 , virtual S3589C3 {
  virtual  ~S2515C6(); // _ZN7S2515C6D2Ev
  S2515C6(); // tgen
};
//SIG(-1 S2515C6) C1{ VBC2{ BC3{ vd m Fc FU4{ m Fc[6]}} vd FL FU4} VBC3 vd}


 S2515C6 ::~S2515C6(){ note_dtor("S2515C6", this);}
S2515C6 ::S2515C6(){ note_ctor("S2515C6", this);} // tgen

static void Test_S2515C6()
{
  extern Class_Descriptor cd_S2515C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,12)];
    init_test(&cd_S2515C6, buf);
    S2515C6 *dp, &lv = *(dp=new (buf) S2515C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,44), "sizeof(S2515C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2515C6)");
    check_base_class_offset(lv, (S3589C3*)(S2515C7*), ABISELECT(8,4), "S2515C6");
    check_base_class_offset(lv, (S2515C7*), ABISELECT(8,4), "S2515C6");
    /*is_ambiguous_... S2515C6::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*), ABISELECT(40,32), "S2515C6");
    test_class_info(&lv, &cd_S2515C6);
    dp->~S2515C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2515C6(Test_S2515C6, "S2515C6", ABISELECT(56,44));

#else // __cplusplus

extern void _ZN7S2515C6C1Ev();
extern void _ZN7S2515C6D2Ev();
Name_Map name_map_S2515C6[] = {
  NSPAIR(_ZN7S2515C6C1Ev),
  NSPAIR(_ZN7S2515C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S2515C7;
extern VTBL_ENTRY _ZTI7S2515C7[];
extern  VTBL_ENTRY _ZTV7S2515C7[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
static Base_Class bases_S2515C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3589C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2515C7,    ABISELECT(8,4), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3589C3,    ABISELECT(40,32), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S2515C6[];
extern void _ZN7S2515C6D1Ev();
extern void _ZN7S2515C6D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S2515C6D1Ev,_ZTv0_n12_N7S2515C6D1Ev)();
extern void ABISELECT(_ZThn8_N7S2515C6D1Ev,_ZThn4_N7S2515C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2515C6D0Ev,_ZTv0_n12_N7S2515C6D0Ev)();
extern void ABISELECT(_ZThn8_N7S2515C6D0Ev,_ZThn4_N7S2515C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2515C6D1Ev,_ZTv0_n12_N7S2515C6D1Ev)();
extern void ABISELECT(_ZThn40_N7S2515C6D1Ev,_ZThn32_N7S2515C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2515C6D0Ev,_ZTv0_n12_N7S2515C6D0Ev)();
extern void ABISELECT(_ZThn40_N7S2515C6D0Ev,_ZThn32_N7S2515C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2515C6[] = {
  ABISELECT(40,32),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S2515C6[0]),
  (VTBL_ENTRY)&_ZN7S2515C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2515C6D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S2515C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2515C6D1Ev,_ZTv0_n12_N7S2515C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2515C6D0Ev,_ZTv0_n12_N7S2515C6D0Ev),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI7S2515C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2515C6D1Ev,_ZTv0_n12_N7S2515C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2515C6D0Ev,_ZTv0_n12_N7S2515C6D0Ev),
};
extern VTBL_ENTRY _ZTV7S2515C6[];
static  VTT_ENTRY vtt_S2515C6[] = {
  {&(_ZTV7S2515C6[4]),  4,16},
  {&(_ZTV7S2515C6[9]),  9,16},
  {&(_ZTV7S2515C6[14]),  14,16},
};
extern VTBL_ENTRY _ZTI7S2515C6[];
extern  VTBL_ENTRY _ZTV7S2515C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2515C6[];
static VTBL_ENTRY alt_thunk_names113[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2515C6D0Ev,_ZTv0_n12_N7S2515C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S2515C6D0Ev,_ZThn32_N7S2515C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S2515C6D0Ev,_ZThn4_N7S2515C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2515C6D1Ev,_ZTv0_n12_N7S2515C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S2515C6D1Ev,_ZThn32_N7S2515C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S2515C6D1Ev,_ZThn4_N7S2515C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2515C6 = {  "S2515C6", // class name
  bases_S2515C6, 3,
  &(vtc_S2515C6[0]), // expected_vtbl_contents
  &(vtt_S2515C6[0]), // expected_vtt_contents
  ABISELECT(56,44), // object size
  NSPAIRA(_ZTI7S2515C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S2515C6),16, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2515C6),3, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names113,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2515C10  : virtual S3589C3 {
  ~S2515C10(); // tgen
  S2515C10(); // tgen
};
//SIG(-1 S2515C10) C1{ VBC2{ vd m Fc FU3{ m Fc[6]}}}


S2515C10 ::~S2515C10(){ note_dtor("S2515C10", this);} // tgen
S2515C10 ::S2515C10(){ note_ctor("S2515C10", this);} // tgen

static void Test_S2515C10()
{
  extern Class_Descriptor cd_S2515C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S2515C10, buf);
    S2515C10 *dp, &lv = *(dp=new (buf) S2515C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S2515C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2515C10)");
    check_base_class_offset(lv, (S3589C3*), ABISELECT(8,4), "S2515C10");
    test_class_info(&lv, &cd_S2515C10);
    dp->~S2515C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2515C10(Test_S2515C10, "S2515C10", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S2515C10C1Ev();
extern void _ZN8S2515C10D1Ev();
Name_Map name_map_S2515C10[] = {
  NSPAIR(_ZN8S2515C10C1Ev),
  NSPAIR(_ZN8S2515C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
static Base_Class bases_S2515C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3589C3,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S2515C10[];
extern void _ZN8S2515C10D1Ev();
extern void _ZN8S2515C10D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S2515C10D1Ev,_ZTv0_n12_N8S2515C10D1Ev)();
extern void ABISELECT(_ZThn8_N8S2515C10D1Ev,_ZThn4_N8S2515C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2515C10D0Ev,_ZTv0_n12_N8S2515C10D0Ev)();
extern void ABISELECT(_ZThn8_N8S2515C10D0Ev,_ZThn4_N8S2515C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2515C10[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S2515C10[0]),
  (VTBL_ENTRY)&_ZN8S2515C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2515C10D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S2515C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2515C10D1Ev,_ZTv0_n12_N8S2515C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2515C10D0Ev,_ZTv0_n12_N8S2515C10D0Ev),
};
extern VTBL_ENTRY _ZTV8S2515C10[];
static  VTT_ENTRY vtt_S2515C10[] = {
  {&(_ZTV8S2515C10[3]),  3,10},
  {&(_ZTV8S2515C10[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S2515C10[];
extern  VTBL_ENTRY _ZTV8S2515C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2515C10[];
static VTBL_ENTRY alt_thunk_names114[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2515C10D0Ev,_ZTv0_n12_N8S2515C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S2515C10D0Ev,_ZThn4_N8S2515C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2515C10D1Ev,_ZTv0_n12_N8S2515C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S2515C10D1Ev,_ZThn4_N8S2515C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2515C10 = {  "S2515C10", // class name
  bases_S2515C10, 1,
  &(vtc_S2515C10[0]), // expected_vtbl_contents
  &(vtt_S2515C10[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S2515C10),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S2515C10),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S2515C10),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names114,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2515C2  : S3589C13_nt , virtual S2515C4 , virtual S2515C6 , S3589C3 , virtual S2515C10 {
  char s2515c2f0;
  int s2515c2f1;
  ~S2515C2(); // tgen
  S2515C2(); // tgen
};
//SIG(-1 S2515C2) C1{ BC2{ m FD} VBC3{ VBC4{ vd m Fi Fc Fi} Fp[2]} VBC5{ VBC6{ BC7{ vd m Fc FU8{ m Fc[6]}} vd FL FU8} VBC7 vd} BC7 VBC9{ VBC7} Fc Fi}


S2515C2 ::~S2515C2(){ note_dtor("S2515C2", this);} // tgen
S2515C2 ::S2515C2(){ note_ctor("S2515C2", this);} // tgen

static void Test_S2515C2()
{
  extern Class_Descriptor cd_S2515C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,28)];
    init_test(&cd_S2515C2, buf);
    S2515C2 *dp, &lv = *(dp=new (buf) S2515C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,108), "sizeof(S2515C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2515C2)");
    check_base_class_offset(lv, (S3589C13_nt*), ABISELECT(16,12), "S2515C2");
    check_base_class_offset(lv, (S3589C9_nt*)(S2515C4*), ABISELECT(64,44), "S2515C2");
    check_base_class_offset(lv, (S2515C4*), ABISELECT(40,32), "S2515C2");
    check_base_class_offset(lv, (S3589C3*)(S2515C7*), ABISELECT(96,64), "S2515C2");
    check_base_class_offset(lv, (S2515C7*)(S2515C6*), ABISELECT(96,64), "S2515C2");
    /*is_ambiguous_... S2515C6::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*)(S2515C6*), ABISELECT(128,92), "S2515C2");
    check_base_class_offset(lv, (S3589C3*)(S2515C10*), ABISELECT(128,92), "S2515C2");
    check_base_class_offset(lv, (S2515C6*), ABISELECT(88,60), "S2515C2");
    /*is_ambiguous_... S2515C2::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*), 0, "S2515C2");
    check_base_class_offset(lv, (S2515C10*), ABISELECT(144,104), "S2515C2");
    check_field_offset(lv, s2515c2f0, ABISELECT(32,24), "S2515C2.s2515c2f0");
    check_field_offset(lv, s2515c2f1, ABISELECT(36,28), "S2515C2.s2515c2f1");
    test_class_info(&lv, &cd_S2515C2);
    dp->~S2515C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2515C2(Test_S2515C2, "S2515C2", ABISELECT(160,108));

#else // __cplusplus

extern void _ZN7S2515C2C1Ev();
extern void _ZN7S2515C2D1Ev();
Name_Map name_map_S2515C2[] = {
  NSPAIR(_ZN7S2515C2C1Ev),
  NSPAIR(_ZN7S2515C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3589C13_nt;
extern VTBL_ENTRY _ZTI11S3589C13_nt[];
extern Class_Descriptor cd_S3589C9_nt;
extern VTBL_ENTRY _ZTI10S3589C9_nt[];
extern  VTBL_ENTRY _ZTV10S3589C9_nt[];
extern Class_Descriptor cd_S2515C4;
extern VTBL_ENTRY _ZTI7S2515C4[];
extern  VTBL_ENTRY _ZTV7S2515C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2515C4[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S2515C7;
extern VTBL_ENTRY _ZTI7S2515C7[];
extern  VTBL_ENTRY _ZTV7S2515C7[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S2515C6;
extern VTBL_ENTRY _ZTI7S2515C6[];
extern  VTBL_ENTRY _ZTV7S2515C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2515C6[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S2515C10;
extern VTBL_ENTRY _ZTI8S2515C10[];
extern  VTBL_ENTRY _ZTV8S2515C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2515C10[];
static Base_Class bases_S2515C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3589C13_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3589C9_nt,    ABISELECT(64,44), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S2515C4,    ABISELECT(40,32), //bcp->offset
    10, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3589C3,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S2515C7,    ABISELECT(96,64), //bcp->offset
    28, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3589C3,    ABISELECT(128,92), //bcp->offset
    33, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S2515C6,    ABISELECT(88,60), //bcp->offset
    21, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3589C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2515C10,    ABISELECT(144,104), //bcp->offset
    38, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S2515C2[];
extern void _ZN7S2515C2D1Ev();
extern void _ZN7S2515C2D0Ev();
extern void ABISELECT(_ZTv0_n32_N7S2515C2D1Ev,_ZTv0_n16_N7S2515C2D1Ev)();
extern void ABISELECT(_ZThn40_N7S2515C2D1Ev,_ZThn32_N7S2515C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2515C2D0Ev,_ZTv0_n16_N7S2515C2D0Ev)();
extern void ABISELECT(_ZThn40_N7S2515C2D0Ev,_ZThn32_N7S2515C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2515C2D1Ev,_ZTv0_n12_N7S2515C2D1Ev)();
extern void ABISELECT(_ZThn64_N7S2515C2D1Ev,_ZThn44_N7S2515C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2515C2D0Ev,_ZTv0_n12_N7S2515C2D0Ev)();
extern void ABISELECT(_ZThn64_N7S2515C2D0Ev,_ZThn44_N7S2515C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S2515C2D1Ev,_ZTv0_n20_N7S2515C2D1Ev)();
extern void ABISELECT(_ZThn88_N7S2515C2D1Ev,_ZThn60_N7S2515C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S2515C2D0Ev,_ZTv0_n20_N7S2515C2D0Ev)();
extern void ABISELECT(_ZThn88_N7S2515C2D0Ev,_ZThn60_N7S2515C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2515C2D1Ev,_ZTv0_n12_N7S2515C2D1Ev)();
extern void ABISELECT(_ZThn96_N7S2515C2D1Ev,_ZThn64_N7S2515C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2515C2D0Ev,_ZTv0_n12_N7S2515C2D0Ev)();
extern void ABISELECT(_ZThn96_N7S2515C2D0Ev,_ZThn64_N7S2515C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2515C2D1Ev,_ZTv0_n12_N7S2515C2D1Ev)();
extern void ABISELECT(_ZThn128_N7S2515C2D1Ev,_ZThn92_N7S2515C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2515C2D0Ev,_ZTv0_n12_N7S2515C2D0Ev)();
extern void ABISELECT(_ZThn128_N7S2515C2D0Ev,_ZThn92_N7S2515C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2515C2D1Ev,_ZTv0_n16_N7S2515C2D1Ev)();
extern void ABISELECT(_ZThn144_N7S2515C2D1Ev,_ZThn104_N7S2515C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2515C2D0Ev,_ZTv0_n16_N7S2515C2D0Ev)();
extern void ABISELECT(_ZThn144_N7S2515C2D0Ev,_ZThn104_N7S2515C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2515C2[] = {
  ABISELECT(144,104),
  ABISELECT(128,92),
  ABISELECT(96,64),
  ABISELECT(88,60),
  ABISELECT(64,44),
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S2515C2[0]),
  (VTBL_ENTRY)&_ZN7S2515C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2515C2D0Ev,
  ABISELECT(-40,-32),
  ABISELECT(24,12),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI7S2515C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2515C2D1Ev,_ZTv0_n16_N7S2515C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2515C2D0Ev,_ZTv0_n16_N7S2515C2D0Ev),
  ABISELECT(-64,-44),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI7S2515C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2515C2D1Ev,_ZTv0_n12_N7S2515C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2515C2D0Ev,_ZTv0_n12_N7S2515C2D0Ev),
  ABISELECT(-88,-60),
  ABISELECT(40,32),
  ABISELECT(8,4),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI7S2515C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2515C2D1Ev,_ZTv0_n20_N7S2515C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2515C2D0Ev,_ZTv0_n20_N7S2515C2D0Ev),
  ABISELECT(-96,-64),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI7S2515C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2515C2D1Ev,_ZTv0_n12_N7S2515C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2515C2D0Ev,_ZTv0_n12_N7S2515C2D0Ev),
  ABISELECT(-128,-92),
  ABISELECT(-128,-92),
  (VTBL_ENTRY)&(_ZTI7S2515C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2515C2D1Ev,_ZTv0_n12_N7S2515C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2515C2D0Ev,_ZTv0_n12_N7S2515C2D0Ev),
  ABISELECT(-144,-104),
  ABISELECT(-16,-12),
  ABISELECT(-144,-104),
  (VTBL_ENTRY)&(_ZTI7S2515C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2515C2D1Ev,_ZTv0_n16_N7S2515C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2515C2D0Ev,_ZTv0_n16_N7S2515C2D0Ev),
};
extern VTBL_ENTRY _ZTV7S2515C2[];
extern void _ZN7S2515C4D1Ev();
extern void _ZN7S2515C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2515C4__7S2515C2[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S2515C4[0]),
  (VTBL_ENTRY)&_ZN7S2515C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2515C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2515C4D1Ev,_ZTv0_n12_N7S2515C4D1Ev)();
extern void ABISELECT(_ZThn24_N7S2515C4D1Ev,_ZThn12_N7S2515C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2515C4D0Ev,_ZTv0_n12_N7S2515C4D0Ev)();
extern void ABISELECT(_ZThn24_N7S2515C4D0Ev,_ZThn12_N7S2515C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt__7S2515C4__7S2515C2[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S2515C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2515C4D1Ev,_ZTv0_n12_N7S2515C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2515C4D0Ev,_ZTv0_n12_N7S2515C4D0Ev),
};
extern void _ZN7S2515C6D1Ev();
extern void _ZN7S2515C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2515C6__7S2515C2[] = {
  ABISELECT(40,32),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S2515C6[0]),
  (VTBL_ENTRY)&_ZN7S2515C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2515C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2515C6D1Ev,_ZTv0_n12_N7S2515C6D1Ev)();
extern void ABISELECT(_ZThn8_N7S2515C6D1Ev,_ZThn4_N7S2515C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2515C6D0Ev,_ZTv0_n12_N7S2515C6D0Ev)();
extern void ABISELECT(_ZThn8_N7S2515C6D0Ev,_ZThn4_N7S2515C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2515C7__7S2515C6__7S2515C2[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S2515C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2515C6D1Ev,_ZTv0_n12_N7S2515C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2515C6D0Ev,_ZTv0_n12_N7S2515C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2515C6D1Ev,_ZTv0_n12_N7S2515C6D1Ev)();
extern void ABISELECT(_ZThn40_N7S2515C6D1Ev,_ZThn32_N7S2515C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2515C6D0Ev,_ZTv0_n12_N7S2515C6D0Ev)();
extern void ABISELECT(_ZThn40_N7S2515C6D0Ev,_ZThn32_N7S2515C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__7S2515C6__7S2515C2[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI7S2515C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2515C6D1Ev,_ZTv0_n12_N7S2515C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2515C6D0Ev,_ZTv0_n12_N7S2515C6D0Ev),
};
extern void _ZN8S2515C10D1Ev();
extern void _ZN8S2515C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2515C10__7S2515C2[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S2515C10[0]),
  (VTBL_ENTRY)&_ZN8S2515C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2515C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S2515C10D1Ev,_ZTv0_n12_N8S2515C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2515C10D0Ev,_ZTv0_n12_N8S2515C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__8S2515C10__7S2515C2[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S2515C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2515C10D1Ev,_ZTv0_n12_N8S2515C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2515C10D0Ev,_ZTv0_n12_N8S2515C10D0Ev),
};
static  VTT_ENTRY vtt_S2515C2[] = {
  {&(_ZTV7S2515C2[8]),  8,44},
  {&(_ZTV7S2515C2[14]),  14,44},
  {&(_ZTV7S2515C2[19]),  19,44},
  {&(_ZTV7S2515C2[26]),  26,44},
  {&(_ZTV7S2515C2[31]),  31,44},
  {&(_ZTV7S2515C2[36]),  36,44},
  {&(_ZTV7S2515C2[42]),  42,44},
  {&(_tg__ZTV7S2515C4__7S2515C2[3]),  3,5},
  {&(_tg__ZTV10S3589C9_nt__7S2515C4__7S2515C2[3]),  3,5},
  {&(_tg__ZTV7S2515C6__7S2515C2[4]),  4,6},
  {&(_tg__ZTV7S2515C7__7S2515C6__7S2515C2[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__7S2515C6__7S2515C2[3]),  3,5},
  {&(_tg__ZTV8S2515C10__7S2515C2[3]),  3,5},
  {&(_tg__ZTV7S3589C3__8S2515C10__7S2515C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S2515C2[];
extern  VTBL_ENTRY _ZTV7S2515C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2515C2[];
static VTBL_ENTRY alt_thunk_names115[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2515C6D0Ev,_ZTv0_n12_N7S2515C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S2515C6D0Ev,_ZThn32_N7S2515C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S2515C6D0Ev,_ZThn4_N7S2515C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2515C6D1Ev,_ZTv0_n12_N7S2515C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S2515C6D1Ev,_ZThn32_N7S2515C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S2515C6D1Ev,_ZThn4_N7S2515C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2515C4D0Ev,_ZTv0_n12_N7S2515C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S2515C4D0Ev,_ZThn12_N7S2515C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2515C4D1Ev,_ZTv0_n12_N7S2515C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S2515C4D1Ev,_ZThn12_N7S2515C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2515C2D0Ev,_ZTv0_n20_N7S2515C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S2515C2D0Ev,_ZThn60_N7S2515C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2515C2D1Ev,_ZTv0_n20_N7S2515C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S2515C2D1Ev,_ZThn60_N7S2515C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2515C2D0Ev,_ZTv0_n12_N7S2515C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S2515C2D0Ev,_ZThn92_N7S2515C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S2515C2D0Ev,_ZThn64_N7S2515C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S2515C2D0Ev,_ZThn44_N7S2515C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2515C2D1Ev,_ZTv0_n12_N7S2515C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S2515C2D1Ev,_ZThn92_N7S2515C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S2515C2D1Ev,_ZThn64_N7S2515C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S2515C2D1Ev,_ZThn44_N7S2515C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2515C2D0Ev,_ZTv0_n16_N7S2515C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S2515C2D0Ev,_ZThn104_N7S2515C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S2515C2D0Ev,_ZThn32_N7S2515C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2515C2D1Ev,_ZTv0_n16_N7S2515C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S2515C2D1Ev,_ZThn104_N7S2515C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S2515C2D1Ev,_ZThn32_N7S2515C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2515C2 = {  "S2515C2", // class name
  bases_S2515C2, 9,
  &(vtc_S2515C2[0]), // expected_vtbl_contents
  &(vtt_S2515C2[0]), // expected_vtt_contents
  ABISELECT(160,108), // object size
  NSPAIRA(_ZTI7S2515C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S2515C2),44, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2515C2),14, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names115,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2515C11  : virtual S3589C3 {
  int s2515c11f0;
  ::S19905C17_nt s2515c11f1;
  ~S2515C11(); // tgen
  S2515C11(); // tgen
};
//SIG(-1 S2515C11) C1{ VBC2{ vd m Fc FU3{ m Fc[6]}} Fi FC4{}}


S2515C11 ::~S2515C11(){ note_dtor("S2515C11", this);} // tgen
S2515C11 ::S2515C11(){ note_ctor("S2515C11", this);} // tgen

static void Test_S2515C11()
{
  extern Class_Descriptor cd_S2515C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S2515C11, buf);
    S2515C11 *dp, &lv = *(dp=new (buf) S2515C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S2515C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2515C11)");
    check_base_class_offset(lv, (S3589C3*), ABISELECT(16,12), "S2515C11");
    check_field_offset(lv, s2515c11f0, ABISELECT(8,4), "S2515C11.s2515c11f0");
    check_field_offset(lv, s2515c11f1, ABISELECT(12,8), "S2515C11.s2515c11f1");
    test_class_info(&lv, &cd_S2515C11);
    dp->~S2515C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2515C11(Test_S2515C11, "S2515C11", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN8S2515C11C1Ev();
extern void _ZN8S2515C11D1Ev();
Name_Map name_map_S2515C11[] = {
  NSPAIR(_ZN8S2515C11C1Ev),
  NSPAIR(_ZN8S2515C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
static Base_Class bases_S2515C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3589C3,    ABISELECT(16,12), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S2515C11[];
extern void _ZN8S2515C11D1Ev();
extern void _ZN8S2515C11D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S2515C11D1Ev,_ZTv0_n12_N8S2515C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S2515C11D1Ev,_ZThn12_N8S2515C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2515C11D0Ev,_ZTv0_n12_N8S2515C11D0Ev)();
extern void ABISELECT(_ZThn16_N8S2515C11D0Ev,_ZThn12_N8S2515C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2515C11[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S2515C11[0]),
  (VTBL_ENTRY)&_ZN8S2515C11D1Ev,
  (VTBL_ENTRY)&_ZN8S2515C11D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S2515C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2515C11D1Ev,_ZTv0_n12_N8S2515C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2515C11D0Ev,_ZTv0_n12_N8S2515C11D0Ev),
};
extern VTBL_ENTRY _ZTV8S2515C11[];
static  VTT_ENTRY vtt_S2515C11[] = {
  {&(_ZTV8S2515C11[3]),  3,10},
  {&(_ZTV8S2515C11[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S2515C11[];
extern  VTBL_ENTRY _ZTV8S2515C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2515C11[];
static VTBL_ENTRY alt_thunk_names116[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2515C11D0Ev,_ZTv0_n12_N8S2515C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S2515C11D0Ev,_ZThn12_N8S2515C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2515C11D1Ev,_ZTv0_n12_N8S2515C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S2515C11D1Ev,_ZThn12_N8S2515C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2515C11 = {  "S2515C11", // class name
  bases_S2515C11, 1,
  &(vtc_S2515C11[0]), // expected_vtbl_contents
  &(vtt_S2515C11[0]), // expected_vtt_contents
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI8S2515C11),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S2515C11),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S2515C11),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names116,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2515C1  : S2515C2 , virtual S2515C11 {
  __tsi64 s2515c1f0;
  int s2515c1f1;
  char  :0;
  int s2515c1f3;
  virtual  ~S2515C1(); // _ZN7S2515C1D2Ev
  S2515C1(); // tgen
};
//SIG(1 S2515C1) C1{ BC2{ BC3{ m FD} VBC4{ VBC5{ vd m Fi Fc Fi} Fp[2]} VBC6{ VBC7{ BC8{ vd m Fc FU9{ m Fc[6]}} vd FL FU9} VBC8 vd} BC8 VBC10{ VBC8} Fc Fi} VBC11{ VBC8 Fi FC12{}} vd FL Fi Fc:0 Fi}


 S2515C1 ::~S2515C1(){ note_dtor("S2515C1", this);}
S2515C1 ::S2515C1(){ note_ctor("S2515C1", this);} // tgen

static void Test_S2515C1()
{
  extern Class_Descriptor cd_S2515C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,35)];
    init_test(&cd_S2515C1, buf);
    S2515C1 *dp, &lv = *(dp=new (buf) S2515C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,136), "sizeof(S2515C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2515C1)");
    check_base_class_offset(lv, (S3589C13_nt*)(S2515C2*), ABISELECT(16,12), "S2515C1");
    check_base_class_offset(lv, (S3589C9_nt*)(S2515C4*), ABISELECT(80,60), "S2515C1");
    check_base_class_offset(lv, (S2515C4*)(S2515C2*), ABISELECT(56,48), "S2515C1");
    check_base_class_offset(lv, (S3589C3*)(S2515C7*), ABISELECT(112,80), "S2515C1");
    check_base_class_offset(lv, (S2515C7*)(S2515C6*), ABISELECT(112,80), "S2515C1");
    /*is_ambiguous_... S2515C6::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*)(S2515C6*), ABISELECT(144,108), "S2515C1");
    check_base_class_offset(lv, (S3589C3*)(S2515C10*), ABISELECT(144,108), "S2515C1");
    check_base_class_offset(lv, (S3589C3*)(S2515C11*), ABISELECT(144,108), "S2515C1");
    check_base_class_offset(lv, (S2515C6*)(S2515C2*), ABISELECT(104,76), "S2515C1");
    /*is_ambiguous_... S2515C2::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*)(S2515C2*), 0, "S2515C1");
    check_base_class_offset(lv, (S2515C10*)(S2515C2*), ABISELECT(160,120), "S2515C1");
    check_base_class_offset(lv, (S2515C2*), 0, "S2515C1");
    check_base_class_offset(lv, (S2515C11*), ABISELECT(168,124), "S2515C1");
    check_field_offset(lv, s2515c1f0, ABISELECT(40,32), "S2515C1.s2515c1f0");
    check_field_offset(lv, s2515c1f1, ABISELECT(48,40), "S2515C1.s2515c1f1");
    check_field_offset(lv, s2515c1f3, ABISELECT(52,44), "S2515C1.s2515c1f3");
    test_class_info(&lv, &cd_S2515C1);
    dp->~S2515C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2515C1(Test_S2515C1, "S2515C1", ABISELECT(192,136));

#else // __cplusplus

extern void _ZN7S2515C1C1Ev();
extern void _ZN7S2515C1D2Ev();
Name_Map name_map_S2515C1[] = {
  NSPAIR(_ZN7S2515C1C1Ev),
  NSPAIR(_ZN7S2515C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3589C13_nt;
extern VTBL_ENTRY _ZTI11S3589C13_nt[];
extern Class_Descriptor cd_S3589C9_nt;
extern VTBL_ENTRY _ZTI10S3589C9_nt[];
extern  VTBL_ENTRY _ZTV10S3589C9_nt[];
extern Class_Descriptor cd_S2515C4;
extern VTBL_ENTRY _ZTI7S2515C4[];
extern  VTBL_ENTRY _ZTV7S2515C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2515C4[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S2515C7;
extern VTBL_ENTRY _ZTI7S2515C7[];
extern  VTBL_ENTRY _ZTV7S2515C7[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S2515C6;
extern VTBL_ENTRY _ZTI7S2515C6[];
extern  VTBL_ENTRY _ZTV7S2515C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2515C6[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S2515C10;
extern VTBL_ENTRY _ZTI8S2515C10[];
extern  VTBL_ENTRY _ZTV8S2515C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2515C10[];
extern Class_Descriptor cd_S2515C2;
extern VTBL_ENTRY _ZTI7S2515C2[];
extern  VTBL_ENTRY _ZTV7S2515C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2515C2[];
extern Class_Descriptor cd_S2515C11;
extern VTBL_ENTRY _ZTI8S2515C11[];
extern  VTBL_ENTRY _ZTV8S2515C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2515C11[];
static Base_Class bases_S2515C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3589C13_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3589C9_nt,    ABISELECT(80,60), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S2515C4,    ABISELECT(56,48), //bcp->offset
    11, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S3589C3,    ABISELECT(112,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S2515C7,    ABISELECT(112,80), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3589C3,    ABISELECT(144,108), //bcp->offset
    34, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S2515C6,    ABISELECT(104,76), //bcp->offset
    22, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S3589C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S2515C10,    ABISELECT(160,120), //bcp->offset
    39, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S2515C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2515C11,    ABISELECT(168,124), //bcp->offset
    45, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S2515C1[];
extern void _ZN7S2515C1D1Ev();
extern void _ZN7S2515C1D0Ev();
extern void ABISELECT(_ZTv0_n32_N7S2515C1D1Ev,_ZTv0_n16_N7S2515C1D1Ev)();
extern void ABISELECT(_ZThn56_N7S2515C1D1Ev,_ZThn48_N7S2515C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2515C1D0Ev,_ZTv0_n16_N7S2515C1D0Ev)();
extern void ABISELECT(_ZThn56_N7S2515C1D0Ev,_ZThn48_N7S2515C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2515C1D1Ev,_ZTv0_n12_N7S2515C1D1Ev)();
extern void ABISELECT(_ZThn80_N7S2515C1D1Ev,_ZThn60_N7S2515C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2515C1D0Ev,_ZTv0_n12_N7S2515C1D0Ev)();
extern void ABISELECT(_ZThn80_N7S2515C1D0Ev,_ZThn60_N7S2515C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S2515C1D1Ev,_ZTv0_n20_N7S2515C1D1Ev)();
extern void ABISELECT(_ZThn104_N7S2515C1D1Ev,_ZThn76_N7S2515C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S2515C1D0Ev,_ZTv0_n20_N7S2515C1D0Ev)();
extern void ABISELECT(_ZThn104_N7S2515C1D0Ev,_ZThn76_N7S2515C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2515C1D1Ev,_ZTv0_n12_N7S2515C1D1Ev)();
extern void ABISELECT(_ZThn112_N7S2515C1D1Ev,_ZThn80_N7S2515C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2515C1D0Ev,_ZTv0_n12_N7S2515C1D0Ev)();
extern void ABISELECT(_ZThn112_N7S2515C1D0Ev,_ZThn80_N7S2515C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2515C1D1Ev,_ZTv0_n12_N7S2515C1D1Ev)();
extern void ABISELECT(_ZThn144_N7S2515C1D1Ev,_ZThn108_N7S2515C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2515C1D0Ev,_ZTv0_n12_N7S2515C1D0Ev)();
extern void ABISELECT(_ZThn144_N7S2515C1D0Ev,_ZThn108_N7S2515C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2515C1D1Ev,_ZTv0_n16_N7S2515C1D1Ev)();
extern void ABISELECT(_ZThn160_N7S2515C1D1Ev,_ZThn120_N7S2515C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2515C1D0Ev,_ZTv0_n16_N7S2515C1D0Ev)();
extern void ABISELECT(_ZThn160_N7S2515C1D0Ev,_ZThn120_N7S2515C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2515C1D1Ev,_ZTv0_n16_N7S2515C1D1Ev)();
extern void ABISELECT(_ZThn168_N7S2515C1D1Ev,_ZThn124_N7S2515C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2515C1D0Ev,_ZTv0_n16_N7S2515C1D0Ev)();
extern void ABISELECT(_ZThn168_N7S2515C1D0Ev,_ZThn124_N7S2515C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2515C1[] = {
  ABISELECT(168,124),
  ABISELECT(160,120),
  ABISELECT(144,108),
  ABISELECT(112,80),
  ABISELECT(104,76),
  ABISELECT(80,60),
  ABISELECT(56,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S2515C1[0]),
  (VTBL_ENTRY)&_ZN7S2515C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2515C1D0Ev,
  ABISELECT(-56,-48),
  ABISELECT(24,12),
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI7S2515C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2515C1D1Ev,_ZTv0_n16_N7S2515C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2515C1D0Ev,_ZTv0_n16_N7S2515C1D0Ev),
  ABISELECT(-80,-60),
  ABISELECT(-80,-60),
  (VTBL_ENTRY)&(_ZTI7S2515C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2515C1D1Ev,_ZTv0_n12_N7S2515C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2515C1D0Ev,_ZTv0_n12_N7S2515C1D0Ev),
  ABISELECT(-104,-76),
  ABISELECT(40,32),
  ABISELECT(8,4),
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI7S2515C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2515C1D1Ev,_ZTv0_n20_N7S2515C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2515C1D0Ev,_ZTv0_n20_N7S2515C1D0Ev),
  ABISELECT(-112,-80),
  ABISELECT(-112,-80),
  (VTBL_ENTRY)&(_ZTI7S2515C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2515C1D1Ev,_ZTv0_n12_N7S2515C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2515C1D0Ev,_ZTv0_n12_N7S2515C1D0Ev),
  ABISELECT(-144,-108),
  ABISELECT(-144,-108),
  (VTBL_ENTRY)&(_ZTI7S2515C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2515C1D1Ev,_ZTv0_n12_N7S2515C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2515C1D0Ev,_ZTv0_n12_N7S2515C1D0Ev),
  ABISELECT(-160,-120),
  ABISELECT(-16,-12),
  ABISELECT(-160,-120),
  (VTBL_ENTRY)&(_ZTI7S2515C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2515C1D1Ev,_ZTv0_n16_N7S2515C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2515C1D0Ev,_ZTv0_n16_N7S2515C1D0Ev),
  ABISELECT(-168,-124),
  ABISELECT(-24,-16),
  ABISELECT(-168,-124),
  (VTBL_ENTRY)&(_ZTI7S2515C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2515C1D1Ev,_ZTv0_n16_N7S2515C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2515C1D0Ev,_ZTv0_n16_N7S2515C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S2515C1[];
extern void _ZN7S2515C2D1Ev();
extern void _ZN7S2515C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2515C2__7S2515C1[] = {
  ABISELECT(160,120),
  ABISELECT(144,108),
  ABISELECT(112,80),
  ABISELECT(104,76),
  ABISELECT(80,60),
  ABISELECT(56,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S2515C2[0]),
  (VTBL_ENTRY)&_ZN7S2515C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2515C2D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S2515C2D1Ev,_ZTv0_n16_N7S2515C2D1Ev)();
extern void ABISELECT(_ZThn56_N7S2515C2D1Ev,_ZThn48_N7S2515C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2515C2D0Ev,_ZTv0_n16_N7S2515C2D0Ev)();
extern void ABISELECT(_ZThn56_N7S2515C2D0Ev,_ZThn48_N7S2515C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2515C4__7S2515C2__7S2515C1[] = {
  ABISELECT(-56,-48),
  ABISELECT(24,12),
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI7S2515C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2515C2D1Ev,_ZTv0_n16_N7S2515C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2515C2D0Ev,_ZTv0_n16_N7S2515C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2515C2D1Ev,_ZTv0_n12_N7S2515C2D1Ev)();
extern void ABISELECT(_ZThn80_N7S2515C2D1Ev,_ZThn60_N7S2515C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2515C2D0Ev,_ZTv0_n12_N7S2515C2D0Ev)();
extern void ABISELECT(_ZThn80_N7S2515C2D0Ev,_ZThn60_N7S2515C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt__7S2515C2__7S2515C1[] = {
  ABISELECT(-80,-60),
  ABISELECT(-80,-60),
  (VTBL_ENTRY)&(_ZTI7S2515C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2515C2D1Ev,_ZTv0_n12_N7S2515C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2515C2D0Ev,_ZTv0_n12_N7S2515C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S2515C2D1Ev,_ZTv0_n20_N7S2515C2D1Ev)();
extern void ABISELECT(_ZThn104_N7S2515C2D1Ev,_ZThn76_N7S2515C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S2515C2D0Ev,_ZTv0_n20_N7S2515C2D0Ev)();
extern void ABISELECT(_ZThn104_N7S2515C2D0Ev,_ZThn76_N7S2515C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2515C6__7S2515C2__7S2515C1[] = {
  ABISELECT(-104,-76),
  ABISELECT(40,32),
  ABISELECT(8,4),
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI7S2515C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2515C2D1Ev,_ZTv0_n20_N7S2515C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2515C2D0Ev,_ZTv0_n20_N7S2515C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2515C2D1Ev,_ZTv0_n12_N7S2515C2D1Ev)();
extern void ABISELECT(_ZThn112_N7S2515C2D1Ev,_ZThn80_N7S2515C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2515C2D0Ev,_ZTv0_n12_N7S2515C2D0Ev)();
extern void ABISELECT(_ZThn112_N7S2515C2D0Ev,_ZThn80_N7S2515C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2515C7__7S2515C2__7S2515C1[] = {
  ABISELECT(-112,-80),
  ABISELECT(-112,-80),
  (VTBL_ENTRY)&(_ZTI7S2515C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2515C2D1Ev,_ZTv0_n12_N7S2515C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2515C2D0Ev,_ZTv0_n12_N7S2515C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2515C2D1Ev,_ZTv0_n12_N7S2515C2D1Ev)();
extern void ABISELECT(_ZThn144_N7S2515C2D1Ev,_ZThn108_N7S2515C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2515C2D0Ev,_ZTv0_n12_N7S2515C2D0Ev)();
extern void ABISELECT(_ZThn144_N7S2515C2D0Ev,_ZThn108_N7S2515C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__7S2515C2__7S2515C1[] = {
  ABISELECT(-144,-108),
  ABISELECT(-144,-108),
  (VTBL_ENTRY)&(_ZTI7S2515C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2515C2D1Ev,_ZTv0_n12_N7S2515C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2515C2D0Ev,_ZTv0_n12_N7S2515C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2515C2D1Ev,_ZTv0_n16_N7S2515C2D1Ev)();
extern void ABISELECT(_ZThn160_N7S2515C2D1Ev,_ZThn120_N7S2515C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2515C2D0Ev,_ZTv0_n16_N7S2515C2D0Ev)();
extern void ABISELECT(_ZThn160_N7S2515C2D0Ev,_ZThn120_N7S2515C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S2515C10__7S2515C2__7S2515C1[] = {
  ABISELECT(-160,-120),
  ABISELECT(-16,-12),
  ABISELECT(-160,-120),
  (VTBL_ENTRY)&(_ZTI7S2515C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2515C2D1Ev,_ZTv0_n16_N7S2515C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2515C2D0Ev,_ZTv0_n16_N7S2515C2D0Ev),
};
extern void _ZN7S2515C4D1Ev();
extern void _ZN7S2515C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2515C4__7S2515C1[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S2515C4[0]),
  (VTBL_ENTRY)&_ZN7S2515C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2515C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2515C4D1Ev,_ZTv0_n12_N7S2515C4D1Ev)();
extern void ABISELECT(_ZThn24_N7S2515C4D1Ev,_ZThn12_N7S2515C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2515C4D0Ev,_ZTv0_n12_N7S2515C4D0Ev)();
extern void ABISELECT(_ZThn24_N7S2515C4D0Ev,_ZThn12_N7S2515C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3589C9_nt__7S2515C4__7S2515C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S2515C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2515C4D1Ev,_ZTv0_n12_N7S2515C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2515C4D0Ev,_ZTv0_n12_N7S2515C4D0Ev),
};
extern void _ZN7S2515C6D1Ev();
extern void _ZN7S2515C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2515C6__7S2515C1[] = {
  ABISELECT(40,32),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S2515C6[0]),
  (VTBL_ENTRY)&_ZN7S2515C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2515C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2515C6D1Ev,_ZTv0_n12_N7S2515C6D1Ev)();
extern void ABISELECT(_ZThn8_N7S2515C6D1Ev,_ZThn4_N7S2515C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2515C6D0Ev,_ZTv0_n12_N7S2515C6D0Ev)();
extern void ABISELECT(_ZThn8_N7S2515C6D0Ev,_ZThn4_N7S2515C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2515C7__7S2515C6__7S2515C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S2515C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2515C6D1Ev,_ZTv0_n12_N7S2515C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2515C6D0Ev,_ZTv0_n12_N7S2515C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2515C6D1Ev,_ZTv0_n12_N7S2515C6D1Ev)();
extern void ABISELECT(_ZThn40_N7S2515C6D1Ev,_ZThn32_N7S2515C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2515C6D0Ev,_ZTv0_n12_N7S2515C6D0Ev)();
extern void ABISELECT(_ZThn40_N7S2515C6D0Ev,_ZThn32_N7S2515C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__7S2515C6__7S2515C1[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI7S2515C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2515C6D1Ev,_ZTv0_n12_N7S2515C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2515C6D0Ev,_ZTv0_n12_N7S2515C6D0Ev),
};
extern void _ZN8S2515C10D1Ev();
extern void _ZN8S2515C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2515C10__7S2515C1[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S2515C10[0]),
  (VTBL_ENTRY)&_ZN8S2515C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2515C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S2515C10D1Ev,_ZTv0_n12_N8S2515C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2515C10D0Ev,_ZTv0_n12_N8S2515C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__8S2515C10__7S2515C1[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S2515C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2515C10D1Ev,_ZTv0_n12_N8S2515C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2515C10D0Ev,_ZTv0_n12_N8S2515C10D0Ev),
};
extern void _ZN8S2515C11D1Ev();
extern void _ZN8S2515C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2515C11__7S2515C1[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S2515C11[0]),
  (VTBL_ENTRY)&_ZN8S2515C11D1Ev,
  (VTBL_ENTRY)&_ZN8S2515C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S2515C11D1Ev,_ZTv0_n12_N8S2515C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2515C11D0Ev,_ZTv0_n12_N8S2515C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3589C3__8S2515C11__7S2515C1[] = {
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S2515C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2515C11D1Ev,_ZTv0_n12_N8S2515C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2515C11D0Ev,_ZTv0_n12_N8S2515C11D0Ev),
};
static  VTT_ENTRY vtt_S2515C1[] = {
  {&(_ZTV7S2515C1[9]),  9,51},
  {&(_tg__ZTV7S2515C2__7S2515C1[8]),  8,10},
  {&(_tg__ZTV7S2515C4__7S2515C2__7S2515C1[4]),  4,6},
  {&(_tg__ZTV10S3589C9_nt__7S2515C2__7S2515C1[3]),  3,5},
  {&(_tg__ZTV7S2515C6__7S2515C2__7S2515C1[5]),  5,7},
  {&(_tg__ZTV7S2515C7__7S2515C2__7S2515C1[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__7S2515C2__7S2515C1[3]),  3,5},
  {&(_tg__ZTV8S2515C10__7S2515C2__7S2515C1[4]),  4,6},
  {&(_ZTV7S2515C1[15]),  15,51},
  {&(_ZTV7S2515C1[20]),  20,51},
  {&(_ZTV7S2515C1[27]),  27,51},
  {&(_ZTV7S2515C1[32]),  32,51},
  {&(_ZTV7S2515C1[37]),  37,51},
  {&(_ZTV7S2515C1[43]),  43,51},
  {&(_ZTV7S2515C1[49]),  49,51},
  {&(_tg__ZTV7S2515C4__7S2515C1[3]),  3,5},
  {&(_tg__ZTV10S3589C9_nt__7S2515C4__7S2515C1[3]),  3,5},
  {&(_tg__ZTV7S2515C6__7S2515C1[4]),  4,6},
  {&(_tg__ZTV7S2515C7__7S2515C6__7S2515C1[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__7S2515C6__7S2515C1[3]),  3,5},
  {&(_tg__ZTV8S2515C10__7S2515C1[3]),  3,5},
  {&(_tg__ZTV7S3589C3__8S2515C10__7S2515C1[3]),  3,5},
  {&(_tg__ZTV8S2515C11__7S2515C1[3]),  3,5},
  {&(_tg__ZTV7S3589C3__8S2515C11__7S2515C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S2515C1[];
extern  VTBL_ENTRY _ZTV7S2515C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2515C1[];
static VTBL_ENTRY alt_thunk_names117[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2515C6D0Ev,_ZTv0_n12_N7S2515C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S2515C6D0Ev,_ZThn32_N7S2515C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S2515C6D0Ev,_ZThn4_N7S2515C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2515C6D1Ev,_ZTv0_n12_N7S2515C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S2515C6D1Ev,_ZThn32_N7S2515C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S2515C6D1Ev,_ZThn4_N7S2515C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2515C4D0Ev,_ZTv0_n12_N7S2515C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S2515C4D0Ev,_ZThn12_N7S2515C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2515C4D1Ev,_ZTv0_n12_N7S2515C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S2515C4D1Ev,_ZThn12_N7S2515C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2515C2D0Ev,_ZTv0_n20_N7S2515C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S2515C2D0Ev,_ZThn76_N7S2515C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2515C2D1Ev,_ZTv0_n20_N7S2515C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S2515C2D1Ev,_ZThn76_N7S2515C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2515C2D0Ev,_ZTv0_n12_N7S2515C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S2515C2D0Ev,_ZThn108_N7S2515C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2515C2D0Ev,_ZThn80_N7S2515C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2515C2D0Ev,_ZThn60_N7S2515C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2515C2D1Ev,_ZTv0_n12_N7S2515C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S2515C2D1Ev,_ZThn108_N7S2515C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2515C2D1Ev,_ZThn80_N7S2515C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2515C2D1Ev,_ZThn60_N7S2515C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2515C2D0Ev,_ZTv0_n16_N7S2515C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S2515C2D0Ev,_ZThn120_N7S2515C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2515C2D0Ev,_ZThn48_N7S2515C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2515C2D1Ev,_ZTv0_n16_N7S2515C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S2515C2D1Ev,_ZThn120_N7S2515C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2515C2D1Ev,_ZThn48_N7S2515C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2515C1D0Ev,_ZTv0_n20_N7S2515C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S2515C1D0Ev,_ZThn76_N7S2515C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2515C1D1Ev,_ZTv0_n20_N7S2515C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S2515C1D1Ev,_ZThn76_N7S2515C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2515C1D0Ev,_ZTv0_n12_N7S2515C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S2515C1D0Ev,_ZThn108_N7S2515C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2515C1D0Ev,_ZThn80_N7S2515C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2515C1D0Ev,_ZThn60_N7S2515C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2515C1D1Ev,_ZTv0_n12_N7S2515C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S2515C1D1Ev,_ZThn108_N7S2515C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2515C1D1Ev,_ZThn80_N7S2515C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2515C1D1Ev,_ZThn60_N7S2515C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2515C1D0Ev,_ZTv0_n16_N7S2515C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S2515C1D0Ev,_ZThn124_N7S2515C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S2515C1D0Ev,_ZThn120_N7S2515C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2515C1D0Ev,_ZThn48_N7S2515C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2515C1D1Ev,_ZTv0_n16_N7S2515C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S2515C1D1Ev,_ZThn124_N7S2515C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S2515C1D1Ev,_ZThn120_N7S2515C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2515C1D1Ev,_ZThn48_N7S2515C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2515C1 = {  "S2515C1", // class name
  bases_S2515C1, 11,
  &(vtc_S2515C1[0]), // expected_vtbl_contents
  &(vtt_S2515C1[0]), // expected_vtt_contents
  ABISELECT(192,136), // object size
  NSPAIRA(_ZTI7S2515C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S2515C1),51, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2515C1),24, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names117,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20855C3  {
  virtual void  v4(); // _ZN8S20855C32v4Ev
  virtual void  v5(); // _ZN8S20855C32v5Ev
  virtual void  v6(); // _ZN8S20855C32v6Ev
  virtual void  v7(); // _ZN8S20855C32v7Ev
  virtual void  v8(); // _ZN8S20855C32v8Ev
  virtual void  v9(); // _ZN8S20855C32v9Ev
  virtual void  v10(); // _ZN8S20855C33v10Ev
  virtual void  v11(); // _ZN8S20855C33v11Ev
  virtual void  v12(); // _ZN8S20855C33v12Ev
  ~S20855C3(); // tgen
  S20855C3(); // tgen
};
//SIG(-1 S20855C3) C1{ v1 v2 v3 v4 v5 v6 v7 v8 v9}


void  S20855C3 ::v4(){vfunc_called(this, "_ZN8S20855C32v4Ev");}
void  S20855C3 ::v5(){vfunc_called(this, "_ZN8S20855C32v5Ev");}
void  S20855C3 ::v6(){vfunc_called(this, "_ZN8S20855C32v6Ev");}
void  S20855C3 ::v7(){vfunc_called(this, "_ZN8S20855C32v7Ev");}
void  S20855C3 ::v8(){vfunc_called(this, "_ZN8S20855C32v8Ev");}
void  S20855C3 ::v9(){vfunc_called(this, "_ZN8S20855C32v9Ev");}
void  S20855C3 ::v10(){vfunc_called(this, "_ZN8S20855C33v10Ev");}
void  S20855C3 ::v11(){vfunc_called(this, "_ZN8S20855C33v11Ev");}
void  S20855C3 ::v12(){vfunc_called(this, "_ZN8S20855C33v12Ev");}
S20855C3 ::~S20855C3(){ note_dtor("S20855C3", this);} // tgen
S20855C3 ::S20855C3(){ note_ctor("S20855C3", this);} // tgen

static void Test_S20855C3()
{
  extern Class_Descriptor cd_S20855C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20855C3, buf);
    S20855C3 *dp, &lv = *(dp=new (buf) S20855C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20855C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20855C3)");
    test_class_info(&lv, &cd_S20855C3);
    dp->~S20855C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20855C3(Test_S20855C3, "S20855C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S20855C3C1Ev();
extern void _ZN8S20855C3D1Ev();
Name_Map name_map_S20855C3[] = {
  NSPAIR(_ZN8S20855C3C1Ev),
  NSPAIR(_ZN8S20855C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20855C3[];
extern void _ZN8S20855C32v4Ev();
extern void _ZN8S20855C32v5Ev();
extern void _ZN8S20855C32v6Ev();
extern void _ZN8S20855C32v7Ev();
extern void _ZN8S20855C32v8Ev();
extern void _ZN8S20855C32v9Ev();
extern void _ZN8S20855C33v10Ev();
extern void _ZN8S20855C33v11Ev();
extern void _ZN8S20855C33v12Ev();
static  VTBL_ENTRY vtc_S20855C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20855C3[0]),
  (VTBL_ENTRY)&_ZN8S20855C32v4Ev,
  (VTBL_ENTRY)&_ZN8S20855C32v5Ev,
  (VTBL_ENTRY)&_ZN8S20855C32v6Ev,
  (VTBL_ENTRY)&_ZN8S20855C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20855C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20855C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20855C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20855C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20855C33v12Ev,
};
extern VTBL_ENTRY _ZTI8S20855C3[];
extern  VTBL_ENTRY _ZTV8S20855C3[];
Class_Descriptor cd_S20855C3 = {  "S20855C3", // class name
  0,0,//no base classes
  &(vtc_S20855C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20855C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20855C3),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20855C5  {
  int s20855c5f0;
  __tsi64 s20855c5f1;
  virtual  ~S20855C5(); // _ZN8S20855C5D1Ev
  virtual void  v13(); // _ZN8S20855C53v13Ev
  virtual void  v14(); // _ZN8S20855C53v14Ev
  virtual void  v15(); // _ZN8S20855C53v15Ev
  S20855C5(); // tgen
};
//SIG(-1 S20855C5) C1{ vd v1 v2 v3 Fi FL}


 S20855C5 ::~S20855C5(){ note_dtor("S20855C5", this);}
void  S20855C5 ::v13(){vfunc_called(this, "_ZN8S20855C53v13Ev");}
void  S20855C5 ::v14(){vfunc_called(this, "_ZN8S20855C53v14Ev");}
void  S20855C5 ::v15(){vfunc_called(this, "_ZN8S20855C53v15Ev");}
S20855C5 ::S20855C5(){ note_ctor("S20855C5", this);} // tgen

static void Test_S20855C5()
{
  extern Class_Descriptor cd_S20855C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S20855C5, buf);
    S20855C5 *dp, &lv = *(dp=new (buf) S20855C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S20855C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20855C5)");
    check_field_offset(lv, s20855c5f0, ABISELECT(8,4), "S20855C5.s20855c5f0");
    check_field_offset(lv, s20855c5f1, ABISELECT(16,8), "S20855C5.s20855c5f1");
    test_class_info(&lv, &cd_S20855C5);
    dp->~S20855C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20855C5(Test_S20855C5, "S20855C5", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S20855C5C1Ev();
extern void _ZN8S20855C5D1Ev();
Name_Map name_map_S20855C5[] = {
  NSPAIR(_ZN8S20855C5C1Ev),
  NSPAIR(_ZN8S20855C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20855C5[];
extern void _ZN8S20855C5D1Ev();
extern void _ZN8S20855C5D0Ev();
extern void _ZN8S20855C53v13Ev();
extern void _ZN8S20855C53v14Ev();
extern void _ZN8S20855C53v15Ev();
static  VTBL_ENTRY vtc_S20855C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20855C5[0]),
  (VTBL_ENTRY)&_ZN8S20855C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20855C5D0Ev,
  (VTBL_ENTRY)&_ZN8S20855C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20855C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20855C53v15Ev,
};
extern VTBL_ENTRY _ZTI8S20855C5[];
extern  VTBL_ENTRY _ZTV8S20855C5[];
Class_Descriptor cd_S20855C5 = {  "S20855C5", // class name
  0,0,//no base classes
  &(vtc_S20855C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S20855C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20855C5),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20855C4  : S20855C5 {
  int s20855c4f0;
  ::S20855C5 s20855c4f1;
  virtual  ~S20855C4(); // _ZN8S20855C4D1Ev
  virtual void  v16(); // _ZN8S20855C43v16Ev
  virtual void  v17(); // _ZN8S20855C43v17Ev
  virtual void  v18(); // _ZN8S20855C43v18Ev
  S20855C4(); // tgen
};
//SIG(-1 S20855C4) C1{ BC2{ vd v4 v5 v6 Fi FL} vd v1 v2 v3 Fi FC2}


 S20855C4 ::~S20855C4(){ note_dtor("S20855C4", this);}
void  S20855C4 ::v16(){vfunc_called(this, "_ZN8S20855C43v16Ev");}
void  S20855C4 ::v17(){vfunc_called(this, "_ZN8S20855C43v17Ev");}
void  S20855C4 ::v18(){vfunc_called(this, "_ZN8S20855C43v18Ev");}
S20855C4 ::S20855C4(){ note_ctor("S20855C4", this);} // tgen

static void Test_S20855C4()
{
  extern Class_Descriptor cd_S20855C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S20855C4, buf);
    S20855C4 *dp, &lv = *(dp=new (buf) S20855C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S20855C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20855C4)");
    check_base_class_offset(lv, (S20855C5*), 0, "S20855C4");
    check_field_offset(lv, s20855c4f0, ABISELECT(24,16), "S20855C4.s20855c4f0");
    check_field_offset(lv, s20855c4f1, ABISELECT(32,20), "S20855C4.s20855c4f1");
    test_class_info(&lv, &cd_S20855C4);
    dp->~S20855C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20855C4(Test_S20855C4, "S20855C4", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN8S20855C4C1Ev();
extern void _ZN8S20855C4D1Ev();
Name_Map name_map_S20855C4[] = {
  NSPAIR(_ZN8S20855C4C1Ev),
  NSPAIR(_ZN8S20855C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20855C5;
extern VTBL_ENTRY _ZTI8S20855C5[];
extern  VTBL_ENTRY _ZTV8S20855C5[];
static Base_Class bases_S20855C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20855C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20855C4[];
extern void _ZN8S20855C4D1Ev();
extern void _ZN8S20855C4D0Ev();
extern void _ZN8S20855C53v13Ev();
extern void _ZN8S20855C53v14Ev();
extern void _ZN8S20855C53v15Ev();
extern void _ZN8S20855C43v16Ev();
extern void _ZN8S20855C43v17Ev();
extern void _ZN8S20855C43v18Ev();
static  VTBL_ENTRY vtc_S20855C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20855C4[0]),
  (VTBL_ENTRY)&_ZN8S20855C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20855C4D0Ev,
  (VTBL_ENTRY)&_ZN8S20855C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20855C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20855C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20855C43v16Ev,
  (VTBL_ENTRY)&_ZN8S20855C43v17Ev,
  (VTBL_ENTRY)&_ZN8S20855C43v18Ev,
};
extern VTBL_ENTRY _ZTI8S20855C4[];
extern  VTBL_ENTRY _ZTV8S20855C4[];
Class_Descriptor cd_S20855C4 = {  "S20855C4", // class name
  bases_S20855C4, 1,
  &(vtc_S20855C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI8S20855C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20855C4),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20855C2  : virtual S20855C3 , virtual S20855C4 {
  ::S20855C4 s20855c2f0[3];
  int s20855c2f1;
  void *s20855c2f2[8];
  int s20855c2f3;
  long double s20855c2f4[3];
  virtual void  v19(); // _ZN8S20855C23v19Ev
  virtual void  v20(); // _ZN8S20855C23v20Ev
  virtual void  v21(); // _ZN8S20855C23v21Ev
  virtual void  v22(); // _ZN8S20855C23v22Ev
  ~S20855C2(); // tgen
  S20855C2(); // tgen
};
//SIG(-1 S20855C2) C1{ VBC2{ v5 v6 v7 v8 v9 v10 v11 v12 v13} VBC3{ BC4{ vd v14 v15 v16 Fi FL} vd v17 v18 v19 Fi FC4} v1 v2 v3 v4 FC3[3] Fi Fp[8] Fi FD[3]}


void  S20855C2 ::v19(){vfunc_called(this, "_ZN8S20855C23v19Ev");}
void  S20855C2 ::v20(){vfunc_called(this, "_ZN8S20855C23v20Ev");}
void  S20855C2 ::v21(){vfunc_called(this, "_ZN8S20855C23v21Ev");}
void  S20855C2 ::v22(){vfunc_called(this, "_ZN8S20855C23v22Ev");}
S20855C2 ::~S20855C2(){ note_dtor("S20855C2", this);} // tgen
S20855C2 ::S20855C2(){ note_ctor("S20855C2", this);} // tgen

static void Test_S20855C2()
{
  extern Class_Descriptor cd_S20855C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(24,57)];
    init_test(&cd_S20855C2, buf);
    S20855C2 *dp, &lv = *(dp=new (buf) S20855C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(368,224), "sizeof(S20855C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20855C2)");
    check_base_class_offset(lv, (S20855C3*), 0, "S20855C2");
    check_base_class_offset(lv, (S20855C5*)(S20855C4*), ABISELECT(304,188), "S20855C2");
    check_base_class_offset(lv, (S20855C4*), ABISELECT(304,188), "S20855C2");
    check_field_offset(lv, s20855c2f0, ABISELECT(8,4), "S20855C2.s20855c2f0");
    check_field_offset(lv, s20855c2f1, ABISELECT(176,112), "S20855C2.s20855c2f1");
    check_field_offset(lv, s20855c2f2, ABISELECT(184,116), "S20855C2.s20855c2f2");
    check_field_offset(lv, s20855c2f3, ABISELECT(248,148), "S20855C2.s20855c2f3");
    check_field_offset(lv, s20855c2f4, ABISELECT(256,152), "S20855C2.s20855c2f4");
    test_class_info(&lv, &cd_S20855C2);
    dp->~S20855C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20855C2(Test_S20855C2, "S20855C2", ABISELECT(368,224));

#else // __cplusplus

extern void _ZN8S20855C2C1Ev();
extern void _ZN8S20855C2D1Ev();
Name_Map name_map_S20855C2[] = {
  NSPAIR(_ZN8S20855C2C1Ev),
  NSPAIR(_ZN8S20855C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20855C3;
extern VTBL_ENTRY _ZTI8S20855C3[];
extern  VTBL_ENTRY _ZTV8S20855C3[];
extern Class_Descriptor cd_S20855C5;
extern VTBL_ENTRY _ZTI8S20855C5[];
extern  VTBL_ENTRY _ZTV8S20855C5[];
extern Class_Descriptor cd_S20855C4;
extern VTBL_ENTRY _ZTI8S20855C4[];
extern  VTBL_ENTRY _ZTV8S20855C4[];
static Base_Class bases_S20855C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20855C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20855C5,    ABISELECT(304,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20855C4,    ABISELECT(304,188), //bcp->offset
    28, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20855C2[];
extern void _ZN8S20855C32v4Ev();
extern void _ZN8S20855C32v5Ev();
extern void _ZN8S20855C32v6Ev();
extern void _ZN8S20855C32v7Ev();
extern void _ZN8S20855C32v8Ev();
extern void _ZN8S20855C32v9Ev();
extern void _ZN8S20855C33v10Ev();
extern void _ZN8S20855C33v11Ev();
extern void _ZN8S20855C33v12Ev();
extern void _ZN8S20855C23v19Ev();
extern void _ZN8S20855C23v20Ev();
extern void _ZN8S20855C23v21Ev();
extern void _ZN8S20855C23v22Ev();
extern void _ZN8S20855C2D1Ev();
extern void _ZN8S20855C2D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S20855C2D1Ev,_ZTv0_n12_N8S20855C2D1Ev)();
extern void ABISELECT(_ZThn304_N8S20855C2D1Ev,_ZThn188_N8S20855C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20855C2D0Ev,_ZTv0_n12_N8S20855C2D0Ev)();
extern void ABISELECT(_ZThn304_N8S20855C2D0Ev,_ZThn188_N8S20855C2D0Ev)() __attribute__((weak));
extern void _ZN8S20855C53v13Ev();
extern void _ZN8S20855C53v14Ev();
extern void _ZN8S20855C53v15Ev();
extern void _ZN8S20855C43v16Ev();
extern void _ZN8S20855C43v17Ev();
extern void _ZN8S20855C43v18Ev();
static  VTBL_ENTRY vtc_S20855C2[] = {
  ABISELECT(304,188),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20855C2[0]),
  (VTBL_ENTRY)&_ZN8S20855C32v4Ev,
  (VTBL_ENTRY)&_ZN8S20855C32v5Ev,
  (VTBL_ENTRY)&_ZN8S20855C32v6Ev,
  (VTBL_ENTRY)&_ZN8S20855C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20855C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20855C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20855C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20855C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20855C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20855C23v19Ev,
  (VTBL_ENTRY)&_ZN8S20855C23v20Ev,
  (VTBL_ENTRY)&_ZN8S20855C23v21Ev,
  (VTBL_ENTRY)&_ZN8S20855C23v22Ev,
  (VTBL_ENTRY)&_ZN8S20855C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20855C2D0Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-304,-188),
  ABISELECT(-304,-188),
  (VTBL_ENTRY)&(_ZTI8S20855C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20855C2D1Ev,_ZTv0_n12_N8S20855C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20855C2D0Ev,_ZTv0_n12_N8S20855C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20855C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20855C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20855C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20855C43v16Ev,
  (VTBL_ENTRY)&_ZN8S20855C43v17Ev,
  (VTBL_ENTRY)&_ZN8S20855C43v18Ev,
};
extern VTBL_ENTRY _ZTV8S20855C2[];
static  VTT_ENTRY vtt_S20855C2[] = {
  {&(_ZTV8S20855C2[13]),  13,45},
  {&(_ZTV8S20855C2[13]),  13,45},
  {&(_ZTV8S20855C2[37]),  37,45},
};
extern VTBL_ENTRY _ZTI8S20855C2[];
extern  VTBL_ENTRY _ZTV8S20855C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20855C2[];
static VTBL_ENTRY alt_thunk_names118[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20855C2D0Ev,_ZTv0_n12_N8S20855C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S20855C2D0Ev,_ZThn188_N8S20855C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20855C2D1Ev,_ZTv0_n12_N8S20855C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S20855C2D1Ev,_ZThn188_N8S20855C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20855C2 = {  "S20855C2", // class name
  bases_S20855C2, 3,
  &(vtc_S20855C2[0]), // expected_vtbl_contents
  &(vtt_S20855C2[0]), // expected_vtt_contents
  ABISELECT(368,224), // object size
  NSPAIRA(_ZTI8S20855C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20855C2),45, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20855C2),3, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names118,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20855C1  : virtual S20855C2 {
  void *s20855c1f0;
  virtual  ~S20855C1(); // _ZN8S20855C1D2Ev
  virtual void  v1(); // _ZN8S20855C12v1Ev
  virtual void  v2(); // _ZN8S20855C12v2Ev
  virtual void  v3(); // _ZN8S20855C12v3Ev
  S20855C1(); // tgen
};
//SIG(1 S20855C1) C1{ VBC2{ VBC3{ v4 v5 v6 v7 v8 v9 v10 v11 v12} VBC4{ BC5{ vd v13 v14 v15 Fi FL} vd v16 v17 v18 Fi FC5} v19 v20 v21 v22 FC4[3] Fi Fp[8] Fi FD[3]} vd v1 v2 v3 Fp}


 S20855C1 ::~S20855C1(){ note_dtor("S20855C1", this);}
void  S20855C1 ::v1(){vfunc_called(this, "_ZN8S20855C12v1Ev");}
void  S20855C1 ::v2(){vfunc_called(this, "_ZN8S20855C12v2Ev");}
void  S20855C1 ::v3(){vfunc_called(this, "_ZN8S20855C12v3Ev");}
S20855C1 ::S20855C1(){ note_ctor("S20855C1", this);} // tgen

static void Test_S20855C1()
{
  extern Class_Descriptor cd_S20855C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(25,59)];
    init_test(&cd_S20855C1, buf);
    S20855C1 *dp, &lv = *(dp=new (buf) S20855C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(384,232), "sizeof(S20855C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20855C1)");
    check_base_class_offset(lv, (S20855C3*)(S20855C2*), 0, "S20855C1");
    check_base_class_offset(lv, (S20855C5*)(S20855C4*), ABISELECT(320,196), "S20855C1");
    check_base_class_offset(lv, (S20855C4*)(S20855C2*), ABISELECT(320,196), "S20855C1");
    check_base_class_offset(lv, (S20855C2*), ABISELECT(16,8), "S20855C1");
    check_field_offset(lv, s20855c1f0, ABISELECT(8,4), "S20855C1.s20855c1f0");
    test_class_info(&lv, &cd_S20855C1);
    dp->~S20855C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20855C1(Test_S20855C1, "S20855C1", ABISELECT(384,232));

#else // __cplusplus

extern void _ZN8S20855C1C1Ev();
extern void _ZN8S20855C1D2Ev();
Name_Map name_map_S20855C1[] = {
  NSPAIR(_ZN8S20855C1C1Ev),
  NSPAIR(_ZN8S20855C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20855C3;
extern VTBL_ENTRY _ZTI8S20855C3[];
extern  VTBL_ENTRY _ZTV8S20855C3[];
extern Class_Descriptor cd_S20855C5;
extern VTBL_ENTRY _ZTI8S20855C5[];
extern  VTBL_ENTRY _ZTV8S20855C5[];
extern Class_Descriptor cd_S20855C4;
extern VTBL_ENTRY _ZTI8S20855C4[];
extern  VTBL_ENTRY _ZTV8S20855C4[];
extern Class_Descriptor cd_S20855C2;
extern VTBL_ENTRY _ZTI8S20855C2[];
extern  VTBL_ENTRY _ZTV8S20855C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20855C2[];
static Base_Class bases_S20855C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20855C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20855C5,    ABISELECT(320,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20855C4,    ABISELECT(320,196), //bcp->offset
    61, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20855C2,    ABISELECT(16,8), //bcp->offset
    28, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20855C1[];
extern void _ZN8S20855C32v4Ev();
extern void _ZN8S20855C32v5Ev();
extern void _ZN8S20855C32v6Ev();
extern void _ZN8S20855C32v7Ev();
extern void _ZN8S20855C32v8Ev();
extern void _ZN8S20855C32v9Ev();
extern void _ZN8S20855C33v10Ev();
extern void _ZN8S20855C33v11Ev();
extern void _ZN8S20855C33v12Ev();
extern void _ZN8S20855C1D1Ev();
extern void _ZN8S20855C1D0Ev();
extern void _ZN8S20855C12v1Ev();
extern void _ZN8S20855C12v2Ev();
extern void _ZN8S20855C12v3Ev();
extern void _ZN8S20855C32v4Ev();
extern void _ZN8S20855C32v5Ev();
extern void _ZN8S20855C32v6Ev();
extern void _ZN8S20855C32v7Ev();
extern void _ZN8S20855C32v8Ev();
extern void _ZN8S20855C32v9Ev();
extern void _ZN8S20855C33v10Ev();
extern void _ZN8S20855C33v11Ev();
extern void _ZN8S20855C33v12Ev();
extern void _ZN8S20855C23v19Ev();
extern void _ZN8S20855C23v20Ev();
extern void _ZN8S20855C23v21Ev();
extern void _ZN8S20855C23v22Ev();
extern void ABISELECT(_ZTv0_n144_N8S20855C1D1Ev,_ZTv0_n72_N8S20855C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S20855C1D1Ev,_ZThn8_N8S20855C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N8S20855C1D0Ev,_ZTv0_n72_N8S20855C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S20855C1D0Ev,_ZThn8_N8S20855C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20855C1D1Ev,_ZTv0_n12_N8S20855C1D1Ev)();
extern void ABISELECT(_ZThn320_N8S20855C1D1Ev,_ZThn196_N8S20855C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20855C1D0Ev,_ZTv0_n12_N8S20855C1D0Ev)();
extern void ABISELECT(_ZThn320_N8S20855C1D0Ev,_ZThn196_N8S20855C1D0Ev)() __attribute__((weak));
extern void _ZN8S20855C53v13Ev();
extern void _ZN8S20855C53v14Ev();
extern void _ZN8S20855C53v15Ev();
extern void _ZN8S20855C43v16Ev();
extern void _ZN8S20855C43v17Ev();
extern void _ZN8S20855C43v18Ev();
static  VTBL_ENTRY vtc_S20855C1[] = {
  ABISELECT(320,196),
  0,
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20855C1[0]),
  (VTBL_ENTRY)&_ZN8S20855C32v4Ev,
  (VTBL_ENTRY)&_ZN8S20855C32v5Ev,
  (VTBL_ENTRY)&_ZN8S20855C32v6Ev,
  (VTBL_ENTRY)&_ZN8S20855C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20855C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20855C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20855C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20855C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20855C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20855C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20855C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20855C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20855C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20855C12v3Ev,
  ABISELECT(-16,-8),
  0,
  0,
  0,
  0,
  ABISELECT(304,188),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20855C1[0]),
  (VTBL_ENTRY)&_ZN8S20855C32v4Ev,
  (VTBL_ENTRY)&_ZN8S20855C32v5Ev,
  (VTBL_ENTRY)&_ZN8S20855C32v6Ev,
  (VTBL_ENTRY)&_ZN8S20855C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20855C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20855C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20855C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20855C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20855C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20855C23v19Ev,
  (VTBL_ENTRY)&_ZN8S20855C23v20Ev,
  (VTBL_ENTRY)&_ZN8S20855C23v21Ev,
  (VTBL_ENTRY)&_ZN8S20855C23v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S20855C1D1Ev,_ZTv0_n72_N8S20855C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N8S20855C1D0Ev,_ZTv0_n72_N8S20855C1D0Ev),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-320,-196),
  ABISELECT(-320,-196),
  (VTBL_ENTRY)&(_ZTI8S20855C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20855C1D1Ev,_ZTv0_n12_N8S20855C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20855C1D0Ev,_ZTv0_n12_N8S20855C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20855C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20855C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20855C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20855C43v16Ev,
  (VTBL_ENTRY)&_ZN8S20855C43v17Ev,
  (VTBL_ENTRY)&_ZN8S20855C43v18Ev,
};
extern VTBL_ENTRY _ZTV8S20855C1[];
extern void _ZN8S20855C32v4Ev();
extern void _ZN8S20855C32v5Ev();
extern void _ZN8S20855C32v6Ev();
extern void _ZN8S20855C32v7Ev();
extern void _ZN8S20855C32v8Ev();
extern void _ZN8S20855C32v9Ev();
extern void _ZN8S20855C33v10Ev();
extern void _ZN8S20855C33v11Ev();
extern void _ZN8S20855C33v12Ev();
extern void _ZN8S20855C23v19Ev();
extern void _ZN8S20855C23v20Ev();
extern void _ZN8S20855C23v21Ev();
extern void _ZN8S20855C23v22Ev();
extern void _ZN8S20855C2D1Ev();
extern void _ZN8S20855C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20855C2__8S20855C1[] = {
  ABISELECT(304,188),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20855C2[0]),
  (VTBL_ENTRY)&_ZN8S20855C32v4Ev,
  (VTBL_ENTRY)&_ZN8S20855C32v5Ev,
  (VTBL_ENTRY)&_ZN8S20855C32v6Ev,
  (VTBL_ENTRY)&_ZN8S20855C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20855C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20855C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20855C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20855C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20855C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20855C23v19Ev,
  (VTBL_ENTRY)&_ZN8S20855C23v20Ev,
  (VTBL_ENTRY)&_ZN8S20855C23v21Ev,
  (VTBL_ENTRY)&_ZN8S20855C23v22Ev,
  (VTBL_ENTRY)&_ZN8S20855C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20855C2D0Ev,
};
extern void _ZN8S20855C32v4Ev();
extern void _ZN8S20855C32v5Ev();
extern void _ZN8S20855C32v6Ev();
extern void _ZN8S20855C32v7Ev();
extern void _ZN8S20855C32v8Ev();
extern void _ZN8S20855C32v9Ev();
extern void _ZN8S20855C33v10Ev();
extern void _ZN8S20855C33v11Ev();
extern void _ZN8S20855C33v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20855C3__8S20855C2__8S20855C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20855C2[0]),
  (VTBL_ENTRY)&_ZN8S20855C32v4Ev,
  (VTBL_ENTRY)&_ZN8S20855C32v5Ev,
  (VTBL_ENTRY)&_ZN8S20855C32v6Ev,
  (VTBL_ENTRY)&_ZN8S20855C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20855C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20855C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20855C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20855C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20855C33v12Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20855C2D1Ev,_ZTv0_n12_N8S20855C2D1Ev)();
extern void ABISELECT(_ZThn304_N8S20855C2D1Ev,_ZThn188_N8S20855C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20855C2D0Ev,_ZTv0_n12_N8S20855C2D0Ev)();
extern void ABISELECT(_ZThn304_N8S20855C2D0Ev,_ZThn188_N8S20855C2D0Ev)() __attribute__((weak));
extern void _ZN8S20855C53v13Ev();
extern void _ZN8S20855C53v14Ev();
extern void _ZN8S20855C53v15Ev();
extern void _ZN8S20855C43v16Ev();
extern void _ZN8S20855C43v17Ev();
extern void _ZN8S20855C43v18Ev();
static  VTBL_ENTRY _tg__ZTV8S20855C4__8S20855C2__8S20855C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-304,-188),
  ABISELECT(-304,-188),
  (VTBL_ENTRY)&(_ZTI8S20855C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20855C2D1Ev,_ZTv0_n12_N8S20855C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20855C2D0Ev,_ZTv0_n12_N8S20855C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20855C53v13Ev,
  (VTBL_ENTRY)&_ZN8S20855C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20855C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20855C43v16Ev,
  (VTBL_ENTRY)&_ZN8S20855C43v17Ev,
  (VTBL_ENTRY)&_ZN8S20855C43v18Ev,
};
static  VTT_ENTRY vtt_S20855C1[] = {
  {&(_ZTV8S20855C1[14]),  14,78},
  {&(_ZTV8S20855C1[46]),  46,78},
  {&(_ZTV8S20855C1[14]),  14,78},
  {&(_ZTV8S20855C1[70]),  70,78},
  {&(_tg__ZTV8S20855C2__8S20855C1[13]),  13,28},
  {&(_tg__ZTV8S20855C3__8S20855C2__8S20855C1[11]),  11,20},
  {&(_tg__ZTV8S20855C4__8S20855C2__8S20855C1[9]),  9,17},
};
extern VTBL_ENTRY _ZTI8S20855C1[];
extern  VTBL_ENTRY _ZTV8S20855C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20855C1[];
static VTBL_ENTRY alt_thunk_names119[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20855C2D0Ev,_ZTv0_n12_N8S20855C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S20855C2D0Ev,_ZThn188_N8S20855C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20855C2D1Ev,_ZTv0_n12_N8S20855C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S20855C2D1Ev,_ZThn188_N8S20855C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20855C1D0Ev,_ZTv0_n12_N8S20855C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S20855C1D0Ev,_ZThn196_N8S20855C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20855C1D1Ev,_ZTv0_n12_N8S20855C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S20855C1D1Ev,_ZThn196_N8S20855C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S20855C1D0Ev,_ZTv0_n72_N8S20855C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20855C1D0Ev,_ZThn8_N8S20855C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N8S20855C1D1Ev,_ZTv0_n72_N8S20855C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20855C1D1Ev,_ZThn8_N8S20855C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20855C1 = {  "S20855C1", // class name
  bases_S20855C1, 4,
  &(vtc_S20855C1[0]), // expected_vtbl_contents
  &(vtt_S20855C1[0]), // expected_vtt_contents
  ABISELECT(384,232), // object size
  NSPAIRA(_ZTI8S20855C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20855C1),78, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20855C1),7, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names119,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3761C2  : S1679C4_nt {
  virtual void  v8(); // _ZN7S3761C22v8Ev
  virtual void  v9(); // _ZN7S3761C22v9Ev
  virtual void  v10(); // _ZN7S3761C23v10Ev
  virtual void  v11(); // _ZN7S3761C23v11Ev
  virtual void  v12(); // _ZN7S3761C23v12Ev
  virtual void  v13(); // _ZN7S3761C23v13Ev
  virtual void  v14(); // _ZN7S3761C23v14Ev
  virtual void  v15(); // _ZN7S3761C23v15Ev
  virtual void  v16(); // _ZN7S3761C23v16Ev
  virtual void  v17(); // _ZN7S3761C23v17Ev
  virtual void  v18(); // _ZN7S3761C23v18Ev
  virtual void  v19(); // _ZN7S3761C23v19Ev
  ~S3761C2(); // tgen
  S3761C2(); // tgen
};
//SIG(-1 S3761C2) C1{ BC2{ vd m Fi} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


void  S3761C2 ::v8(){vfunc_called(this, "_ZN7S3761C22v8Ev");}
void  S3761C2 ::v9(){vfunc_called(this, "_ZN7S3761C22v9Ev");}
void  S3761C2 ::v10(){vfunc_called(this, "_ZN7S3761C23v10Ev");}
void  S3761C2 ::v11(){vfunc_called(this, "_ZN7S3761C23v11Ev");}
void  S3761C2 ::v12(){vfunc_called(this, "_ZN7S3761C23v12Ev");}
void  S3761C2 ::v13(){vfunc_called(this, "_ZN7S3761C23v13Ev");}
void  S3761C2 ::v14(){vfunc_called(this, "_ZN7S3761C23v14Ev");}
void  S3761C2 ::v15(){vfunc_called(this, "_ZN7S3761C23v15Ev");}
void  S3761C2 ::v16(){vfunc_called(this, "_ZN7S3761C23v16Ev");}
void  S3761C2 ::v17(){vfunc_called(this, "_ZN7S3761C23v17Ev");}
void  S3761C2 ::v18(){vfunc_called(this, "_ZN7S3761C23v18Ev");}
void  S3761C2 ::v19(){vfunc_called(this, "_ZN7S3761C23v19Ev");}
S3761C2 ::~S3761C2(){ note_dtor("S3761C2", this);} // tgen
S3761C2 ::S3761C2(){ note_ctor("S3761C2", this);} // tgen

static void Test_S3761C2()
{
  extern Class_Descriptor cd_S3761C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3761C2, buf);
    S3761C2 *dp, &lv = *(dp=new (buf) S3761C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3761C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3761C2)");
    check_base_class_offset(lv, (S1679C4_nt*), 0, "S3761C2");
    test_class_info(&lv, &cd_S3761C2);
    dp->~S3761C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3761C2(Test_S3761C2, "S3761C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3761C2C1Ev();
extern void _ZN7S3761C2D1Ev();
Name_Map name_map_S3761C2[] = {
  NSPAIR(_ZN7S3761C2C1Ev),
  NSPAIR(_ZN7S3761C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
static Base_Class bases_S3761C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3761C2[];
extern void _ZN7S3761C2D1Ev();
extern void _ZN7S3761C2D0Ev();
extern void _ZN7S3761C22v8Ev();
extern void _ZN7S3761C22v9Ev();
extern void _ZN7S3761C23v10Ev();
extern void _ZN7S3761C23v11Ev();
extern void _ZN7S3761C23v12Ev();
extern void _ZN7S3761C23v13Ev();
extern void _ZN7S3761C23v14Ev();
extern void _ZN7S3761C23v15Ev();
extern void _ZN7S3761C23v16Ev();
extern void _ZN7S3761C23v17Ev();
extern void _ZN7S3761C23v18Ev();
extern void _ZN7S3761C23v19Ev();
static  VTBL_ENTRY vtc_S3761C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3761C2[0]),
  (VTBL_ENTRY)&_ZN7S3761C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3761C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3761C22v8Ev,
  (VTBL_ENTRY)&_ZN7S3761C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3761C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3761C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3761C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3761C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3761C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3761C23v15Ev,
  (VTBL_ENTRY)&_ZN7S3761C23v16Ev,
  (VTBL_ENTRY)&_ZN7S3761C23v17Ev,
  (VTBL_ENTRY)&_ZN7S3761C23v18Ev,
  (VTBL_ENTRY)&_ZN7S3761C23v19Ev,
};
extern VTBL_ENTRY _ZTI7S3761C2[];
extern  VTBL_ENTRY _ZTV7S3761C2[];
Class_Descriptor cd_S3761C2 = {  "S3761C2", // class name
  bases_S3761C2, 1,
  &(vtc_S3761C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3761C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3761C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3761C1  : S3761C2 {
  void *s3761c1f0;
  ::S5266C36 s3761c1f1;
  ::S5266C36 s3761c1f2;
  ::S5266C12_nt s3761c1f3;
  void *s3761c1f4[2];
  virtual  ~S3761C1(); // _ZN7S3761C1D1Ev
  virtual void  v1(); // _ZN7S3761C12v1Ev
  virtual void  v2(); // _ZN7S3761C12v2Ev
  virtual void  v3(); // _ZN7S3761C12v3Ev
  virtual void  v4(); // _ZN7S3761C12v4Ev
  virtual void  v5(); // _ZN7S3761C12v5Ev
  virtual void  v6(); // _ZN7S3761C12v6Ev
  virtual void  v7(); // _ZN7S3761C12v7Ev
  S3761C1(); // tgen
};
//SIG(1 S3761C1) C1{ BC2{ BC3{ vd m Fi} v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19} vd v1 v2 v3 v4 v5 v6 v7 Fp FC4{ m Fp Fi[2] FC5{ m}} FC4 FC6{ m FC7{ m FL[2]}} Fp[2]}


 S3761C1 ::~S3761C1(){ note_dtor("S3761C1", this);}
void  S3761C1 ::v1(){vfunc_called(this, "_ZN7S3761C12v1Ev");}
void  S3761C1 ::v2(){vfunc_called(this, "_ZN7S3761C12v2Ev");}
void  S3761C1 ::v3(){vfunc_called(this, "_ZN7S3761C12v3Ev");}
void  S3761C1 ::v4(){vfunc_called(this, "_ZN7S3761C12v4Ev");}
void  S3761C1 ::v5(){vfunc_called(this, "_ZN7S3761C12v5Ev");}
void  S3761C1 ::v6(){vfunc_called(this, "_ZN7S3761C12v6Ev");}
void  S3761C1 ::v7(){vfunc_called(this, "_ZN7S3761C12v7Ev");}
S3761C1 ::S3761C1(){ note_ctor("S3761C1", this);} // tgen

static void Test_S3761C1()
{
  extern Class_Descriptor cd_S3761C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,18)];
    init_test(&cd_S3761C1, buf);
    S3761C1 *dp, &lv = *(dp=new (buf) S3761C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,68), "sizeof(S3761C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3761C1)");
    check_base_class_offset(lv, (S1679C4_nt*)(S3761C2*), 0, "S3761C1");
    check_base_class_offset(lv, (S3761C2*), 0, "S3761C1");
    check_field_offset(lv, s3761c1f0, ABISELECT(16,8), "S3761C1.s3761c1f0");
    check_field_offset(lv, s3761c1f1, ABISELECT(24,12), "S3761C1.s3761c1f1");
    check_field_offset(lv, s3761c1f2, ABISELECT(48,28), "S3761C1.s3761c1f2");
    check_field_offset(lv, s3761c1f3, ABISELECT(72,44), "S3761C1.s3761c1f3");
    check_field_offset(lv, s3761c1f4, ABISELECT(88,60), "S3761C1.s3761c1f4");
    test_class_info(&lv, &cd_S3761C1);
    dp->~S3761C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3761C1(Test_S3761C1, "S3761C1", ABISELECT(104,68));

#else // __cplusplus

extern void _ZN7S3761C1C1Ev();
extern void _ZN7S3761C1D1Ev();
Name_Map name_map_S3761C1[] = {
  NSPAIR(_ZN7S3761C1C1Ev),
  NSPAIR(_ZN7S3761C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
extern Class_Descriptor cd_S3761C2;
extern VTBL_ENTRY _ZTI7S3761C2[];
extern  VTBL_ENTRY _ZTV7S3761C2[];
static Base_Class bases_S3761C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3761C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3761C1[];
extern void _ZN7S3761C1D1Ev();
extern void _ZN7S3761C1D0Ev();
extern void _ZN7S3761C22v8Ev();
extern void _ZN7S3761C22v9Ev();
extern void _ZN7S3761C23v10Ev();
extern void _ZN7S3761C23v11Ev();
extern void _ZN7S3761C23v12Ev();
extern void _ZN7S3761C23v13Ev();
extern void _ZN7S3761C23v14Ev();
extern void _ZN7S3761C23v15Ev();
extern void _ZN7S3761C23v16Ev();
extern void _ZN7S3761C23v17Ev();
extern void _ZN7S3761C23v18Ev();
extern void _ZN7S3761C23v19Ev();
extern void _ZN7S3761C12v1Ev();
extern void _ZN7S3761C12v2Ev();
extern void _ZN7S3761C12v3Ev();
extern void _ZN7S3761C12v4Ev();
extern void _ZN7S3761C12v5Ev();
extern void _ZN7S3761C12v6Ev();
extern void _ZN7S3761C12v7Ev();
static  VTBL_ENTRY vtc_S3761C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3761C1[0]),
  (VTBL_ENTRY)&_ZN7S3761C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3761C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3761C22v8Ev,
  (VTBL_ENTRY)&_ZN7S3761C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3761C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3761C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3761C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3761C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3761C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3761C23v15Ev,
  (VTBL_ENTRY)&_ZN7S3761C23v16Ev,
  (VTBL_ENTRY)&_ZN7S3761C23v17Ev,
  (VTBL_ENTRY)&_ZN7S3761C23v18Ev,
  (VTBL_ENTRY)&_ZN7S3761C23v19Ev,
  (VTBL_ENTRY)&_ZN7S3761C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3761C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3761C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3761C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3761C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3761C12v6Ev,
  (VTBL_ENTRY)&_ZN7S3761C12v7Ev,
};
extern VTBL_ENTRY _ZTI7S3761C1[];
extern  VTBL_ENTRY _ZTV7S3761C1[];
Class_Descriptor cd_S3761C1 = {  "S3761C1", // class name
  bases_S3761C1, 2,
  &(vtc_S3761C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(104,68), // object size
  NSPAIRA(_ZTI7S3761C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3761C1),23, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6761C2  {
  virtual  ~S6761C2(); // _ZN7S6761C2D1Ev
  virtual void  v3(); // _ZN7S6761C22v3Ev
  virtual void  v4(); // _ZN7S6761C22v4Ev
  S6761C2(); // tgen
};
//SIG(-1 S6761C2) C1{ vd v1 v2}


 S6761C2 ::~S6761C2(){ note_dtor("S6761C2", this);}
void  S6761C2 ::v3(){vfunc_called(this, "_ZN7S6761C22v3Ev");}
void  S6761C2 ::v4(){vfunc_called(this, "_ZN7S6761C22v4Ev");}
S6761C2 ::S6761C2(){ note_ctor("S6761C2", this);} // tgen

static void Test_S6761C2()
{
  extern Class_Descriptor cd_S6761C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S6761C2, buf);
    S6761C2 *dp, &lv = *(dp=new (buf) S6761C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S6761C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6761C2)");
    test_class_info(&lv, &cd_S6761C2);
    dp->~S6761C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6761C2(Test_S6761C2, "S6761C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S6761C2C1Ev();
extern void _ZN7S6761C2D1Ev();
Name_Map name_map_S6761C2[] = {
  NSPAIR(_ZN7S6761C2C1Ev),
  NSPAIR(_ZN7S6761C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6761C2[];
extern void _ZN7S6761C2D1Ev();
extern void _ZN7S6761C2D0Ev();
extern void _ZN7S6761C22v3Ev();
extern void _ZN7S6761C22v4Ev();
static  VTBL_ENTRY vtc_S6761C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6761C2[0]),
  (VTBL_ENTRY)&_ZN7S6761C2D1Ev,
  (VTBL_ENTRY)&_ZN7S6761C2D0Ev,
  (VTBL_ENTRY)&_ZN7S6761C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6761C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S6761C2[];
extern  VTBL_ENTRY _ZTV7S6761C2[];
Class_Descriptor cd_S6761C2 = {  "S6761C2", // class name
  0,0,//no base classes
  &(vtc_S6761C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6761C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6761C2),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6761C4  {
  int s6761c4f0[5];
  long s6761c4f1;
  virtual void  v5(); // _ZN7S6761C42v5Ev
  virtual void  v6(); // _ZN7S6761C42v6Ev
  virtual void  v7(); // _ZN7S6761C42v7Ev
  virtual void  v8(); // _ZN7S6761C42v8Ev
  ~S6761C4(); // tgen
  S6761C4(); // tgen
};
//SIG(-1 S6761C4) C1{ v1 v2 v3 v4 Fi[5] Fl}


void  S6761C4 ::v5(){vfunc_called(this, "_ZN7S6761C42v5Ev");}
void  S6761C4 ::v6(){vfunc_called(this, "_ZN7S6761C42v6Ev");}
void  S6761C4 ::v7(){vfunc_called(this, "_ZN7S6761C42v7Ev");}
void  S6761C4 ::v8(){vfunc_called(this, "_ZN7S6761C42v8Ev");}
S6761C4 ::~S6761C4(){ note_dtor("S6761C4", this);} // tgen
S6761C4 ::S6761C4(){ note_ctor("S6761C4", this);} // tgen

static void Test_S6761C4()
{
  extern Class_Descriptor cd_S6761C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S6761C4, buf);
    S6761C4 *dp, &lv = *(dp=new (buf) S6761C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S6761C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6761C4)");
    check_field_offset(lv, s6761c4f0, ABISELECT(8,4), "S6761C4.s6761c4f0");
    check_field_offset(lv, s6761c4f1, ABISELECT(32,24), "S6761C4.s6761c4f1");
    test_class_info(&lv, &cd_S6761C4);
    dp->~S6761C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6761C4(Test_S6761C4, "S6761C4", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S6761C4C1Ev();
extern void _ZN7S6761C4D1Ev();
Name_Map name_map_S6761C4[] = {
  NSPAIR(_ZN7S6761C4C1Ev),
  NSPAIR(_ZN7S6761C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6761C4[];
extern void _ZN7S6761C42v5Ev();
extern void _ZN7S6761C42v6Ev();
extern void _ZN7S6761C42v7Ev();
extern void _ZN7S6761C42v8Ev();
static  VTBL_ENTRY vtc_S6761C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6761C4[0]),
  (VTBL_ENTRY)&_ZN7S6761C42v5Ev,
  (VTBL_ENTRY)&_ZN7S6761C42v6Ev,
  (VTBL_ENTRY)&_ZN7S6761C42v7Ev,
  (VTBL_ENTRY)&_ZN7S6761C42v8Ev,
};
extern VTBL_ENTRY _ZTI7S6761C4[];
extern  VTBL_ENTRY _ZTV7S6761C4[];
Class_Descriptor cd_S6761C4 = {  "S6761C4", // class name
  0,0,//no base classes
  &(vtc_S6761C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S6761C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6761C4),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6761C6  {
  virtual void  v9(); // _ZN7S6761C62v9Ev
  virtual void  v10(); // _ZN7S6761C63v10Ev
  virtual void  v11(); // _ZN7S6761C63v11Ev
  virtual void  v12(); // _ZN7S6761C63v12Ev
  virtual void  v13(); // _ZN7S6761C63v13Ev
  virtual void  v14(); // _ZN7S6761C63v14Ev
  virtual void  v15(); // _ZN7S6761C63v15Ev
  virtual void  v16(); // _ZN7S6761C63v16Ev
  virtual void  v17(); // _ZN7S6761C63v17Ev
  ~S6761C6(); // tgen
  S6761C6(); // tgen
};
//SIG(-1 S6761C6) C1{ v1 v2 v3 v4 v5 v6 v7 v8 v9}


void  S6761C6 ::v9(){vfunc_called(this, "_ZN7S6761C62v9Ev");}
void  S6761C6 ::v10(){vfunc_called(this, "_ZN7S6761C63v10Ev");}
void  S6761C6 ::v11(){vfunc_called(this, "_ZN7S6761C63v11Ev");}
void  S6761C6 ::v12(){vfunc_called(this, "_ZN7S6761C63v12Ev");}
void  S6761C6 ::v13(){vfunc_called(this, "_ZN7S6761C63v13Ev");}
void  S6761C6 ::v14(){vfunc_called(this, "_ZN7S6761C63v14Ev");}
void  S6761C6 ::v15(){vfunc_called(this, "_ZN7S6761C63v15Ev");}
void  S6761C6 ::v16(){vfunc_called(this, "_ZN7S6761C63v16Ev");}
void  S6761C6 ::v17(){vfunc_called(this, "_ZN7S6761C63v17Ev");}
S6761C6 ::~S6761C6(){ note_dtor("S6761C6", this);} // tgen
S6761C6 ::S6761C6(){ note_ctor("S6761C6", this);} // tgen

static void Test_S6761C6()
{
  extern Class_Descriptor cd_S6761C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S6761C6, buf);
    S6761C6 *dp, &lv = *(dp=new (buf) S6761C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S6761C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6761C6)");
    test_class_info(&lv, &cd_S6761C6);
    dp->~S6761C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6761C6(Test_S6761C6, "S6761C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S6761C6C1Ev();
extern void _ZN7S6761C6D1Ev();
Name_Map name_map_S6761C6[] = {
  NSPAIR(_ZN7S6761C6C1Ev),
  NSPAIR(_ZN7S6761C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6761C6[];
extern void _ZN7S6761C62v9Ev();
extern void _ZN7S6761C63v10Ev();
extern void _ZN7S6761C63v11Ev();
extern void _ZN7S6761C63v12Ev();
extern void _ZN7S6761C63v13Ev();
extern void _ZN7S6761C63v14Ev();
extern void _ZN7S6761C63v15Ev();
extern void _ZN7S6761C63v16Ev();
extern void _ZN7S6761C63v17Ev();
static  VTBL_ENTRY vtc_S6761C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6761C6[0]),
  (VTBL_ENTRY)&_ZN7S6761C62v9Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v10Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v11Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v12Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v15Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v16Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v17Ev,
};
extern VTBL_ENTRY _ZTI7S6761C6[];
extern  VTBL_ENTRY _ZTV7S6761C6[];
Class_Descriptor cd_S6761C6 = {  "S6761C6", // class name
  0,0,//no base classes
  &(vtc_S6761C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6761C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6761C6),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6761C5  : virtual S6761C6 {
  void *s6761c5f0;
  long double s6761c5f1;
  int s6761c5f2;
  virtual void  v18(); // _ZN7S6761C53v18Ev
  virtual void  v19(); // _ZN7S6761C53v19Ev
  virtual void  v20(); // _ZN7S6761C53v20Ev
  ~S6761C5(); // tgen
  S6761C5(); // tgen
};
//SIG(-1 S6761C5) C1{ VBC2{ v4 v5 v6 v7 v8 v9 v10 v11 v12} v1 v2 v3 Fp FD Fi}


void  S6761C5 ::v18(){vfunc_called(this, "_ZN7S6761C53v18Ev");}
void  S6761C5 ::v19(){vfunc_called(this, "_ZN7S6761C53v19Ev");}
void  S6761C5 ::v20(){vfunc_called(this, "_ZN7S6761C53v20Ev");}
S6761C5 ::~S6761C5(){ note_dtor("S6761C5", this);} // tgen
S6761C5 ::S6761C5(){ note_ctor("S6761C5", this);} // tgen

static void Test_S6761C5()
{
  extern Class_Descriptor cd_S6761C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,7)];
    init_test(&cd_S6761C5, buf);
    S6761C5 *dp, &lv = *(dp=new (buf) S6761C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S6761C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6761C5)");
    check_base_class_offset(lv, (S6761C6*), 0, "S6761C5");
    check_field_offset(lv, s6761c5f0, ABISELECT(8,4), "S6761C5.s6761c5f0");
    check_field_offset(lv, s6761c5f1, ABISELECT(16,8), "S6761C5.s6761c5f1");
    check_field_offset(lv, s6761c5f2, ABISELECT(32,20), "S6761C5.s6761c5f2");
    test_class_info(&lv, &cd_S6761C5);
    dp->~S6761C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6761C5(Test_S6761C5, "S6761C5", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN7S6761C5C1Ev();
extern void _ZN7S6761C5D1Ev();
Name_Map name_map_S6761C5[] = {
  NSPAIR(_ZN7S6761C5C1Ev),
  NSPAIR(_ZN7S6761C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6761C6;
extern VTBL_ENTRY _ZTI7S6761C6[];
extern  VTBL_ENTRY _ZTV7S6761C6[];
static Base_Class bases_S6761C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6761C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6761C5[];
extern void _ZN7S6761C62v9Ev();
extern void _ZN7S6761C63v10Ev();
extern void _ZN7S6761C63v11Ev();
extern void _ZN7S6761C63v12Ev();
extern void _ZN7S6761C63v13Ev();
extern void _ZN7S6761C63v14Ev();
extern void _ZN7S6761C63v15Ev();
extern void _ZN7S6761C63v16Ev();
extern void _ZN7S6761C63v17Ev();
extern void _ZN7S6761C53v18Ev();
extern void _ZN7S6761C53v19Ev();
extern void _ZN7S6761C53v20Ev();
static  VTBL_ENTRY vtc_S6761C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6761C5[0]),
  (VTBL_ENTRY)&_ZN7S6761C62v9Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v10Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v11Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v12Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v15Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v16Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v17Ev,
  (VTBL_ENTRY)&_ZN7S6761C53v18Ev,
  (VTBL_ENTRY)&_ZN7S6761C53v19Ev,
  (VTBL_ENTRY)&_ZN7S6761C53v20Ev,
};
extern VTBL_ENTRY _ZTV7S6761C5[];
static  VTT_ENTRY vtt_S6761C5[] = {
  {&(_ZTV7S6761C5[12]),  12,24},
  {&(_ZTV7S6761C5[12]),  12,24},
};
extern VTBL_ENTRY _ZTI7S6761C5[];
extern  VTBL_ENTRY _ZTV7S6761C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6761C5[];
Class_Descriptor cd_S6761C5 = {  "S6761C5", // class name
  bases_S6761C5, 1,
  &(vtc_S6761C5[0]), // expected_vtbl_contents
  &(vtt_S6761C5[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI7S6761C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S6761C5),24, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6761C5),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6761C3  : virtual S6761C4 , virtual S6761C5 {
  virtual void  v21(); // _ZN7S6761C33v21Ev
  virtual void  v22(); // _ZN7S6761C33v22Ev
  virtual void  v23(); // _ZN7S6761C33v23Ev
  ~S6761C3(); // tgen
  S6761C3(); // tgen
};
//SIG(-1 S6761C3) C1{ VBC2{ v4 v5 v6 v7 Fi[5] Fl} VBC3{ VBC4{ v8 v9 v10 v11 v12 v13 v14 v15 v16} v17 v18 v19 Fp FD Fi} v1 v2 v3}


void  S6761C3 ::v21(){vfunc_called(this, "_ZN7S6761C33v21Ev");}
void  S6761C3 ::v22(){vfunc_called(this, "_ZN7S6761C33v22Ev");}
void  S6761C3 ::v23(){vfunc_called(this, "_ZN7S6761C33v23Ev");}
S6761C3 ::~S6761C3(){ note_dtor("S6761C3", this);} // tgen
S6761C3 ::S6761C3(){ note_ctor("S6761C3", this);} // tgen

static void Test_S6761C3()
{
  extern Class_Descriptor cd_S6761C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,15)];
    init_test(&cd_S6761C3, buf);
    S6761C3 *dp, &lv = *(dp=new (buf) S6761C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,56), "sizeof(S6761C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6761C3)");
    check_base_class_offset(lv, (S6761C4*), ABISELECT(8,4), "S6761C3");
    check_base_class_offset(lv, (S6761C6*)(S6761C5*), 0, "S6761C3");
    check_base_class_offset(lv, (S6761C5*), ABISELECT(48,32), "S6761C3");
    test_class_info(&lv, &cd_S6761C3);
    dp->~S6761C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6761C3(Test_S6761C3, "S6761C3", ABISELECT(96,56));

#else // __cplusplus

extern void _ZN7S6761C3C1Ev();
extern void _ZN7S6761C3D1Ev();
Name_Map name_map_S6761C3[] = {
  NSPAIR(_ZN7S6761C3C1Ev),
  NSPAIR(_ZN7S6761C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6761C4;
extern VTBL_ENTRY _ZTI7S6761C4[];
extern  VTBL_ENTRY _ZTV7S6761C4[];
extern Class_Descriptor cd_S6761C6;
extern VTBL_ENTRY _ZTI7S6761C6[];
extern  VTBL_ENTRY _ZTV7S6761C6[];
extern Class_Descriptor cd_S6761C5;
extern VTBL_ENTRY _ZTI7S6761C5[];
extern  VTBL_ENTRY _ZTV7S6761C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6761C5[];
static Base_Class bases_S6761C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6761C4,    ABISELECT(8,4), //bcp->offset
    26, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6761C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S6761C5,    ABISELECT(48,32), //bcp->offset
    36, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6761C3[];
extern void _ZN7S6761C62v9Ev();
extern void _ZN7S6761C63v10Ev();
extern void _ZN7S6761C63v11Ev();
extern void _ZN7S6761C63v12Ev();
extern void _ZN7S6761C63v13Ev();
extern void _ZN7S6761C63v14Ev();
extern void _ZN7S6761C63v15Ev();
extern void _ZN7S6761C63v16Ev();
extern void _ZN7S6761C63v17Ev();
extern void _ZN7S6761C33v21Ev();
extern void _ZN7S6761C33v22Ev();
extern void _ZN7S6761C33v23Ev();
extern void _ZN7S6761C42v5Ev();
extern void _ZN7S6761C42v6Ev();
extern void _ZN7S6761C42v7Ev();
extern void _ZN7S6761C42v8Ev();
extern void _ZN7S6761C62v9Ev();
extern void _ZN7S6761C63v10Ev();
extern void _ZN7S6761C63v11Ev();
extern void _ZN7S6761C63v12Ev();
extern void _ZN7S6761C63v13Ev();
extern void _ZN7S6761C63v14Ev();
extern void _ZN7S6761C63v15Ev();
extern void _ZN7S6761C63v16Ev();
extern void _ZN7S6761C63v17Ev();
extern void _ZN7S6761C53v18Ev();
extern void _ZN7S6761C53v19Ev();
extern void _ZN7S6761C53v20Ev();
static  VTBL_ENTRY vtc_S6761C3[] = {
  0,
  ABISELECT(48,32),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6761C3[0]),
  (VTBL_ENTRY)&_ZN7S6761C62v9Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v10Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v11Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v12Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v15Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v16Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v17Ev,
  (VTBL_ENTRY)&_ZN7S6761C33v21Ev,
  (VTBL_ENTRY)&_ZN7S6761C33v22Ev,
  (VTBL_ENTRY)&_ZN7S6761C33v23Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S6761C3[0]),
  (VTBL_ENTRY)&_ZN7S6761C42v5Ev,
  (VTBL_ENTRY)&_ZN7S6761C42v6Ev,
  (VTBL_ENTRY)&_ZN7S6761C42v7Ev,
  (VTBL_ENTRY)&_ZN7S6761C42v8Ev,
  0,
  0,
  0,
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S6761C3[0]),
  (VTBL_ENTRY)&_ZN7S6761C62v9Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v10Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v11Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v12Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v15Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v16Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v17Ev,
  (VTBL_ENTRY)&_ZN7S6761C53v18Ev,
  (VTBL_ENTRY)&_ZN7S6761C53v19Ev,
  (VTBL_ENTRY)&_ZN7S6761C53v20Ev,
};
extern VTBL_ENTRY _ZTV7S6761C3[];
extern void _ZN7S6761C62v9Ev();
extern void _ZN7S6761C63v10Ev();
extern void _ZN7S6761C63v11Ev();
extern void _ZN7S6761C63v12Ev();
extern void _ZN7S6761C63v13Ev();
extern void _ZN7S6761C63v14Ev();
extern void _ZN7S6761C63v15Ev();
extern void _ZN7S6761C63v16Ev();
extern void _ZN7S6761C63v17Ev();
extern void _ZN7S6761C53v18Ev();
extern void _ZN7S6761C53v19Ev();
extern void _ZN7S6761C53v20Ev();
static  VTBL_ENTRY _tg__ZTV7S6761C5__7S6761C3[] = {
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S6761C5[0]),
  (VTBL_ENTRY)&_ZN7S6761C62v9Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v10Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v11Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v12Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v15Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v16Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v17Ev,
  (VTBL_ENTRY)&_ZN7S6761C53v18Ev,
  (VTBL_ENTRY)&_ZN7S6761C53v19Ev,
  (VTBL_ENTRY)&_ZN7S6761C53v20Ev,
};
extern void _ZN7S6761C62v9Ev();
extern void _ZN7S6761C63v10Ev();
extern void _ZN7S6761C63v11Ev();
extern void _ZN7S6761C63v12Ev();
extern void _ZN7S6761C63v13Ev();
extern void _ZN7S6761C63v14Ev();
extern void _ZN7S6761C63v15Ev();
extern void _ZN7S6761C63v16Ev();
extern void _ZN7S6761C63v17Ev();
static  VTBL_ENTRY _tg__ZTV7S6761C6__7S6761C5__7S6761C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI7S6761C5[0]),
  (VTBL_ENTRY)&_ZN7S6761C62v9Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v10Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v11Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v12Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v15Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v16Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v17Ev,
};
static  VTT_ENTRY vtt_S6761C3[] = {
  {&(_ZTV7S6761C3[14]),  14,63},
  {&(_ZTV7S6761C3[32]),  32,63},
  {&(_ZTV7S6761C3[51]),  51,63},
  {&(_ZTV7S6761C3[14]),  14,63},
  {&(_tg__ZTV7S6761C5__7S6761C3[12]),  12,24},
  {&(_tg__ZTV7S6761C6__7S6761C5__7S6761C3[11]),  11,20},
};
extern VTBL_ENTRY _ZTI7S6761C3[];
extern  VTBL_ENTRY _ZTV7S6761C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6761C3[];
Class_Descriptor cd_S6761C3 = {  "S6761C3", // class name
  bases_S6761C3, 3,
  &(vtc_S6761C3[0]), // expected_vtbl_contents
  &(vtt_S6761C3[0]), // expected_vtt_contents
  ABISELECT(96,56), // object size
  NSPAIRA(_ZTI7S6761C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6761C3),63, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6761C3),6, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6761C1  : S6761C2 , virtual S6761C3 {
  char s6761c1f0;
  void *s6761c1f1[5];
  virtual void  v1(); // _ZN7S6761C12v1Ev
  virtual void  v2(); // _ZN7S6761C12v2Ev
  ~S6761C1(); // tgen
  S6761C1(); // tgen
};
//SIG(1 S6761C1) C1{ BC2{ vd v3 v4} VBC3{ VBC4{ v5 v6 v7 v8 Fi[5] Fl} VBC5{ VBC6{ v9 v10 v11 v12 v13 v14 v15 v16 v17} v18 v19 v20 Fp FD Fi} v21 v22 v23} v1 v2 Fc Fp[5]}


void  S6761C1 ::v1(){vfunc_called(this, "_ZN7S6761C12v1Ev");}
void  S6761C1 ::v2(){vfunc_called(this, "_ZN7S6761C12v2Ev");}
S6761C1 ::~S6761C1(){ note_dtor("S6761C1", this);} // tgen
S6761C1 ::S6761C1(){ note_ctor("S6761C1", this);} // tgen

static void Test_S6761C1()
{
  extern Class_Descriptor cd_S6761C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,22)];
    init_test(&cd_S6761C1, buf);
    S6761C1 *dp, &lv = *(dp=new (buf) S6761C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,84), "sizeof(S6761C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6761C1)");
    check_base_class_offset(lv, (S6761C2*), 0, "S6761C1");
    check_base_class_offset(lv, (S6761C4*)(S6761C3*), ABISELECT(64,32), "S6761C1");
    check_base_class_offset(lv, (S6761C6*)(S6761C5*), ABISELECT(56,28), "S6761C1");
    check_base_class_offset(lv, (S6761C5*)(S6761C3*), ABISELECT(112,60), "S6761C1");
    check_base_class_offset(lv, (S6761C3*), ABISELECT(56,28), "S6761C1");
    check_field_offset(lv, s6761c1f0, ABISELECT(8,4), "S6761C1.s6761c1f0");
    check_field_offset(lv, s6761c1f1, ABISELECT(16,8), "S6761C1.s6761c1f1");
    test_class_info(&lv, &cd_S6761C1);
    dp->~S6761C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6761C1(Test_S6761C1, "S6761C1", ABISELECT(160,84));

#else // __cplusplus

extern void _ZN7S6761C1C1Ev();
extern void _ZN7S6761C1D1Ev();
Name_Map name_map_S6761C1[] = {
  NSPAIR(_ZN7S6761C1C1Ev),
  NSPAIR(_ZN7S6761C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6761C2;
extern VTBL_ENTRY _ZTI7S6761C2[];
extern  VTBL_ENTRY _ZTV7S6761C2[];
extern Class_Descriptor cd_S6761C4;
extern VTBL_ENTRY _ZTI7S6761C4[];
extern  VTBL_ENTRY _ZTV7S6761C4[];
extern Class_Descriptor cd_S6761C6;
extern VTBL_ENTRY _ZTI7S6761C6[];
extern  VTBL_ENTRY _ZTV7S6761C6[];
extern Class_Descriptor cd_S6761C5;
extern VTBL_ENTRY _ZTI7S6761C5[];
extern  VTBL_ENTRY _ZTV7S6761C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6761C5[];
extern Class_Descriptor cd_S6761C3;
extern VTBL_ENTRY _ZTI7S6761C3[];
extern  VTBL_ENTRY _ZTV7S6761C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6761C3[];
static Base_Class bases_S6761C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6761C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6761C4,    ABISELECT(64,32), //bcp->offset
    41, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S6761C6,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S6761C5,    ABISELECT(112,60), //bcp->offset
    51, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S6761C3,    ABISELECT(56,28), //bcp->offset
    12, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6761C1[];
extern void _ZN7S6761C1D1Ev();
extern void _ZN7S6761C1D0Ev();
extern void _ZN7S6761C22v3Ev();
extern void _ZN7S6761C22v4Ev();
extern void _ZN7S6761C12v1Ev();
extern void _ZN7S6761C12v2Ev();
extern void _ZN7S6761C62v9Ev();
extern void _ZN7S6761C63v10Ev();
extern void _ZN7S6761C63v11Ev();
extern void _ZN7S6761C63v12Ev();
extern void _ZN7S6761C63v13Ev();
extern void _ZN7S6761C63v14Ev();
extern void _ZN7S6761C63v15Ev();
extern void _ZN7S6761C63v16Ev();
extern void _ZN7S6761C63v17Ev();
extern void _ZN7S6761C33v21Ev();
extern void _ZN7S6761C33v22Ev();
extern void _ZN7S6761C33v23Ev();
extern void _ZN7S6761C42v5Ev();
extern void _ZN7S6761C42v6Ev();
extern void _ZN7S6761C42v7Ev();
extern void _ZN7S6761C42v8Ev();
extern void _ZN7S6761C62v9Ev();
extern void _ZN7S6761C63v10Ev();
extern void _ZN7S6761C63v11Ev();
extern void _ZN7S6761C63v12Ev();
extern void _ZN7S6761C63v13Ev();
extern void _ZN7S6761C63v14Ev();
extern void _ZN7S6761C63v15Ev();
extern void _ZN7S6761C63v16Ev();
extern void _ZN7S6761C63v17Ev();
extern void _ZN7S6761C53v18Ev();
extern void _ZN7S6761C53v19Ev();
extern void _ZN7S6761C53v20Ev();
static  VTBL_ENTRY vtc_S6761C1[] = {
  ABISELECT(56,28),
  ABISELECT(112,60),
  ABISELECT(64,32),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S6761C1[0]),
  (VTBL_ENTRY)&_ZN7S6761C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6761C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6761C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6761C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6761C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6761C12v2Ev,
  0,
  0,
  0,
  0,
  ABISELECT(56,32),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S6761C1[0]),
  (VTBL_ENTRY)&_ZN7S6761C62v9Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v10Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v11Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v12Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v15Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v16Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v17Ev,
  (VTBL_ENTRY)&_ZN7S6761C33v21Ev,
  (VTBL_ENTRY)&_ZN7S6761C33v22Ev,
  (VTBL_ENTRY)&_ZN7S6761C33v23Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S6761C1[0]),
  (VTBL_ENTRY)&_ZN7S6761C42v5Ev,
  (VTBL_ENTRY)&_ZN7S6761C42v6Ev,
  (VTBL_ENTRY)&_ZN7S6761C42v7Ev,
  (VTBL_ENTRY)&_ZN7S6761C42v8Ev,
  0,
  0,
  0,
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S6761C1[0]),
  (VTBL_ENTRY)&_ZN7S6761C62v9Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v10Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v11Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v12Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v15Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v16Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v17Ev,
  (VTBL_ENTRY)&_ZN7S6761C53v18Ev,
  (VTBL_ENTRY)&_ZN7S6761C53v19Ev,
  (VTBL_ENTRY)&_ZN7S6761C53v20Ev,
};
extern VTBL_ENTRY _ZTV7S6761C1[];
extern void _ZN7S6761C62v9Ev();
extern void _ZN7S6761C63v10Ev();
extern void _ZN7S6761C63v11Ev();
extern void _ZN7S6761C63v12Ev();
extern void _ZN7S6761C63v13Ev();
extern void _ZN7S6761C63v14Ev();
extern void _ZN7S6761C63v15Ev();
extern void _ZN7S6761C63v16Ev();
extern void _ZN7S6761C63v17Ev();
extern void _ZN7S6761C33v21Ev();
extern void _ZN7S6761C33v22Ev();
extern void _ZN7S6761C33v23Ev();
static  VTBL_ENTRY _tg__ZTV7S6761C3__7S6761C1[] = {
  0,
  ABISELECT(56,32),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6761C3[0]),
  (VTBL_ENTRY)&_ZN7S6761C62v9Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v10Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v11Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v12Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v15Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v16Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v17Ev,
  (VTBL_ENTRY)&_ZN7S6761C33v21Ev,
  (VTBL_ENTRY)&_ZN7S6761C33v22Ev,
  (VTBL_ENTRY)&_ZN7S6761C33v23Ev,
};
extern void _ZN7S6761C42v5Ev();
extern void _ZN7S6761C42v6Ev();
extern void _ZN7S6761C42v7Ev();
extern void _ZN7S6761C42v8Ev();
static  VTBL_ENTRY _tg__ZTV7S6761C4__7S6761C3__7S6761C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S6761C3[0]),
  (VTBL_ENTRY)&_ZN7S6761C42v5Ev,
  (VTBL_ENTRY)&_ZN7S6761C42v6Ev,
  (VTBL_ENTRY)&_ZN7S6761C42v7Ev,
  (VTBL_ENTRY)&_ZN7S6761C42v8Ev,
};
extern void _ZN7S6761C62v9Ev();
extern void _ZN7S6761C63v10Ev();
extern void _ZN7S6761C63v11Ev();
extern void _ZN7S6761C63v12Ev();
extern void _ZN7S6761C63v13Ev();
extern void _ZN7S6761C63v14Ev();
extern void _ZN7S6761C63v15Ev();
extern void _ZN7S6761C63v16Ev();
extern void _ZN7S6761C63v17Ev();
extern void _ZN7S6761C53v18Ev();
extern void _ZN7S6761C53v19Ev();
extern void _ZN7S6761C53v20Ev();
static  VTBL_ENTRY _tg__ZTV7S6761C5__7S6761C3__7S6761C1[] = {
  0,
  0,
  0,
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S6761C3[0]),
  (VTBL_ENTRY)&_ZN7S6761C62v9Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v10Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v11Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v12Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v15Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v16Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v17Ev,
  (VTBL_ENTRY)&_ZN7S6761C53v18Ev,
  (VTBL_ENTRY)&_ZN7S6761C53v19Ev,
  (VTBL_ENTRY)&_ZN7S6761C53v20Ev,
};
extern void _ZN7S6761C62v9Ev();
extern void _ZN7S6761C63v10Ev();
extern void _ZN7S6761C63v11Ev();
extern void _ZN7S6761C63v12Ev();
extern void _ZN7S6761C63v13Ev();
extern void _ZN7S6761C63v14Ev();
extern void _ZN7S6761C63v15Ev();
extern void _ZN7S6761C63v16Ev();
extern void _ZN7S6761C63v17Ev();
extern void _ZN7S6761C53v18Ev();
extern void _ZN7S6761C53v19Ev();
extern void _ZN7S6761C53v20Ev();
static  VTBL_ENTRY _tg__ZTV7S6761C5__7S6761C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S6761C5[0]),
  (VTBL_ENTRY)&_ZN7S6761C62v9Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v10Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v11Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v12Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v15Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v16Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v17Ev,
  (VTBL_ENTRY)&_ZN7S6761C53v18Ev,
  (VTBL_ENTRY)&_ZN7S6761C53v19Ev,
  (VTBL_ENTRY)&_ZN7S6761C53v20Ev,
};
extern void _ZN7S6761C62v9Ev();
extern void _ZN7S6761C63v10Ev();
extern void _ZN7S6761C63v11Ev();
extern void _ZN7S6761C63v12Ev();
extern void _ZN7S6761C63v13Ev();
extern void _ZN7S6761C63v14Ev();
extern void _ZN7S6761C63v15Ev();
extern void _ZN7S6761C63v16Ev();
extern void _ZN7S6761C63v17Ev();
static  VTBL_ENTRY _tg__ZTV7S6761C6__7S6761C5__7S6761C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI7S6761C5[0]),
  (VTBL_ENTRY)&_ZN7S6761C62v9Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v10Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v11Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v12Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v15Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v16Ev,
  (VTBL_ENTRY)&_ZN7S6761C63v17Ev,
};
static  VTT_ENTRY vtt_S6761C1[] = {
  {&(_ZTV7S6761C1[6]),  6,78},
  {&(_ZTV7S6761C1[29]),  29,78},
  {&(_ZTV7S6761C1[47]),  47,78},
  {&(_ZTV7S6761C1[66]),  66,78},
  {&(_ZTV7S6761C1[29]),  29,78},
  {&(_tg__ZTV7S6761C3__7S6761C1[14]),  14,26},
  {&(_tg__ZTV7S6761C4__7S6761C3__7S6761C1[6]),  6,10},
  {&(_tg__ZTV7S6761C5__7S6761C3__7S6761C1[15]),  15,27},
  {&(_tg__ZTV7S6761C3__7S6761C1[14]),  14,26},
  {&(_tg__ZTV7S6761C5__7S6761C1[12]),  12,24},
  {&(_tg__ZTV7S6761C6__7S6761C5__7S6761C1[11]),  11,20},
};
extern VTBL_ENTRY _ZTI7S6761C1[];
extern  VTBL_ENTRY _ZTV7S6761C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6761C1[];
Class_Descriptor cd_S6761C1 = {  "S6761C1", // class name
  bases_S6761C1, 5,
  &(vtc_S6761C1[0]), // expected_vtbl_contents
  &(vtt_S6761C1[0]), // expected_vtt_contents
  ABISELECT(160,84), // object size
  NSPAIRA(_ZTI7S6761C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6761C1),78, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6761C1),11, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3758C2  : S1679C4_nt {
  virtual void  v8(); // _ZN7S3758C22v8Ev
  virtual void  v9(); // _ZN7S3758C22v9Ev
  virtual void  v10(); // _ZN7S3758C23v10Ev
  virtual void  v11(); // _ZN7S3758C23v11Ev
  virtual void  v12(); // _ZN7S3758C23v12Ev
  virtual void  v13(); // _ZN7S3758C23v13Ev
  virtual void  v14(); // _ZN7S3758C23v14Ev
  virtual void  v15(); // _ZN7S3758C23v15Ev
  virtual void  v16(); // _ZN7S3758C23v16Ev
  virtual void  v17(); // _ZN7S3758C23v17Ev
  virtual void  v18(); // _ZN7S3758C23v18Ev
  virtual void  v19(); // _ZN7S3758C23v19Ev
  ~S3758C2(); // tgen
  S3758C2(); // tgen
};
//SIG(-1 S3758C2) C1{ BC2{ vd m Fi} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


void  S3758C2 ::v8(){vfunc_called(this, "_ZN7S3758C22v8Ev");}
void  S3758C2 ::v9(){vfunc_called(this, "_ZN7S3758C22v9Ev");}
void  S3758C2 ::v10(){vfunc_called(this, "_ZN7S3758C23v10Ev");}
void  S3758C2 ::v11(){vfunc_called(this, "_ZN7S3758C23v11Ev");}
void  S3758C2 ::v12(){vfunc_called(this, "_ZN7S3758C23v12Ev");}
void  S3758C2 ::v13(){vfunc_called(this, "_ZN7S3758C23v13Ev");}
void  S3758C2 ::v14(){vfunc_called(this, "_ZN7S3758C23v14Ev");}
void  S3758C2 ::v15(){vfunc_called(this, "_ZN7S3758C23v15Ev");}
void  S3758C2 ::v16(){vfunc_called(this, "_ZN7S3758C23v16Ev");}
void  S3758C2 ::v17(){vfunc_called(this, "_ZN7S3758C23v17Ev");}
void  S3758C2 ::v18(){vfunc_called(this, "_ZN7S3758C23v18Ev");}
void  S3758C2 ::v19(){vfunc_called(this, "_ZN7S3758C23v19Ev");}
S3758C2 ::~S3758C2(){ note_dtor("S3758C2", this);} // tgen
S3758C2 ::S3758C2(){ note_ctor("S3758C2", this);} // tgen

static void Test_S3758C2()
{
  extern Class_Descriptor cd_S3758C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3758C2, buf);
    S3758C2 *dp, &lv = *(dp=new (buf) S3758C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3758C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3758C2)");
    check_base_class_offset(lv, (S1679C4_nt*), 0, "S3758C2");
    test_class_info(&lv, &cd_S3758C2);
    dp->~S3758C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3758C2(Test_S3758C2, "S3758C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3758C2C1Ev();
extern void _ZN7S3758C2D1Ev();
Name_Map name_map_S3758C2[] = {
  NSPAIR(_ZN7S3758C2C1Ev),
  NSPAIR(_ZN7S3758C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
static Base_Class bases_S3758C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3758C2[];
extern void _ZN7S3758C2D1Ev();
extern void _ZN7S3758C2D0Ev();
extern void _ZN7S3758C22v8Ev();
extern void _ZN7S3758C22v9Ev();
extern void _ZN7S3758C23v10Ev();
extern void _ZN7S3758C23v11Ev();
extern void _ZN7S3758C23v12Ev();
extern void _ZN7S3758C23v13Ev();
extern void _ZN7S3758C23v14Ev();
extern void _ZN7S3758C23v15Ev();
extern void _ZN7S3758C23v16Ev();
extern void _ZN7S3758C23v17Ev();
extern void _ZN7S3758C23v18Ev();
extern void _ZN7S3758C23v19Ev();
static  VTBL_ENTRY vtc_S3758C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3758C2[0]),
  (VTBL_ENTRY)&_ZN7S3758C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3758C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3758C22v8Ev,
  (VTBL_ENTRY)&_ZN7S3758C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3758C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3758C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3758C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3758C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3758C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3758C23v15Ev,
  (VTBL_ENTRY)&_ZN7S3758C23v16Ev,
  (VTBL_ENTRY)&_ZN7S3758C23v17Ev,
  (VTBL_ENTRY)&_ZN7S3758C23v18Ev,
  (VTBL_ENTRY)&_ZN7S3758C23v19Ev,
};
extern VTBL_ENTRY _ZTI7S3758C2[];
extern  VTBL_ENTRY _ZTV7S3758C2[];
Class_Descriptor cd_S3758C2 = {  "S3758C2", // class name
  bases_S3758C2, 1,
  &(vtc_S3758C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3758C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3758C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3758C1  : S3758C2 {
  ::S3765C5_nt s3758c1f0;
  void *s3758c1f1;
  int s3758c1f2;
  void *s3758c1f3;
  char s3758c1f4;
  int s3758c1f5;
  ::S5266C36 s3758c1f6;
  virtual  ~S3758C1(); // _ZN7S3758C1D1Ev
  virtual void  v1(); // _ZN7S3758C12v1Ev
  virtual void  v2(); // _ZN7S3758C12v2Ev
  virtual void  v3(); // _ZN7S3758C12v3Ev
  virtual void  v4(); // _ZN7S3758C12v4Ev
  virtual void  v5(); // _ZN7S3758C12v5Ev
  virtual void  v6(); // _ZN7S3758C12v6Ev
  virtual void  v7(); // _ZN7S3758C12v7Ev
  S3758C1(); // tgen
};
//SIG(1 S3758C1) C1{ BC2{ BC3{ vd m Fi} v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19} vd v1 v2 v3 v4 v5 v6 v7 FC4{ m Fp[2]} Fp Fi Fp Fc Fi FC5{ m Fp Fi[2] FC6{ m}}}


 S3758C1 ::~S3758C1(){ note_dtor("S3758C1", this);}
void  S3758C1 ::v1(){vfunc_called(this, "_ZN7S3758C12v1Ev");}
void  S3758C1 ::v2(){vfunc_called(this, "_ZN7S3758C12v2Ev");}
void  S3758C1 ::v3(){vfunc_called(this, "_ZN7S3758C12v3Ev");}
void  S3758C1 ::v4(){vfunc_called(this, "_ZN7S3758C12v4Ev");}
void  S3758C1 ::v5(){vfunc_called(this, "_ZN7S3758C12v5Ev");}
void  S3758C1 ::v6(){vfunc_called(this, "_ZN7S3758C12v6Ev");}
void  S3758C1 ::v7(){vfunc_called(this, "_ZN7S3758C12v7Ev");}
S3758C1 ::S3758C1(){ note_ctor("S3758C1", this);} // tgen

static void Test_S3758C1()
{
  extern Class_Descriptor cd_S3758C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,14)];
    init_test(&cd_S3758C1, buf);
    S3758C1 *dp, &lv = *(dp=new (buf) S3758C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,52), "sizeof(S3758C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3758C1)");
    check_base_class_offset(lv, (S1679C4_nt*)(S3758C2*), 0, "S3758C1");
    check_base_class_offset(lv, (S3758C2*), 0, "S3758C1");
    check_field_offset(lv, s3758c1f0, ABISELECT(16,8), "S3758C1.s3758c1f0");
    check_field_offset(lv, s3758c1f1, ABISELECT(32,16), "S3758C1.s3758c1f1");
    check_field_offset(lv, s3758c1f2, ABISELECT(40,20), "S3758C1.s3758c1f2");
    check_field_offset(lv, s3758c1f3, ABISELECT(48,24), "S3758C1.s3758c1f3");
    check_field_offset(lv, s3758c1f4, ABISELECT(56,28), "S3758C1.s3758c1f4");
    check_field_offset(lv, s3758c1f5, ABISELECT(60,32), "S3758C1.s3758c1f5");
    check_field_offset(lv, s3758c1f6, ABISELECT(64,36), "S3758C1.s3758c1f6");
    test_class_info(&lv, &cd_S3758C1);
    dp->~S3758C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3758C1(Test_S3758C1, "S3758C1", ABISELECT(88,52));

#else // __cplusplus

extern void _ZN7S3758C1C1Ev();
extern void _ZN7S3758C1D1Ev();
Name_Map name_map_S3758C1[] = {
  NSPAIR(_ZN7S3758C1C1Ev),
  NSPAIR(_ZN7S3758C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
extern Class_Descriptor cd_S3758C2;
extern VTBL_ENTRY _ZTI7S3758C2[];
extern  VTBL_ENTRY _ZTV7S3758C2[];
static Base_Class bases_S3758C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3758C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3758C1[];
extern void _ZN7S3758C1D1Ev();
extern void _ZN7S3758C1D0Ev();
extern void _ZN7S3758C22v8Ev();
extern void _ZN7S3758C22v9Ev();
extern void _ZN7S3758C23v10Ev();
extern void _ZN7S3758C23v11Ev();
extern void _ZN7S3758C23v12Ev();
extern void _ZN7S3758C23v13Ev();
extern void _ZN7S3758C23v14Ev();
extern void _ZN7S3758C23v15Ev();
extern void _ZN7S3758C23v16Ev();
extern void _ZN7S3758C23v17Ev();
extern void _ZN7S3758C23v18Ev();
extern void _ZN7S3758C23v19Ev();
extern void _ZN7S3758C12v1Ev();
extern void _ZN7S3758C12v2Ev();
extern void _ZN7S3758C12v3Ev();
extern void _ZN7S3758C12v4Ev();
extern void _ZN7S3758C12v5Ev();
extern void _ZN7S3758C12v6Ev();
extern void _ZN7S3758C12v7Ev();
static  VTBL_ENTRY vtc_S3758C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3758C1[0]),
  (VTBL_ENTRY)&_ZN7S3758C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3758C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3758C22v8Ev,
  (VTBL_ENTRY)&_ZN7S3758C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3758C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3758C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3758C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3758C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3758C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3758C23v15Ev,
  (VTBL_ENTRY)&_ZN7S3758C23v16Ev,
  (VTBL_ENTRY)&_ZN7S3758C23v17Ev,
  (VTBL_ENTRY)&_ZN7S3758C23v18Ev,
  (VTBL_ENTRY)&_ZN7S3758C23v19Ev,
  (VTBL_ENTRY)&_ZN7S3758C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3758C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3758C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3758C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3758C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3758C12v6Ev,
  (VTBL_ENTRY)&_ZN7S3758C12v7Ev,
};
extern VTBL_ENTRY _ZTI7S3758C1[];
extern  VTBL_ENTRY _ZTV7S3758C1[];
Class_Descriptor cd_S3758C1 = {  "S3758C1", // class name
  bases_S3758C1, 2,
  &(vtc_S3758C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,52), // object size
  NSPAIRA(_ZTI7S3758C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3758C1),23, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3764C2  : S1679C4_nt {
  virtual void  v9(); // _ZN7S3764C22v9Ev
  virtual void  v10(); // _ZN7S3764C23v10Ev
  virtual void  v11(); // _ZN7S3764C23v11Ev
  virtual void  v12(); // _ZN7S3764C23v12Ev
  virtual void  v13(); // _ZN7S3764C23v13Ev
  virtual void  v14(); // _ZN7S3764C23v14Ev
  virtual void  v15(); // _ZN7S3764C23v15Ev
  virtual void  v16(); // _ZN7S3764C23v16Ev
  virtual void  v17(); // _ZN7S3764C23v17Ev
  virtual void  v18(); // _ZN7S3764C23v18Ev
  virtual void  v19(); // _ZN7S3764C23v19Ev
  virtual void  v20(); // _ZN7S3764C23v20Ev
  ~S3764C2(); // tgen
  S3764C2(); // tgen
};
//SIG(-1 S3764C2) C1{ BC2{ vd m Fi} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


void  S3764C2 ::v9(){vfunc_called(this, "_ZN7S3764C22v9Ev");}
void  S3764C2 ::v10(){vfunc_called(this, "_ZN7S3764C23v10Ev");}
void  S3764C2 ::v11(){vfunc_called(this, "_ZN7S3764C23v11Ev");}
void  S3764C2 ::v12(){vfunc_called(this, "_ZN7S3764C23v12Ev");}
void  S3764C2 ::v13(){vfunc_called(this, "_ZN7S3764C23v13Ev");}
void  S3764C2 ::v14(){vfunc_called(this, "_ZN7S3764C23v14Ev");}
void  S3764C2 ::v15(){vfunc_called(this, "_ZN7S3764C23v15Ev");}
void  S3764C2 ::v16(){vfunc_called(this, "_ZN7S3764C23v16Ev");}
void  S3764C2 ::v17(){vfunc_called(this, "_ZN7S3764C23v17Ev");}
void  S3764C2 ::v18(){vfunc_called(this, "_ZN7S3764C23v18Ev");}
void  S3764C2 ::v19(){vfunc_called(this, "_ZN7S3764C23v19Ev");}
void  S3764C2 ::v20(){vfunc_called(this, "_ZN7S3764C23v20Ev");}
S3764C2 ::~S3764C2(){ note_dtor("S3764C2", this);} // tgen
S3764C2 ::S3764C2(){ note_ctor("S3764C2", this);} // tgen

static void Test_S3764C2()
{
  extern Class_Descriptor cd_S3764C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3764C2, buf);
    S3764C2 *dp, &lv = *(dp=new (buf) S3764C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3764C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3764C2)");
    check_base_class_offset(lv, (S1679C4_nt*), 0, "S3764C2");
    test_class_info(&lv, &cd_S3764C2);
    dp->~S3764C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3764C2(Test_S3764C2, "S3764C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3764C2C1Ev();
extern void _ZN7S3764C2D1Ev();
Name_Map name_map_S3764C2[] = {
  NSPAIR(_ZN7S3764C2C1Ev),
  NSPAIR(_ZN7S3764C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
static Base_Class bases_S3764C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3764C2[];
extern void _ZN7S3764C2D1Ev();
extern void _ZN7S3764C2D0Ev();
extern void _ZN7S3764C22v9Ev();
extern void _ZN7S3764C23v10Ev();
extern void _ZN7S3764C23v11Ev();
extern void _ZN7S3764C23v12Ev();
extern void _ZN7S3764C23v13Ev();
extern void _ZN7S3764C23v14Ev();
extern void _ZN7S3764C23v15Ev();
extern void _ZN7S3764C23v16Ev();
extern void _ZN7S3764C23v17Ev();
extern void _ZN7S3764C23v18Ev();
extern void _ZN7S3764C23v19Ev();
extern void _ZN7S3764C23v20Ev();
static  VTBL_ENTRY vtc_S3764C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3764C2[0]),
  (VTBL_ENTRY)&_ZN7S3764C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3764C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3764C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3764C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3764C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3764C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3764C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3764C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3764C23v15Ev,
  (VTBL_ENTRY)&_ZN7S3764C23v16Ev,
  (VTBL_ENTRY)&_ZN7S3764C23v17Ev,
  (VTBL_ENTRY)&_ZN7S3764C23v18Ev,
  (VTBL_ENTRY)&_ZN7S3764C23v19Ev,
  (VTBL_ENTRY)&_ZN7S3764C23v20Ev,
};
extern VTBL_ENTRY _ZTI7S3764C2[];
extern  VTBL_ENTRY _ZTV7S3764C2[];
Class_Descriptor cd_S3764C2 = {  "S3764C2", // class name
  bases_S3764C2, 1,
  &(vtc_S3764C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3764C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3764C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3764C4  {
  virtual  ~S3764C4(); // _ZN7S3764C4D1Ev
  virtual void  v21(); // _ZN7S3764C43v21Ev
  virtual void  v22(); // _ZN7S3764C43v22Ev
  virtual void  v23(); // _ZN7S3764C43v23Ev
  virtual void  v24(); // _ZN7S3764C43v24Ev
  S3764C4(); // tgen
};
//SIG(-1 S3764C4) C1{ vd v1 v2 v3 v4}


 S3764C4 ::~S3764C4(){ note_dtor("S3764C4", this);}
void  S3764C4 ::v21(){vfunc_called(this, "_ZN7S3764C43v21Ev");}
void  S3764C4 ::v22(){vfunc_called(this, "_ZN7S3764C43v22Ev");}
void  S3764C4 ::v23(){vfunc_called(this, "_ZN7S3764C43v23Ev");}
void  S3764C4 ::v24(){vfunc_called(this, "_ZN7S3764C43v24Ev");}
S3764C4 ::S3764C4(){ note_ctor("S3764C4", this);} // tgen

static void Test_S3764C4()
{
  extern Class_Descriptor cd_S3764C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3764C4, buf);
    S3764C4 *dp, &lv = *(dp=new (buf) S3764C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3764C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3764C4)");
    test_class_info(&lv, &cd_S3764C4);
    dp->~S3764C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3764C4(Test_S3764C4, "S3764C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3764C4C1Ev();
extern void _ZN7S3764C4D1Ev();
Name_Map name_map_S3764C4[] = {
  NSPAIR(_ZN7S3764C4C1Ev),
  NSPAIR(_ZN7S3764C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3764C4[];
extern void _ZN7S3764C4D1Ev();
extern void _ZN7S3764C4D0Ev();
extern void _ZN7S3764C43v21Ev();
extern void _ZN7S3764C43v22Ev();
extern void _ZN7S3764C43v23Ev();
extern void _ZN7S3764C43v24Ev();
static  VTBL_ENTRY vtc_S3764C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3764C4[0]),
  (VTBL_ENTRY)&_ZN7S3764C4D1Ev,
  (VTBL_ENTRY)&_ZN7S3764C4D0Ev,
  (VTBL_ENTRY)&_ZN7S3764C43v21Ev,
  (VTBL_ENTRY)&_ZN7S3764C43v22Ev,
  (VTBL_ENTRY)&_ZN7S3764C43v23Ev,
  (VTBL_ENTRY)&_ZN7S3764C43v24Ev,
};
extern VTBL_ENTRY _ZTI7S3764C4[];
extern  VTBL_ENTRY _ZTV7S3764C4[];
Class_Descriptor cd_S3764C4 = {  "S3764C4", // class name
  0,0,//no base classes
  &(vtc_S3764C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3764C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3764C4),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3764C1  : S3764C2 , S3764C4 {
  ::S3765C5_nt s3764c1f0;
  char s3764c1f1;
  int s3764c1f2;
  virtual  ~S3764C1(); // _ZN7S3764C1D1Ev
  virtual void  v1(); // _ZN7S3764C12v1Ev
  virtual void  v2(); // _ZN7S3764C12v2Ev
  virtual void  v3(); // _ZN7S3764C12v3Ev
  virtual void  v4(); // _ZN7S3764C12v4Ev
  virtual void  v5(); // _ZN7S3764C12v5Ev
  virtual void  v6(); // _ZN7S3764C12v6Ev
  virtual void  v7(); // _ZN7S3764C12v7Ev
  virtual void  v8(); // _ZN7S3764C12v8Ev
  S3764C1(); // tgen
};
//SIG(1 S3764C1) C1{ BC2{ BC3{ vd m Fi} v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20} BC4{ vd v21 v22 v23 v24} vd v1 v2 v3 v4 v5 v6 v7 v8 FC5{ m Fp[2]} Fc Fi}


 S3764C1 ::~S3764C1(){ note_dtor("S3764C1", this);}
void  S3764C1 ::v1(){vfunc_called(this, "_ZN7S3764C12v1Ev");}
void  S3764C1 ::v2(){vfunc_called(this, "_ZN7S3764C12v2Ev");}
void  S3764C1 ::v3(){vfunc_called(this, "_ZN7S3764C12v3Ev");}
void  S3764C1 ::v4(){vfunc_called(this, "_ZN7S3764C12v4Ev");}
void  S3764C1 ::v5(){vfunc_called(this, "_ZN7S3764C12v5Ev");}
void  S3764C1 ::v6(){vfunc_called(this, "_ZN7S3764C12v6Ev");}
void  S3764C1 ::v7(){vfunc_called(this, "_ZN7S3764C12v7Ev");}
void  S3764C1 ::v8(){vfunc_called(this, "_ZN7S3764C12v8Ev");}
S3764C1 ::S3764C1(){ note_ctor("S3764C1", this);} // tgen

static void Test_S3764C1()
{
  extern Class_Descriptor cd_S3764C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S3764C1, buf);
    S3764C1 *dp, &lv = *(dp=new (buf) S3764C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S3764C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3764C1)");
    check_base_class_offset(lv, (S1679C4_nt*)(S3764C2*), 0, "S3764C1");
    check_base_class_offset(lv, (S3764C2*), 0, "S3764C1");
    check_base_class_offset(lv, (S3764C4*), ABISELECT(16,8), "S3764C1");
    check_field_offset(lv, s3764c1f0, ABISELECT(24,12), "S3764C1.s3764c1f0");
    check_field_offset(lv, s3764c1f1, ABISELECT(40,20), "S3764C1.s3764c1f1");
    check_field_offset(lv, s3764c1f2, ABISELECT(44,24), "S3764C1.s3764c1f2");
    test_class_info(&lv, &cd_S3764C1);
    dp->~S3764C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3764C1(Test_S3764C1, "S3764C1", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN7S3764C1C1Ev();
extern void _ZN7S3764C1D1Ev();
Name_Map name_map_S3764C1[] = {
  NSPAIR(_ZN7S3764C1C1Ev),
  NSPAIR(_ZN7S3764C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
extern Class_Descriptor cd_S3764C2;
extern VTBL_ENTRY _ZTI7S3764C2[];
extern  VTBL_ENTRY _ZTV7S3764C2[];
extern Class_Descriptor cd_S3764C4;
extern VTBL_ENTRY _ZTI7S3764C4[];
extern  VTBL_ENTRY _ZTV7S3764C4[];
static Base_Class bases_S3764C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3764C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3764C4,    ABISELECT(16,8), //bcp->offset
    24, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3764C1[];
extern void _ZN7S3764C1D1Ev();
extern void _ZN7S3764C1D0Ev();
extern void _ZN7S3764C22v9Ev();
extern void _ZN7S3764C23v10Ev();
extern void _ZN7S3764C23v11Ev();
extern void _ZN7S3764C23v12Ev();
extern void _ZN7S3764C23v13Ev();
extern void _ZN7S3764C23v14Ev();
extern void _ZN7S3764C23v15Ev();
extern void _ZN7S3764C23v16Ev();
extern void _ZN7S3764C23v17Ev();
extern void _ZN7S3764C23v18Ev();
extern void _ZN7S3764C23v19Ev();
extern void _ZN7S3764C23v20Ev();
extern void _ZN7S3764C12v1Ev();
extern void _ZN7S3764C12v2Ev();
extern void _ZN7S3764C12v3Ev();
extern void _ZN7S3764C12v4Ev();
extern void _ZN7S3764C12v5Ev();
extern void _ZN7S3764C12v6Ev();
extern void _ZN7S3764C12v7Ev();
extern void _ZN7S3764C12v8Ev();
extern void ABISELECT(_ZThn16_N7S3764C1D1Ev,_ZThn8_N7S3764C1D1Ev)();
extern void ABISELECT(_ZThn16_N7S3764C1D0Ev,_ZThn8_N7S3764C1D0Ev)();
extern void _ZN7S3764C43v21Ev();
extern void _ZN7S3764C43v22Ev();
extern void _ZN7S3764C43v23Ev();
extern void _ZN7S3764C43v24Ev();
static  VTBL_ENTRY vtc_S3764C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3764C1[0]),
  (VTBL_ENTRY)&_ZN7S3764C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3764C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3764C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3764C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3764C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3764C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3764C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3764C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3764C23v15Ev,
  (VTBL_ENTRY)&_ZN7S3764C23v16Ev,
  (VTBL_ENTRY)&_ZN7S3764C23v17Ev,
  (VTBL_ENTRY)&_ZN7S3764C23v18Ev,
  (VTBL_ENTRY)&_ZN7S3764C23v19Ev,
  (VTBL_ENTRY)&_ZN7S3764C23v20Ev,
  (VTBL_ENTRY)&_ZN7S3764C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3764C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3764C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3764C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3764C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3764C12v6Ev,
  (VTBL_ENTRY)&_ZN7S3764C12v7Ev,
  (VTBL_ENTRY)&_ZN7S3764C12v8Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3764C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S3764C1D1Ev,_ZThn8_N7S3764C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S3764C1D0Ev,_ZThn8_N7S3764C1D0Ev),
  (VTBL_ENTRY)&_ZN7S3764C43v21Ev,
  (VTBL_ENTRY)&_ZN7S3764C43v22Ev,
  (VTBL_ENTRY)&_ZN7S3764C43v23Ev,
  (VTBL_ENTRY)&_ZN7S3764C43v24Ev,
};
extern VTBL_ENTRY _ZTI7S3764C1[];
extern  VTBL_ENTRY _ZTV7S3764C1[];
Class_Descriptor cd_S3764C1 = {  "S3764C1", // class name
  bases_S3764C1, 3,
  &(vtc_S3764C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI7S3764C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3764C1),32, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3757C2  : S1679C4_nt {
  virtual void  v8(); // _ZN7S3757C22v8Ev
  virtual void  v9(); // _ZN7S3757C22v9Ev
  virtual void  v10(); // _ZN7S3757C23v10Ev
  virtual void  v11(); // _ZN7S3757C23v11Ev
  virtual void  v12(); // _ZN7S3757C23v12Ev
  virtual void  v13(); // _ZN7S3757C23v13Ev
  virtual void  v14(); // _ZN7S3757C23v14Ev
  virtual void  v15(); // _ZN7S3757C23v15Ev
  virtual void  v16(); // _ZN7S3757C23v16Ev
  virtual void  v17(); // _ZN7S3757C23v17Ev
  virtual void  v18(); // _ZN7S3757C23v18Ev
  virtual void  v19(); // _ZN7S3757C23v19Ev
  ~S3757C2(); // tgen
  S3757C2(); // tgen
};
//SIG(-1 S3757C2) C1{ BC2{ vd m Fi} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


void  S3757C2 ::v8(){vfunc_called(this, "_ZN7S3757C22v8Ev");}
void  S3757C2 ::v9(){vfunc_called(this, "_ZN7S3757C22v9Ev");}
void  S3757C2 ::v10(){vfunc_called(this, "_ZN7S3757C23v10Ev");}
void  S3757C2 ::v11(){vfunc_called(this, "_ZN7S3757C23v11Ev");}
void  S3757C2 ::v12(){vfunc_called(this, "_ZN7S3757C23v12Ev");}
void  S3757C2 ::v13(){vfunc_called(this, "_ZN7S3757C23v13Ev");}
void  S3757C2 ::v14(){vfunc_called(this, "_ZN7S3757C23v14Ev");}
void  S3757C2 ::v15(){vfunc_called(this, "_ZN7S3757C23v15Ev");}
void  S3757C2 ::v16(){vfunc_called(this, "_ZN7S3757C23v16Ev");}
void  S3757C2 ::v17(){vfunc_called(this, "_ZN7S3757C23v17Ev");}
void  S3757C2 ::v18(){vfunc_called(this, "_ZN7S3757C23v18Ev");}
void  S3757C2 ::v19(){vfunc_called(this, "_ZN7S3757C23v19Ev");}
S3757C2 ::~S3757C2(){ note_dtor("S3757C2", this);} // tgen
S3757C2 ::S3757C2(){ note_ctor("S3757C2", this);} // tgen

static void Test_S3757C2()
{
  extern Class_Descriptor cd_S3757C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3757C2, buf);
    S3757C2 *dp, &lv = *(dp=new (buf) S3757C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3757C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3757C2)");
    check_base_class_offset(lv, (S1679C4_nt*), 0, "S3757C2");
    test_class_info(&lv, &cd_S3757C2);
    dp->~S3757C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3757C2(Test_S3757C2, "S3757C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3757C2C1Ev();
extern void _ZN7S3757C2D1Ev();
Name_Map name_map_S3757C2[] = {
  NSPAIR(_ZN7S3757C2C1Ev),
  NSPAIR(_ZN7S3757C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
static Base_Class bases_S3757C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3757C2[];
extern void _ZN7S3757C2D1Ev();
extern void _ZN7S3757C2D0Ev();
extern void _ZN7S3757C22v8Ev();
extern void _ZN7S3757C22v9Ev();
extern void _ZN7S3757C23v10Ev();
extern void _ZN7S3757C23v11Ev();
extern void _ZN7S3757C23v12Ev();
extern void _ZN7S3757C23v13Ev();
extern void _ZN7S3757C23v14Ev();
extern void _ZN7S3757C23v15Ev();
extern void _ZN7S3757C23v16Ev();
extern void _ZN7S3757C23v17Ev();
extern void _ZN7S3757C23v18Ev();
extern void _ZN7S3757C23v19Ev();
static  VTBL_ENTRY vtc_S3757C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3757C2[0]),
  (VTBL_ENTRY)&_ZN7S3757C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3757C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3757C22v8Ev,
  (VTBL_ENTRY)&_ZN7S3757C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3757C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3757C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3757C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3757C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3757C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3757C23v15Ev,
  (VTBL_ENTRY)&_ZN7S3757C23v16Ev,
  (VTBL_ENTRY)&_ZN7S3757C23v17Ev,
  (VTBL_ENTRY)&_ZN7S3757C23v18Ev,
  (VTBL_ENTRY)&_ZN7S3757C23v19Ev,
};
extern VTBL_ENTRY _ZTI7S3757C2[];
extern  VTBL_ENTRY _ZTV7S3757C2[];
Class_Descriptor cd_S3757C2 = {  "S3757C2", // class name
  bases_S3757C2, 1,
  &(vtc_S3757C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3757C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3757C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3757C1  : S3757C2 {
  ::S3765C5_nt s3757c1f0;
  void *s3757c1f1;
  int s3757c1f2;
  char s3757c1f3;
  ::S5266C36 s3757c1f4;
  virtual  ~S3757C1(); // _ZN7S3757C1D1Ev
  virtual void  v1(); // _ZN7S3757C12v1Ev
  virtual void  v2(); // _ZN7S3757C12v2Ev
  virtual void  v3(); // _ZN7S3757C12v3Ev
  virtual void  v4(); // _ZN7S3757C12v4Ev
  virtual void  v5(); // _ZN7S3757C12v5Ev
  virtual void  v6(); // _ZN7S3757C12v6Ev
  virtual void  v7(); // _ZN7S3757C12v7Ev
  S3757C1(); // tgen
};
//SIG(1 S3757C1) C1{ BC2{ BC3{ vd m Fi} v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19} vd v1 v2 v3 v4 v5 v6 v7 FC4{ m Fp[2]} Fp Fi Fc FC5{ m Fp Fi[2] FC6{ m}}}


 S3757C1 ::~S3757C1(){ note_dtor("S3757C1", this);}
void  S3757C1 ::v1(){vfunc_called(this, "_ZN7S3757C12v1Ev");}
void  S3757C1 ::v2(){vfunc_called(this, "_ZN7S3757C12v2Ev");}
void  S3757C1 ::v3(){vfunc_called(this, "_ZN7S3757C12v3Ev");}
void  S3757C1 ::v4(){vfunc_called(this, "_ZN7S3757C12v4Ev");}
void  S3757C1 ::v5(){vfunc_called(this, "_ZN7S3757C12v5Ev");}
void  S3757C1 ::v6(){vfunc_called(this, "_ZN7S3757C12v6Ev");}
void  S3757C1 ::v7(){vfunc_called(this, "_ZN7S3757C12v7Ev");}
S3757C1 ::S3757C1(){ note_ctor("S3757C1", this);} // tgen

static void Test_S3757C1()
{
  extern Class_Descriptor cd_S3757C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,12)];
    init_test(&cd_S3757C1, buf);
    S3757C1 *dp, &lv = *(dp=new (buf) S3757C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S3757C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3757C1)");
    check_base_class_offset(lv, (S1679C4_nt*)(S3757C2*), 0, "S3757C1");
    check_base_class_offset(lv, (S3757C2*), 0, "S3757C1");
    check_field_offset(lv, s3757c1f0, ABISELECT(16,8), "S3757C1.s3757c1f0");
    check_field_offset(lv, s3757c1f1, ABISELECT(32,16), "S3757C1.s3757c1f1");
    check_field_offset(lv, s3757c1f2, ABISELECT(40,20), "S3757C1.s3757c1f2");
    check_field_offset(lv, s3757c1f3, ABISELECT(44,24), "S3757C1.s3757c1f3");
    check_field_offset(lv, s3757c1f4, ABISELECT(48,28), "S3757C1.s3757c1f4");
    test_class_info(&lv, &cd_S3757C1);
    dp->~S3757C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3757C1(Test_S3757C1, "S3757C1", ABISELECT(72,44));

#else // __cplusplus

extern void _ZN7S3757C1C1Ev();
extern void _ZN7S3757C1D1Ev();
Name_Map name_map_S3757C1[] = {
  NSPAIR(_ZN7S3757C1C1Ev),
  NSPAIR(_ZN7S3757C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
extern Class_Descriptor cd_S3757C2;
extern VTBL_ENTRY _ZTI7S3757C2[];
extern  VTBL_ENTRY _ZTV7S3757C2[];
static Base_Class bases_S3757C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3757C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3757C1[];
extern void _ZN7S3757C1D1Ev();
extern void _ZN7S3757C1D0Ev();
extern void _ZN7S3757C22v8Ev();
extern void _ZN7S3757C22v9Ev();
extern void _ZN7S3757C23v10Ev();
extern void _ZN7S3757C23v11Ev();
extern void _ZN7S3757C23v12Ev();
extern void _ZN7S3757C23v13Ev();
extern void _ZN7S3757C23v14Ev();
extern void _ZN7S3757C23v15Ev();
extern void _ZN7S3757C23v16Ev();
extern void _ZN7S3757C23v17Ev();
extern void _ZN7S3757C23v18Ev();
extern void _ZN7S3757C23v19Ev();
extern void _ZN7S3757C12v1Ev();
extern void _ZN7S3757C12v2Ev();
extern void _ZN7S3757C12v3Ev();
extern void _ZN7S3757C12v4Ev();
extern void _ZN7S3757C12v5Ev();
extern void _ZN7S3757C12v6Ev();
extern void _ZN7S3757C12v7Ev();
static  VTBL_ENTRY vtc_S3757C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3757C1[0]),
  (VTBL_ENTRY)&_ZN7S3757C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3757C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3757C22v8Ev,
  (VTBL_ENTRY)&_ZN7S3757C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3757C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3757C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3757C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3757C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3757C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3757C23v15Ev,
  (VTBL_ENTRY)&_ZN7S3757C23v16Ev,
  (VTBL_ENTRY)&_ZN7S3757C23v17Ev,
  (VTBL_ENTRY)&_ZN7S3757C23v18Ev,
  (VTBL_ENTRY)&_ZN7S3757C23v19Ev,
  (VTBL_ENTRY)&_ZN7S3757C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3757C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3757C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3757C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3757C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3757C12v6Ev,
  (VTBL_ENTRY)&_ZN7S3757C12v7Ev,
};
extern VTBL_ENTRY _ZTI7S3757C1[];
extern  VTBL_ENTRY _ZTV7S3757C1[];
Class_Descriptor cd_S3757C1 = {  "S3757C1", // class name
  bases_S3757C1, 2,
  &(vtc_S3757C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,44), // object size
  NSPAIRA(_ZTI7S3757C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3757C1),23, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7487C4  : S7719C4_nt , S5266C26 , virtual S5266C29 {
  ~S7487C4(); // tgen
  S7487C4(); // tgen
};
//SIG(-1 S7487C4) C1{ BC2{ m Fc} BC3{ m} VBC4{ m}}


S7487C4 ::~S7487C4(){ note_dtor("S7487C4", this);} // tgen
S7487C4 ::S7487C4(){ note_ctor("S7487C4", this);} // tgen

static void Test_S7487C4()
{
  extern Class_Descriptor cd_S7487C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7487C4, buf);
    S7487C4 *dp, &lv = *(dp=new (buf) S7487C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7487C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7487C4)");
    check_base_class_offset(lv, (S7719C4_nt*), ABISELECT(8,4), "S7487C4");
    check_base_class_offset(lv, (S5266C26*), 0, "S7487C4");
    check_base_class_offset(lv, (S5266C29*), 0, "S7487C4");
    test_class_info(&lv, &cd_S7487C4);
    dp->~S7487C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7487C4(Test_S7487C4, "S7487C4", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7487C4C1Ev();
extern void _ZN7S7487C4D1Ev();
Name_Map name_map_S7487C4[] = {
  NSPAIR(_ZN7S7487C4C1Ev),
  NSPAIR(_ZN7S7487C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
static Base_Class bases_S7487C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7719C4_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7487C4[];
static  VTBL_ENTRY vtc_S7487C4[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7487C4[0]),
};
extern VTBL_ENTRY _ZTV7S7487C4[];
static  VTT_ENTRY vtt_S7487C4[] = {
  {&(_ZTV7S7487C4[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7487C4[];
extern  VTBL_ENTRY _ZTV7S7487C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7487C4[];
Class_Descriptor cd_S7487C4 = {  "S7487C4", // class name
  bases_S7487C4, 3,
  &(vtc_S7487C4[0]), // expected_vtbl_contents
  &(vtt_S7487C4[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7487C4),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7487C4),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7487C4),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7487C8  : S5266C26 , S7719C4_nt {
};
//SIG(-1 S7487C8) C1{ BC2{ m} BC3{ m Fc}}



static void Test_S7487C8()
{
  extern Class_Descriptor cd_S7487C8;
  void *lvp;
  {
    char buf[1];
    init_test(&cd_S7487C8, buf);
    S7487C8 &lv = *(new (buf) S7487C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1, "sizeof(S7487C8)");
    check2(__alignof__(lv), 1, "__alignof__(S7487C8)");
    check_base_class_offset(lv, (S5266C26*), 0, "S7487C8");
    check_base_class_offset(lv, (S7719C4_nt*), 0, "S7487C8");
    test_class_info(&lv, &cd_S7487C8);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7487C8(Test_S7487C8, "S7487C8", 1);

#else // __cplusplus

extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
static Base_Class bases_S7487C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7719C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7487C8[];
Class_Descriptor cd_S7487C8 = {  "S7487C8", // class name
  bases_S7487C8, 2,
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI7S7487C8),ABISELECT(56,32), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7487C7  : S7487C8 , S5266C26 , S7487C4 {
  __tsi64 s7487c7f0;
  ~S7487C7(); // tgen
  S7487C7(); // tgen
};
//SIG(-1 S7487C7) C1{ BC2{ BC3{ m} BC4{ m Fc}} BC3 BC5{ BC4 BC3 VBC6{ m}} FL}


S7487C7 ::~S7487C7(){ note_dtor("S7487C7", this);} // tgen
S7487C7 ::S7487C7(){ note_ctor("S7487C7", this);} // tgen

static void Test_S7487C7()
{
  extern Class_Descriptor cd_S7487C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S7487C7, buf);
    S7487C7 *dp, &lv = *(dp=new (buf) S7487C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S7487C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7487C7)");
    check_base_class_offset(lv, (S5266C26*)(S7487C8*), ABISELECT(9,5), "S7487C7");
    check_base_class_offset(lv, (S7719C4_nt*)(S7487C8*), ABISELECT(9,5), "S7487C7");
    check_base_class_offset(lv, (S7487C8*), ABISELECT(9,5), "S7487C7");
    /*is_ambiguous_... S7487C7::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*), ABISELECT(10,6), "S7487C7");
    check_base_class_offset(lv, (S7719C4_nt*)(S7487C4*), ABISELECT(8,4), "S7487C7");
    check_base_class_offset(lv, (S5266C26*)(S7487C4*), 0, "S7487C7");
    check_base_class_offset(lv, (S5266C29*)(S7487C4*), 0, "S7487C7");
    check_base_class_offset(lv, (S7487C4*), 0, "S7487C7");
    check_field_offset(lv, s7487c7f0, ABISELECT(16,8), "S7487C7.s7487c7f0");
    test_class_info(&lv, &cd_S7487C7);
    dp->~S7487C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7487C7(Test_S7487C7, "S7487C7", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S7487C7C1Ev();
extern void _ZN7S7487C7D1Ev();
Name_Map name_map_S7487C7[] = {
  NSPAIR(_ZN7S7487C7C1Ev),
  NSPAIR(_ZN7S7487C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S7487C8;
extern VTBL_ENTRY _ZTI7S7487C8[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S7487C4;
extern VTBL_ENTRY _ZTI7S7487C4[];
extern  VTBL_ENTRY _ZTV7S7487C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7487C4[];
static Base_Class bases_S7487C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C26,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7487C8,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C26,    ABISELECT(10,6), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7719C4_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7487C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7487C7[];
static  VTBL_ENTRY vtc_S7487C7[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7487C7[0]),
};
extern VTBL_ENTRY _ZTV7S7487C7[];
static  VTBL_ENTRY _tg__ZTV7S7487C4__7S7487C7[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7487C4[0]),
};
static  VTT_ENTRY vtt_S7487C7[] = {
  {&(_ZTV7S7487C7[3]),  3,3},
  {&(_tg__ZTV7S7487C4__7S7487C7[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7487C7[];
extern  VTBL_ENTRY _ZTV7S7487C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7487C7[];
Class_Descriptor cd_S7487C7 = {  "S7487C7", // class name
  bases_S7487C7, 8,
  &(vtc_S7487C7[0]), // expected_vtbl_contents
  &(vtt_S7487C7[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S7487C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7487C7),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7487C7),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7487C10  : S5266C26 , S5266C29 , virtual S7719C4_nt {
  ::S5266C29 s7487c10f0;
  ~S7487C10(); // tgen
  S7487C10(); // tgen
};
//SIG(-1 S7487C10) C1{ BC2{ m} BC3{ m} VBC4{ m Fc} FC3}


S7487C10 ::~S7487C10(){ note_dtor("S7487C10", this);} // tgen
S7487C10 ::S7487C10(){ note_ctor("S7487C10", this);} // tgen

static void Test_S7487C10()
{
  extern Class_Descriptor cd_S7487C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7487C10, buf);
    S7487C10 *dp, &lv = *(dp=new (buf) S7487C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7487C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7487C10)");
    check_base_class_offset(lv, (S5266C26*), 0, "S7487C10");
    check_base_class_offset(lv, (S5266C29*), 0, "S7487C10");
    check_base_class_offset(lv, (S7719C4_nt*), ABISELECT(9,5), "S7487C10");
    check_field_offset(lv, s7487c10f0, ABISELECT(8,4), "S7487C10.s7487c10f0");
    test_class_info(&lv, &cd_S7487C10);
    dp->~S7487C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7487C10(Test_S7487C10, "S7487C10", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S7487C10C1Ev();
extern void _ZN8S7487C10D1Ev();
Name_Map name_map_S7487C10[] = {
  NSPAIR(_ZN8S7487C10C1Ev),
  NSPAIR(_ZN8S7487C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
static Base_Class bases_S7487C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7719C4_nt,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7487C10[];
static  VTBL_ENTRY vtc_S7487C10[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S7487C10[0]),
};
extern VTBL_ENTRY _ZTV8S7487C10[];
static  VTT_ENTRY vtt_S7487C10[] = {
  {&(_ZTV8S7487C10[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7487C10[];
extern  VTBL_ENTRY _ZTV8S7487C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7487C10[];
Class_Descriptor cd_S7487C10 = {  "S7487C10", // class name
  bases_S7487C10, 3,
  &(vtc_S7487C10[0]), // expected_vtbl_contents
  &(vtt_S7487C10[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S7487C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7487C10),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7487C10),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7487C9  : virtual S7719C4_nt , S5266C29 , S7487C8 , virtual S7487C10 {
  ~S7487C9(); // tgen
  S7487C9(); // tgen
};
//SIG(-1 S7487C9) C1{ VBC2{ m Fc} BC3{ m} BC4{ BC5{ m} BC2} VBC6{ BC5 BC3 VBC2 FC3}}


S7487C9 ::~S7487C9(){ note_dtor("S7487C9", this);} // tgen
S7487C9 ::S7487C9(){ note_ctor("S7487C9", this);} // tgen

static void Test_S7487C9()
{
  extern Class_Descriptor cd_S7487C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S7487C9, buf);
    S7487C9 *dp, &lv = *(dp=new (buf) S7487C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7487C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7487C9)");
    /*is_ambiguous_... S7487C9::S7719C4_nt */ AMB_check_base_class_offset(lv, (S7719C4_nt*), ABISELECT(9,5), "S7487C9");
    check_base_class_offset(lv, (S7719C4_nt*)(S7487C10*), ABISELECT(9,5), "S7487C9");
    /*is_ambiguous_... S7487C9::S5266C29 */ AMB_check_base_class_offset(lv, (S5266C29*), 0, "S7487C9");
    check_base_class_offset(lv, (S5266C26*)(S7487C8*), ABISELECT(8,4), "S7487C9");
    check_base_class_offset(lv, (S7719C4_nt*)(S7487C8*), ABISELECT(8,4), "S7487C9");
    check_base_class_offset(lv, (S7487C8*), ABISELECT(8,4), "S7487C9");
    check_base_class_offset(lv, (S5266C26*)(S7487C10*), ABISELECT(16,8), "S7487C9");
    check_base_class_offset(lv, (S5266C29*)(S7487C10*), ABISELECT(16,8), "S7487C9");
    check_base_class_offset(lv, (S7487C10*), ABISELECT(16,8), "S7487C9");
    test_class_info(&lv, &cd_S7487C9);
    dp->~S7487C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7487C9(Test_S7487C9, "S7487C9", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S7487C9C1Ev();
extern void _ZN7S7487C9D1Ev();
Name_Map name_map_S7487C9[] = {
  NSPAIR(_ZN7S7487C9C1Ev),
  NSPAIR(_ZN7S7487C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S7487C8;
extern VTBL_ENTRY _ZTI7S7487C8[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S7487C10;
extern VTBL_ENTRY _ZTI8S7487C10[];
extern  VTBL_ENTRY _ZTV8S7487C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7487C10[];
static Base_Class bases_S7487C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7719C4_nt,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C26,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7487C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C26,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S5266C29,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7487C10,    ABISELECT(16,8), //bcp->offset
    4, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7487C9[];
static  VTBL_ENTRY vtc_S7487C9[] = {
  ABISELECT(16,8),
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7487C9[0]),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7487C9[0]),
};
extern VTBL_ENTRY _ZTV7S7487C9[];
static  VTBL_ENTRY _tg__ZTV8S7487C10__7S7487C9[] = {
  ABISELECT(-7,-3),
  0,
  (VTBL_ENTRY)&(_ZTI8S7487C10[0]),
};
static  VTT_ENTRY vtt_S7487C9[] = {
  {&(_ZTV7S7487C9[4]),  4,7},
  {&(_ZTV7S7487C9[7]),  7,7},
  {&(_tg__ZTV8S7487C10__7S7487C9[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7487C9[];
extern  VTBL_ENTRY _ZTV7S7487C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7487C9[];
Class_Descriptor cd_S7487C9 = {  "S7487C9", // class name
  bases_S7487C9, 8,
  &(vtc_S7487C9[0]), // expected_vtbl_contents
  &(vtt_S7487C9[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S7487C9),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7487C9),7, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7487C9),3, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7487C2  : virtual S5266C29 , virtual S7487C4 , virtual S7487C7 , S7487C9 , virtual S5266C26 {
  __tsi64 s7487c2f0[2];
  ~S7487C2(); // tgen
  S7487C2(); // tgen
};
//SIG(-1 S7487C2) C1{ VBC2{ m} VBC3{ BC4{ m Fc} BC5{ m} VBC2} VBC6{ BC7{ BC5 BC4} BC5 BC3 FL} BC8{ VBC4 BC2 BC7 VBC9{ BC5 BC2 VBC4 FC2}} VBC5 FL[2]}


S7487C2 ::~S7487C2(){ note_dtor("S7487C2", this);} // tgen
S7487C2 ::S7487C2(){ note_ctor("S7487C2", this);} // tgen

static void Test_S7487C2()
{
  extern Class_Descriptor cd_S7487C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S7487C2, buf);
    S7487C2 *dp, &lv = *(dp=new (buf) S7487C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S7487C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7487C2)");
    /*is_ambiguous_... S7487C2::S5266C29 */ AMB_check_base_class_offset(lv, (S5266C29*), ABISELECT(32,24), "S7487C2");
    /*is_ambiguous_... S7487C2::S7487C4 */ AMB_check_base_class_offset(lv, (S5266C29*)(S7487C4*), ABISELECT(32,24), "S7487C2");
    check_base_class_offset(lv, (S5266C29*)(S7487C4*)(S7487C7*), ABISELECT(32,24), "S7487C2");
    /*is_ambiguous_... S7487C2::S7487C4 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S7487C4*), ABISELECT(40,28), "S7487C2");
    /*is_ambiguous_... S7487C2::S7487C4 */ AMB_check_base_class_offset(lv, (S5266C26*)(S7487C4*), ABISELECT(32,24), "S7487C2");
    /*is_ambiguous_... S7487C2::S7487C4 */ AMB_check_base_class_offset(lv, (S7487C4*), ABISELECT(32,24), "S7487C2");
    check_base_class_offset(lv, (S5266C26*)(S7487C8*)(S7487C7*), ABISELECT(57,37), "S7487C2");
    check_base_class_offset(lv, (S7719C4_nt*)(S7487C8*)(S7487C7*), ABISELECT(57,37), "S7487C2");
    check_base_class_offset(lv, (S7487C8*)(S7487C7*), ABISELECT(57,37), "S7487C2");
    /*is_ambiguous_... S7487C7::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*)(S7487C7*), ABISELECT(58,38), "S7487C2");
    check_base_class_offset(lv, (S7719C4_nt*)(S7487C4*)(S7487C7*), ABISELECT(56,36), "S7487C2");
    check_base_class_offset(lv, (S5266C26*)(S7487C4*)(S7487C7*), ABISELECT(48,32), "S7487C2");
    check_base_class_offset(lv, (S7487C4*)(S7487C7*), ABISELECT(48,32), "S7487C2");
    check_base_class_offset(lv, (S7487C7*), ABISELECT(48,32), "S7487C2");
    /*is_ambiguous_... S7487C9::S7719C4_nt */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S7487C9*), ABISELECT(72,48), "S7487C2");
    check_base_class_offset(lv, (S7719C4_nt*)(S7487C10*), ABISELECT(72,48), "S7487C2");
    /*is_ambiguous_... S7487C9::S5266C29 */ AMB_check_base_class_offset(lv, (S5266C29*)(S7487C9*), 0, "S7487C2");
    check_base_class_offset(lv, (S5266C26*)(S7487C8*)(S7487C9*), ABISELECT(8,4), "S7487C2");
    check_base_class_offset(lv, (S7719C4_nt*)(S7487C8*)(S7487C9*), ABISELECT(8,4), "S7487C2");
    check_base_class_offset(lv, (S7487C8*)(S7487C9*), ABISELECT(8,4), "S7487C2");
    check_base_class_offset(lv, (S5266C26*)(S7487C10*), ABISELECT(80,52), "S7487C2");
    check_base_class_offset(lv, (S5266C29*)(S7487C10*), ABISELECT(80,52), "S7487C2");
    check_base_class_offset(lv, (S7487C10*)(S7487C9*), ABISELECT(80,52), "S7487C2");
    check_base_class_offset(lv, (S7487C9*), 0, "S7487C2");
    /*is_ambiguous_... S7487C2::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*), 0, "S7487C2");
    check_field_offset(lv, s7487c2f0, ABISELECT(16,8), "S7487C2.s7487c2f0");
    test_class_info(&lv, &cd_S7487C2);
    dp->~S7487C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7487C2(Test_S7487C2, "S7487C2", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S7487C2C1Ev();
extern void _ZN7S7487C2D1Ev();
Name_Map name_map_S7487C2[] = {
  NSPAIR(_ZN7S7487C2C1Ev),
  NSPAIR(_ZN7S7487C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7487C4;
extern VTBL_ENTRY _ZTI7S7487C4[];
extern  VTBL_ENTRY _ZTV7S7487C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7487C4[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S7487C8;
extern VTBL_ENTRY _ZTI7S7487C8[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7487C4;
extern VTBL_ENTRY _ZTI7S7487C4[];
extern  VTBL_ENTRY _ZTV7S7487C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7487C4[];
extern Class_Descriptor cd_S7487C7;
extern VTBL_ENTRY _ZTI7S7487C7[];
extern  VTBL_ENTRY _ZTV7S7487C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7487C7[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S7487C8;
extern VTBL_ENTRY _ZTI7S7487C8[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S7487C10;
extern VTBL_ENTRY _ZTI8S7487C10[];
extern  VTBL_ENTRY _ZTV8S7487C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7487C10[];
extern Class_Descriptor cd_S7487C9;
extern VTBL_ENTRY _ZTI7S7487C9[];
extern  VTBL_ENTRY _ZTV7S7487C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7487C9[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
static Base_Class bases_S7487C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C29,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7719C4_nt,    ABISELECT(40,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7487C4,    ABISELECT(32,24), //bcp->offset
    8, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5266C26,    ABISELECT(57,37), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(57,37), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7487C8,    ABISELECT(57,37), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(58,38), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7487C4,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7487C7,    ABISELECT(48,32), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7719C4_nt,    ABISELECT(72,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7487C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S5266C29,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7487C10,    ABISELECT(80,52), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7487C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7487C2[];
static  VTBL_ENTRY vtc_S7487C2[] = {
  0,
  ABISELECT(48,32),
  ABISELECT(32,24),
  ABISELECT(32,24),
  ABISELECT(80,52),
  ABISELECT(72,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7487C2[0]),
  0,
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI7S7487C2[0]),
  ABISELECT(-16,-8),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S7487C2[0]),
  ABISELECT(-8,-4),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI7S7487C2[0]),
};
extern VTBL_ENTRY _ZTV7S7487C2[];
static  VTBL_ENTRY _tg__ZTV7S7487C9__7S7487C2[] = {
  ABISELECT(80,52),
  ABISELECT(72,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7487C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7487C10__7S7487C9__7S7487C2[] = {
  ABISELECT(-8,-4),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI7S7487C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7487C4__7S7487C2[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7487C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7487C7__7S7487C2[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7487C7[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7487C47S7487C7__A1__7S7487C2[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7487C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7487C10__7S7487C2[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7487C10[0]),
};
static  VTT_ENTRY vtt_S7487C2[] = {
  {&(_ZTV7S7487C2[8]),  8,17},
  {&(_tg__ZTV7S7487C9__7S7487C2[4]),  4,4},
  {&(_tg__ZTV8S7487C10__7S7487C9__7S7487C2[3]),  3,3},
  {&(_ZTV7S7487C2[11]),  11,17},
  {&(_ZTV7S7487C2[14]),  14,17},
  {&(_ZTV7S7487C2[17]),  17,17},
  {&(_tg__ZTV7S7487C4__7S7487C2[3]),  3,3},
  {&(_tg__ZTV7S7487C7__7S7487C2[3]),  3,3},
  {&(_tg__ZTV7S7487C47S7487C7__A1__7S7487C2[3]),  3,3},
  {&(_tg__ZTV8S7487C10__7S7487C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7487C2[];
extern  VTBL_ENTRY _ZTV7S7487C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7487C2[];
Class_Descriptor cd_S7487C2 = {  "S7487C2", // class name
  bases_S7487C2, 22,
  &(vtc_S7487C2[0]), // expected_vtbl_contents
  &(vtt_S7487C2[0]), // expected_vtt_contents
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S7487C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7487C2),17, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7487C2),10, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7487C1  : S7487C2 , S7719C4_nt {
  void *s7487c1f0;
  virtual  ~S7487C1(); // _ZN7S7487C1D2Ev
  S7487C1(); // tgen
};
//SIG(1 S7487C1) C1{ BC2{ VBC3{ m} VBC4{ BC5{ m Fc} BC6{ m} VBC3} VBC7{ BC8{ BC6 BC5} BC6 BC4 FL} BC9{ VBC5 BC3 BC8 VBC10{ BC6 BC3 VBC5 FC3}} VBC6 FL[2]} BC5 vd Fp}


 S7487C1 ::~S7487C1(){ note_dtor("S7487C1", this);}
S7487C1 ::S7487C1(){ note_ctor("S7487C1", this);} // tgen

static void Test_S7487C1()
{
  extern Class_Descriptor cd_S7487C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,18)];
    init_test(&cd_S7487C1, buf);
    S7487C1 *dp, &lv = *(dp=new (buf) S7487C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,68), "sizeof(S7487C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7487C1)");
    /*is_ambiguous_... S7487C2::S5266C29 */ AMB_check_base_class_offset(lv, (S5266C29*)(S7487C2*), ABISELECT(48,32), "S7487C1");
    /*is_ambiguous_... S7487C1::S7487C4 */ AMB_check_base_class_offset(lv, (S5266C29*)(S7487C4*), ABISELECT(48,32), "S7487C1");
    check_base_class_offset(lv, (S5266C29*)(S7487C4*)(S7487C7*), ABISELECT(48,32), "S7487C1");
    /*is_ambiguous_... S7487C1::S7487C4 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S7487C4*), ABISELECT(56,36), "S7487C1");
    /*is_ambiguous_... S7487C1::S7487C4 */ AMB_check_base_class_offset(lv, (S5266C26*)(S7487C4*), ABISELECT(48,32), "S7487C1");
    /*is_ambiguous_... S7487C2::S7487C4 */ AMB_check_base_class_offset(lv, (S7487C4*)(S7487C2*), ABISELECT(48,32), "S7487C1");
    check_base_class_offset(lv, (S5266C26*)(S7487C8*)(S7487C7*), ABISELECT(73,45), "S7487C1");
    check_base_class_offset(lv, (S7719C4_nt*)(S7487C8*)(S7487C7*), ABISELECT(73,45), "S7487C1");
    check_base_class_offset(lv, (S7487C8*)(S7487C7*), ABISELECT(73,45), "S7487C1");
    /*is_ambiguous_... S7487C7::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*)(S7487C7*), ABISELECT(74,46), "S7487C1");
    check_base_class_offset(lv, (S7719C4_nt*)(S7487C4*)(S7487C7*), ABISELECT(72,44), "S7487C1");
    check_base_class_offset(lv, (S5266C26*)(S7487C4*)(S7487C7*), ABISELECT(64,40), "S7487C1");
    check_base_class_offset(lv, (S7487C4*)(S7487C7*), ABISELECT(64,40), "S7487C1");
    check_base_class_offset(lv, (S7487C7*)(S7487C2*), ABISELECT(64,40), "S7487C1");
    /*is_ambiguous_... S7487C9::S7719C4_nt */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S7487C9*)(S7487C2*), ABISELECT(88,56), "S7487C1");
    check_base_class_offset(lv, (S7719C4_nt*)(S7487C10*), ABISELECT(88,56), "S7487C1");
    /*is_ambiguous_... S7487C9::S5266C29 */ AMB_check_base_class_offset(lv, (S5266C29*)(S7487C9*)(S7487C2*), 0, "S7487C1");
    check_base_class_offset(lv, (S5266C26*)(S7487C8*)(S7487C9*)(S7487C2*), ABISELECT(8,4), "S7487C1");
    check_base_class_offset(lv, (S7719C4_nt*)(S7487C8*)(S7487C9*)(S7487C2*), ABISELECT(8,4), "S7487C1");
    check_base_class_offset(lv, (S7487C8*)(S7487C9*)(S7487C2*), ABISELECT(8,4), "S7487C1");
    check_base_class_offset(lv, (S5266C26*)(S7487C10*), ABISELECT(96,60), "S7487C1");
    check_base_class_offset(lv, (S5266C29*)(S7487C10*), ABISELECT(96,60), "S7487C1");
    check_base_class_offset(lv, (S7487C10*)(S7487C9*)(S7487C2*), ABISELECT(96,60), "S7487C1");
    check_base_class_offset(lv, (S7487C9*)(S7487C2*), 0, "S7487C1");
    /*is_ambiguous_... S7487C2::S5266C26 */ AMB_check_base_class_offset(lv, (S5266C26*)(S7487C2*), 0, "S7487C1");
    check_base_class_offset(lv, (S7487C2*), 0, "S7487C1");
    /*is_ambiguous_... S7487C1::S7719C4_nt */ AMB_check_base_class_offset(lv, (S7719C4_nt*), ABISELECT(32,24), "S7487C1");
    check_field_offset(lv, s7487c1f0, ABISELECT(40,28), "S7487C1.s7487c1f0");
    test_class_info(&lv, &cd_S7487C1);
    dp->~S7487C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7487C1(Test_S7487C1, "S7487C1", ABISELECT(112,68));

#else // __cplusplus

extern void _ZN7S7487C1C1Ev();
extern void _ZN7S7487C1D2Ev();
Name_Map name_map_S7487C1[] = {
  NSPAIR(_ZN7S7487C1C1Ev),
  NSPAIR(_ZN7S7487C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7487C4;
extern VTBL_ENTRY _ZTI7S7487C4[];
extern  VTBL_ENTRY _ZTV7S7487C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7487C4[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S7487C8;
extern VTBL_ENTRY _ZTI7S7487C8[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7487C4;
extern VTBL_ENTRY _ZTI7S7487C4[];
extern  VTBL_ENTRY _ZTV7S7487C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7487C4[];
extern Class_Descriptor cd_S7487C7;
extern VTBL_ENTRY _ZTI7S7487C7[];
extern  VTBL_ENTRY _ZTV7S7487C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7487C7[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S7487C8;
extern VTBL_ENTRY _ZTI7S7487C8[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S7487C10;
extern VTBL_ENTRY _ZTI8S7487C10[];
extern  VTBL_ENTRY _ZTV8S7487C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7487C10[];
extern Class_Descriptor cd_S7487C9;
extern VTBL_ENTRY _ZTI7S7487C9[];
extern  VTBL_ENTRY _ZTV7S7487C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7487C9[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S7487C2;
extern VTBL_ENTRY _ZTI7S7487C2[];
extern  VTBL_ENTRY _ZTV7S7487C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7487C2[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
static Base_Class bases_S7487C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C29,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7719C4_nt,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7487C4,    ABISELECT(48,32), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S5266C26,    ABISELECT(73,45), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(73,45), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7487C8,    ABISELECT(73,45), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(74,46), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7487C4,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7487C7,    ABISELECT(64,40), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7719C4_nt,    ABISELECT(88,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7487C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S5266C26,    ABISELECT(96,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S5266C29,    ABISELECT(96,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7487C10,    ABISELECT(96,60), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S7487C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7487C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7719C4_nt,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7487C1[];
extern void _ZN7S7487C1D1Ev();
extern void _ZN7S7487C1D0Ev();
static  VTBL_ENTRY vtc_S7487C1[] = {
  0,
  ABISELECT(64,40),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(96,60),
  ABISELECT(88,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7487C1[0]),
  (VTBL_ENTRY)&_ZN7S7487C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7487C1D0Ev,
  0,
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S7487C1[0]),
  ABISELECT(-16,-8),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S7487C1[0]),
  ABISELECT(-8,-4),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S7487C1[0]),
};
extern VTBL_ENTRY _ZTV7S7487C1[];
static  VTBL_ENTRY _tg__ZTV7S7487C2__7S7487C1[] = {
  0,
  ABISELECT(64,40),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(96,60),
  ABISELECT(88,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7487C2[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7487C97S7487C2__7S7487C1[] = {
  ABISELECT(96,60),
  ABISELECT(88,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7487C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7487C10__7S7487C97S7487C2__7S7487C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S7487C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7487C4__7S7487C2__7S7487C1[] = {
  0,
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S7487C2[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7487C7__7S7487C2__7S7487C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S7487C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7487C10__7S7487C2__7S7487C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S7487C2[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7487C4__7S7487C1[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7487C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7487C7__7S7487C1[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7487C7[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7487C47S7487C7__A1__7S7487C1[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7487C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7487C10__7S7487C1[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7487C10[0]),
};
static  VTT_ENTRY vtt_S7487C1[] = {
  {&(_ZTV7S7487C1[8]),  8,19},
  {&(_tg__ZTV7S7487C2__7S7487C1[8]),  8,8},
  {&(_tg__ZTV7S7487C97S7487C2__7S7487C1[4]),  4,4},
  {&(_tg__ZTV8S7487C10__7S7487C97S7487C2__7S7487C1[3]),  3,3},
  {&(_tg__ZTV7S7487C4__7S7487C2__7S7487C1[3]),  3,3},
  {&(_tg__ZTV7S7487C7__7S7487C2__7S7487C1[3]),  3,3},
  {&(_tg__ZTV8S7487C10__7S7487C2__7S7487C1[3]),  3,3},
  {&(_ZTV7S7487C1[13]),  13,19},
  {&(_ZTV7S7487C1[16]),  16,19},
  {&(_ZTV7S7487C1[19]),  19,19},
  {&(_tg__ZTV7S7487C4__7S7487C1[3]),  3,3},
  {&(_tg__ZTV7S7487C7__7S7487C1[3]),  3,3},
  {&(_tg__ZTV7S7487C47S7487C7__A1__7S7487C1[3]),  3,3},
  {&(_tg__ZTV8S7487C10__7S7487C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7487C1[];
extern  VTBL_ENTRY _ZTV7S7487C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7487C1[];
Class_Descriptor cd_S7487C1 = {  "S7487C1", // class name
  bases_S7487C1, 24,
  &(vtc_S7487C1[0]), // expected_vtbl_contents
  &(vtt_S7487C1[0]), // expected_vtt_contents
  ABISELECT(112,68), // object size
  NSPAIRA(_ZTI7S7487C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7487C1),19, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7487C1),14, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3745C2  : S1679C4_nt {
  virtual void  v8(); // _ZN7S3745C22v8Ev
  virtual void  v9(); // _ZN7S3745C22v9Ev
  virtual void  v10(); // _ZN7S3745C23v10Ev
  virtual void  v11(); // _ZN7S3745C23v11Ev
  virtual void  v12(); // _ZN7S3745C23v12Ev
  virtual void  v13(); // _ZN7S3745C23v13Ev
  virtual void  v14(); // _ZN7S3745C23v14Ev
  virtual void  v15(); // _ZN7S3745C23v15Ev
  virtual void  v16(); // _ZN7S3745C23v16Ev
  virtual void  v17(); // _ZN7S3745C23v17Ev
  virtual void  v18(); // _ZN7S3745C23v18Ev
  virtual void  v19(); // _ZN7S3745C23v19Ev
  ~S3745C2(); // tgen
  S3745C2(); // tgen
};
//SIG(-1 S3745C2) C1{ BC2{ vd m Fi} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


void  S3745C2 ::v8(){vfunc_called(this, "_ZN7S3745C22v8Ev");}
void  S3745C2 ::v9(){vfunc_called(this, "_ZN7S3745C22v9Ev");}
void  S3745C2 ::v10(){vfunc_called(this, "_ZN7S3745C23v10Ev");}
void  S3745C2 ::v11(){vfunc_called(this, "_ZN7S3745C23v11Ev");}
void  S3745C2 ::v12(){vfunc_called(this, "_ZN7S3745C23v12Ev");}
void  S3745C2 ::v13(){vfunc_called(this, "_ZN7S3745C23v13Ev");}
void  S3745C2 ::v14(){vfunc_called(this, "_ZN7S3745C23v14Ev");}
void  S3745C2 ::v15(){vfunc_called(this, "_ZN7S3745C23v15Ev");}
void  S3745C2 ::v16(){vfunc_called(this, "_ZN7S3745C23v16Ev");}
void  S3745C2 ::v17(){vfunc_called(this, "_ZN7S3745C23v17Ev");}
void  S3745C2 ::v18(){vfunc_called(this, "_ZN7S3745C23v18Ev");}
void  S3745C2 ::v19(){vfunc_called(this, "_ZN7S3745C23v19Ev");}
S3745C2 ::~S3745C2(){ note_dtor("S3745C2", this);} // tgen
S3745C2 ::S3745C2(){ note_ctor("S3745C2", this);} // tgen

static void Test_S3745C2()
{
  extern Class_Descriptor cd_S3745C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3745C2, buf);
    S3745C2 *dp, &lv = *(dp=new (buf) S3745C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3745C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3745C2)");
    check_base_class_offset(lv, (S1679C4_nt*), 0, "S3745C2");
    test_class_info(&lv, &cd_S3745C2);
    dp->~S3745C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3745C2(Test_S3745C2, "S3745C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3745C2C1Ev();
extern void _ZN7S3745C2D1Ev();
Name_Map name_map_S3745C2[] = {
  NSPAIR(_ZN7S3745C2C1Ev),
  NSPAIR(_ZN7S3745C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
static Base_Class bases_S3745C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3745C2[];
extern void _ZN7S3745C2D1Ev();
extern void _ZN7S3745C2D0Ev();
extern void _ZN7S3745C22v8Ev();
extern void _ZN7S3745C22v9Ev();
extern void _ZN7S3745C23v10Ev();
extern void _ZN7S3745C23v11Ev();
extern void _ZN7S3745C23v12Ev();
extern void _ZN7S3745C23v13Ev();
extern void _ZN7S3745C23v14Ev();
extern void _ZN7S3745C23v15Ev();
extern void _ZN7S3745C23v16Ev();
extern void _ZN7S3745C23v17Ev();
extern void _ZN7S3745C23v18Ev();
extern void _ZN7S3745C23v19Ev();
static  VTBL_ENTRY vtc_S3745C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3745C2[0]),
  (VTBL_ENTRY)&_ZN7S3745C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3745C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3745C22v8Ev,
  (VTBL_ENTRY)&_ZN7S3745C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3745C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3745C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3745C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3745C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3745C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3745C23v15Ev,
  (VTBL_ENTRY)&_ZN7S3745C23v16Ev,
  (VTBL_ENTRY)&_ZN7S3745C23v17Ev,
  (VTBL_ENTRY)&_ZN7S3745C23v18Ev,
  (VTBL_ENTRY)&_ZN7S3745C23v19Ev,
};
extern VTBL_ENTRY _ZTI7S3745C2[];
extern  VTBL_ENTRY _ZTV7S3745C2[];
Class_Descriptor cd_S3745C2 = {  "S3745C2", // class name
  bases_S3745C2, 1,
  &(vtc_S3745C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3745C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3745C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3745C1  : S3745C2 {
  ::S3765C5_nt s3745c1f0;
  char s3745c1f1;
  ::S5266C36 s3745c1f2;
  virtual  ~S3745C1(); // _ZN7S3745C1D1Ev
  virtual void  v1(); // _ZN7S3745C12v1Ev
  virtual void  v2(); // _ZN7S3745C12v2Ev
  virtual void  v3(); // _ZN7S3745C12v3Ev
  virtual void  v4(); // _ZN7S3745C12v4Ev
  virtual void  v5(); // _ZN7S3745C12v5Ev
  virtual void  v6(); // _ZN7S3745C12v6Ev
  virtual void  v7(); // _ZN7S3745C12v7Ev
  S3745C1(); // tgen
};
//SIG(1 S3745C1) C1{ BC2{ BC3{ vd m Fi} v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19} vd v1 v2 v3 v4 v5 v6 v7 FC4{ m Fp[2]} Fc FC5{ m Fp Fi[2] FC6{ m}}}


 S3745C1 ::~S3745C1(){ note_dtor("S3745C1", this);}
void  S3745C1 ::v1(){vfunc_called(this, "_ZN7S3745C12v1Ev");}
void  S3745C1 ::v2(){vfunc_called(this, "_ZN7S3745C12v2Ev");}
void  S3745C1 ::v3(){vfunc_called(this, "_ZN7S3745C12v3Ev");}
void  S3745C1 ::v4(){vfunc_called(this, "_ZN7S3745C12v4Ev");}
void  S3745C1 ::v5(){vfunc_called(this, "_ZN7S3745C12v5Ev");}
void  S3745C1 ::v6(){vfunc_called(this, "_ZN7S3745C12v6Ev");}
void  S3745C1 ::v7(){vfunc_called(this, "_ZN7S3745C12v7Ev");}
S3745C1 ::S3745C1(){ note_ctor("S3745C1", this);} // tgen

static void Test_S3745C1()
{
  extern Class_Descriptor cd_S3745C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S3745C1, buf);
    S3745C1 *dp, &lv = *(dp=new (buf) S3745C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S3745C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3745C1)");
    check_base_class_offset(lv, (S1679C4_nt*)(S3745C2*), 0, "S3745C1");
    check_base_class_offset(lv, (S3745C2*), 0, "S3745C1");
    check_field_offset(lv, s3745c1f0, ABISELECT(16,8), "S3745C1.s3745c1f0");
    check_field_offset(lv, s3745c1f1, ABISELECT(32,16), "S3745C1.s3745c1f1");
    check_field_offset(lv, s3745c1f2, ABISELECT(40,20), "S3745C1.s3745c1f2");
    test_class_info(&lv, &cd_S3745C1);
    dp->~S3745C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3745C1(Test_S3745C1, "S3745C1", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN7S3745C1C1Ev();
extern void _ZN7S3745C1D1Ev();
Name_Map name_map_S3745C1[] = {
  NSPAIR(_ZN7S3745C1C1Ev),
  NSPAIR(_ZN7S3745C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
extern Class_Descriptor cd_S3745C2;
extern VTBL_ENTRY _ZTI7S3745C2[];
extern  VTBL_ENTRY _ZTV7S3745C2[];
static Base_Class bases_S3745C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3745C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3745C1[];
extern void _ZN7S3745C1D1Ev();
extern void _ZN7S3745C1D0Ev();
extern void _ZN7S3745C22v8Ev();
extern void _ZN7S3745C22v9Ev();
extern void _ZN7S3745C23v10Ev();
extern void _ZN7S3745C23v11Ev();
extern void _ZN7S3745C23v12Ev();
extern void _ZN7S3745C23v13Ev();
extern void _ZN7S3745C23v14Ev();
extern void _ZN7S3745C23v15Ev();
extern void _ZN7S3745C23v16Ev();
extern void _ZN7S3745C23v17Ev();
extern void _ZN7S3745C23v18Ev();
extern void _ZN7S3745C23v19Ev();
extern void _ZN7S3745C12v1Ev();
extern void _ZN7S3745C12v2Ev();
extern void _ZN7S3745C12v3Ev();
extern void _ZN7S3745C12v4Ev();
extern void _ZN7S3745C12v5Ev();
extern void _ZN7S3745C12v6Ev();
extern void _ZN7S3745C12v7Ev();
static  VTBL_ENTRY vtc_S3745C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3745C1[0]),
  (VTBL_ENTRY)&_ZN7S3745C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3745C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3745C22v8Ev,
  (VTBL_ENTRY)&_ZN7S3745C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3745C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3745C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3745C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3745C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3745C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3745C23v15Ev,
  (VTBL_ENTRY)&_ZN7S3745C23v16Ev,
  (VTBL_ENTRY)&_ZN7S3745C23v17Ev,
  (VTBL_ENTRY)&_ZN7S3745C23v18Ev,
  (VTBL_ENTRY)&_ZN7S3745C23v19Ev,
  (VTBL_ENTRY)&_ZN7S3745C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3745C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3745C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3745C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3745C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3745C12v6Ev,
  (VTBL_ENTRY)&_ZN7S3745C12v7Ev,
};
extern VTBL_ENTRY _ZTI7S3745C1[];
extern  VTBL_ENTRY _ZTV7S3745C1[];
Class_Descriptor cd_S3745C1 = {  "S3745C1", // class name
  bases_S3745C1, 2,
  &(vtc_S3745C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI7S3745C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3745C1),23, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19901C4  {
  virtual void  v9(); // _ZN8S19901C42v9Ev
  virtual void  v10(); // _ZN8S19901C43v10Ev
  virtual void  v11(); // _ZN8S19901C43v11Ev
  virtual void  v12(); // _ZN8S19901C43v12Ev
  virtual void  v13(); // _ZN8S19901C43v13Ev
  virtual void  v14(); // _ZN8S19901C43v14Ev
  virtual void  v15(); // _ZN8S19901C43v15Ev
  virtual void  v16(); // _ZN8S19901C43v16Ev
  virtual void  v17(); // _ZN8S19901C43v17Ev
  ~S19901C4(); // tgen
  S19901C4(); // tgen
};
//SIG(-1 S19901C4) C1{ v1 v2 v3 v4 v5 v6 v7 v8 v9}


void  S19901C4 ::v9(){vfunc_called(this, "_ZN8S19901C42v9Ev");}
void  S19901C4 ::v10(){vfunc_called(this, "_ZN8S19901C43v10Ev");}
void  S19901C4 ::v11(){vfunc_called(this, "_ZN8S19901C43v11Ev");}
void  S19901C4 ::v12(){vfunc_called(this, "_ZN8S19901C43v12Ev");}
void  S19901C4 ::v13(){vfunc_called(this, "_ZN8S19901C43v13Ev");}
void  S19901C4 ::v14(){vfunc_called(this, "_ZN8S19901C43v14Ev");}
void  S19901C4 ::v15(){vfunc_called(this, "_ZN8S19901C43v15Ev");}
void  S19901C4 ::v16(){vfunc_called(this, "_ZN8S19901C43v16Ev");}
void  S19901C4 ::v17(){vfunc_called(this, "_ZN8S19901C43v17Ev");}
S19901C4 ::~S19901C4(){ note_dtor("S19901C4", this);} // tgen
S19901C4 ::S19901C4(){ note_ctor("S19901C4", this);} // tgen

static void Test_S19901C4()
{
  extern Class_Descriptor cd_S19901C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19901C4, buf);
    S19901C4 *dp, &lv = *(dp=new (buf) S19901C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19901C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19901C4)");
    test_class_info(&lv, &cd_S19901C4);
    dp->~S19901C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19901C4(Test_S19901C4, "S19901C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S19901C4C1Ev();
extern void _ZN8S19901C4D1Ev();
Name_Map name_map_S19901C4[] = {
  NSPAIR(_ZN8S19901C4C1Ev),
  NSPAIR(_ZN8S19901C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19901C4[];
extern void _ZN8S19901C42v9Ev();
extern void _ZN8S19901C43v10Ev();
extern void _ZN8S19901C43v11Ev();
extern void _ZN8S19901C43v12Ev();
extern void _ZN8S19901C43v13Ev();
extern void _ZN8S19901C43v14Ev();
extern void _ZN8S19901C43v15Ev();
extern void _ZN8S19901C43v16Ev();
extern void _ZN8S19901C43v17Ev();
static  VTBL_ENTRY vtc_S19901C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19901C4[0]),
  (VTBL_ENTRY)&_ZN8S19901C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19901C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19901C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19901C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19901C43v13Ev,
  (VTBL_ENTRY)&_ZN8S19901C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19901C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19901C43v16Ev,
  (VTBL_ENTRY)&_ZN8S19901C43v17Ev,
};
extern VTBL_ENTRY _ZTI8S19901C4[];
extern  VTBL_ENTRY _ZTV8S19901C4[];
Class_Descriptor cd_S19901C4 = {  "S19901C4", // class name
  0,0,//no base classes
  &(vtc_S19901C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19901C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19901C4),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19901C3  : virtual S19901C4 {
  void *s19901c3f0;
  long double s19901c3f1;
  int s19901c3f2;
  virtual void  v18(); // _ZN8S19901C33v18Ev
  virtual void  v19(); // _ZN8S19901C33v19Ev
  virtual void  v20(); // _ZN8S19901C33v20Ev
  ~S19901C3(); // tgen
  S19901C3(); // tgen
};
//SIG(-1 S19901C3) C1{ VBC2{ v4 v5 v6 v7 v8 v9 v10 v11 v12} v1 v2 v3 Fp FD Fi}


void  S19901C3 ::v18(){vfunc_called(this, "_ZN8S19901C33v18Ev");}
void  S19901C3 ::v19(){vfunc_called(this, "_ZN8S19901C33v19Ev");}
void  S19901C3 ::v20(){vfunc_called(this, "_ZN8S19901C33v20Ev");}
S19901C3 ::~S19901C3(){ note_dtor("S19901C3", this);} // tgen
S19901C3 ::S19901C3(){ note_ctor("S19901C3", this);} // tgen

static void Test_S19901C3()
{
  extern Class_Descriptor cd_S19901C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,7)];
    init_test(&cd_S19901C3, buf);
    S19901C3 *dp, &lv = *(dp=new (buf) S19901C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S19901C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19901C3)");
    check_base_class_offset(lv, (S19901C4*), 0, "S19901C3");
    check_field_offset(lv, s19901c3f0, ABISELECT(8,4), "S19901C3.s19901c3f0");
    check_field_offset(lv, s19901c3f1, ABISELECT(16,8), "S19901C3.s19901c3f1");
    check_field_offset(lv, s19901c3f2, ABISELECT(32,20), "S19901C3.s19901c3f2");
    test_class_info(&lv, &cd_S19901C3);
    dp->~S19901C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19901C3(Test_S19901C3, "S19901C3", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN8S19901C3C1Ev();
extern void _ZN8S19901C3D1Ev();
Name_Map name_map_S19901C3[] = {
  NSPAIR(_ZN8S19901C3C1Ev),
  NSPAIR(_ZN8S19901C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19901C4;
extern VTBL_ENTRY _ZTI8S19901C4[];
extern  VTBL_ENTRY _ZTV8S19901C4[];
static Base_Class bases_S19901C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19901C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19901C3[];
extern void _ZN8S19901C42v9Ev();
extern void _ZN8S19901C43v10Ev();
extern void _ZN8S19901C43v11Ev();
extern void _ZN8S19901C43v12Ev();
extern void _ZN8S19901C43v13Ev();
extern void _ZN8S19901C43v14Ev();
extern void _ZN8S19901C43v15Ev();
extern void _ZN8S19901C43v16Ev();
extern void _ZN8S19901C43v17Ev();
extern void _ZN8S19901C33v18Ev();
extern void _ZN8S19901C33v19Ev();
extern void _ZN8S19901C33v20Ev();
static  VTBL_ENTRY vtc_S19901C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19901C3[0]),
  (VTBL_ENTRY)&_ZN8S19901C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19901C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19901C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19901C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19901C43v13Ev,
  (VTBL_ENTRY)&_ZN8S19901C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19901C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19901C43v16Ev,
  (VTBL_ENTRY)&_ZN8S19901C43v17Ev,
  (VTBL_ENTRY)&_ZN8S19901C33v18Ev,
  (VTBL_ENTRY)&_ZN8S19901C33v19Ev,
  (VTBL_ENTRY)&_ZN8S19901C33v20Ev,
};
extern VTBL_ENTRY _ZTV8S19901C3[];
static  VTT_ENTRY vtt_S19901C3[] = {
  {&(_ZTV8S19901C3[12]),  12,24},
  {&(_ZTV8S19901C3[12]),  12,24},
};
extern VTBL_ENTRY _ZTI8S19901C3[];
extern  VTBL_ENTRY _ZTV8S19901C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19901C3[];
Class_Descriptor cd_S19901C3 = {  "S19901C3", // class name
  bases_S19901C3, 1,
  &(vtc_S19901C3[0]), // expected_vtbl_contents
  &(vtt_S19901C3[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI8S19901C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19901C3),24, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19901C3),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19901C1  : virtual S5266C29 , virtual S19901C3 {
  ::S7297C16 s19901c1f0;
  virtual void  v1(); // _ZN8S19901C12v1Ev
  virtual void  v2(); // _ZN8S19901C12v2Ev
  virtual void  v3(); // _ZN8S19901C12v3Ev
  virtual void  v4(); // _ZN8S19901C12v4Ev
  virtual void  v5(); // _ZN8S19901C12v5Ev
  virtual void  v6(); // _ZN8S19901C12v6Ev
  virtual void  v7(); // _ZN8S19901C12v7Ev
  virtual void  v8(); // _ZN8S19901C12v8Ev
  ~S19901C1(); // tgen
  S19901C1(); // tgen
};
//SIG(1 S19901C1) C1{ VBC2{ m} VBC3{ VBC4{ v9 v10 v11 v12 v13 v14 v15 v16 v17} v18 v19 v20 Fp FD Fi} v1 v2 v3 v4 v5 v6 v7 v8 FC5{ v21 v22 Fc[7] Fi[2]}}


void  S19901C1 ::v1(){vfunc_called(this, "_ZN8S19901C12v1Ev");}
void  S19901C1 ::v2(){vfunc_called(this, "_ZN8S19901C12v2Ev");}
void  S19901C1 ::v3(){vfunc_called(this, "_ZN8S19901C12v3Ev");}
void  S19901C1 ::v4(){vfunc_called(this, "_ZN8S19901C12v4Ev");}
void  S19901C1 ::v5(){vfunc_called(this, "_ZN8S19901C12v5Ev");}
void  S19901C1 ::v6(){vfunc_called(this, "_ZN8S19901C12v6Ev");}
void  S19901C1 ::v7(){vfunc_called(this, "_ZN8S19901C12v7Ev");}
void  S19901C1 ::v8(){vfunc_called(this, "_ZN8S19901C12v8Ev");}
S19901C1 ::~S19901C1(){ note_dtor("S19901C1", this);} // tgen
S19901C1 ::S19901C1(){ note_ctor("S19901C1", this);} // tgen

static void Test_S19901C1()
{
  extern Class_Descriptor cd_S19901C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,13)];
    init_test(&cd_S19901C1, buf);
    S19901C1 *dp, &lv = *(dp=new (buf) S19901C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,48), "sizeof(S19901C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19901C1)");
    check_base_class_offset(lv, (S5266C29*), 0, "S19901C1");
    check_base_class_offset(lv, (S19901C4*)(S19901C3*), 0, "S19901C1");
    check_base_class_offset(lv, (S19901C3*), ABISELECT(32,24), "S19901C1");
    check_field_offset(lv, s19901c1f0, ABISELECT(8,4), "S19901C1.s19901c1f0");
    test_class_info(&lv, &cd_S19901C1);
    dp->~S19901C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19901C1(Test_S19901C1, "S19901C1", ABISELECT(80,48));

#else // __cplusplus

extern void _ZN8S19901C1C1Ev();
extern void _ZN8S19901C1D1Ev();
Name_Map name_map_S19901C1[] = {
  NSPAIR(_ZN8S19901C1C1Ev),
  NSPAIR(_ZN8S19901C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S19901C4;
extern VTBL_ENTRY _ZTI8S19901C4[];
extern  VTBL_ENTRY _ZTV8S19901C4[];
extern Class_Descriptor cd_S19901C3;
extern VTBL_ENTRY _ZTI8S19901C3[];
extern  VTBL_ENTRY _ZTV8S19901C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19901C3[];
static Base_Class bases_S19901C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19901C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19901C3,    ABISELECT(32,24), //bcp->offset
    31, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19901C1[];
extern void _ZN8S19901C42v9Ev();
extern void _ZN8S19901C43v10Ev();
extern void _ZN8S19901C43v11Ev();
extern void _ZN8S19901C43v12Ev();
extern void _ZN8S19901C43v13Ev();
extern void _ZN8S19901C43v14Ev();
extern void _ZN8S19901C43v15Ev();
extern void _ZN8S19901C43v16Ev();
extern void _ZN8S19901C43v17Ev();
extern void _ZN8S19901C12v1Ev();
extern void _ZN8S19901C12v2Ev();
extern void _ZN8S19901C12v3Ev();
extern void _ZN8S19901C12v4Ev();
extern void _ZN8S19901C12v5Ev();
extern void _ZN8S19901C12v6Ev();
extern void _ZN8S19901C12v7Ev();
extern void _ZN8S19901C12v8Ev();
extern void _ZN8S19901C42v9Ev();
extern void _ZN8S19901C43v10Ev();
extern void _ZN8S19901C43v11Ev();
extern void _ZN8S19901C43v12Ev();
extern void _ZN8S19901C43v13Ev();
extern void _ZN8S19901C43v14Ev();
extern void _ZN8S19901C43v15Ev();
extern void _ZN8S19901C43v16Ev();
extern void _ZN8S19901C43v17Ev();
extern void _ZN8S19901C33v18Ev();
extern void _ZN8S19901C33v19Ev();
extern void _ZN8S19901C33v20Ev();
static  VTBL_ENTRY vtc_S19901C1[] = {
  0,
  ABISELECT(32,24),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19901C1[0]),
  (VTBL_ENTRY)&_ZN8S19901C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19901C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19901C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19901C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19901C43v13Ev,
  (VTBL_ENTRY)&_ZN8S19901C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19901C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19901C43v16Ev,
  (VTBL_ENTRY)&_ZN8S19901C43v17Ev,
  (VTBL_ENTRY)&_ZN8S19901C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19901C12v2Ev,
  (VTBL_ENTRY)&_ZN8S19901C12v3Ev,
  (VTBL_ENTRY)&_ZN8S19901C12v4Ev,
  (VTBL_ENTRY)&_ZN8S19901C12v5Ev,
  (VTBL_ENTRY)&_ZN8S19901C12v6Ev,
  (VTBL_ENTRY)&_ZN8S19901C12v7Ev,
  (VTBL_ENTRY)&_ZN8S19901C12v8Ev,
  0,
  0,
  0,
  ABISELECT(-32,-24),
  ABISELECT(-32,-24),
  ABISELECT(-32,-24),
  ABISELECT(-32,-24),
  ABISELECT(-32,-24),
  ABISELECT(-32,-24),
  ABISELECT(-32,-24),
  ABISELECT(-32,-24),
  ABISELECT(-32,-24),
  ABISELECT(-32,-24),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S19901C1[0]),
  (VTBL_ENTRY)&_ZN8S19901C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19901C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19901C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19901C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19901C43v13Ev,
  (VTBL_ENTRY)&_ZN8S19901C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19901C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19901C43v16Ev,
  (VTBL_ENTRY)&_ZN8S19901C43v17Ev,
  (VTBL_ENTRY)&_ZN8S19901C33v18Ev,
  (VTBL_ENTRY)&_ZN8S19901C33v19Ev,
  (VTBL_ENTRY)&_ZN8S19901C33v20Ev,
};
extern VTBL_ENTRY _ZTV8S19901C1[];
extern void _ZN8S19901C42v9Ev();
extern void _ZN8S19901C43v10Ev();
extern void _ZN8S19901C43v11Ev();
extern void _ZN8S19901C43v12Ev();
extern void _ZN8S19901C43v13Ev();
extern void _ZN8S19901C43v14Ev();
extern void _ZN8S19901C43v15Ev();
extern void _ZN8S19901C43v16Ev();
extern void _ZN8S19901C43v17Ev();
extern void _ZN8S19901C33v18Ev();
extern void _ZN8S19901C33v19Ev();
extern void _ZN8S19901C33v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19901C3__8S19901C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(-32,-24),
  ABISELECT(-32,-24),
  ABISELECT(-32,-24),
  ABISELECT(-32,-24),
  ABISELECT(-32,-24),
  ABISELECT(-32,-24),
  ABISELECT(-32,-24),
  ABISELECT(-32,-24),
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19901C3[0]),
  (VTBL_ENTRY)&_ZN8S19901C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19901C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19901C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19901C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19901C43v13Ev,
  (VTBL_ENTRY)&_ZN8S19901C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19901C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19901C43v16Ev,
  (VTBL_ENTRY)&_ZN8S19901C43v17Ev,
  (VTBL_ENTRY)&_ZN8S19901C33v18Ev,
  (VTBL_ENTRY)&_ZN8S19901C33v19Ev,
  (VTBL_ENTRY)&_ZN8S19901C33v20Ev,
};
extern void _ZN8S19901C42v9Ev();
extern void _ZN8S19901C43v10Ev();
extern void _ZN8S19901C43v11Ev();
extern void _ZN8S19901C43v12Ev();
extern void _ZN8S19901C43v13Ev();
extern void _ZN8S19901C43v14Ev();
extern void _ZN8S19901C43v15Ev();
extern void _ZN8S19901C43v16Ev();
extern void _ZN8S19901C43v17Ev();
static  VTBL_ENTRY _tg__ZTV8S19901C4__8S19901C3__8S19901C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI8S19901C3[0]),
  (VTBL_ENTRY)&_ZN8S19901C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19901C43v10Ev,
  (VTBL_ENTRY)&_ZN8S19901C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19901C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19901C43v13Ev,
  (VTBL_ENTRY)&_ZN8S19901C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19901C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19901C43v16Ev,
  (VTBL_ENTRY)&_ZN8S19901C43v17Ev,
};
static  VTT_ENTRY vtt_S19901C1[] = {
  {&(_ZTV8S19901C1[14]),  14,58},
  {&(_ZTV8S19901C1[46]),  46,58},
  {&(_ZTV8S19901C1[14]),  14,58},
  {&(_tg__ZTV8S19901C3__8S19901C1[12]),  12,24},
  {&(_tg__ZTV8S19901C4__8S19901C3__8S19901C1[11]),  11,20},
};
extern VTBL_ENTRY _ZTI8S19901C1[];
extern  VTBL_ENTRY _ZTV8S19901C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19901C1[];
Class_Descriptor cd_S19901C1 = {  "S19901C1", // class name
  bases_S19901C1, 3,
  &(vtc_S19901C1[0]), // expected_vtbl_contents
  &(vtt_S19901C1[0]), // expected_vtt_contents
  ABISELECT(80,48), // object size
  NSPAIRA(_ZTI8S19901C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19901C1),58, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19901C1),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3186C3  {
  virtual void  v3(); // _ZN7S3186C32v3Ev
  ~S3186C3(); // tgen
  S3186C3(); // tgen
};
//SIG(-1 S3186C3) C1{ v1}


void  S3186C3 ::v3(){vfunc_called(this, "_ZN7S3186C32v3Ev");}
S3186C3 ::~S3186C3(){ note_dtor("S3186C3", this);} // tgen
S3186C3 ::S3186C3(){ note_ctor("S3186C3", this);} // tgen

static void Test_S3186C3()
{
  extern Class_Descriptor cd_S3186C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3186C3, buf);
    S3186C3 *dp, &lv = *(dp=new (buf) S3186C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3186C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3186C3)");
    test_class_info(&lv, &cd_S3186C3);
    dp->~S3186C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3186C3(Test_S3186C3, "S3186C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3186C3C1Ev();
extern void _ZN7S3186C3D1Ev();
Name_Map name_map_S3186C3[] = {
  NSPAIR(_ZN7S3186C3C1Ev),
  NSPAIR(_ZN7S3186C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3186C3[];
extern void _ZN7S3186C32v3Ev();
static  VTBL_ENTRY vtc_S3186C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3186C3[0]),
  (VTBL_ENTRY)&_ZN7S3186C32v3Ev,
};
extern VTBL_ENTRY _ZTI7S3186C3[];
extern  VTBL_ENTRY _ZTV7S3186C3[];
Class_Descriptor cd_S3186C3 = {  "S3186C3", // class name
  0,0,//no base classes
  &(vtc_S3186C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3186C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3186C3),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3186C4  : S3186C3 {
  virtual void  v4(); // _ZN7S3186C42v4Ev
  virtual void  v5(); // _ZN7S3186C42v5Ev
  virtual void  v6(); // _ZN7S3186C42v6Ev
  ~S3186C4(); // tgen
  S3186C4(); // tgen
};
//SIG(-1 S3186C4) C1{ BC2{ v4} v1 v2 v3}


void  S3186C4 ::v4(){vfunc_called(this, "_ZN7S3186C42v4Ev");}
void  S3186C4 ::v5(){vfunc_called(this, "_ZN7S3186C42v5Ev");}
void  S3186C4 ::v6(){vfunc_called(this, "_ZN7S3186C42v6Ev");}
S3186C4 ::~S3186C4(){ note_dtor("S3186C4", this);} // tgen
S3186C4 ::S3186C4(){ note_ctor("S3186C4", this);} // tgen

static void Test_S3186C4()
{
  extern Class_Descriptor cd_S3186C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3186C4, buf);
    S3186C4 *dp, &lv = *(dp=new (buf) S3186C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3186C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3186C4)");
    check_base_class_offset(lv, (S3186C3*), 0, "S3186C4");
    test_class_info(&lv, &cd_S3186C4);
    dp->~S3186C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3186C4(Test_S3186C4, "S3186C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3186C4C1Ev();
extern void _ZN7S3186C4D1Ev();
Name_Map name_map_S3186C4[] = {
  NSPAIR(_ZN7S3186C4C1Ev),
  NSPAIR(_ZN7S3186C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3186C3;
extern VTBL_ENTRY _ZTI7S3186C3[];
extern  VTBL_ENTRY _ZTV7S3186C3[];
static Base_Class bases_S3186C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3186C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3186C4[];
extern void _ZN7S3186C32v3Ev();
extern void _ZN7S3186C42v4Ev();
extern void _ZN7S3186C42v5Ev();
extern void _ZN7S3186C42v6Ev();
static  VTBL_ENTRY vtc_S3186C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3186C4[0]),
  (VTBL_ENTRY)&_ZN7S3186C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3186C42v4Ev,
  (VTBL_ENTRY)&_ZN7S3186C42v5Ev,
  (VTBL_ENTRY)&_ZN7S3186C42v6Ev,
};
extern VTBL_ENTRY _ZTI7S3186C4[];
extern  VTBL_ENTRY _ZTV7S3186C4[];
Class_Descriptor cd_S3186C4 = {  "S3186C4", // class name
  bases_S3186C4, 1,
  &(vtc_S3186C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3186C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3186C4),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3186C5  : virtual S3186C4 , S3186C3 {
  int s3186c5f0;
  virtual void  v7(); // _ZN7S3186C52v7Ev
  virtual void  v8(); // _ZN7S3186C52v8Ev
  virtual void  v9(); // _ZN7S3186C52v9Ev
  virtual void  v10(); // _ZN7S3186C53v10Ev
  virtual void  v11(); // _ZN7S3186C53v11Ev
  virtual void  v12(); // _ZN7S3186C53v12Ev
  ~S3186C5(); // tgen
  S3186C5(); // tgen
};
//SIG(-1 S3186C5) C1{ VBC2{ BC3{ v7} v8 v9 v10} BC3 v1 v2 v3 v4 v5 v6 Fi}


void  S3186C5 ::v7(){vfunc_called(this, "_ZN7S3186C52v7Ev");}
void  S3186C5 ::v8(){vfunc_called(this, "_ZN7S3186C52v8Ev");}
void  S3186C5 ::v9(){vfunc_called(this, "_ZN7S3186C52v9Ev");}
void  S3186C5 ::v10(){vfunc_called(this, "_ZN7S3186C53v10Ev");}
void  S3186C5 ::v11(){vfunc_called(this, "_ZN7S3186C53v11Ev");}
void  S3186C5 ::v12(){vfunc_called(this, "_ZN7S3186C53v12Ev");}
S3186C5 ::~S3186C5(){ note_dtor("S3186C5", this);} // tgen
S3186C5 ::S3186C5(){ note_ctor("S3186C5", this);} // tgen

static void Test_S3186C5()
{
  extern Class_Descriptor cd_S3186C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S3186C5, buf);
    S3186C5 *dp, &lv = *(dp=new (buf) S3186C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S3186C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3186C5)");
    check_base_class_offset(lv, (S3186C3*)(S3186C4*), ABISELECT(16,8), "S3186C5");
    check_base_class_offset(lv, (S3186C4*), ABISELECT(16,8), "S3186C5");
    /*is_ambiguous_... S3186C5::S3186C3 */ AMB_check_base_class_offset(lv, (S3186C3*), 0, "S3186C5");
    check_field_offset(lv, s3186c5f0, ABISELECT(8,4), "S3186C5.s3186c5f0");
    test_class_info(&lv, &cd_S3186C5);
    dp->~S3186C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3186C5(Test_S3186C5, "S3186C5", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S3186C5C1Ev();
extern void _ZN7S3186C5D1Ev();
Name_Map name_map_S3186C5[] = {
  NSPAIR(_ZN7S3186C5C1Ev),
  NSPAIR(_ZN7S3186C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3186C3;
extern VTBL_ENTRY _ZTI7S3186C3[];
extern  VTBL_ENTRY _ZTV7S3186C3[];
extern Class_Descriptor cd_S3186C4;
extern VTBL_ENTRY _ZTI7S3186C4[];
extern  VTBL_ENTRY _ZTV7S3186C4[];
extern Class_Descriptor cd_S3186C3;
extern VTBL_ENTRY _ZTI7S3186C3[];
extern  VTBL_ENTRY _ZTV7S3186C3[];
static Base_Class bases_S3186C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3186C3,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3186C4,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3186C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3186C5[];
extern void _ZN7S3186C32v3Ev();
extern void _ZN7S3186C52v7Ev();
extern void _ZN7S3186C52v8Ev();
extern void _ZN7S3186C52v9Ev();
extern void _ZN7S3186C53v10Ev();
extern void _ZN7S3186C53v11Ev();
extern void _ZN7S3186C53v12Ev();
extern void _ZN7S3186C32v3Ev();
extern void _ZN7S3186C42v4Ev();
extern void _ZN7S3186C42v5Ev();
extern void _ZN7S3186C42v6Ev();
static  VTBL_ENTRY vtc_S3186C5[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S3186C5[0]),
  (VTBL_ENTRY)&_ZN7S3186C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3186C52v7Ev,
  (VTBL_ENTRY)&_ZN7S3186C52v8Ev,
  (VTBL_ENTRY)&_ZN7S3186C52v9Ev,
  (VTBL_ENTRY)&_ZN7S3186C53v10Ev,
  (VTBL_ENTRY)&_ZN7S3186C53v11Ev,
  (VTBL_ENTRY)&_ZN7S3186C53v12Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3186C5[0]),
  (VTBL_ENTRY)&_ZN7S3186C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3186C42v4Ev,
  (VTBL_ENTRY)&_ZN7S3186C42v5Ev,
  (VTBL_ENTRY)&_ZN7S3186C42v6Ev,
};
extern VTBL_ENTRY _ZTV7S3186C5[];
static  VTT_ENTRY vtt_S3186C5[] = {
  {&(_ZTV7S3186C5[3]),  3,20},
  {&(_ZTV7S3186C5[16]),  16,20},
};
extern VTBL_ENTRY _ZTI7S3186C5[];
extern  VTBL_ENTRY _ZTV7S3186C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3186C5[];
Class_Descriptor cd_S3186C5 = {  "S3186C5", // class name
  bases_S3186C5, 3,
  &(vtc_S3186C5[0]), // expected_vtbl_contents
  &(vtt_S3186C5[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S3186C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3186C5),20, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3186C5),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3186C2  : S3186C3 , virtual S3186C4 , S3186C5 {
  char s3186c2f0;
  virtual void  v13(); // _ZN7S3186C23v13Ev
  virtual void  v14(); // _ZN7S3186C23v14Ev
  virtual void  v15(); // _ZN7S3186C23v15Ev
  virtual void  v16(); // _ZN7S3186C23v16Ev
  virtual void  v17(); // _ZN7S3186C23v17Ev
  virtual void  v18(); // _ZN7S3186C23v18Ev
  virtual void  v19(); // _ZN7S3186C23v19Ev
  ~S3186C2(); // tgen
  S3186C2(); // tgen
};
//SIG(-1 S3186C2) C1{ BC2{ v8} VBC3{ BC2 v9 v10 v11} BC4{ VBC3 BC2 v12 v13 v14 v15 v16 v17 Fi} v1 v2 v3 v4 v5 v6 v7 Fc}


void  S3186C2 ::v13(){vfunc_called(this, "_ZN7S3186C23v13Ev");}
void  S3186C2 ::v14(){vfunc_called(this, "_ZN7S3186C23v14Ev");}
void  S3186C2 ::v15(){vfunc_called(this, "_ZN7S3186C23v15Ev");}
void  S3186C2 ::v16(){vfunc_called(this, "_ZN7S3186C23v16Ev");}
void  S3186C2 ::v17(){vfunc_called(this, "_ZN7S3186C23v17Ev");}
void  S3186C2 ::v18(){vfunc_called(this, "_ZN7S3186C23v18Ev");}
void  S3186C2 ::v19(){vfunc_called(this, "_ZN7S3186C23v19Ev");}
S3186C2 ::~S3186C2(){ note_dtor("S3186C2", this);} // tgen
S3186C2 ::S3186C2(){ note_ctor("S3186C2", this);} // tgen

static void Test_S3186C2()
{
  extern Class_Descriptor cd_S3186C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S3186C2, buf);
    S3186C2 *dp, &lv = *(dp=new (buf) S3186C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S3186C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3186C2)");
    /*is_ambiguous_... S3186C2::S3186C3 */ AMB_check_base_class_offset(lv, (S3186C3*), 0, "S3186C2");
    check_base_class_offset(lv, (S3186C3*)(S3186C4*), ABISELECT(24,16), "S3186C2");
    check_base_class_offset(lv, (S3186C4*), ABISELECT(24,16), "S3186C2");
    check_base_class_offset(lv, (S3186C4*)(S3186C5*), ABISELECT(24,16), "S3186C2");
    /*is_ambiguous_... S3186C5::S3186C3 */ AMB_check_base_class_offset(lv, (S3186C3*)(S3186C5*), ABISELECT(8,4), "S3186C2");
    check_base_class_offset(lv, (S3186C5*), ABISELECT(8,4), "S3186C2");
    check_field_offset(lv, s3186c2f0, ABISELECT(20,12), "S3186C2.s3186c2f0");
    test_class_info(&lv, &cd_S3186C2);
    dp->~S3186C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3186C2(Test_S3186C2, "S3186C2", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S3186C2C1Ev();
extern void _ZN7S3186C2D1Ev();
Name_Map name_map_S3186C2[] = {
  NSPAIR(_ZN7S3186C2C1Ev),
  NSPAIR(_ZN7S3186C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3186C3;
extern VTBL_ENTRY _ZTI7S3186C3[];
extern  VTBL_ENTRY _ZTV7S3186C3[];
extern Class_Descriptor cd_S3186C3;
extern VTBL_ENTRY _ZTI7S3186C3[];
extern  VTBL_ENTRY _ZTV7S3186C3[];
extern Class_Descriptor cd_S3186C4;
extern VTBL_ENTRY _ZTI7S3186C4[];
extern  VTBL_ENTRY _ZTV7S3186C4[];
extern Class_Descriptor cd_S3186C3;
extern VTBL_ENTRY _ZTI7S3186C3[];
extern  VTBL_ENTRY _ZTV7S3186C3[];
extern Class_Descriptor cd_S3186C5;
extern VTBL_ENTRY _ZTI7S3186C5[];
extern  VTBL_ENTRY _ZTV7S3186C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3186C5[];
static Base_Class bases_S3186C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3186C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3186C3,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3186C4,    ABISELECT(24,16), //bcp->offset
    21, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3186C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3186C5,    ABISELECT(8,4), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3186C2[];
extern void _ZN7S3186C32v3Ev();
extern void _ZN7S3186C23v13Ev();
extern void _ZN7S3186C23v14Ev();
extern void _ZN7S3186C23v15Ev();
extern void _ZN7S3186C23v16Ev();
extern void _ZN7S3186C23v17Ev();
extern void _ZN7S3186C23v18Ev();
extern void _ZN7S3186C23v19Ev();
extern void _ZN7S3186C32v3Ev();
extern void _ZN7S3186C52v7Ev();
extern void _ZN7S3186C52v8Ev();
extern void _ZN7S3186C52v9Ev();
extern void _ZN7S3186C53v10Ev();
extern void _ZN7S3186C53v11Ev();
extern void _ZN7S3186C53v12Ev();
extern void _ZN7S3186C32v3Ev();
extern void _ZN7S3186C42v4Ev();
extern void _ZN7S3186C42v5Ev();
extern void _ZN7S3186C42v6Ev();
static  VTBL_ENTRY vtc_S3186C2[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S3186C2[0]),
  (VTBL_ENTRY)&_ZN7S3186C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3186C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3186C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3186C23v15Ev,
  (VTBL_ENTRY)&_ZN7S3186C23v16Ev,
  (VTBL_ENTRY)&_ZN7S3186C23v17Ev,
  (VTBL_ENTRY)&_ZN7S3186C23v18Ev,
  (VTBL_ENTRY)&_ZN7S3186C23v19Ev,
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3186C2[0]),
  (VTBL_ENTRY)&_ZN7S3186C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3186C52v7Ev,
  (VTBL_ENTRY)&_ZN7S3186C52v8Ev,
  (VTBL_ENTRY)&_ZN7S3186C52v9Ev,
  (VTBL_ENTRY)&_ZN7S3186C53v10Ev,
  (VTBL_ENTRY)&_ZN7S3186C53v11Ev,
  (VTBL_ENTRY)&_ZN7S3186C53v12Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S3186C2[0]),
  (VTBL_ENTRY)&_ZN7S3186C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3186C42v4Ev,
  (VTBL_ENTRY)&_ZN7S3186C42v5Ev,
  (VTBL_ENTRY)&_ZN7S3186C42v6Ev,
};
extern VTBL_ENTRY _ZTV7S3186C2[];
extern void _ZN7S3186C32v3Ev();
extern void _ZN7S3186C52v7Ev();
extern void _ZN7S3186C52v8Ev();
extern void _ZN7S3186C52v9Ev();
extern void _ZN7S3186C53v10Ev();
extern void _ZN7S3186C53v11Ev();
extern void _ZN7S3186C53v12Ev();
static  VTBL_ENTRY _tg__ZTV7S3186C5__7S3186C2[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S3186C5[0]),
  (VTBL_ENTRY)&_ZN7S3186C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3186C52v7Ev,
  (VTBL_ENTRY)&_ZN7S3186C52v8Ev,
  (VTBL_ENTRY)&_ZN7S3186C52v9Ev,
  (VTBL_ENTRY)&_ZN7S3186C53v10Ev,
  (VTBL_ENTRY)&_ZN7S3186C53v11Ev,
  (VTBL_ENTRY)&_ZN7S3186C53v12Ev,
};
extern void _ZN7S3186C32v3Ev();
extern void _ZN7S3186C42v4Ev();
extern void _ZN7S3186C42v5Ev();
extern void _ZN7S3186C42v6Ev();
static  VTBL_ENTRY _tg__ZTV7S3186C4__7S3186C5__7S3186C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S3186C5[0]),
  (VTBL_ENTRY)&_ZN7S3186C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3186C42v4Ev,
  (VTBL_ENTRY)&_ZN7S3186C42v5Ev,
  (VTBL_ENTRY)&_ZN7S3186C42v6Ev,
};
static  VTT_ENTRY vtt_S3186C2[] = {
  {&(_ZTV7S3186C2[3]),  3,31},
  {&(_tg__ZTV7S3186C5__7S3186C2[3]),  3,10},
  {&(_tg__ZTV7S3186C4__7S3186C5__7S3186C2[6]),  6,10},
  {&(_ZTV7S3186C2[27]),  27,31},
  {&(_ZTV7S3186C2[14]),  14,31},
};
extern VTBL_ENTRY _ZTI7S3186C2[];
extern  VTBL_ENTRY _ZTV7S3186C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3186C2[];
Class_Descriptor cd_S3186C2 = {  "S3186C2", // class name
  bases_S3186C2, 5,
  &(vtc_S3186C2[0]), // expected_vtbl_contents
  &(vtt_S3186C2[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S3186C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S3186C2),31, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3186C2),5, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3186C1  : S3186C2 {
  ::S19905C17_nt s3186c1f0;
  int s3186c1f1;
  void *s3186c1f2;
  virtual void  v1(); // _ZN7S3186C12v1Ev
  virtual void  v2(); // _ZN7S3186C12v2Ev
  ~S3186C1(); // tgen
  S3186C1(); // tgen
};
//SIG(1 S3186C1) C1{ BC2{ BC3{ v3} VBC4{ BC3 v4 v5 v6} BC5{ VBC4 BC3 v7 v8 v9 v10 v11 v12 Fi} v13 v14 v15 v16 v17 v18 v19 Fc} v1 v2 FC6{} Fi Fp}


void  S3186C1 ::v1(){vfunc_called(this, "_ZN7S3186C12v1Ev");}
void  S3186C1 ::v2(){vfunc_called(this, "_ZN7S3186C12v2Ev");}
S3186C1 ::~S3186C1(){ note_dtor("S3186C1", this);} // tgen
S3186C1 ::S3186C1(){ note_ctor("S3186C1", this);} // tgen

static void Test_S3186C1()
{
  extern Class_Descriptor cd_S3186C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S3186C1, buf);
    S3186C1 *dp, &lv = *(dp=new (buf) S3186C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S3186C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3186C1)");
    /*is_ambiguous_... S3186C2::S3186C3 */ AMB_check_base_class_offset(lv, (S3186C3*)(S3186C2*), 0, "S3186C1");
    check_base_class_offset(lv, (S3186C3*)(S3186C4*), ABISELECT(40,24), "S3186C1");
    check_base_class_offset(lv, (S3186C4*)(S3186C2*), ABISELECT(40,24), "S3186C1");
    check_base_class_offset(lv, (S3186C4*)(S3186C5*)(S3186C2*), ABISELECT(40,24), "S3186C1");
    /*is_ambiguous_... S3186C5::S3186C3 */ AMB_check_base_class_offset(lv, (S3186C3*)(S3186C5*)(S3186C2*), ABISELECT(8,4), "S3186C1");
    check_base_class_offset(lv, (S3186C5*)(S3186C2*), ABISELECT(8,4), "S3186C1");
    check_base_class_offset(lv, (S3186C2*), 0, "S3186C1");
    check_field_offset(lv, s3186c1f0, ABISELECT(21,13), "S3186C1.s3186c1f0");
    check_field_offset(lv, s3186c1f1, ABISELECT(24,16), "S3186C1.s3186c1f1");
    check_field_offset(lv, s3186c1f2, ABISELECT(32,20), "S3186C1.s3186c1f2");
    test_class_info(&lv, &cd_S3186C1);
    dp->~S3186C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3186C1(Test_S3186C1, "S3186C1", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN7S3186C1C1Ev();
extern void _ZN7S3186C1D1Ev();
Name_Map name_map_S3186C1[] = {
  NSPAIR(_ZN7S3186C1C1Ev),
  NSPAIR(_ZN7S3186C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3186C3;
extern VTBL_ENTRY _ZTI7S3186C3[];
extern  VTBL_ENTRY _ZTV7S3186C3[];
extern Class_Descriptor cd_S3186C3;
extern VTBL_ENTRY _ZTI7S3186C3[];
extern  VTBL_ENTRY _ZTV7S3186C3[];
extern Class_Descriptor cd_S3186C4;
extern VTBL_ENTRY _ZTI7S3186C4[];
extern  VTBL_ENTRY _ZTV7S3186C4[];
extern Class_Descriptor cd_S3186C3;
extern VTBL_ENTRY _ZTI7S3186C3[];
extern  VTBL_ENTRY _ZTV7S3186C3[];
extern Class_Descriptor cd_S3186C5;
extern VTBL_ENTRY _ZTI7S3186C5[];
extern  VTBL_ENTRY _ZTV7S3186C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3186C5[];
extern Class_Descriptor cd_S3186C2;
extern VTBL_ENTRY _ZTI7S3186C2[];
extern  VTBL_ENTRY _ZTV7S3186C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3186C2[];
static Base_Class bases_S3186C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3186C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3186C3,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3186C4,    ABISELECT(40,24), //bcp->offset
    23, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S3186C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3186C5,    ABISELECT(8,4), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3186C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3186C1[];
extern void _ZN7S3186C32v3Ev();
extern void _ZN7S3186C23v13Ev();
extern void _ZN7S3186C23v14Ev();
extern void _ZN7S3186C23v15Ev();
extern void _ZN7S3186C23v16Ev();
extern void _ZN7S3186C23v17Ev();
extern void _ZN7S3186C23v18Ev();
extern void _ZN7S3186C23v19Ev();
extern void _ZN7S3186C12v1Ev();
extern void _ZN7S3186C12v2Ev();
extern void _ZN7S3186C32v3Ev();
extern void _ZN7S3186C52v7Ev();
extern void _ZN7S3186C52v8Ev();
extern void _ZN7S3186C52v9Ev();
extern void _ZN7S3186C53v10Ev();
extern void _ZN7S3186C53v11Ev();
extern void _ZN7S3186C53v12Ev();
extern void _ZN7S3186C32v3Ev();
extern void _ZN7S3186C42v4Ev();
extern void _ZN7S3186C42v5Ev();
extern void _ZN7S3186C42v6Ev();
static  VTBL_ENTRY vtc_S3186C1[] = {
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3186C1[0]),
  (VTBL_ENTRY)&_ZN7S3186C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3186C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3186C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3186C23v15Ev,
  (VTBL_ENTRY)&_ZN7S3186C23v16Ev,
  (VTBL_ENTRY)&_ZN7S3186C23v17Ev,
  (VTBL_ENTRY)&_ZN7S3186C23v18Ev,
  (VTBL_ENTRY)&_ZN7S3186C23v19Ev,
  (VTBL_ENTRY)&_ZN7S3186C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3186C12v2Ev,
  ABISELECT(32,20),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3186C1[0]),
  (VTBL_ENTRY)&_ZN7S3186C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3186C52v7Ev,
  (VTBL_ENTRY)&_ZN7S3186C52v8Ev,
  (VTBL_ENTRY)&_ZN7S3186C52v9Ev,
  (VTBL_ENTRY)&_ZN7S3186C53v10Ev,
  (VTBL_ENTRY)&_ZN7S3186C53v11Ev,
  (VTBL_ENTRY)&_ZN7S3186C53v12Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S3186C1[0]),
  (VTBL_ENTRY)&_ZN7S3186C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3186C42v4Ev,
  (VTBL_ENTRY)&_ZN7S3186C42v5Ev,
  (VTBL_ENTRY)&_ZN7S3186C42v6Ev,
};
extern VTBL_ENTRY _ZTV7S3186C1[];
extern void _ZN7S3186C32v3Ev();
extern void _ZN7S3186C23v13Ev();
extern void _ZN7S3186C23v14Ev();
extern void _ZN7S3186C23v15Ev();
extern void _ZN7S3186C23v16Ev();
extern void _ZN7S3186C23v17Ev();
extern void _ZN7S3186C23v18Ev();
extern void _ZN7S3186C23v19Ev();
static  VTBL_ENTRY _tg__ZTV7S3186C2__7S3186C1[] = {
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3186C2[0]),
  (VTBL_ENTRY)&_ZN7S3186C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3186C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3186C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3186C23v15Ev,
  (VTBL_ENTRY)&_ZN7S3186C23v16Ev,
  (VTBL_ENTRY)&_ZN7S3186C23v17Ev,
  (VTBL_ENTRY)&_ZN7S3186C23v18Ev,
  (VTBL_ENTRY)&_ZN7S3186C23v19Ev,
};
extern void _ZN7S3186C32v3Ev();
extern void _ZN7S3186C52v7Ev();
extern void _ZN7S3186C52v8Ev();
extern void _ZN7S3186C52v9Ev();
extern void _ZN7S3186C53v10Ev();
extern void _ZN7S3186C53v11Ev();
extern void _ZN7S3186C53v12Ev();
static  VTBL_ENTRY _tg__ZTV7S3186C57S3186C2__7S3186C1[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S3186C5[0]),
  (VTBL_ENTRY)&_ZN7S3186C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3186C52v7Ev,
  (VTBL_ENTRY)&_ZN7S3186C52v8Ev,
  (VTBL_ENTRY)&_ZN7S3186C52v9Ev,
  (VTBL_ENTRY)&_ZN7S3186C53v10Ev,
  (VTBL_ENTRY)&_ZN7S3186C53v11Ev,
  (VTBL_ENTRY)&_ZN7S3186C53v12Ev,
};
extern void _ZN7S3186C32v3Ev();
extern void _ZN7S3186C42v4Ev();
extern void _ZN7S3186C42v5Ev();
extern void _ZN7S3186C42v6Ev();
static  VTBL_ENTRY _tg__ZTV7S3186C4__7S3186C57S3186C2__7S3186C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S3186C5[0]),
  (VTBL_ENTRY)&_ZN7S3186C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3186C42v4Ev,
  (VTBL_ENTRY)&_ZN7S3186C42v5Ev,
  (VTBL_ENTRY)&_ZN7S3186C42v6Ev,
};
extern void _ZN7S3186C32v3Ev();
extern void _ZN7S3186C42v4Ev();
extern void _ZN7S3186C42v5Ev();
extern void _ZN7S3186C42v6Ev();
static  VTBL_ENTRY _tg__ZTV7S3186C4__7S3186C2__7S3186C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S3186C2[0]),
  (VTBL_ENTRY)&_ZN7S3186C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3186C42v4Ev,
  (VTBL_ENTRY)&_ZN7S3186C42v5Ev,
  (VTBL_ENTRY)&_ZN7S3186C42v6Ev,
};
extern void _ZN7S3186C32v3Ev();
extern void _ZN7S3186C52v7Ev();
extern void _ZN7S3186C52v8Ev();
extern void _ZN7S3186C52v9Ev();
extern void _ZN7S3186C53v10Ev();
extern void _ZN7S3186C53v11Ev();
extern void _ZN7S3186C53v12Ev();
static  VTBL_ENTRY _tg__ZTV7S3186C5__7S3186C2__7S3186C1[] = {
  ABISELECT(32,20),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3186C2[0]),
  (VTBL_ENTRY)&_ZN7S3186C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3186C52v7Ev,
  (VTBL_ENTRY)&_ZN7S3186C52v8Ev,
  (VTBL_ENTRY)&_ZN7S3186C52v9Ev,
  (VTBL_ENTRY)&_ZN7S3186C53v10Ev,
  (VTBL_ENTRY)&_ZN7S3186C53v11Ev,
  (VTBL_ENTRY)&_ZN7S3186C53v12Ev,
};
static  VTT_ENTRY vtt_S3186C1[] = {
  {&(_ZTV7S3186C1[3]),  3,33},
  {&(_tg__ZTV7S3186C2__7S3186C1[3]),  3,11},
  {&(_tg__ZTV7S3186C57S3186C2__7S3186C1[3]),  3,10},
  {&(_tg__ZTV7S3186C4__7S3186C57S3186C2__7S3186C1[6]),  6,10},
  {&(_tg__ZTV7S3186C4__7S3186C2__7S3186C1[6]),  6,10},
  {&(_tg__ZTV7S3186C5__7S3186C2__7S3186C1[3]),  3,10},
  {&(_ZTV7S3186C1[29]),  29,33},
  {&(_ZTV7S3186C1[16]),  16,33},
};
extern VTBL_ENTRY _ZTI7S3186C1[];
extern  VTBL_ENTRY _ZTV7S3186C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3186C1[];
Class_Descriptor cd_S3186C1 = {  "S3186C1", // class name
  bases_S3186C1, 6,
  &(vtc_S3186C1[0]), // expected_vtbl_contents
  &(vtt_S3186C1[0]), // expected_vtt_contents
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI7S3186C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3186C1),33, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3186C1),8, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6695C2  {
  virtual void  v3(); // _ZN7S6695C22v3Ev
  virtual void  v4(); // _ZN7S6695C22v4Ev
  virtual void  v5(); // _ZN7S6695C22v5Ev
  virtual void  v6(); // _ZN7S6695C22v6Ev
  virtual void  v7(); // _ZN7S6695C22v7Ev
  virtual void  v8(); // _ZN7S6695C22v8Ev
  virtual void  v9(); // _ZN7S6695C22v9Ev
  virtual void  v10(); // _ZN7S6695C23v10Ev
  virtual void  v11(); // _ZN7S6695C23v11Ev
  ~S6695C2(); // tgen
  S6695C2(); // tgen
};
//SIG(-1 S6695C2) C1{ v1 v2 v3 v4 v5 v6 v7 v8 v9}


void  S6695C2 ::v3(){vfunc_called(this, "_ZN7S6695C22v3Ev");}
void  S6695C2 ::v4(){vfunc_called(this, "_ZN7S6695C22v4Ev");}
void  S6695C2 ::v5(){vfunc_called(this, "_ZN7S6695C22v5Ev");}
void  S6695C2 ::v6(){vfunc_called(this, "_ZN7S6695C22v6Ev");}
void  S6695C2 ::v7(){vfunc_called(this, "_ZN7S6695C22v7Ev");}
void  S6695C2 ::v8(){vfunc_called(this, "_ZN7S6695C22v8Ev");}
void  S6695C2 ::v9(){vfunc_called(this, "_ZN7S6695C22v9Ev");}
void  S6695C2 ::v10(){vfunc_called(this, "_ZN7S6695C23v10Ev");}
void  S6695C2 ::v11(){vfunc_called(this, "_ZN7S6695C23v11Ev");}
S6695C2 ::~S6695C2(){ note_dtor("S6695C2", this);} // tgen
S6695C2 ::S6695C2(){ note_ctor("S6695C2", this);} // tgen

static void Test_S6695C2()
{
  extern Class_Descriptor cd_S6695C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S6695C2, buf);
    S6695C2 *dp, &lv = *(dp=new (buf) S6695C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S6695C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6695C2)");
    test_class_info(&lv, &cd_S6695C2);
    dp->~S6695C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6695C2(Test_S6695C2, "S6695C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S6695C2C1Ev();
extern void _ZN7S6695C2D1Ev();
Name_Map name_map_S6695C2[] = {
  NSPAIR(_ZN7S6695C2C1Ev),
  NSPAIR(_ZN7S6695C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6695C2[];
extern void _ZN7S6695C22v3Ev();
extern void _ZN7S6695C22v4Ev();
extern void _ZN7S6695C22v5Ev();
extern void _ZN7S6695C22v6Ev();
extern void _ZN7S6695C22v7Ev();
extern void _ZN7S6695C22v8Ev();
extern void _ZN7S6695C22v9Ev();
extern void _ZN7S6695C23v10Ev();
extern void _ZN7S6695C23v11Ev();
static  VTBL_ENTRY vtc_S6695C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6695C2[0]),
  (VTBL_ENTRY)&_ZN7S6695C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6695C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6695C23v11Ev,
};
extern VTBL_ENTRY _ZTI7S6695C2[];
extern  VTBL_ENTRY _ZTV7S6695C2[];
Class_Descriptor cd_S6695C2 = {  "S6695C2", // class name
  0,0,//no base classes
  &(vtc_S6695C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6695C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6695C2),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6695C4  {
  virtual void  v12(); // _ZN7S6695C43v12Ev
  ~S6695C4(); // tgen
  S6695C4(); // tgen
};
//SIG(-1 S6695C4) C1{ v1}


void  S6695C4 ::v12(){vfunc_called(this, "_ZN7S6695C43v12Ev");}
S6695C4 ::~S6695C4(){ note_dtor("S6695C4", this);} // tgen
S6695C4 ::S6695C4(){ note_ctor("S6695C4", this);} // tgen

static void Test_S6695C4()
{
  extern Class_Descriptor cd_S6695C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S6695C4, buf);
    S6695C4 *dp, &lv = *(dp=new (buf) S6695C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S6695C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6695C4)");
    test_class_info(&lv, &cd_S6695C4);
    dp->~S6695C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6695C4(Test_S6695C4, "S6695C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S6695C4C1Ev();
extern void _ZN7S6695C4D1Ev();
Name_Map name_map_S6695C4[] = {
  NSPAIR(_ZN7S6695C4C1Ev),
  NSPAIR(_ZN7S6695C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6695C4[];
extern void _ZN7S6695C43v12Ev();
static  VTBL_ENTRY vtc_S6695C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6695C4[0]),
  (VTBL_ENTRY)&_ZN7S6695C43v12Ev,
};
extern VTBL_ENTRY _ZTI7S6695C4[];
extern  VTBL_ENTRY _ZTV7S6695C4[];
Class_Descriptor cd_S6695C4 = {  "S6695C4", // class name
  0,0,//no base classes
  &(vtc_S6695C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6695C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6695C4),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6695C6  : virtual S6695C2 {
  __tsi64 s6695c6f0;
  virtual void  v13(); // _ZN7S6695C63v13Ev
  virtual void  v14(); // _ZN7S6695C63v14Ev
  virtual void  v15(); // _ZN7S6695C63v15Ev
  virtual void  v16(); // _ZN7S6695C63v16Ev
  ~S6695C6(); // tgen
  S6695C6(); // tgen
};
//SIG(-1 S6695C6) C1{ VBC2{ v5 v6 v7 v8 v9 v10 v11 v12 v13} v1 v2 v3 v4 FL}


void  S6695C6 ::v13(){vfunc_called(this, "_ZN7S6695C63v13Ev");}
void  S6695C6 ::v14(){vfunc_called(this, "_ZN7S6695C63v14Ev");}
void  S6695C6 ::v15(){vfunc_called(this, "_ZN7S6695C63v15Ev");}
void  S6695C6 ::v16(){vfunc_called(this, "_ZN7S6695C63v16Ev");}
S6695C6 ::~S6695C6(){ note_dtor("S6695C6", this);} // tgen
S6695C6 ::S6695C6(){ note_ctor("S6695C6", this);} // tgen

static void Test_S6695C6()
{
  extern Class_Descriptor cd_S6695C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S6695C6, buf);
    S6695C6 *dp, &lv = *(dp=new (buf) S6695C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S6695C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6695C6)");
    check_base_class_offset(lv, (S6695C2*), 0, "S6695C6");
    check_field_offset(lv, s6695c6f0, ABISELECT(8,4), "S6695C6.s6695c6f0");
    test_class_info(&lv, &cd_S6695C6);
    dp->~S6695C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6695C6(Test_S6695C6, "S6695C6", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S6695C6C1Ev();
extern void _ZN7S6695C6D1Ev();
Name_Map name_map_S6695C6[] = {
  NSPAIR(_ZN7S6695C6C1Ev),
  NSPAIR(_ZN7S6695C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6695C2;
extern VTBL_ENTRY _ZTI7S6695C2[];
extern  VTBL_ENTRY _ZTV7S6695C2[];
static Base_Class bases_S6695C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6695C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6695C6[];
extern void _ZN7S6695C22v3Ev();
extern void _ZN7S6695C22v4Ev();
extern void _ZN7S6695C22v5Ev();
extern void _ZN7S6695C22v6Ev();
extern void _ZN7S6695C22v7Ev();
extern void _ZN7S6695C22v8Ev();
extern void _ZN7S6695C22v9Ev();
extern void _ZN7S6695C23v10Ev();
extern void _ZN7S6695C23v11Ev();
extern void _ZN7S6695C63v13Ev();
extern void _ZN7S6695C63v14Ev();
extern void _ZN7S6695C63v15Ev();
extern void _ZN7S6695C63v16Ev();
static  VTBL_ENTRY vtc_S6695C6[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6695C6[0]),
  (VTBL_ENTRY)&_ZN7S6695C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6695C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6695C23v11Ev,
  (VTBL_ENTRY)&_ZN7S6695C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6695C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6695C63v15Ev,
  (VTBL_ENTRY)&_ZN7S6695C63v16Ev,
};
extern VTBL_ENTRY _ZTV7S6695C6[];
static  VTT_ENTRY vtt_S6695C6[] = {
  {&(_ZTV7S6695C6[12]),  12,25},
  {&(_ZTV7S6695C6[12]),  12,25},
};
extern VTBL_ENTRY _ZTI7S6695C6[];
extern  VTBL_ENTRY _ZTV7S6695C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6695C6[];
Class_Descriptor cd_S6695C6 = {  "S6695C6", // class name
  bases_S6695C6, 1,
  &(vtc_S6695C6[0]), // expected_vtbl_contents
  &(vtt_S6695C6[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S6695C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S6695C6),25, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6695C6),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6695C5  : S6695C2 , S6695C6 {
  virtual void  v17(); // _ZN7S6695C53v17Ev
  virtual void  v18(); // _ZN7S6695C53v18Ev
  ~S6695C5(); // tgen
  S6695C5(); // tgen
};
//SIG(-1 S6695C5) C1{ BC2{ v3 v4 v5 v6 v7 v8 v9 v10 v11} BC3{ VBC2 v12 v13 v14 v15 FL} v1 v2}


void  S6695C5 ::v17(){vfunc_called(this, "_ZN7S6695C53v17Ev");}
void  S6695C5 ::v18(){vfunc_called(this, "_ZN7S6695C53v18Ev");}
S6695C5 ::~S6695C5(){ note_dtor("S6695C5", this);} // tgen
S6695C5 ::S6695C5(){ note_ctor("S6695C5", this);} // tgen

static void Test_S6695C5()
{
  extern Class_Descriptor cd_S6695C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S6695C5, buf);
    S6695C5 *dp, &lv = *(dp=new (buf) S6695C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S6695C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6695C5)");
    /*is_ambiguous_... S6695C5::S6695C2 */ AMB_check_base_class_offset(lv, (S6695C2*), 0, "S6695C5");
    check_base_class_offset(lv, (S6695C2*)(S6695C6*), ABISELECT(8,4), "S6695C5");
    check_base_class_offset(lv, (S6695C6*), ABISELECT(8,4), "S6695C5");
    test_class_info(&lv, &cd_S6695C5);
    dp->~S6695C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6695C5(Test_S6695C5, "S6695C5", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S6695C5C1Ev();
extern void _ZN7S6695C5D1Ev();
Name_Map name_map_S6695C5[] = {
  NSPAIR(_ZN7S6695C5C1Ev),
  NSPAIR(_ZN7S6695C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6695C2;
extern VTBL_ENTRY _ZTI7S6695C2[];
extern  VTBL_ENTRY _ZTV7S6695C2[];
extern Class_Descriptor cd_S6695C2;
extern VTBL_ENTRY _ZTI7S6695C2[];
extern  VTBL_ENTRY _ZTV7S6695C2[];
extern Class_Descriptor cd_S6695C6;
extern VTBL_ENTRY _ZTI7S6695C6[];
extern  VTBL_ENTRY _ZTV7S6695C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6695C6[];
static Base_Class bases_S6695C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6695C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6695C2,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S6695C6,    ABISELECT(8,4), //bcp->offset
    14, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6695C5[];
extern void _ZN7S6695C22v3Ev();
extern void _ZN7S6695C22v4Ev();
extern void _ZN7S6695C22v5Ev();
extern void _ZN7S6695C22v6Ev();
extern void _ZN7S6695C22v7Ev();
extern void _ZN7S6695C22v8Ev();
extern void _ZN7S6695C22v9Ev();
extern void _ZN7S6695C23v10Ev();
extern void _ZN7S6695C23v11Ev();
extern void _ZN7S6695C53v17Ev();
extern void _ZN7S6695C53v18Ev();
extern void _ZN7S6695C22v3Ev();
extern void _ZN7S6695C22v4Ev();
extern void _ZN7S6695C22v5Ev();
extern void _ZN7S6695C22v6Ev();
extern void _ZN7S6695C22v7Ev();
extern void _ZN7S6695C22v8Ev();
extern void _ZN7S6695C22v9Ev();
extern void _ZN7S6695C23v10Ev();
extern void _ZN7S6695C23v11Ev();
extern void _ZN7S6695C63v13Ev();
extern void _ZN7S6695C63v14Ev();
extern void _ZN7S6695C63v15Ev();
extern void _ZN7S6695C63v16Ev();
static  VTBL_ENTRY vtc_S6695C5[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S6695C5[0]),
  (VTBL_ENTRY)&_ZN7S6695C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6695C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6695C23v11Ev,
  (VTBL_ENTRY)&_ZN7S6695C53v17Ev,
  (VTBL_ENTRY)&_ZN7S6695C53v18Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S6695C5[0]),
  (VTBL_ENTRY)&_ZN7S6695C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6695C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6695C23v11Ev,
  (VTBL_ENTRY)&_ZN7S6695C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6695C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6695C63v15Ev,
  (VTBL_ENTRY)&_ZN7S6695C63v16Ev,
};
extern VTBL_ENTRY _ZTV7S6695C5[];
extern void _ZN7S6695C22v3Ev();
extern void _ZN7S6695C22v4Ev();
extern void _ZN7S6695C22v5Ev();
extern void _ZN7S6695C22v6Ev();
extern void _ZN7S6695C22v7Ev();
extern void _ZN7S6695C22v8Ev();
extern void _ZN7S6695C22v9Ev();
extern void _ZN7S6695C23v10Ev();
extern void _ZN7S6695C23v11Ev();
extern void _ZN7S6695C63v13Ev();
extern void _ZN7S6695C63v14Ev();
extern void _ZN7S6695C63v15Ev();
extern void _ZN7S6695C63v16Ev();
static  VTBL_ENTRY _tg__ZTV7S6695C6__7S6695C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6695C6[0]),
  (VTBL_ENTRY)&_ZN7S6695C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6695C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6695C23v11Ev,
  (VTBL_ENTRY)&_ZN7S6695C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6695C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6695C63v15Ev,
  (VTBL_ENTRY)&_ZN7S6695C63v16Ev,
};
static  VTT_ENTRY vtt_S6695C5[] = {
  {&(_ZTV7S6695C5[3]),  3,39},
  {&(_tg__ZTV7S6695C6__7S6695C5[12]),  12,25},
  {&(_tg__ZTV7S6695C6__7S6695C5[12]),  12,25},
  {&(_ZTV7S6695C5[26]),  26,39},
  {&(_ZTV7S6695C5[26]),  26,39},
};
extern VTBL_ENTRY _ZTI7S6695C5[];
extern  VTBL_ENTRY _ZTV7S6695C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6695C5[];
Class_Descriptor cd_S6695C5 = {  "S6695C5", // class name
  bases_S6695C5, 3,
  &(vtc_S6695C5[0]), // expected_vtbl_contents
  &(vtt_S6695C5[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S6695C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6695C5),39, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6695C5),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6695C3  : S6695C4 , S6695C5 {
  virtual  ~S6695C3(); // _ZN7S6695C3D2Ev
  virtual void  v19(); // _ZN7S6695C33v19Ev
  virtual void  v20(); // _ZN7S6695C33v20Ev
  S6695C3(); // tgen
};
//SIG(-1 S6695C3) C1{ BC2{ v3} BC3{ BC4{ v4 v5 v6 v7 v8 v9 v10 v11 v12} BC5{ VBC4 v13 v14 v15 v16 FL} v17 v18} vd v1 v2}


 S6695C3 ::~S6695C3(){ note_dtor("S6695C3", this);}
void  S6695C3 ::v19(){vfunc_called(this, "_ZN7S6695C33v19Ev");}
void  S6695C3 ::v20(){vfunc_called(this, "_ZN7S6695C33v20Ev");}
S6695C3 ::S6695C3(){ note_ctor("S6695C3", this);} // tgen

static void Test_S6695C3()
{
  extern Class_Descriptor cd_S6695C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S6695C3, buf);
    S6695C3 *dp, &lv = *(dp=new (buf) S6695C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S6695C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6695C3)");
    check_base_class_offset(lv, (S6695C4*), 0, "S6695C3");
    /*is_ambiguous_... S6695C5::S6695C2 */ AMB_check_base_class_offset(lv, (S6695C2*)(S6695C5*), ABISELECT(8,4), "S6695C3");
    check_base_class_offset(lv, (S6695C2*)(S6695C6*)(S6695C5*), ABISELECT(16,8), "S6695C3");
    check_base_class_offset(lv, (S6695C6*)(S6695C5*), ABISELECT(16,8), "S6695C3");
    check_base_class_offset(lv, (S6695C5*), ABISELECT(8,4), "S6695C3");
    test_class_info(&lv, &cd_S6695C3);
    dp->~S6695C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6695C3(Test_S6695C3, "S6695C3", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S6695C3C1Ev();
extern void _ZN7S6695C3D2Ev();
Name_Map name_map_S6695C3[] = {
  NSPAIR(_ZN7S6695C3C1Ev),
  NSPAIR(_ZN7S6695C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6695C4;
extern VTBL_ENTRY _ZTI7S6695C4[];
extern  VTBL_ENTRY _ZTV7S6695C4[];
extern Class_Descriptor cd_S6695C2;
extern VTBL_ENTRY _ZTI7S6695C2[];
extern  VTBL_ENTRY _ZTV7S6695C2[];
extern Class_Descriptor cd_S6695C2;
extern VTBL_ENTRY _ZTI7S6695C2[];
extern  VTBL_ENTRY _ZTV7S6695C2[];
extern Class_Descriptor cd_S6695C6;
extern VTBL_ENTRY _ZTI7S6695C6[];
extern  VTBL_ENTRY _ZTV7S6695C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6695C6[];
extern Class_Descriptor cd_S6695C5;
extern VTBL_ENTRY _ZTI7S6695C5[];
extern  VTBL_ENTRY _ZTV7S6695C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6695C5[];
static Base_Class bases_S6695C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6695C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6695C2,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S6695C2,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S6695C6,    ABISELECT(16,8), //bcp->offset
    22, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S6695C5,    ABISELECT(8,4), //bcp->offset
    8, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6695C3[];
extern void _ZN7S6695C43v12Ev();
extern void _ZN7S6695C3D1Ev();
extern void _ZN7S6695C3D0Ev();
extern void _ZN7S6695C33v19Ev();
extern void _ZN7S6695C33v20Ev();
extern void _ZN7S6695C22v3Ev();
extern void _ZN7S6695C22v4Ev();
extern void _ZN7S6695C22v5Ev();
extern void _ZN7S6695C22v6Ev();
extern void _ZN7S6695C22v7Ev();
extern void _ZN7S6695C22v8Ev();
extern void _ZN7S6695C22v9Ev();
extern void _ZN7S6695C23v10Ev();
extern void _ZN7S6695C23v11Ev();
extern void _ZN7S6695C53v17Ev();
extern void _ZN7S6695C53v18Ev();
extern void _ZN7S6695C22v3Ev();
extern void _ZN7S6695C22v4Ev();
extern void _ZN7S6695C22v5Ev();
extern void _ZN7S6695C22v6Ev();
extern void _ZN7S6695C22v7Ev();
extern void _ZN7S6695C22v8Ev();
extern void _ZN7S6695C22v9Ev();
extern void _ZN7S6695C23v10Ev();
extern void _ZN7S6695C23v11Ev();
extern void _ZN7S6695C63v13Ev();
extern void _ZN7S6695C63v14Ev();
extern void _ZN7S6695C63v15Ev();
extern void _ZN7S6695C63v16Ev();
static  VTBL_ENTRY vtc_S6695C3[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S6695C3[0]),
  (VTBL_ENTRY)&_ZN7S6695C43v12Ev,
  (VTBL_ENTRY)&_ZN7S6695C3D1Ev,
  (VTBL_ENTRY)&_ZN7S6695C3D0Ev,
  (VTBL_ENTRY)&_ZN7S6695C33v19Ev,
  (VTBL_ENTRY)&_ZN7S6695C33v20Ev,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S6695C3[0]),
  (VTBL_ENTRY)&_ZN7S6695C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6695C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6695C23v11Ev,
  (VTBL_ENTRY)&_ZN7S6695C53v17Ev,
  (VTBL_ENTRY)&_ZN7S6695C53v18Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6695C3[0]),
  (VTBL_ENTRY)&_ZN7S6695C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6695C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6695C23v11Ev,
  (VTBL_ENTRY)&_ZN7S6695C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6695C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6695C63v15Ev,
  (VTBL_ENTRY)&_ZN7S6695C63v16Ev,
};
extern VTBL_ENTRY _ZTV7S6695C3[];
extern void _ZN7S6695C22v3Ev();
extern void _ZN7S6695C22v4Ev();
extern void _ZN7S6695C22v5Ev();
extern void _ZN7S6695C22v6Ev();
extern void _ZN7S6695C22v7Ev();
extern void _ZN7S6695C22v8Ev();
extern void _ZN7S6695C22v9Ev();
extern void _ZN7S6695C23v10Ev();
extern void _ZN7S6695C23v11Ev();
extern void _ZN7S6695C53v17Ev();
extern void _ZN7S6695C53v18Ev();
static  VTBL_ENTRY _tg__ZTV7S6695C5__7S6695C3[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S6695C5[0]),
  (VTBL_ENTRY)&_ZN7S6695C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6695C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6695C23v11Ev,
  (VTBL_ENTRY)&_ZN7S6695C53v17Ev,
  (VTBL_ENTRY)&_ZN7S6695C53v18Ev,
};
extern void _ZN7S6695C22v3Ev();
extern void _ZN7S6695C22v4Ev();
extern void _ZN7S6695C22v5Ev();
extern void _ZN7S6695C22v6Ev();
extern void _ZN7S6695C22v7Ev();
extern void _ZN7S6695C22v8Ev();
extern void _ZN7S6695C22v9Ev();
extern void _ZN7S6695C23v10Ev();
extern void _ZN7S6695C23v11Ev();
extern void _ZN7S6695C63v13Ev();
extern void _ZN7S6695C63v14Ev();
extern void _ZN7S6695C63v15Ev();
extern void _ZN7S6695C63v16Ev();
static  VTBL_ENTRY _tg__ZTV7S6695C67S6695C5__7S6695C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6695C6[0]),
  (VTBL_ENTRY)&_ZN7S6695C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6695C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6695C23v11Ev,
  (VTBL_ENTRY)&_ZN7S6695C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6695C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6695C63v15Ev,
  (VTBL_ENTRY)&_ZN7S6695C63v16Ev,
};
extern void _ZN7S6695C22v3Ev();
extern void _ZN7S6695C22v4Ev();
extern void _ZN7S6695C22v5Ev();
extern void _ZN7S6695C22v6Ev();
extern void _ZN7S6695C22v7Ev();
extern void _ZN7S6695C22v8Ev();
extern void _ZN7S6695C22v9Ev();
extern void _ZN7S6695C23v10Ev();
extern void _ZN7S6695C23v11Ev();
extern void _ZN7S6695C63v13Ev();
extern void _ZN7S6695C63v14Ev();
extern void _ZN7S6695C63v15Ev();
extern void _ZN7S6695C63v16Ev();
static  VTBL_ENTRY _tg__ZTV7S6695C6__7S6695C5__7S6695C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S6695C5[0]),
  (VTBL_ENTRY)&_ZN7S6695C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6695C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6695C23v11Ev,
  (VTBL_ENTRY)&_ZN7S6695C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6695C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6695C63v15Ev,
  (VTBL_ENTRY)&_ZN7S6695C63v16Ev,
};
static  VTT_ENTRY vtt_S6695C3[] = {
  {&(_ZTV7S6695C3[3]),  3,47},
  {&(_tg__ZTV7S6695C5__7S6695C3[3]),  3,14},
  {&(_tg__ZTV7S6695C67S6695C5__7S6695C3[12]),  12,25},
  {&(_tg__ZTV7S6695C67S6695C5__7S6695C3[12]),  12,25},
  {&(_tg__ZTV7S6695C6__7S6695C5__7S6695C3[12]),  12,25},
  {&(_tg__ZTV7S6695C6__7S6695C5__7S6695C3[12]),  12,25},
  {&(_ZTV7S6695C3[11]),  11,47},
  {&(_ZTV7S6695C3[34]),  34,47},
  {&(_ZTV7S6695C3[34]),  34,47},
};
extern VTBL_ENTRY _ZTI7S6695C3[];
extern  VTBL_ENTRY _ZTV7S6695C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6695C3[];
Class_Descriptor cd_S6695C3 = {  "S6695C3", // class name
  bases_S6695C3, 5,
  &(vtc_S6695C3[0]), // expected_vtbl_contents
  &(vtt_S6695C3[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S6695C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6695C3),47, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6695C3),9, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6695C1  : S6695C2 , virtual S6695C3 {
  int s6695c1f0;
  virtual  ~S6695C1(); // _ZN7S6695C1D2Ev
  virtual void  v1(); // _ZN7S6695C12v1Ev
  virtual void  v2(); // _ZN7S6695C12v2Ev
  S6695C1(); // tgen
};
//SIG(1 S6695C1) C1{ BC2{ v3 v4 v5 v6 v7 v8 v9 v10 v11} VBC3{ BC4{ v12} BC5{ BC2 BC6{ VBC2 v13 v14 v15 v16 FL} v17 v18} vd v19 v20} vd v1 v2 Fi}


 S6695C1 ::~S6695C1(){ note_dtor("S6695C1", this);}
void  S6695C1 ::v1(){vfunc_called(this, "_ZN7S6695C12v1Ev");}
void  S6695C1 ::v2(){vfunc_called(this, "_ZN7S6695C12v2Ev");}
S6695C1 ::S6695C1(){ note_ctor("S6695C1", this);} // tgen

static void Test_S6695C1()
{
  extern Class_Descriptor cd_S6695C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S6695C1, buf);
    S6695C1 *dp, &lv = *(dp=new (buf) S6695C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S6695C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6695C1)");
    /*is_ambiguous_... S6695C1::S6695C2 */ AMB_check_base_class_offset(lv, (S6695C2*), 0, "S6695C1");
    check_base_class_offset(lv, (S6695C4*)(S6695C3*), ABISELECT(16,8), "S6695C1");
    /*is_ambiguous_... S6695C5::S6695C2 */ AMB_check_base_class_offset(lv, (S6695C2*)(S6695C5*)(S6695C3*), ABISELECT(24,12), "S6695C1");
    check_base_class_offset(lv, (S6695C2*)(S6695C6*)(S6695C5*)(S6695C3*), ABISELECT(32,16), "S6695C1");
    check_base_class_offset(lv, (S6695C6*)(S6695C5*)(S6695C3*), ABISELECT(32,16), "S6695C1");
    check_base_class_offset(lv, (S6695C5*)(S6695C3*), ABISELECT(24,12), "S6695C1");
    check_base_class_offset(lv, (S6695C3*), ABISELECT(16,8), "S6695C1");
    check_field_offset(lv, s6695c1f0, ABISELECT(8,4), "S6695C1.s6695c1f0");
    test_class_info(&lv, &cd_S6695C1);
    dp->~S6695C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6695C1(Test_S6695C1, "S6695C1", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN7S6695C1C1Ev();
extern void _ZN7S6695C1D2Ev();
Name_Map name_map_S6695C1[] = {
  NSPAIR(_ZN7S6695C1C1Ev),
  NSPAIR(_ZN7S6695C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6695C2;
extern VTBL_ENTRY _ZTI7S6695C2[];
extern  VTBL_ENTRY _ZTV7S6695C2[];
extern Class_Descriptor cd_S6695C4;
extern VTBL_ENTRY _ZTI7S6695C4[];
extern  VTBL_ENTRY _ZTV7S6695C4[];
extern Class_Descriptor cd_S6695C2;
extern VTBL_ENTRY _ZTI7S6695C2[];
extern  VTBL_ENTRY _ZTV7S6695C2[];
extern Class_Descriptor cd_S6695C2;
extern VTBL_ENTRY _ZTI7S6695C2[];
extern  VTBL_ENTRY _ZTV7S6695C2[];
extern Class_Descriptor cd_S6695C6;
extern VTBL_ENTRY _ZTI7S6695C6[];
extern  VTBL_ENTRY _ZTV7S6695C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6695C6[];
extern Class_Descriptor cd_S6695C5;
extern VTBL_ENTRY _ZTI7S6695C5[];
extern  VTBL_ENTRY _ZTV7S6695C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6695C5[];
extern Class_Descriptor cd_S6695C3;
extern VTBL_ENTRY _ZTI7S6695C3[];
extern  VTBL_ENTRY _ZTV7S6695C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6695C3[];
static Base_Class bases_S6695C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6695C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6695C4,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S6695C2,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S6695C2,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S6695C6,    ABISELECT(32,16), //bcp->offset
    58, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S6695C5,    ABISELECT(24,12), //bcp->offset
    44, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S6695C3,    ABISELECT(16,8), //bcp->offset
    17, //bcp->virtual_function_table_offset
    22, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6695C1[];
extern void _ZN7S6695C22v3Ev();
extern void _ZN7S6695C22v4Ev();
extern void _ZN7S6695C22v5Ev();
extern void _ZN7S6695C22v6Ev();
extern void _ZN7S6695C22v7Ev();
extern void _ZN7S6695C22v8Ev();
extern void _ZN7S6695C22v9Ev();
extern void _ZN7S6695C23v10Ev();
extern void _ZN7S6695C23v11Ev();
extern void _ZN7S6695C1D1Ev();
extern void _ZN7S6695C1D0Ev();
extern void _ZN7S6695C12v1Ev();
extern void _ZN7S6695C12v2Ev();
extern void _ZN7S6695C43v12Ev();
extern void ABISELECT(_ZTv0_n40_N7S6695C1D1Ev,_ZTv0_n20_N7S6695C1D1Ev)();
extern void ABISELECT(_ZThn16_N7S6695C1D1Ev,_ZThn8_N7S6695C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S6695C1D0Ev,_ZTv0_n20_N7S6695C1D0Ev)();
extern void ABISELECT(_ZThn16_N7S6695C1D0Ev,_ZThn8_N7S6695C1D0Ev)() __attribute__((weak));
extern void _ZN7S6695C33v19Ev();
extern void _ZN7S6695C33v20Ev();
extern void _ZN7S6695C22v3Ev();
extern void _ZN7S6695C22v4Ev();
extern void _ZN7S6695C22v5Ev();
extern void _ZN7S6695C22v6Ev();
extern void _ZN7S6695C22v7Ev();
extern void _ZN7S6695C22v8Ev();
extern void _ZN7S6695C22v9Ev();
extern void _ZN7S6695C23v10Ev();
extern void _ZN7S6695C23v11Ev();
extern void _ZN7S6695C53v17Ev();
extern void _ZN7S6695C53v18Ev();
extern void _ZN7S6695C22v3Ev();
extern void _ZN7S6695C22v4Ev();
extern void _ZN7S6695C22v5Ev();
extern void _ZN7S6695C22v6Ev();
extern void _ZN7S6695C22v7Ev();
extern void _ZN7S6695C22v8Ev();
extern void _ZN7S6695C22v9Ev();
extern void _ZN7S6695C23v10Ev();
extern void _ZN7S6695C23v11Ev();
extern void _ZN7S6695C63v13Ev();
extern void _ZN7S6695C63v14Ev();
extern void _ZN7S6695C63v15Ev();
extern void _ZN7S6695C63v16Ev();
static  VTBL_ENTRY vtc_S6695C1[] = {
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S6695C1[0]),
  (VTBL_ENTRY)&_ZN7S6695C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6695C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6695C23v11Ev,
  (VTBL_ENTRY)&_ZN7S6695C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6695C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6695C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6695C12v2Ev,
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(-16,-8),
  0,
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6695C1[0]),
  (VTBL_ENTRY)&_ZN7S6695C43v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S6695C1D1Ev,_ZTv0_n20_N7S6695C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S6695C1D0Ev,_ZTv0_n20_N7S6695C1D0Ev),
  (VTBL_ENTRY)&_ZN7S6695C33v19Ev,
  (VTBL_ENTRY)&_ZN7S6695C33v20Ev,
  ABISELECT(8,4),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S6695C1[0]),
  (VTBL_ENTRY)&_ZN7S6695C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6695C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6695C23v11Ev,
  (VTBL_ENTRY)&_ZN7S6695C53v17Ev,
  (VTBL_ENTRY)&_ZN7S6695C53v18Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S6695C1[0]),
  (VTBL_ENTRY)&_ZN7S6695C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6695C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6695C23v11Ev,
  (VTBL_ENTRY)&_ZN7S6695C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6695C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6695C63v15Ev,
  (VTBL_ENTRY)&_ZN7S6695C63v16Ev,
};
extern VTBL_ENTRY _ZTV7S6695C1[];
extern void _ZN7S6695C43v12Ev();
extern void _ZN7S6695C3D1Ev();
extern void _ZN7S6695C3D0Ev();
extern void _ZN7S6695C33v19Ev();
extern void _ZN7S6695C33v20Ev();
static  VTBL_ENTRY _tg__ZTV7S6695C3__7S6695C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S6695C3[0]),
  (VTBL_ENTRY)&_ZN7S6695C43v12Ev,
  (VTBL_ENTRY)&_ZN7S6695C3D1Ev,
  (VTBL_ENTRY)&_ZN7S6695C3D0Ev,
  (VTBL_ENTRY)&_ZN7S6695C33v19Ev,
  (VTBL_ENTRY)&_ZN7S6695C33v20Ev,
};
extern void _ZN7S6695C22v3Ev();
extern void _ZN7S6695C22v4Ev();
extern void _ZN7S6695C22v5Ev();
extern void _ZN7S6695C22v6Ev();
extern void _ZN7S6695C22v7Ev();
extern void _ZN7S6695C22v8Ev();
extern void _ZN7S6695C22v9Ev();
extern void _ZN7S6695C23v10Ev();
extern void _ZN7S6695C23v11Ev();
extern void _ZN7S6695C53v17Ev();
extern void _ZN7S6695C53v18Ev();
static  VTBL_ENTRY _tg__ZTV7S6695C57S6695C3__7S6695C1[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S6695C5[0]),
  (VTBL_ENTRY)&_ZN7S6695C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6695C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6695C23v11Ev,
  (VTBL_ENTRY)&_ZN7S6695C53v17Ev,
  (VTBL_ENTRY)&_ZN7S6695C53v18Ev,
};
extern void _ZN7S6695C22v3Ev();
extern void _ZN7S6695C22v4Ev();
extern void _ZN7S6695C22v5Ev();
extern void _ZN7S6695C22v6Ev();
extern void _ZN7S6695C22v7Ev();
extern void _ZN7S6695C22v8Ev();
extern void _ZN7S6695C22v9Ev();
extern void _ZN7S6695C23v10Ev();
extern void _ZN7S6695C23v11Ev();
extern void _ZN7S6695C63v13Ev();
extern void _ZN7S6695C63v14Ev();
extern void _ZN7S6695C63v15Ev();
extern void _ZN7S6695C63v16Ev();
static  VTBL_ENTRY _tg__ZTV7S6695C67S6695C57S6695C3__7S6695C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6695C6[0]),
  (VTBL_ENTRY)&_ZN7S6695C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6695C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6695C23v11Ev,
  (VTBL_ENTRY)&_ZN7S6695C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6695C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6695C63v15Ev,
  (VTBL_ENTRY)&_ZN7S6695C63v16Ev,
};
extern void _ZN7S6695C22v3Ev();
extern void _ZN7S6695C22v4Ev();
extern void _ZN7S6695C22v5Ev();
extern void _ZN7S6695C22v6Ev();
extern void _ZN7S6695C22v7Ev();
extern void _ZN7S6695C22v8Ev();
extern void _ZN7S6695C22v9Ev();
extern void _ZN7S6695C23v10Ev();
extern void _ZN7S6695C23v11Ev();
extern void _ZN7S6695C63v13Ev();
extern void _ZN7S6695C63v14Ev();
extern void _ZN7S6695C63v15Ev();
extern void _ZN7S6695C63v16Ev();
static  VTBL_ENTRY _tg__ZTV7S6695C6__7S6695C57S6695C3__7S6695C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S6695C5[0]),
  (VTBL_ENTRY)&_ZN7S6695C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6695C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6695C23v11Ev,
  (VTBL_ENTRY)&_ZN7S6695C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6695C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6695C63v15Ev,
  (VTBL_ENTRY)&_ZN7S6695C63v16Ev,
};
extern void _ZN7S6695C22v3Ev();
extern void _ZN7S6695C22v4Ev();
extern void _ZN7S6695C22v5Ev();
extern void _ZN7S6695C22v6Ev();
extern void _ZN7S6695C22v7Ev();
extern void _ZN7S6695C22v8Ev();
extern void _ZN7S6695C22v9Ev();
extern void _ZN7S6695C23v10Ev();
extern void _ZN7S6695C23v11Ev();
extern void _ZN7S6695C53v17Ev();
extern void _ZN7S6695C53v18Ev();
static  VTBL_ENTRY _tg__ZTV7S6695C5__7S6695C3__7S6695C1[] = {
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S6695C3[0]),
  (VTBL_ENTRY)&_ZN7S6695C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6695C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6695C23v11Ev,
  (VTBL_ENTRY)&_ZN7S6695C53v17Ev,
  (VTBL_ENTRY)&_ZN7S6695C53v18Ev,
};
extern void _ZN7S6695C22v3Ev();
extern void _ZN7S6695C22v4Ev();
extern void _ZN7S6695C22v5Ev();
extern void _ZN7S6695C22v6Ev();
extern void _ZN7S6695C22v7Ev();
extern void _ZN7S6695C22v8Ev();
extern void _ZN7S6695C22v9Ev();
extern void _ZN7S6695C23v10Ev();
extern void _ZN7S6695C23v11Ev();
extern void _ZN7S6695C63v13Ev();
extern void _ZN7S6695C63v14Ev();
extern void _ZN7S6695C63v15Ev();
extern void _ZN7S6695C63v16Ev();
static  VTBL_ENTRY _tg__ZTV7S6695C67S6695C5__7S6695C3__7S6695C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6695C3[0]),
  (VTBL_ENTRY)&_ZN7S6695C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6695C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6695C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6695C23v11Ev,
  (VTBL_ENTRY)&_ZN7S6695C63v13Ev,
  (VTBL_ENTRY)&_ZN7S6695C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6695C63v15Ev,
  (VTBL_ENTRY)&_ZN7S6695C63v16Ev,
};
static  VTT_ENTRY vtt_S6695C1[] = {
  {&(_ZTV7S6695C1[4]),  4,83},
  {&(_ZTV7S6695C1[39]),  39,83},
  {&(_ZTV7S6695C1[47]),  47,83},
  {&(_ZTV7S6695C1[70]),  70,83},
  {&(_ZTV7S6695C1[70]),  70,83},
  {&(_tg__ZTV7S6695C3__7S6695C1[3]),  3,8},
  {&(_tg__ZTV7S6695C57S6695C3__7S6695C1[3]),  3,14},
  {&(_tg__ZTV7S6695C67S6695C57S6695C3__7S6695C1[12]),  12,25},
  {&(_tg__ZTV7S6695C67S6695C57S6695C3__7S6695C1[12]),  12,25},
  {&(_tg__ZTV7S6695C6__7S6695C57S6695C3__7S6695C1[12]),  12,25},
  {&(_tg__ZTV7S6695C6__7S6695C57S6695C3__7S6695C1[12]),  12,25},
  {&(_tg__ZTV7S6695C5__7S6695C3__7S6695C1[3]),  3,14},
  {&(_tg__ZTV7S6695C67S6695C5__7S6695C3__7S6695C1[12]),  12,25},
  {&(_tg__ZTV7S6695C67S6695C5__7S6695C3__7S6695C1[12]),  12,25},
};
extern VTBL_ENTRY _ZTI7S6695C1[];
extern  VTBL_ENTRY _ZTV7S6695C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6695C1[];
static VTBL_ENTRY alt_thunk_names120[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S6695C1D0Ev,_ZTv0_n20_N7S6695C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6695C1D0Ev,_ZThn8_N7S6695C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S6695C1D1Ev,_ZTv0_n20_N7S6695C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S6695C1D1Ev,_ZThn8_N7S6695C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6695C1 = {  "S6695C1", // class name
  bases_S6695C1, 7,
  &(vtc_S6695C1[0]), // expected_vtbl_contents
  &(vtt_S6695C1[0]), // expected_vtt_contents
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI7S6695C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6695C1),83, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6695C1),14, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names120,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3759C2  : S1679C4_nt {
  virtual void  v8(); // _ZN7S3759C22v8Ev
  virtual void  v9(); // _ZN7S3759C22v9Ev
  virtual void  v10(); // _ZN7S3759C23v10Ev
  virtual void  v11(); // _ZN7S3759C23v11Ev
  virtual void  v12(); // _ZN7S3759C23v12Ev
  virtual void  v13(); // _ZN7S3759C23v13Ev
  virtual void  v14(); // _ZN7S3759C23v14Ev
  virtual void  v15(); // _ZN7S3759C23v15Ev
  virtual void  v16(); // _ZN7S3759C23v16Ev
  virtual void  v17(); // _ZN7S3759C23v17Ev
  virtual void  v18(); // _ZN7S3759C23v18Ev
  virtual void  v19(); // _ZN7S3759C23v19Ev
  ~S3759C2(); // tgen
  S3759C2(); // tgen
};
//SIG(-1 S3759C2) C1{ BC2{ vd m Fi} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


void  S3759C2 ::v8(){vfunc_called(this, "_ZN7S3759C22v8Ev");}
void  S3759C2 ::v9(){vfunc_called(this, "_ZN7S3759C22v9Ev");}
void  S3759C2 ::v10(){vfunc_called(this, "_ZN7S3759C23v10Ev");}
void  S3759C2 ::v11(){vfunc_called(this, "_ZN7S3759C23v11Ev");}
void  S3759C2 ::v12(){vfunc_called(this, "_ZN7S3759C23v12Ev");}
void  S3759C2 ::v13(){vfunc_called(this, "_ZN7S3759C23v13Ev");}
void  S3759C2 ::v14(){vfunc_called(this, "_ZN7S3759C23v14Ev");}
void  S3759C2 ::v15(){vfunc_called(this, "_ZN7S3759C23v15Ev");}
void  S3759C2 ::v16(){vfunc_called(this, "_ZN7S3759C23v16Ev");}
void  S3759C2 ::v17(){vfunc_called(this, "_ZN7S3759C23v17Ev");}
void  S3759C2 ::v18(){vfunc_called(this, "_ZN7S3759C23v18Ev");}
void  S3759C2 ::v19(){vfunc_called(this, "_ZN7S3759C23v19Ev");}
S3759C2 ::~S3759C2(){ note_dtor("S3759C2", this);} // tgen
S3759C2 ::S3759C2(){ note_ctor("S3759C2", this);} // tgen

static void Test_S3759C2()
{
  extern Class_Descriptor cd_S3759C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3759C2, buf);
    S3759C2 *dp, &lv = *(dp=new (buf) S3759C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3759C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3759C2)");
    check_base_class_offset(lv, (S1679C4_nt*), 0, "S3759C2");
    test_class_info(&lv, &cd_S3759C2);
    dp->~S3759C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3759C2(Test_S3759C2, "S3759C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3759C2C1Ev();
extern void _ZN7S3759C2D1Ev();
Name_Map name_map_S3759C2[] = {
  NSPAIR(_ZN7S3759C2C1Ev),
  NSPAIR(_ZN7S3759C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
static Base_Class bases_S3759C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3759C2[];
extern void _ZN7S3759C2D1Ev();
extern void _ZN7S3759C2D0Ev();
extern void _ZN7S3759C22v8Ev();
extern void _ZN7S3759C22v9Ev();
extern void _ZN7S3759C23v10Ev();
extern void _ZN7S3759C23v11Ev();
extern void _ZN7S3759C23v12Ev();
extern void _ZN7S3759C23v13Ev();
extern void _ZN7S3759C23v14Ev();
extern void _ZN7S3759C23v15Ev();
extern void _ZN7S3759C23v16Ev();
extern void _ZN7S3759C23v17Ev();
extern void _ZN7S3759C23v18Ev();
extern void _ZN7S3759C23v19Ev();
static  VTBL_ENTRY vtc_S3759C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3759C2[0]),
  (VTBL_ENTRY)&_ZN7S3759C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3759C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3759C22v8Ev,
  (VTBL_ENTRY)&_ZN7S3759C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3759C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3759C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3759C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3759C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3759C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3759C23v15Ev,
  (VTBL_ENTRY)&_ZN7S3759C23v16Ev,
  (VTBL_ENTRY)&_ZN7S3759C23v17Ev,
  (VTBL_ENTRY)&_ZN7S3759C23v18Ev,
  (VTBL_ENTRY)&_ZN7S3759C23v19Ev,
};
extern VTBL_ENTRY _ZTI7S3759C2[];
extern  VTBL_ENTRY _ZTV7S3759C2[];
Class_Descriptor cd_S3759C2 = {  "S3759C2", // class name
  bases_S3759C2, 1,
  &(vtc_S3759C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3759C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3759C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3759C1  : S3759C2 {
  ::S3765C5_nt s3759c1f0;
  void *s3759c1f1;
  int s3759c1f2[2];
  char s3759c1f3;
  virtual  ~S3759C1(); // _ZN7S3759C1D1Ev
  virtual void  v1(); // _ZN7S3759C12v1Ev
  virtual void  v2(); // _ZN7S3759C12v2Ev
  virtual void  v3(); // _ZN7S3759C12v3Ev
  virtual void  v4(); // _ZN7S3759C12v4Ev
  virtual void  v5(); // _ZN7S3759C12v5Ev
  virtual void  v6(); // _ZN7S3759C12v6Ev
  virtual void  v7(); // _ZN7S3759C12v7Ev
  S3759C1(); // tgen
};
//SIG(1 S3759C1) C1{ BC2{ BC3{ vd m Fi} v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19} vd v1 v2 v3 v4 v5 v6 v7 FC4{ m Fp[2]} Fp Fi[2] Fc}


 S3759C1 ::~S3759C1(){ note_dtor("S3759C1", this);}
void  S3759C1 ::v1(){vfunc_called(this, "_ZN7S3759C12v1Ev");}
void  S3759C1 ::v2(){vfunc_called(this, "_ZN7S3759C12v2Ev");}
void  S3759C1 ::v3(){vfunc_called(this, "_ZN7S3759C12v3Ev");}
void  S3759C1 ::v4(){vfunc_called(this, "_ZN7S3759C12v4Ev");}
void  S3759C1 ::v5(){vfunc_called(this, "_ZN7S3759C12v5Ev");}
void  S3759C1 ::v6(){vfunc_called(this, "_ZN7S3759C12v6Ev");}
void  S3759C1 ::v7(){vfunc_called(this, "_ZN7S3759C12v7Ev");}
S3759C1 ::S3759C1(){ note_ctor("S3759C1", this);} // tgen

static void Test_S3759C1()
{
  extern Class_Descriptor cd_S3759C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S3759C1, buf);
    S3759C1 *dp, &lv = *(dp=new (buf) S3759C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S3759C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3759C1)");
    check_base_class_offset(lv, (S1679C4_nt*)(S3759C2*), 0, "S3759C1");
    check_base_class_offset(lv, (S3759C2*), 0, "S3759C1");
    check_field_offset(lv, s3759c1f0, ABISELECT(16,8), "S3759C1.s3759c1f0");
    check_field_offset(lv, s3759c1f1, ABISELECT(32,16), "S3759C1.s3759c1f1");
    check_field_offset(lv, s3759c1f2, ABISELECT(40,20), "S3759C1.s3759c1f2");
    check_field_offset(lv, s3759c1f3, ABISELECT(48,28), "S3759C1.s3759c1f3");
    test_class_info(&lv, &cd_S3759C1);
    dp->~S3759C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3759C1(Test_S3759C1, "S3759C1", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN7S3759C1C1Ev();
extern void _ZN7S3759C1D1Ev();
Name_Map name_map_S3759C1[] = {
  NSPAIR(_ZN7S3759C1C1Ev),
  NSPAIR(_ZN7S3759C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
extern Class_Descriptor cd_S3759C2;
extern VTBL_ENTRY _ZTI7S3759C2[];
extern  VTBL_ENTRY _ZTV7S3759C2[];
static Base_Class bases_S3759C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3759C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3759C1[];
extern void _ZN7S3759C1D1Ev();
extern void _ZN7S3759C1D0Ev();
extern void _ZN7S3759C22v8Ev();
extern void _ZN7S3759C22v9Ev();
extern void _ZN7S3759C23v10Ev();
extern void _ZN7S3759C23v11Ev();
extern void _ZN7S3759C23v12Ev();
extern void _ZN7S3759C23v13Ev();
extern void _ZN7S3759C23v14Ev();
extern void _ZN7S3759C23v15Ev();
extern void _ZN7S3759C23v16Ev();
extern void _ZN7S3759C23v17Ev();
extern void _ZN7S3759C23v18Ev();
extern void _ZN7S3759C23v19Ev();
extern void _ZN7S3759C12v1Ev();
extern void _ZN7S3759C12v2Ev();
extern void _ZN7S3759C12v3Ev();
extern void _ZN7S3759C12v4Ev();
extern void _ZN7S3759C12v5Ev();
extern void _ZN7S3759C12v6Ev();
extern void _ZN7S3759C12v7Ev();
static  VTBL_ENTRY vtc_S3759C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3759C1[0]),
  (VTBL_ENTRY)&_ZN7S3759C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3759C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3759C22v8Ev,
  (VTBL_ENTRY)&_ZN7S3759C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3759C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3759C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3759C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3759C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3759C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3759C23v15Ev,
  (VTBL_ENTRY)&_ZN7S3759C23v16Ev,
  (VTBL_ENTRY)&_ZN7S3759C23v17Ev,
  (VTBL_ENTRY)&_ZN7S3759C23v18Ev,
  (VTBL_ENTRY)&_ZN7S3759C23v19Ev,
  (VTBL_ENTRY)&_ZN7S3759C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3759C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3759C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3759C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3759C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3759C12v6Ev,
  (VTBL_ENTRY)&_ZN7S3759C12v7Ev,
};
extern VTBL_ENTRY _ZTI7S3759C1[];
extern  VTBL_ENTRY _ZTV7S3759C1[];
Class_Descriptor cd_S3759C1 = {  "S3759C1", // class name
  bases_S3759C1, 2,
  &(vtc_S3759C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI7S3759C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3759C1),23, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20156C2  {
  int s20156c2f0;
  __tsi64 s20156c2f1;
  virtual  ~S20156C2(); // _ZN8S20156C2D1Ev
  virtual void  v3(); // _ZN8S20156C22v3Ev
  virtual void  v4(); // _ZN8S20156C22v4Ev
  virtual void  v5(); // _ZN8S20156C22v5Ev
  S20156C2(); // tgen
};
//SIG(-1 S20156C2) C1{ vd v1 v2 v3 Fi FL}


 S20156C2 ::~S20156C2(){ note_dtor("S20156C2", this);}
void  S20156C2 ::v3(){vfunc_called(this, "_ZN8S20156C22v3Ev");}
void  S20156C2 ::v4(){vfunc_called(this, "_ZN8S20156C22v4Ev");}
void  S20156C2 ::v5(){vfunc_called(this, "_ZN8S20156C22v5Ev");}
S20156C2 ::S20156C2(){ note_ctor("S20156C2", this);} // tgen

static void Test_S20156C2()
{
  extern Class_Descriptor cd_S20156C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S20156C2, buf);
    S20156C2 *dp, &lv = *(dp=new (buf) S20156C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S20156C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20156C2)");
    check_field_offset(lv, s20156c2f0, ABISELECT(8,4), "S20156C2.s20156c2f0");
    check_field_offset(lv, s20156c2f1, ABISELECT(16,8), "S20156C2.s20156c2f1");
    test_class_info(&lv, &cd_S20156C2);
    dp->~S20156C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20156C2(Test_S20156C2, "S20156C2", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S20156C2C1Ev();
extern void _ZN8S20156C2D1Ev();
Name_Map name_map_S20156C2[] = {
  NSPAIR(_ZN8S20156C2C1Ev),
  NSPAIR(_ZN8S20156C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20156C2[];
extern void _ZN8S20156C2D1Ev();
extern void _ZN8S20156C2D0Ev();
extern void _ZN8S20156C22v3Ev();
extern void _ZN8S20156C22v4Ev();
extern void _ZN8S20156C22v5Ev();
static  VTBL_ENTRY vtc_S20156C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20156C2[0]),
  (VTBL_ENTRY)&_ZN8S20156C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20156C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20156C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20156C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20156C22v5Ev,
};
extern VTBL_ENTRY _ZTI8S20156C2[];
extern  VTBL_ENTRY _ZTV8S20156C2[];
Class_Descriptor cd_S20156C2 = {  "S20156C2", // class name
  0,0,//no base classes
  &(vtc_S20156C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S20156C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20156C2),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20156C5  : virtual S20156C2 {
  virtual void  v6(); // _ZN8S20156C52v6Ev
  virtual void  v7(); // _ZN8S20156C52v7Ev
  virtual void  v8(); // _ZN8S20156C52v8Ev
  virtual void  v9(); // _ZN8S20156C52v9Ev
  virtual void  v10(); // _ZN8S20156C53v10Ev
  ~S20156C5(); // tgen
  S20156C5(); // tgen
};
//SIG(-1 S20156C5) C1{ VBC2{ vd v6 v7 v8 Fi FL} v1 v2 v3 v4 v5}


void  S20156C5 ::v6(){vfunc_called(this, "_ZN8S20156C52v6Ev");}
void  S20156C5 ::v7(){vfunc_called(this, "_ZN8S20156C52v7Ev");}
void  S20156C5 ::v8(){vfunc_called(this, "_ZN8S20156C52v8Ev");}
void  S20156C5 ::v9(){vfunc_called(this, "_ZN8S20156C52v9Ev");}
void  S20156C5 ::v10(){vfunc_called(this, "_ZN8S20156C53v10Ev");}
S20156C5 ::~S20156C5(){ note_dtor("S20156C5", this);} // tgen
S20156C5 ::S20156C5(){ note_ctor("S20156C5", this);} // tgen

static void Test_S20156C5()
{
  extern Class_Descriptor cd_S20156C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S20156C5, buf);
    S20156C5 *dp, &lv = *(dp=new (buf) S20156C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S20156C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20156C5)");
    check_base_class_offset(lv, (S20156C2*), ABISELECT(8,4), "S20156C5");
    test_class_info(&lv, &cd_S20156C5);
    dp->~S20156C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20156C5(Test_S20156C5, "S20156C5", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S20156C5C1Ev();
extern void _ZN8S20156C5D1Ev();
Name_Map name_map_S20156C5[] = {
  NSPAIR(_ZN8S20156C5C1Ev),
  NSPAIR(_ZN8S20156C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20156C2;
extern VTBL_ENTRY _ZTI8S20156C2[];
extern  VTBL_ENTRY _ZTV8S20156C2[];
static Base_Class bases_S20156C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20156C2,    ABISELECT(8,4), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20156C5[];
extern void _ZN8S20156C52v6Ev();
extern void _ZN8S20156C52v7Ev();
extern void _ZN8S20156C52v8Ev();
extern void _ZN8S20156C52v9Ev();
extern void _ZN8S20156C53v10Ev();
extern void _ZN8S20156C5D1Ev();
extern void _ZN8S20156C5D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S20156C5D1Ev,_ZTv0_n12_N8S20156C5D1Ev)();
extern void ABISELECT(_ZThn8_N8S20156C5D1Ev,_ZThn4_N8S20156C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20156C5D0Ev,_ZTv0_n12_N8S20156C5D0Ev)();
extern void ABISELECT(_ZThn8_N8S20156C5D0Ev,_ZThn4_N8S20156C5D0Ev)() __attribute__((weak));
extern void _ZN8S20156C22v3Ev();
extern void _ZN8S20156C22v4Ev();
extern void _ZN8S20156C22v5Ev();
static  VTBL_ENTRY vtc_S20156C5[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20156C5[0]),
  (VTBL_ENTRY)&_ZN8S20156C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20156C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20156C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20156C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20156C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20156C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20156C5D0Ev,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20156C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20156C5D1Ev,_ZTv0_n12_N8S20156C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20156C5D0Ev,_ZTv0_n12_N8S20156C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20156C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20156C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20156C22v5Ev,
};
extern VTBL_ENTRY _ZTV8S20156C5[];
static  VTT_ENTRY vtt_S20156C5[] = {
  {&(_ZTV8S20156C5[3]),  3,21},
  {&(_ZTV8S20156C5[16]),  16,21},
};
extern VTBL_ENTRY _ZTI8S20156C5[];
extern  VTBL_ENTRY _ZTV8S20156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20156C5[];
static VTBL_ENTRY alt_thunk_names121[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20156C5D0Ev,_ZTv0_n12_N8S20156C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20156C5D0Ev,_ZThn4_N8S20156C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20156C5D1Ev,_ZTv0_n12_N8S20156C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20156C5D1Ev,_ZThn4_N8S20156C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20156C5 = {  "S20156C5", // class name
  bases_S20156C5, 1,
  &(vtc_S20156C5[0]), // expected_vtbl_contents
  &(vtt_S20156C5[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S20156C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20156C5),21, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20156C5),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names121,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20156C4  : virtual S20156C2 , S20156C5 {
  int s20156c4f0;
  void *s20156c4f1;
  char s20156c4f2[8];
  virtual  ~S20156C4(); // _ZN8S20156C4D2Ev
  virtual void  v11(); // _ZN8S20156C43v11Ev
  virtual void  v12(); // _ZN8S20156C43v12Ev
  virtual void  v13(); // _ZN8S20156C43v13Ev
  virtual void  v14(); // _ZN8S20156C43v14Ev
  virtual void  v15(); // _ZN8S20156C43v15Ev
  S20156C4(); // tgen
};
//SIG(-1 S20156C4) C1{ VBC2{ vd v6 v7 v8 Fi FL} BC3{ VBC2 v9 v10 v11 v12 v13} vd v1 v2 v3 v4 v5 Fi Fp Fc[8]}


 S20156C4 ::~S20156C4(){ note_dtor("S20156C4", this);}
void  S20156C4 ::v11(){vfunc_called(this, "_ZN8S20156C43v11Ev");}
void  S20156C4 ::v12(){vfunc_called(this, "_ZN8S20156C43v12Ev");}
void  S20156C4 ::v13(){vfunc_called(this, "_ZN8S20156C43v13Ev");}
void  S20156C4 ::v14(){vfunc_called(this, "_ZN8S20156C43v14Ev");}
void  S20156C4 ::v15(){vfunc_called(this, "_ZN8S20156C43v15Ev");}
S20156C4 ::S20156C4(){ note_ctor("S20156C4", this);} // tgen

static void Test_S20156C4()
{
  extern Class_Descriptor cd_S20156C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S20156C4, buf);
    S20156C4 *dp, &lv = *(dp=new (buf) S20156C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S20156C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20156C4)");
    check_base_class_offset(lv, (S20156C2*), ABISELECT(32,20), "S20156C4");
    check_base_class_offset(lv, (S20156C2*)(S20156C5*), ABISELECT(32,20), "S20156C4");
    check_base_class_offset(lv, (S20156C5*), 0, "S20156C4");
    check_field_offset(lv, s20156c4f0, ABISELECT(8,4), "S20156C4.s20156c4f0");
    check_field_offset(lv, s20156c4f1, ABISELECT(16,8), "S20156C4.s20156c4f1");
    check_field_offset(lv, s20156c4f2, ABISELECT(24,12), "S20156C4.s20156c4f2");
    test_class_info(&lv, &cd_S20156C4);
    dp->~S20156C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20156C4(Test_S20156C4, "S20156C4", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN8S20156C4C1Ev();
extern void _ZN8S20156C4D2Ev();
Name_Map name_map_S20156C4[] = {
  NSPAIR(_ZN8S20156C4C1Ev),
  NSPAIR(_ZN8S20156C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20156C2;
extern VTBL_ENTRY _ZTI8S20156C2[];
extern  VTBL_ENTRY _ZTV8S20156C2[];
extern Class_Descriptor cd_S20156C5;
extern VTBL_ENTRY _ZTI8S20156C5[];
extern  VTBL_ENTRY _ZTV8S20156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20156C5[];
static Base_Class bases_S20156C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20156C2,    ABISELECT(32,20), //bcp->offset
    15, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20156C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20156C4[];
extern void _ZN8S20156C52v6Ev();
extern void _ZN8S20156C52v7Ev();
extern void _ZN8S20156C52v8Ev();
extern void _ZN8S20156C52v9Ev();
extern void _ZN8S20156C53v10Ev();
extern void _ZN8S20156C4D1Ev();
extern void _ZN8S20156C4D0Ev();
extern void _ZN8S20156C43v11Ev();
extern void _ZN8S20156C43v12Ev();
extern void _ZN8S20156C43v13Ev();
extern void _ZN8S20156C43v14Ev();
extern void _ZN8S20156C43v15Ev();
extern void ABISELECT(_ZTv0_n24_N8S20156C4D1Ev,_ZTv0_n12_N8S20156C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S20156C4D1Ev,_ZThn20_N8S20156C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20156C4D0Ev,_ZTv0_n12_N8S20156C4D0Ev)();
extern void ABISELECT(_ZThn32_N8S20156C4D0Ev,_ZThn20_N8S20156C4D0Ev)() __attribute__((weak));
extern void _ZN8S20156C22v3Ev();
extern void _ZN8S20156C22v4Ev();
extern void _ZN8S20156C22v5Ev();
static  VTBL_ENTRY vtc_S20156C4[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20156C4[0]),
  (VTBL_ENTRY)&_ZN8S20156C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20156C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20156C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20156C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20156C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20156C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20156C4D0Ev,
  (VTBL_ENTRY)&_ZN8S20156C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20156C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20156C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20156C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20156C43v15Ev,
  0,
  0,
  0,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S20156C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20156C4D1Ev,_ZTv0_n12_N8S20156C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20156C4D0Ev,_ZTv0_n12_N8S20156C4D0Ev),
  (VTBL_ENTRY)&_ZN8S20156C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20156C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20156C22v5Ev,
};
extern VTBL_ENTRY _ZTV8S20156C4[];
extern void _ZN8S20156C52v6Ev();
extern void _ZN8S20156C52v7Ev();
extern void _ZN8S20156C52v8Ev();
extern void _ZN8S20156C52v9Ev();
extern void _ZN8S20156C53v10Ev();
extern void _ZN8S20156C5D1Ev();
extern void _ZN8S20156C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20156C5__8S20156C4[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20156C5[0]),
  (VTBL_ENTRY)&_ZN8S20156C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20156C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20156C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20156C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20156C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20156C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20156C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20156C5D1Ev,_ZTv0_n12_N8S20156C5D1Ev)();
extern void ABISELECT(_ZThn32_N8S20156C5D1Ev,_ZThn20_N8S20156C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20156C5D0Ev,_ZTv0_n12_N8S20156C5D0Ev)();
extern void ABISELECT(_ZThn32_N8S20156C5D0Ev,_ZThn20_N8S20156C5D0Ev)() __attribute__((weak));
extern void _ZN8S20156C22v3Ev();
extern void _ZN8S20156C22v4Ev();
extern void _ZN8S20156C22v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20156C2__8S20156C5__8S20156C4[] = {
  0,
  0,
  0,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S20156C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20156C5D1Ev,_ZTv0_n12_N8S20156C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20156C5D0Ev,_ZTv0_n12_N8S20156C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20156C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20156C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20156C22v5Ev,
};
static  VTT_ENTRY vtt_S20156C4[] = {
  {&(_ZTV8S20156C4[3]),  3,26},
  {&(_tg__ZTV8S20156C5__8S20156C4[3]),  3,10},
  {&(_tg__ZTV8S20156C2__8S20156C5__8S20156C4[6]),  6,11},
  {&(_ZTV8S20156C4[21]),  21,26},
};
extern VTBL_ENTRY _ZTI8S20156C4[];
extern  VTBL_ENTRY _ZTV8S20156C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20156C4[];
static VTBL_ENTRY alt_thunk_names122[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20156C5D0Ev,_ZTv0_n12_N8S20156C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20156C5D0Ev,_ZThn20_N8S20156C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20156C5D1Ev,_ZTv0_n12_N8S20156C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20156C5D1Ev,_ZThn20_N8S20156C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20156C4D0Ev,_ZTv0_n12_N8S20156C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20156C4D0Ev,_ZThn20_N8S20156C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20156C4D1Ev,_ZTv0_n12_N8S20156C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20156C4D1Ev,_ZThn20_N8S20156C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20156C4 = {  "S20156C4", // class name
  bases_S20156C4, 2,
  &(vtc_S20156C4[0]), // expected_vtbl_contents
  &(vtt_S20156C4[0]), // expected_vtt_contents
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI8S20156C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20156C4),26, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20156C4),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names122,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20156C3  : virtual S20156C4 {
  int s20156c3f0;
  virtual  ~S20156C3(); // _ZN8S20156C3D2Ev
  S20156C3(); // tgen
};
//SIG(-1 S20156C3) C1{ VBC2{ VBC3{ vd v1 v2 v3 Fi FL} BC4{ VBC3 v4 v5 v6 v7 v8} vd v9 v10 v11 v12 v13 Fi Fp Fc[8]} vd Fi}


 S20156C3 ::~S20156C3(){ note_dtor("S20156C3", this);}
S20156C3 ::S20156C3(){ note_ctor("S20156C3", this);} // tgen

static void Test_S20156C3()
{
  extern Class_Descriptor cd_S20156C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,12)];
    init_test(&cd_S20156C3, buf);
    S20156C3 *dp, &lv = *(dp=new (buf) S20156C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S20156C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20156C3)");
    check_base_class_offset(lv, (S20156C2*)(S20156C4*), ABISELECT(48,28), "S20156C3");
    check_base_class_offset(lv, (S20156C2*)(S20156C5*)(S20156C4*), ABISELECT(48,28), "S20156C3");
    check_base_class_offset(lv, (S20156C5*)(S20156C4*), ABISELECT(16,8), "S20156C3");
    check_base_class_offset(lv, (S20156C4*), ABISELECT(16,8), "S20156C3");
    check_field_offset(lv, s20156c3f0, ABISELECT(8,4), "S20156C3.s20156c3f0");
    test_class_info(&lv, &cd_S20156C3);
    dp->~S20156C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20156C3(Test_S20156C3, "S20156C3", ABISELECT(72,44));

#else // __cplusplus

extern void _ZN8S20156C3C1Ev();
extern void _ZN8S20156C3D2Ev();
Name_Map name_map_S20156C3[] = {
  NSPAIR(_ZN8S20156C3C1Ev),
  NSPAIR(_ZN8S20156C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20156C2;
extern VTBL_ENTRY _ZTI8S20156C2[];
extern  VTBL_ENTRY _ZTV8S20156C2[];
extern Class_Descriptor cd_S20156C5;
extern VTBL_ENTRY _ZTI8S20156C5[];
extern  VTBL_ENTRY _ZTV8S20156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20156C5[];
extern Class_Descriptor cd_S20156C4;
extern VTBL_ENTRY _ZTI8S20156C4[];
extern  VTBL_ENTRY _ZTV8S20156C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20156C4[];
static Base_Class bases_S20156C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20156C2,    ABISELECT(48,28), //bcp->offset
    32, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20156C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20156C4,    ABISELECT(16,8), //bcp->offset
    6, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20156C3[];
extern void _ZN8S20156C3D1Ev();
extern void _ZN8S20156C3D0Ev();
extern void _ZN8S20156C52v6Ev();
extern void _ZN8S20156C52v7Ev();
extern void _ZN8S20156C52v8Ev();
extern void _ZN8S20156C52v9Ev();
extern void _ZN8S20156C53v10Ev();
extern void ABISELECT(_ZTv0_n72_N8S20156C3D1Ev,_ZTv0_n36_N8S20156C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S20156C3D1Ev,_ZThn8_N8S20156C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S20156C3D0Ev,_ZTv0_n36_N8S20156C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S20156C3D0Ev,_ZThn8_N8S20156C3D0Ev)() __attribute__((weak));
extern void _ZN8S20156C43v11Ev();
extern void _ZN8S20156C43v12Ev();
extern void _ZN8S20156C43v13Ev();
extern void _ZN8S20156C43v14Ev();
extern void _ZN8S20156C43v15Ev();
extern void ABISELECT(_ZTv0_n24_N8S20156C3D1Ev,_ZTv0_n12_N8S20156C3D1Ev)();
extern void ABISELECT(_ZThn48_N8S20156C3D1Ev,_ZThn28_N8S20156C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20156C3D0Ev,_ZTv0_n12_N8S20156C3D0Ev)();
extern void ABISELECT(_ZThn48_N8S20156C3D0Ev,_ZThn28_N8S20156C3D0Ev)() __attribute__((weak));
extern void _ZN8S20156C22v3Ev();
extern void _ZN8S20156C22v4Ev();
extern void _ZN8S20156C22v5Ev();
static  VTBL_ENTRY vtc_S20156C3[] = {
  ABISELECT(48,28),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20156C3[0]),
  (VTBL_ENTRY)&_ZN8S20156C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20156C3D0Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,20),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20156C3[0]),
  (VTBL_ENTRY)&_ZN8S20156C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20156C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20156C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20156C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20156C53v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20156C3D1Ev,_ZTv0_n36_N8S20156C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20156C3D0Ev,_ZTv0_n36_N8S20156C3D0Ev),
  (VTBL_ENTRY)&_ZN8S20156C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20156C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20156C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20156C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20156C43v15Ev,
  0,
  0,
  0,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20156C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20156C3D1Ev,_ZTv0_n12_N8S20156C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20156C3D0Ev,_ZTv0_n12_N8S20156C3D0Ev),
  (VTBL_ENTRY)&_ZN8S20156C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20156C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20156C22v5Ev,
};
extern VTBL_ENTRY _ZTV8S20156C3[];
extern void _ZN8S20156C52v6Ev();
extern void _ZN8S20156C52v7Ev();
extern void _ZN8S20156C52v8Ev();
extern void _ZN8S20156C52v9Ev();
extern void _ZN8S20156C53v10Ev();
extern void _ZN8S20156C4D1Ev();
extern void _ZN8S20156C4D0Ev();
extern void _ZN8S20156C43v11Ev();
extern void _ZN8S20156C43v12Ev();
extern void _ZN8S20156C43v13Ev();
extern void _ZN8S20156C43v14Ev();
extern void _ZN8S20156C43v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20156C4__8S20156C3[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20156C4[0]),
  (VTBL_ENTRY)&_ZN8S20156C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20156C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20156C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20156C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20156C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20156C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20156C4D0Ev,
  (VTBL_ENTRY)&_ZN8S20156C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20156C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20156C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20156C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20156C43v15Ev,
};
extern void _ZN8S20156C52v6Ev();
extern void _ZN8S20156C52v7Ev();
extern void _ZN8S20156C52v8Ev();
extern void _ZN8S20156C52v9Ev();
extern void _ZN8S20156C53v10Ev();
extern void _ZN8S20156C5D1Ev();
extern void _ZN8S20156C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20156C58S20156C4__8S20156C3[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20156C5[0]),
  (VTBL_ENTRY)&_ZN8S20156C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20156C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20156C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20156C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20156C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20156C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20156C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20156C5D1Ev,_ZTv0_n12_N8S20156C5D1Ev)();
extern void ABISELECT(_ZThn32_N8S20156C5D1Ev,_ZThn20_N8S20156C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20156C5D0Ev,_ZTv0_n12_N8S20156C5D0Ev)();
extern void ABISELECT(_ZThn32_N8S20156C5D0Ev,_ZThn20_N8S20156C5D0Ev)() __attribute__((weak));
extern void _ZN8S20156C22v3Ev();
extern void _ZN8S20156C22v4Ev();
extern void _ZN8S20156C22v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20156C2__8S20156C58S20156C4__8S20156C3[] = {
  0,
  0,
  0,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S20156C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20156C5D1Ev,_ZTv0_n12_N8S20156C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20156C5D0Ev,_ZTv0_n12_N8S20156C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20156C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20156C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20156C22v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20156C4D1Ev,_ZTv0_n12_N8S20156C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S20156C4D1Ev,_ZThn20_N8S20156C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20156C4D0Ev,_ZTv0_n12_N8S20156C4D0Ev)();
extern void ABISELECT(_ZThn32_N8S20156C4D0Ev,_ZThn20_N8S20156C4D0Ev)() __attribute__((weak));
extern void _ZN8S20156C22v3Ev();
extern void _ZN8S20156C22v4Ev();
extern void _ZN8S20156C22v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20156C2__8S20156C4__8S20156C3[] = {
  0,
  0,
  0,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S20156C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20156C4D1Ev,_ZTv0_n12_N8S20156C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20156C4D0Ev,_ZTv0_n12_N8S20156C4D0Ev),
  (VTBL_ENTRY)&_ZN8S20156C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20156C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20156C22v5Ev,
};
static  VTT_ENTRY vtt_S20156C3[] = {
  {&(_ZTV8S20156C3[4]),  4,43},
  {&(_ZTV8S20156C3[20]),  20,43},
  {&(_ZTV8S20156C3[38]),  38,43},
  {&(_tg__ZTV8S20156C4__8S20156C3[3]),  3,15},
  {&(_tg__ZTV8S20156C58S20156C4__8S20156C3[3]),  3,10},
  {&(_tg__ZTV8S20156C2__8S20156C58S20156C4__8S20156C3[6]),  6,11},
  {&(_tg__ZTV8S20156C2__8S20156C4__8S20156C3[6]),  6,11},
};
extern VTBL_ENTRY _ZTI8S20156C3[];
extern  VTBL_ENTRY _ZTV8S20156C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20156C3[];
static VTBL_ENTRY alt_thunk_names123[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20156C4D0Ev,_ZTv0_n12_N8S20156C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20156C4D0Ev,_ZThn20_N8S20156C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20156C4D1Ev,_ZTv0_n12_N8S20156C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20156C4D1Ev,_ZThn20_N8S20156C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20156C5D0Ev,_ZTv0_n12_N8S20156C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20156C5D0Ev,_ZThn20_N8S20156C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20156C5D1Ev,_ZTv0_n12_N8S20156C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20156C5D1Ev,_ZThn20_N8S20156C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20156C3D0Ev,_ZTv0_n12_N8S20156C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20156C3D0Ev,_ZThn28_N8S20156C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20156C3D1Ev,_ZTv0_n12_N8S20156C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20156C3D1Ev,_ZThn28_N8S20156C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20156C3D0Ev,_ZTv0_n36_N8S20156C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20156C3D0Ev,_ZThn8_N8S20156C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20156C3D1Ev,_ZTv0_n36_N8S20156C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20156C3D1Ev,_ZThn8_N8S20156C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20156C3 = {  "S20156C3", // class name
  bases_S20156C3, 3,
  &(vtc_S20156C3[0]), // expected_vtbl_contents
  &(vtt_S20156C3[0]), // expected_vtt_contents
  ABISELECT(72,44), // object size
  NSPAIRA(_ZTI8S20156C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20156C3),43, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20156C3),7, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names123,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20156C1  : virtual S20156C2 , S20156C3 {
  virtual void  v1(); // _ZN8S20156C12v1Ev
  virtual void  v2(); // _ZN8S20156C12v2Ev
  ~S20156C1(); // tgen
  S20156C1(); // tgen
};
//SIG(1 S20156C1) C1{ VBC2{ vd v3 v4 v5 Fi FL} BC3{ VBC4{ VBC2 BC5{ VBC2 v6 v7 v8 v9 v10} vd v11 v12 v13 v14 v15 Fi Fp Fc[8]} vd Fi} v1 v2}


void  S20156C1 ::v1(){vfunc_called(this, "_ZN8S20156C12v1Ev");}
void  S20156C1 ::v2(){vfunc_called(this, "_ZN8S20156C12v2Ev");}
S20156C1 ::~S20156C1(){ note_dtor("S20156C1", this);} // tgen
S20156C1 ::S20156C1(){ note_ctor("S20156C1", this);} // tgen

static void Test_S20156C1()
{
  extern Class_Descriptor cd_S20156C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,12)];
    init_test(&cd_S20156C1, buf);
    S20156C1 *dp, &lv = *(dp=new (buf) S20156C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S20156C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20156C1)");
    check_base_class_offset(lv, (S20156C2*), ABISELECT(16,8), "S20156C1");
    check_base_class_offset(lv, (S20156C2*)(S20156C4*), ABISELECT(16,8), "S20156C1");
    check_base_class_offset(lv, (S20156C2*)(S20156C5*)(S20156C4*), ABISELECT(16,8), "S20156C1");
    check_base_class_offset(lv, (S20156C5*)(S20156C4*), ABISELECT(40,24), "S20156C1");
    check_base_class_offset(lv, (S20156C4*)(S20156C3*), ABISELECT(40,24), "S20156C1");
    check_base_class_offset(lv, (S20156C3*), 0, "S20156C1");
    test_class_info(&lv, &cd_S20156C1);
    dp->~S20156C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20156C1(Test_S20156C1, "S20156C1", ABISELECT(72,44));

#else // __cplusplus

extern void _ZN8S20156C1C1Ev();
extern void _ZN8S20156C1D1Ev();
Name_Map name_map_S20156C1[] = {
  NSPAIR(_ZN8S20156C1C1Ev),
  NSPAIR(_ZN8S20156C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20156C2;
extern VTBL_ENTRY _ZTI8S20156C2[];
extern  VTBL_ENTRY _ZTV8S20156C2[];
extern Class_Descriptor cd_S20156C5;
extern VTBL_ENTRY _ZTI8S20156C5[];
extern  VTBL_ENTRY _ZTV8S20156C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20156C5[];
extern Class_Descriptor cd_S20156C4;
extern VTBL_ENTRY _ZTI8S20156C4[];
extern  VTBL_ENTRY _ZTV8S20156C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20156C4[];
extern Class_Descriptor cd_S20156C3;
extern VTBL_ENTRY _ZTI8S20156C3[];
extern  VTBL_ENTRY _ZTV8S20156C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20156C3[];
static Base_Class bases_S20156C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20156C2,    ABISELECT(16,8), //bcp->offset
    8, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20156C5,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20156C4,    ABISELECT(40,24), //bcp->offset
    19, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20156C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20156C1[];
extern void _ZN8S20156C1D1Ev();
extern void _ZN8S20156C1D0Ev();
extern void _ZN8S20156C12v1Ev();
extern void _ZN8S20156C12v2Ev();
extern void ABISELECT(_ZTv0_n24_N8S20156C1D1Ev,_ZTv0_n12_N8S20156C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S20156C1D1Ev,_ZThn8_N8S20156C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20156C1D0Ev,_ZTv0_n12_N8S20156C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S20156C1D0Ev,_ZThn8_N8S20156C1D0Ev)() __attribute__((weak));
extern void _ZN8S20156C22v3Ev();
extern void _ZN8S20156C22v4Ev();
extern void _ZN8S20156C22v5Ev();
extern void _ZN8S20156C52v6Ev();
extern void _ZN8S20156C52v7Ev();
extern void _ZN8S20156C52v8Ev();
extern void _ZN8S20156C52v9Ev();
extern void _ZN8S20156C53v10Ev();
extern void ABISELECT(_ZTv0_n72_N8S20156C1D1Ev,_ZTv0_n36_N8S20156C1D1Ev)();
extern void ABISELECT(_ZThn40_N8S20156C1D1Ev,_ZThn24_N8S20156C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S20156C1D0Ev,_ZTv0_n36_N8S20156C1D0Ev)();
extern void ABISELECT(_ZThn40_N8S20156C1D0Ev,_ZThn24_N8S20156C1D0Ev)() __attribute__((weak));
extern void _ZN8S20156C43v11Ev();
extern void _ZN8S20156C43v12Ev();
extern void _ZN8S20156C43v13Ev();
extern void _ZN8S20156C43v14Ev();
extern void _ZN8S20156C43v15Ev();
static  VTBL_ENTRY vtc_S20156C1[] = {
  ABISELECT(16,8),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20156C1[0]),
  (VTBL_ENTRY)&_ZN8S20156C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20156C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20156C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20156C12v2Ev,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20156C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20156C1D1Ev,_ZTv0_n12_N8S20156C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20156C1D0Ev,_ZTv0_n12_N8S20156C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20156C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20156C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20156C22v5Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-24),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S20156C1[0]),
  (VTBL_ENTRY)&_ZN8S20156C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20156C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20156C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20156C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20156C53v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20156C1D1Ev,_ZTv0_n36_N8S20156C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20156C1D0Ev,_ZTv0_n36_N8S20156C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20156C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20156C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20156C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20156C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20156C43v15Ev,
};
extern VTBL_ENTRY _ZTV8S20156C1[];
extern void _ZN8S20156C3D1Ev();
extern void _ZN8S20156C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20156C3__8S20156C1[] = {
  ABISELECT(16,8),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20156C3[0]),
  (VTBL_ENTRY)&_ZN8S20156C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20156C3D0Ev,
};
extern void _ZN8S20156C52v6Ev();
extern void _ZN8S20156C52v7Ev();
extern void _ZN8S20156C52v8Ev();
extern void _ZN8S20156C52v9Ev();
extern void _ZN8S20156C53v10Ev();
extern void ABISELECT(_ZTv0_n72_N8S20156C3D1Ev,_ZTv0_n36_N8S20156C3D1Ev)();
extern void ABISELECT(_ZThn40_N8S20156C3D1Ev,_ZThn24_N8S20156C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S20156C3D0Ev,_ZTv0_n36_N8S20156C3D0Ev)();
extern void ABISELECT(_ZThn40_N8S20156C3D0Ev,_ZThn24_N8S20156C3D0Ev)() __attribute__((weak));
extern void _ZN8S20156C43v11Ev();
extern void _ZN8S20156C43v12Ev();
extern void _ZN8S20156C43v13Ev();
extern void _ZN8S20156C43v14Ev();
extern void _ZN8S20156C43v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20156C4__8S20156C3__8S20156C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-24),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S20156C3[0]),
  (VTBL_ENTRY)&_ZN8S20156C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20156C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20156C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20156C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20156C53v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20156C3D1Ev,_ZTv0_n36_N8S20156C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20156C3D0Ev,_ZTv0_n36_N8S20156C3D0Ev),
  (VTBL_ENTRY)&_ZN8S20156C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20156C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20156C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20156C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20156C43v15Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20156C3D1Ev,_ZTv0_n12_N8S20156C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S20156C3D1Ev,_ZThn8_N8S20156C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20156C3D0Ev,_ZTv0_n12_N8S20156C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S20156C3D0Ev,_ZThn8_N8S20156C3D0Ev)() __attribute__((weak));
extern void _ZN8S20156C22v3Ev();
extern void _ZN8S20156C22v4Ev();
extern void _ZN8S20156C22v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20156C2__8S20156C3__8S20156C1[] = {
  0,
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20156C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20156C3D1Ev,_ZTv0_n12_N8S20156C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20156C3D0Ev,_ZTv0_n12_N8S20156C3D0Ev),
  (VTBL_ENTRY)&_ZN8S20156C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20156C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20156C22v5Ev,
};
extern void _ZN8S20156C52v6Ev();
extern void _ZN8S20156C52v7Ev();
extern void _ZN8S20156C52v8Ev();
extern void _ZN8S20156C52v9Ev();
extern void _ZN8S20156C53v10Ev();
extern void _ZN8S20156C4D1Ev();
extern void _ZN8S20156C4D0Ev();
extern void _ZN8S20156C43v11Ev();
extern void _ZN8S20156C43v12Ev();
extern void _ZN8S20156C43v13Ev();
extern void _ZN8S20156C43v14Ev();
extern void _ZN8S20156C43v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20156C4__8S20156C1[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20156C4[0]),
  (VTBL_ENTRY)&_ZN8S20156C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20156C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20156C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20156C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20156C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20156C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20156C4D0Ev,
  (VTBL_ENTRY)&_ZN8S20156C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20156C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20156C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20156C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20156C43v15Ev,
};
extern void _ZN8S20156C52v6Ev();
extern void _ZN8S20156C52v7Ev();
extern void _ZN8S20156C52v8Ev();
extern void _ZN8S20156C52v9Ev();
extern void _ZN8S20156C53v10Ev();
extern void _ZN8S20156C5D1Ev();
extern void _ZN8S20156C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20156C58S20156C4__8S20156C1[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20156C5[0]),
  (VTBL_ENTRY)&_ZN8S20156C52v6Ev,
  (VTBL_ENTRY)&_ZN8S20156C52v7Ev,
  (VTBL_ENTRY)&_ZN8S20156C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20156C52v9Ev,
  (VTBL_ENTRY)&_ZN8S20156C53v10Ev,
  (VTBL_ENTRY)&_ZN8S20156C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20156C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20156C5D1Ev,_ZTv0_n12_N8S20156C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20156C5D0Ev,_ZTv0_n12_N8S20156C5D0Ev)();
extern void _ZN8S20156C22v3Ev();
extern void _ZN8S20156C22v4Ev();
extern void _ZN8S20156C22v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20156C2__8S20156C58S20156C4__8S20156C1[] = {
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S20156C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20156C5D1Ev,_ZTv0_n12_N8S20156C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20156C5D0Ev,_ZTv0_n12_N8S20156C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20156C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20156C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20156C22v5Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20156C4D1Ev,_ZTv0_n12_N8S20156C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20156C4D0Ev,_ZTv0_n12_N8S20156C4D0Ev)();
extern void _ZN8S20156C22v3Ev();
extern void _ZN8S20156C22v4Ev();
extern void _ZN8S20156C22v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20156C2__8S20156C4__8S20156C1[] = {
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S20156C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20156C4D1Ev,_ZTv0_n12_N8S20156C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20156C4D0Ev,_ZTv0_n12_N8S20156C4D0Ev),
  (VTBL_ENTRY)&_ZN8S20156C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20156C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20156C22v5Ev,
};
static  VTT_ENTRY vtt_S20156C1[] = {
  {&(_ZTV8S20156C1[4]),  4,45},
  {&(_tg__ZTV8S20156C3__8S20156C1[4]),  4,6},
  {&(_tg__ZTV8S20156C4__8S20156C3__8S20156C1[14]),  14,26},
  {&(_tg__ZTV8S20156C2__8S20156C3__8S20156C1[6]),  6,11},
  {&(_ZTV8S20156C1[14]),  14,45},
  {&(_ZTV8S20156C1[33]),  33,45},
  {&(_tg__ZTV8S20156C4__8S20156C1[3]),  3,15},
  {&(_tg__ZTV8S20156C58S20156C4__8S20156C1[3]),  3,10},
  {&(_tg__ZTV8S20156C2__8S20156C58S20156C4__8S20156C1[6]),  6,11},
  {&(_tg__ZTV8S20156C2__8S20156C4__8S20156C1[6]),  6,11},
};
extern VTBL_ENTRY _ZTI8S20156C1[];
extern  VTBL_ENTRY _ZTV8S20156C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20156C1[];
static VTBL_ENTRY alt_thunk_names124[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20156C3D0Ev,_ZTv0_n12_N8S20156C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20156C3D0Ev,_ZThn8_N8S20156C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20156C3D1Ev,_ZTv0_n12_N8S20156C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20156C3D1Ev,_ZThn8_N8S20156C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20156C3D0Ev,_ZTv0_n36_N8S20156C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20156C3D0Ev,_ZThn24_N8S20156C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20156C3D1Ev,_ZTv0_n36_N8S20156C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20156C3D1Ev,_ZThn24_N8S20156C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20156C1D0Ev,_ZTv0_n36_N8S20156C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20156C1D0Ev,_ZThn24_N8S20156C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20156C1D1Ev,_ZTv0_n36_N8S20156C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20156C1D1Ev,_ZThn24_N8S20156C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20156C1D0Ev,_ZTv0_n12_N8S20156C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20156C1D0Ev,_ZThn8_N8S20156C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20156C1D1Ev,_ZTv0_n12_N8S20156C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20156C1D1Ev,_ZThn8_N8S20156C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20156C1 = {  "S20156C1", // class name
  bases_S20156C1, 4,
  &(vtc_S20156C1[0]), // expected_vtbl_contents
  &(vtt_S20156C1[0]), // expected_vtt_contents
  ABISELECT(72,44), // object size
  NSPAIRA(_ZTI8S20156C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20156C1),45, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20156C1),10, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names124,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3187C3  {
  virtual void  v3(); // _ZN7S3187C32v3Ev
  ~S3187C3(); // tgen
  S3187C3(); // tgen
};
//SIG(-1 S3187C3) C1{ v1}


void  S3187C3 ::v3(){vfunc_called(this, "_ZN7S3187C32v3Ev");}
S3187C3 ::~S3187C3(){ note_dtor("S3187C3", this);} // tgen
S3187C3 ::S3187C3(){ note_ctor("S3187C3", this);} // tgen

static void Test_S3187C3()
{
  extern Class_Descriptor cd_S3187C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3187C3, buf);
    S3187C3 *dp, &lv = *(dp=new (buf) S3187C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3187C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3187C3)");
    test_class_info(&lv, &cd_S3187C3);
    dp->~S3187C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3187C3(Test_S3187C3, "S3187C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3187C3C1Ev();
extern void _ZN7S3187C3D1Ev();
Name_Map name_map_S3187C3[] = {
  NSPAIR(_ZN7S3187C3C1Ev),
  NSPAIR(_ZN7S3187C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3187C3[];
extern void _ZN7S3187C32v3Ev();
static  VTBL_ENTRY vtc_S3187C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3187C3[0]),
  (VTBL_ENTRY)&_ZN7S3187C32v3Ev,
};
extern VTBL_ENTRY _ZTI7S3187C3[];
extern  VTBL_ENTRY _ZTV7S3187C3[];
Class_Descriptor cd_S3187C3 = {  "S3187C3", // class name
  0,0,//no base classes
  &(vtc_S3187C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3187C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3187C3),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3187C4  : S3187C3 {
  virtual void  v4(); // _ZN7S3187C42v4Ev
  virtual void  v5(); // _ZN7S3187C42v5Ev
  virtual void  v6(); // _ZN7S3187C42v6Ev
  ~S3187C4(); // tgen
  S3187C4(); // tgen
};
//SIG(-1 S3187C4) C1{ BC2{ v4} v1 v2 v3}


void  S3187C4 ::v4(){vfunc_called(this, "_ZN7S3187C42v4Ev");}
void  S3187C4 ::v5(){vfunc_called(this, "_ZN7S3187C42v5Ev");}
void  S3187C4 ::v6(){vfunc_called(this, "_ZN7S3187C42v6Ev");}
S3187C4 ::~S3187C4(){ note_dtor("S3187C4", this);} // tgen
S3187C4 ::S3187C4(){ note_ctor("S3187C4", this);} // tgen

static void Test_S3187C4()
{
  extern Class_Descriptor cd_S3187C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3187C4, buf);
    S3187C4 *dp, &lv = *(dp=new (buf) S3187C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3187C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3187C4)");
    check_base_class_offset(lv, (S3187C3*), 0, "S3187C4");
    test_class_info(&lv, &cd_S3187C4);
    dp->~S3187C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3187C4(Test_S3187C4, "S3187C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S3187C4C1Ev();
extern void _ZN7S3187C4D1Ev();
Name_Map name_map_S3187C4[] = {
  NSPAIR(_ZN7S3187C4C1Ev),
  NSPAIR(_ZN7S3187C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3187C3;
extern VTBL_ENTRY _ZTI7S3187C3[];
extern  VTBL_ENTRY _ZTV7S3187C3[];
static Base_Class bases_S3187C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3187C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3187C4[];
extern void _ZN7S3187C32v3Ev();
extern void _ZN7S3187C42v4Ev();
extern void _ZN7S3187C42v5Ev();
extern void _ZN7S3187C42v6Ev();
static  VTBL_ENTRY vtc_S3187C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3187C4[0]),
  (VTBL_ENTRY)&_ZN7S3187C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3187C42v4Ev,
  (VTBL_ENTRY)&_ZN7S3187C42v5Ev,
  (VTBL_ENTRY)&_ZN7S3187C42v6Ev,
};
extern VTBL_ENTRY _ZTI7S3187C4[];
extern  VTBL_ENTRY _ZTV7S3187C4[];
Class_Descriptor cd_S3187C4 = {  "S3187C4", // class name
  bases_S3187C4, 1,
  &(vtc_S3187C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3187C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3187C4),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3187C5  : virtual S3187C4 , S3187C3 {
  int s3187c5f0;
  virtual void  v7(); // _ZN7S3187C52v7Ev
  virtual void  v8(); // _ZN7S3187C52v8Ev
  virtual void  v9(); // _ZN7S3187C52v9Ev
  virtual void  v10(); // _ZN7S3187C53v10Ev
  virtual void  v11(); // _ZN7S3187C53v11Ev
  virtual void  v12(); // _ZN7S3187C53v12Ev
  ~S3187C5(); // tgen
  S3187C5(); // tgen
};
//SIG(-1 S3187C5) C1{ VBC2{ BC3{ v7} v8 v9 v10} BC3 v1 v2 v3 v4 v5 v6 Fi}


void  S3187C5 ::v7(){vfunc_called(this, "_ZN7S3187C52v7Ev");}
void  S3187C5 ::v8(){vfunc_called(this, "_ZN7S3187C52v8Ev");}
void  S3187C5 ::v9(){vfunc_called(this, "_ZN7S3187C52v9Ev");}
void  S3187C5 ::v10(){vfunc_called(this, "_ZN7S3187C53v10Ev");}
void  S3187C5 ::v11(){vfunc_called(this, "_ZN7S3187C53v11Ev");}
void  S3187C5 ::v12(){vfunc_called(this, "_ZN7S3187C53v12Ev");}
S3187C5 ::~S3187C5(){ note_dtor("S3187C5", this);} // tgen
S3187C5 ::S3187C5(){ note_ctor("S3187C5", this);} // tgen

static void Test_S3187C5()
{
  extern Class_Descriptor cd_S3187C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S3187C5, buf);
    S3187C5 *dp, &lv = *(dp=new (buf) S3187C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S3187C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3187C5)");
    check_base_class_offset(lv, (S3187C3*)(S3187C4*), ABISELECT(16,8), "S3187C5");
    check_base_class_offset(lv, (S3187C4*), ABISELECT(16,8), "S3187C5");
    /*is_ambiguous_... S3187C5::S3187C3 */ AMB_check_base_class_offset(lv, (S3187C3*), 0, "S3187C5");
    check_field_offset(lv, s3187c5f0, ABISELECT(8,4), "S3187C5.s3187c5f0");
    test_class_info(&lv, &cd_S3187C5);
    dp->~S3187C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3187C5(Test_S3187C5, "S3187C5", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S3187C5C1Ev();
extern void _ZN7S3187C5D1Ev();
Name_Map name_map_S3187C5[] = {
  NSPAIR(_ZN7S3187C5C1Ev),
  NSPAIR(_ZN7S3187C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3187C3;
extern VTBL_ENTRY _ZTI7S3187C3[];
extern  VTBL_ENTRY _ZTV7S3187C3[];
extern Class_Descriptor cd_S3187C4;
extern VTBL_ENTRY _ZTI7S3187C4[];
extern  VTBL_ENTRY _ZTV7S3187C4[];
extern Class_Descriptor cd_S3187C3;
extern VTBL_ENTRY _ZTI7S3187C3[];
extern  VTBL_ENTRY _ZTV7S3187C3[];
static Base_Class bases_S3187C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3187C3,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3187C4,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3187C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3187C5[];
extern void _ZN7S3187C32v3Ev();
extern void _ZN7S3187C52v7Ev();
extern void _ZN7S3187C52v8Ev();
extern void _ZN7S3187C52v9Ev();
extern void _ZN7S3187C53v10Ev();
extern void _ZN7S3187C53v11Ev();
extern void _ZN7S3187C53v12Ev();
extern void _ZN7S3187C32v3Ev();
extern void _ZN7S3187C42v4Ev();
extern void _ZN7S3187C42v5Ev();
extern void _ZN7S3187C42v6Ev();
static  VTBL_ENTRY vtc_S3187C5[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S3187C5[0]),
  (VTBL_ENTRY)&_ZN7S3187C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3187C52v7Ev,
  (VTBL_ENTRY)&_ZN7S3187C52v8Ev,
  (VTBL_ENTRY)&_ZN7S3187C52v9Ev,
  (VTBL_ENTRY)&_ZN7S3187C53v10Ev,
  (VTBL_ENTRY)&_ZN7S3187C53v11Ev,
  (VTBL_ENTRY)&_ZN7S3187C53v12Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3187C5[0]),
  (VTBL_ENTRY)&_ZN7S3187C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3187C42v4Ev,
  (VTBL_ENTRY)&_ZN7S3187C42v5Ev,
  (VTBL_ENTRY)&_ZN7S3187C42v6Ev,
};
extern VTBL_ENTRY _ZTV7S3187C5[];
static  VTT_ENTRY vtt_S3187C5[] = {
  {&(_ZTV7S3187C5[3]),  3,20},
  {&(_ZTV7S3187C5[16]),  16,20},
};
extern VTBL_ENTRY _ZTI7S3187C5[];
extern  VTBL_ENTRY _ZTV7S3187C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3187C5[];
Class_Descriptor cd_S3187C5 = {  "S3187C5", // class name
  bases_S3187C5, 3,
  &(vtc_S3187C5[0]), // expected_vtbl_contents
  &(vtt_S3187C5[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S3187C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3187C5),20, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3187C5),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3187C2  : S3187C3 , virtual S3187C4 , S3187C5 {
  char s3187c2f0;
  virtual void  v13(); // _ZN7S3187C23v13Ev
  virtual void  v14(); // _ZN7S3187C23v14Ev
  virtual void  v15(); // _ZN7S3187C23v15Ev
  virtual void  v16(); // _ZN7S3187C23v16Ev
  virtual void  v17(); // _ZN7S3187C23v17Ev
  virtual void  v18(); // _ZN7S3187C23v18Ev
  virtual void  v19(); // _ZN7S3187C23v19Ev
  ~S3187C2(); // tgen
  S3187C2(); // tgen
};
//SIG(-1 S3187C2) C1{ BC2{ v8} VBC3{ BC2 v9 v10 v11} BC4{ VBC3 BC2 v12 v13 v14 v15 v16 v17 Fi} v1 v2 v3 v4 v5 v6 v7 Fc}


void  S3187C2 ::v13(){vfunc_called(this, "_ZN7S3187C23v13Ev");}
void  S3187C2 ::v14(){vfunc_called(this, "_ZN7S3187C23v14Ev");}
void  S3187C2 ::v15(){vfunc_called(this, "_ZN7S3187C23v15Ev");}
void  S3187C2 ::v16(){vfunc_called(this, "_ZN7S3187C23v16Ev");}
void  S3187C2 ::v17(){vfunc_called(this, "_ZN7S3187C23v17Ev");}
void  S3187C2 ::v18(){vfunc_called(this, "_ZN7S3187C23v18Ev");}
void  S3187C2 ::v19(){vfunc_called(this, "_ZN7S3187C23v19Ev");}
S3187C2 ::~S3187C2(){ note_dtor("S3187C2", this);} // tgen
S3187C2 ::S3187C2(){ note_ctor("S3187C2", this);} // tgen

static void Test_S3187C2()
{
  extern Class_Descriptor cd_S3187C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S3187C2, buf);
    S3187C2 *dp, &lv = *(dp=new (buf) S3187C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S3187C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3187C2)");
    /*is_ambiguous_... S3187C2::S3187C3 */ AMB_check_base_class_offset(lv, (S3187C3*), 0, "S3187C2");
    check_base_class_offset(lv, (S3187C3*)(S3187C4*), ABISELECT(24,16), "S3187C2");
    check_base_class_offset(lv, (S3187C4*), ABISELECT(24,16), "S3187C2");
    check_base_class_offset(lv, (S3187C4*)(S3187C5*), ABISELECT(24,16), "S3187C2");
    /*is_ambiguous_... S3187C5::S3187C3 */ AMB_check_base_class_offset(lv, (S3187C3*)(S3187C5*), ABISELECT(8,4), "S3187C2");
    check_base_class_offset(lv, (S3187C5*), ABISELECT(8,4), "S3187C2");
    check_field_offset(lv, s3187c2f0, ABISELECT(20,12), "S3187C2.s3187c2f0");
    test_class_info(&lv, &cd_S3187C2);
    dp->~S3187C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3187C2(Test_S3187C2, "S3187C2", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S3187C2C1Ev();
extern void _ZN7S3187C2D1Ev();
Name_Map name_map_S3187C2[] = {
  NSPAIR(_ZN7S3187C2C1Ev),
  NSPAIR(_ZN7S3187C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3187C3;
extern VTBL_ENTRY _ZTI7S3187C3[];
extern  VTBL_ENTRY _ZTV7S3187C3[];
extern Class_Descriptor cd_S3187C3;
extern VTBL_ENTRY _ZTI7S3187C3[];
extern  VTBL_ENTRY _ZTV7S3187C3[];
extern Class_Descriptor cd_S3187C4;
extern VTBL_ENTRY _ZTI7S3187C4[];
extern  VTBL_ENTRY _ZTV7S3187C4[];
extern Class_Descriptor cd_S3187C3;
extern VTBL_ENTRY _ZTI7S3187C3[];
extern  VTBL_ENTRY _ZTV7S3187C3[];
extern Class_Descriptor cd_S3187C5;
extern VTBL_ENTRY _ZTI7S3187C5[];
extern  VTBL_ENTRY _ZTV7S3187C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3187C5[];
static Base_Class bases_S3187C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3187C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3187C3,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3187C4,    ABISELECT(24,16), //bcp->offset
    21, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3187C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3187C5,    ABISELECT(8,4), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3187C2[];
extern void _ZN7S3187C32v3Ev();
extern void _ZN7S3187C23v13Ev();
extern void _ZN7S3187C23v14Ev();
extern void _ZN7S3187C23v15Ev();
extern void _ZN7S3187C23v16Ev();
extern void _ZN7S3187C23v17Ev();
extern void _ZN7S3187C23v18Ev();
extern void _ZN7S3187C23v19Ev();
extern void _ZN7S3187C32v3Ev();
extern void _ZN7S3187C52v7Ev();
extern void _ZN7S3187C52v8Ev();
extern void _ZN7S3187C52v9Ev();
extern void _ZN7S3187C53v10Ev();
extern void _ZN7S3187C53v11Ev();
extern void _ZN7S3187C53v12Ev();
extern void _ZN7S3187C32v3Ev();
extern void _ZN7S3187C42v4Ev();
extern void _ZN7S3187C42v5Ev();
extern void _ZN7S3187C42v6Ev();
static  VTBL_ENTRY vtc_S3187C2[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S3187C2[0]),
  (VTBL_ENTRY)&_ZN7S3187C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3187C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3187C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3187C23v15Ev,
  (VTBL_ENTRY)&_ZN7S3187C23v16Ev,
  (VTBL_ENTRY)&_ZN7S3187C23v17Ev,
  (VTBL_ENTRY)&_ZN7S3187C23v18Ev,
  (VTBL_ENTRY)&_ZN7S3187C23v19Ev,
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3187C2[0]),
  (VTBL_ENTRY)&_ZN7S3187C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3187C52v7Ev,
  (VTBL_ENTRY)&_ZN7S3187C52v8Ev,
  (VTBL_ENTRY)&_ZN7S3187C52v9Ev,
  (VTBL_ENTRY)&_ZN7S3187C53v10Ev,
  (VTBL_ENTRY)&_ZN7S3187C53v11Ev,
  (VTBL_ENTRY)&_ZN7S3187C53v12Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S3187C2[0]),
  (VTBL_ENTRY)&_ZN7S3187C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3187C42v4Ev,
  (VTBL_ENTRY)&_ZN7S3187C42v5Ev,
  (VTBL_ENTRY)&_ZN7S3187C42v6Ev,
};
extern VTBL_ENTRY _ZTV7S3187C2[];
extern void _ZN7S3187C32v3Ev();
extern void _ZN7S3187C52v7Ev();
extern void _ZN7S3187C52v8Ev();
extern void _ZN7S3187C52v9Ev();
extern void _ZN7S3187C53v10Ev();
extern void _ZN7S3187C53v11Ev();
extern void _ZN7S3187C53v12Ev();
static  VTBL_ENTRY _tg__ZTV7S3187C5__7S3187C2[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S3187C5[0]),
  (VTBL_ENTRY)&_ZN7S3187C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3187C52v7Ev,
  (VTBL_ENTRY)&_ZN7S3187C52v8Ev,
  (VTBL_ENTRY)&_ZN7S3187C52v9Ev,
  (VTBL_ENTRY)&_ZN7S3187C53v10Ev,
  (VTBL_ENTRY)&_ZN7S3187C53v11Ev,
  (VTBL_ENTRY)&_ZN7S3187C53v12Ev,
};
extern void _ZN7S3187C32v3Ev();
extern void _ZN7S3187C42v4Ev();
extern void _ZN7S3187C42v5Ev();
extern void _ZN7S3187C42v6Ev();
static  VTBL_ENTRY _tg__ZTV7S3187C4__7S3187C5__7S3187C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S3187C5[0]),
  (VTBL_ENTRY)&_ZN7S3187C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3187C42v4Ev,
  (VTBL_ENTRY)&_ZN7S3187C42v5Ev,
  (VTBL_ENTRY)&_ZN7S3187C42v6Ev,
};
static  VTT_ENTRY vtt_S3187C2[] = {
  {&(_ZTV7S3187C2[3]),  3,31},
  {&(_tg__ZTV7S3187C5__7S3187C2[3]),  3,10},
  {&(_tg__ZTV7S3187C4__7S3187C5__7S3187C2[6]),  6,10},
  {&(_ZTV7S3187C2[27]),  27,31},
  {&(_ZTV7S3187C2[14]),  14,31},
};
extern VTBL_ENTRY _ZTI7S3187C2[];
extern  VTBL_ENTRY _ZTV7S3187C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3187C2[];
Class_Descriptor cd_S3187C2 = {  "S3187C2", // class name
  bases_S3187C2, 5,
  &(vtc_S3187C2[0]), // expected_vtbl_contents
  &(vtt_S3187C2[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S3187C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S3187C2),31, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3187C2),5, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3187C1  : S3187C2 {
  ::S19905C17_nt s3187c1f0;
  virtual void  v1(); // _ZN7S3187C12v1Ev
  virtual void  v2(); // _ZN7S3187C12v2Ev
  ~S3187C1(); // tgen
  S3187C1(); // tgen
};
//SIG(1 S3187C1) C1{ BC2{ BC3{ v3} VBC4{ BC3 v4 v5 v6} BC5{ VBC4 BC3 v7 v8 v9 v10 v11 v12 Fi} v13 v14 v15 v16 v17 v18 v19 Fc} v1 v2 FC6{}}


void  S3187C1 ::v1(){vfunc_called(this, "_ZN7S3187C12v1Ev");}
void  S3187C1 ::v2(){vfunc_called(this, "_ZN7S3187C12v2Ev");}
S3187C1 ::~S3187C1(){ note_dtor("S3187C1", this);} // tgen
S3187C1 ::S3187C1(){ note_ctor("S3187C1", this);} // tgen

static void Test_S3187C1()
{
  extern Class_Descriptor cd_S3187C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S3187C1, buf);
    S3187C1 *dp, &lv = *(dp=new (buf) S3187C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S3187C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3187C1)");
    /*is_ambiguous_... S3187C2::S3187C3 */ AMB_check_base_class_offset(lv, (S3187C3*)(S3187C2*), 0, "S3187C1");
    check_base_class_offset(lv, (S3187C3*)(S3187C4*), ABISELECT(24,16), "S3187C1");
    check_base_class_offset(lv, (S3187C4*)(S3187C2*), ABISELECT(24,16), "S3187C1");
    check_base_class_offset(lv, (S3187C4*)(S3187C5*)(S3187C2*), ABISELECT(24,16), "S3187C1");
    /*is_ambiguous_... S3187C5::S3187C3 */ AMB_check_base_class_offset(lv, (S3187C3*)(S3187C5*)(S3187C2*), ABISELECT(8,4), "S3187C1");
    check_base_class_offset(lv, (S3187C5*)(S3187C2*), ABISELECT(8,4), "S3187C1");
    check_base_class_offset(lv, (S3187C2*), 0, "S3187C1");
    check_field_offset(lv, s3187c1f0, ABISELECT(21,13), "S3187C1.s3187c1f0");
    test_class_info(&lv, &cd_S3187C1);
    dp->~S3187C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3187C1(Test_S3187C1, "S3187C1", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S3187C1C1Ev();
extern void _ZN7S3187C1D1Ev();
Name_Map name_map_S3187C1[] = {
  NSPAIR(_ZN7S3187C1C1Ev),
  NSPAIR(_ZN7S3187C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3187C3;
extern VTBL_ENTRY _ZTI7S3187C3[];
extern  VTBL_ENTRY _ZTV7S3187C3[];
extern Class_Descriptor cd_S3187C3;
extern VTBL_ENTRY _ZTI7S3187C3[];
extern  VTBL_ENTRY _ZTV7S3187C3[];
extern Class_Descriptor cd_S3187C4;
extern VTBL_ENTRY _ZTI7S3187C4[];
extern  VTBL_ENTRY _ZTV7S3187C4[];
extern Class_Descriptor cd_S3187C3;
extern VTBL_ENTRY _ZTI7S3187C3[];
extern  VTBL_ENTRY _ZTV7S3187C3[];
extern Class_Descriptor cd_S3187C5;
extern VTBL_ENTRY _ZTI7S3187C5[];
extern  VTBL_ENTRY _ZTV7S3187C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3187C5[];
extern Class_Descriptor cd_S3187C2;
extern VTBL_ENTRY _ZTI7S3187C2[];
extern  VTBL_ENTRY _ZTV7S3187C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3187C2[];
static Base_Class bases_S3187C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3187C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3187C3,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3187C4,    ABISELECT(24,16), //bcp->offset
    23, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S3187C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3187C5,    ABISELECT(8,4), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3187C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3187C1[];
extern void _ZN7S3187C32v3Ev();
extern void _ZN7S3187C23v13Ev();
extern void _ZN7S3187C23v14Ev();
extern void _ZN7S3187C23v15Ev();
extern void _ZN7S3187C23v16Ev();
extern void _ZN7S3187C23v17Ev();
extern void _ZN7S3187C23v18Ev();
extern void _ZN7S3187C23v19Ev();
extern void _ZN7S3187C12v1Ev();
extern void _ZN7S3187C12v2Ev();
extern void _ZN7S3187C32v3Ev();
extern void _ZN7S3187C52v7Ev();
extern void _ZN7S3187C52v8Ev();
extern void _ZN7S3187C52v9Ev();
extern void _ZN7S3187C53v10Ev();
extern void _ZN7S3187C53v11Ev();
extern void _ZN7S3187C53v12Ev();
extern void _ZN7S3187C32v3Ev();
extern void _ZN7S3187C42v4Ev();
extern void _ZN7S3187C42v5Ev();
extern void _ZN7S3187C42v6Ev();
static  VTBL_ENTRY vtc_S3187C1[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S3187C1[0]),
  (VTBL_ENTRY)&_ZN7S3187C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3187C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3187C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3187C23v15Ev,
  (VTBL_ENTRY)&_ZN7S3187C23v16Ev,
  (VTBL_ENTRY)&_ZN7S3187C23v17Ev,
  (VTBL_ENTRY)&_ZN7S3187C23v18Ev,
  (VTBL_ENTRY)&_ZN7S3187C23v19Ev,
  (VTBL_ENTRY)&_ZN7S3187C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3187C12v2Ev,
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3187C1[0]),
  (VTBL_ENTRY)&_ZN7S3187C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3187C52v7Ev,
  (VTBL_ENTRY)&_ZN7S3187C52v8Ev,
  (VTBL_ENTRY)&_ZN7S3187C52v9Ev,
  (VTBL_ENTRY)&_ZN7S3187C53v10Ev,
  (VTBL_ENTRY)&_ZN7S3187C53v11Ev,
  (VTBL_ENTRY)&_ZN7S3187C53v12Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S3187C1[0]),
  (VTBL_ENTRY)&_ZN7S3187C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3187C42v4Ev,
  (VTBL_ENTRY)&_ZN7S3187C42v5Ev,
  (VTBL_ENTRY)&_ZN7S3187C42v6Ev,
};
extern VTBL_ENTRY _ZTV7S3187C1[];
extern void _ZN7S3187C32v3Ev();
extern void _ZN7S3187C23v13Ev();
extern void _ZN7S3187C23v14Ev();
extern void _ZN7S3187C23v15Ev();
extern void _ZN7S3187C23v16Ev();
extern void _ZN7S3187C23v17Ev();
extern void _ZN7S3187C23v18Ev();
extern void _ZN7S3187C23v19Ev();
static  VTBL_ENTRY _tg__ZTV7S3187C2__7S3187C1[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S3187C2[0]),
  (VTBL_ENTRY)&_ZN7S3187C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3187C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3187C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3187C23v15Ev,
  (VTBL_ENTRY)&_ZN7S3187C23v16Ev,
  (VTBL_ENTRY)&_ZN7S3187C23v17Ev,
  (VTBL_ENTRY)&_ZN7S3187C23v18Ev,
  (VTBL_ENTRY)&_ZN7S3187C23v19Ev,
};
extern void _ZN7S3187C32v3Ev();
extern void _ZN7S3187C52v7Ev();
extern void _ZN7S3187C52v8Ev();
extern void _ZN7S3187C52v9Ev();
extern void _ZN7S3187C53v10Ev();
extern void _ZN7S3187C53v11Ev();
extern void _ZN7S3187C53v12Ev();
static  VTBL_ENTRY _tg__ZTV7S3187C57S3187C2__7S3187C1[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S3187C5[0]),
  (VTBL_ENTRY)&_ZN7S3187C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3187C52v7Ev,
  (VTBL_ENTRY)&_ZN7S3187C52v8Ev,
  (VTBL_ENTRY)&_ZN7S3187C52v9Ev,
  (VTBL_ENTRY)&_ZN7S3187C53v10Ev,
  (VTBL_ENTRY)&_ZN7S3187C53v11Ev,
  (VTBL_ENTRY)&_ZN7S3187C53v12Ev,
};
extern void _ZN7S3187C32v3Ev();
extern void _ZN7S3187C42v4Ev();
extern void _ZN7S3187C42v5Ev();
extern void _ZN7S3187C42v6Ev();
static  VTBL_ENTRY _tg__ZTV7S3187C4__7S3187C57S3187C2__7S3187C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S3187C5[0]),
  (VTBL_ENTRY)&_ZN7S3187C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3187C42v4Ev,
  (VTBL_ENTRY)&_ZN7S3187C42v5Ev,
  (VTBL_ENTRY)&_ZN7S3187C42v6Ev,
};
extern void _ZN7S3187C32v3Ev();
extern void _ZN7S3187C42v4Ev();
extern void _ZN7S3187C42v5Ev();
extern void _ZN7S3187C42v6Ev();
static  VTBL_ENTRY _tg__ZTV7S3187C4__7S3187C2__7S3187C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S3187C2[0]),
  (VTBL_ENTRY)&_ZN7S3187C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3187C42v4Ev,
  (VTBL_ENTRY)&_ZN7S3187C42v5Ev,
  (VTBL_ENTRY)&_ZN7S3187C42v6Ev,
};
extern void _ZN7S3187C32v3Ev();
extern void _ZN7S3187C52v7Ev();
extern void _ZN7S3187C52v8Ev();
extern void _ZN7S3187C52v9Ev();
extern void _ZN7S3187C53v10Ev();
extern void _ZN7S3187C53v11Ev();
extern void _ZN7S3187C53v12Ev();
static  VTBL_ENTRY _tg__ZTV7S3187C5__7S3187C2__7S3187C1[] = {
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3187C2[0]),
  (VTBL_ENTRY)&_ZN7S3187C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3187C52v7Ev,
  (VTBL_ENTRY)&_ZN7S3187C52v8Ev,
  (VTBL_ENTRY)&_ZN7S3187C52v9Ev,
  (VTBL_ENTRY)&_ZN7S3187C53v10Ev,
  (VTBL_ENTRY)&_ZN7S3187C53v11Ev,
  (VTBL_ENTRY)&_ZN7S3187C53v12Ev,
};
static  VTT_ENTRY vtt_S3187C1[] = {
  {&(_ZTV7S3187C1[3]),  3,33},
  {&(_tg__ZTV7S3187C2__7S3187C1[3]),  3,11},
  {&(_tg__ZTV7S3187C57S3187C2__7S3187C1[3]),  3,10},
  {&(_tg__ZTV7S3187C4__7S3187C57S3187C2__7S3187C1[6]),  6,10},
  {&(_tg__ZTV7S3187C4__7S3187C2__7S3187C1[6]),  6,10},
  {&(_tg__ZTV7S3187C5__7S3187C2__7S3187C1[3]),  3,10},
  {&(_ZTV7S3187C1[29]),  29,33},
  {&(_ZTV7S3187C1[16]),  16,33},
};
extern VTBL_ENTRY _ZTI7S3187C1[];
extern  VTBL_ENTRY _ZTV7S3187C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3187C1[];
Class_Descriptor cd_S3187C1 = {  "S3187C1", // class name
  bases_S3187C1, 6,
  &(vtc_S3187C1[0]), // expected_vtbl_contents
  &(vtt_S3187C1[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S3187C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3187C1),33, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3187C1),8, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7116C2  {
  __tsi64 s7116c2f0;
  int s7116c2f1;
  virtual  ~S7116C2(); // _ZN7S7116C2D1Ev
  virtual void  v7(); // _ZN7S7116C22v7Ev
  virtual void  v8(); // _ZN7S7116C22v8Ev
  S7116C2(); // tgen
};
//SIG(-1 S7116C2) C1{ vd v1 v2 FL Fi}


 S7116C2 ::~S7116C2(){ note_dtor("S7116C2", this);}
void  S7116C2 ::v7(){vfunc_called(this, "_ZN7S7116C22v7Ev");}
void  S7116C2 ::v8(){vfunc_called(this, "_ZN7S7116C22v8Ev");}
S7116C2 ::S7116C2(){ note_ctor("S7116C2", this);} // tgen

static void Test_S7116C2()
{
  extern Class_Descriptor cd_S7116C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S7116C2, buf);
    S7116C2 *dp, &lv = *(dp=new (buf) S7116C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S7116C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7116C2)");
    check_field_offset(lv, s7116c2f0, ABISELECT(8,4), "S7116C2.s7116c2f0");
    check_field_offset(lv, s7116c2f1, ABISELECT(16,12), "S7116C2.s7116c2f1");
    test_class_info(&lv, &cd_S7116C2);
    dp->~S7116C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7116C2(Test_S7116C2, "S7116C2", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S7116C2C1Ev();
extern void _ZN7S7116C2D1Ev();
Name_Map name_map_S7116C2[] = {
  NSPAIR(_ZN7S7116C2C1Ev),
  NSPAIR(_ZN7S7116C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7116C2[];
extern void _ZN7S7116C2D1Ev();
extern void _ZN7S7116C2D0Ev();
extern void _ZN7S7116C22v7Ev();
extern void _ZN7S7116C22v8Ev();
static  VTBL_ENTRY vtc_S7116C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7116C2[0]),
  (VTBL_ENTRY)&_ZN7S7116C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7116C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7116C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7116C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S7116C2[];
extern  VTBL_ENTRY _ZTV7S7116C2[];
Class_Descriptor cd_S7116C2 = {  "S7116C2", // class name
  0,0,//no base classes
  &(vtc_S7116C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S7116C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7116C2),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7116C4  {
  virtual void  v9(); // _ZN7S7116C42v9Ev
  virtual void  v10(); // _ZN7S7116C43v10Ev
  virtual void  v11(); // _ZN7S7116C43v11Ev
  virtual void  v12(); // _ZN7S7116C43v12Ev
  virtual void  v13(); // _ZN7S7116C43v13Ev
  virtual void  v14(); // _ZN7S7116C43v14Ev
  virtual void  v15(); // _ZN7S7116C43v15Ev
  virtual void  v16(); // _ZN7S7116C43v16Ev
  virtual void  v17(); // _ZN7S7116C43v17Ev
  ~S7116C4(); // tgen
  S7116C4(); // tgen
};
//SIG(-1 S7116C4) C1{ v1 v2 v3 v4 v5 v6 v7 v8 v9}


void  S7116C4 ::v9(){vfunc_called(this, "_ZN7S7116C42v9Ev");}
void  S7116C4 ::v10(){vfunc_called(this, "_ZN7S7116C43v10Ev");}
void  S7116C4 ::v11(){vfunc_called(this, "_ZN7S7116C43v11Ev");}
void  S7116C4 ::v12(){vfunc_called(this, "_ZN7S7116C43v12Ev");}
void  S7116C4 ::v13(){vfunc_called(this, "_ZN7S7116C43v13Ev");}
void  S7116C4 ::v14(){vfunc_called(this, "_ZN7S7116C43v14Ev");}
void  S7116C4 ::v15(){vfunc_called(this, "_ZN7S7116C43v15Ev");}
void  S7116C4 ::v16(){vfunc_called(this, "_ZN7S7116C43v16Ev");}
void  S7116C4 ::v17(){vfunc_called(this, "_ZN7S7116C43v17Ev");}
S7116C4 ::~S7116C4(){ note_dtor("S7116C4", this);} // tgen
S7116C4 ::S7116C4(){ note_ctor("S7116C4", this);} // tgen

static void Test_S7116C4()
{
  extern Class_Descriptor cd_S7116C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7116C4, buf);
    S7116C4 *dp, &lv = *(dp=new (buf) S7116C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7116C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7116C4)");
    test_class_info(&lv, &cd_S7116C4);
    dp->~S7116C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7116C4(Test_S7116C4, "S7116C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7116C4C1Ev();
extern void _ZN7S7116C4D1Ev();
Name_Map name_map_S7116C4[] = {
  NSPAIR(_ZN7S7116C4C1Ev),
  NSPAIR(_ZN7S7116C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7116C4[];
extern void _ZN7S7116C42v9Ev();
extern void _ZN7S7116C43v10Ev();
extern void _ZN7S7116C43v11Ev();
extern void _ZN7S7116C43v12Ev();
extern void _ZN7S7116C43v13Ev();
extern void _ZN7S7116C43v14Ev();
extern void _ZN7S7116C43v15Ev();
extern void _ZN7S7116C43v16Ev();
extern void _ZN7S7116C43v17Ev();
static  VTBL_ENTRY vtc_S7116C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7116C4[0]),
  (VTBL_ENTRY)&_ZN7S7116C42v9Ev,
  (VTBL_ENTRY)&_ZN7S7116C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7116C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7116C43v12Ev,
  (VTBL_ENTRY)&_ZN7S7116C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7116C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7116C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7116C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7116C43v17Ev,
};
extern VTBL_ENTRY _ZTI7S7116C4[];
extern  VTBL_ENTRY _ZTV7S7116C4[];
Class_Descriptor cd_S7116C4 = {  "S7116C4", // class name
  0,0,//no base classes
  &(vtc_S7116C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7116C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7116C4),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7116C3  : virtual S7116C4 {
  __tsi64 s7116c3f0;
  virtual void  v18(); // _ZN7S7116C33v18Ev
  virtual void  v19(); // _ZN7S7116C33v19Ev
  virtual void  v20(); // _ZN7S7116C33v20Ev
  virtual void  v21(); // _ZN7S7116C33v21Ev
  ~S7116C3(); // tgen
  S7116C3(); // tgen
};
//SIG(-1 S7116C3) C1{ VBC2{ v5 v6 v7 v8 v9 v10 v11 v12 v13} v1 v2 v3 v4 FL}


void  S7116C3 ::v18(){vfunc_called(this, "_ZN7S7116C33v18Ev");}
void  S7116C3 ::v19(){vfunc_called(this, "_ZN7S7116C33v19Ev");}
void  S7116C3 ::v20(){vfunc_called(this, "_ZN7S7116C33v20Ev");}
void  S7116C3 ::v21(){vfunc_called(this, "_ZN7S7116C33v21Ev");}
S7116C3 ::~S7116C3(){ note_dtor("S7116C3", this);} // tgen
S7116C3 ::S7116C3(){ note_ctor("S7116C3", this);} // tgen

static void Test_S7116C3()
{
  extern Class_Descriptor cd_S7116C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S7116C3, buf);
    S7116C3 *dp, &lv = *(dp=new (buf) S7116C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S7116C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7116C3)");
    check_base_class_offset(lv, (S7116C4*), 0, "S7116C3");
    check_field_offset(lv, s7116c3f0, ABISELECT(8,4), "S7116C3.s7116c3f0");
    test_class_info(&lv, &cd_S7116C3);
    dp->~S7116C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7116C3(Test_S7116C3, "S7116C3", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S7116C3C1Ev();
extern void _ZN7S7116C3D1Ev();
Name_Map name_map_S7116C3[] = {
  NSPAIR(_ZN7S7116C3C1Ev),
  NSPAIR(_ZN7S7116C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7116C4;
extern VTBL_ENTRY _ZTI7S7116C4[];
extern  VTBL_ENTRY _ZTV7S7116C4[];
static Base_Class bases_S7116C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7116C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7116C3[];
extern void _ZN7S7116C42v9Ev();
extern void _ZN7S7116C43v10Ev();
extern void _ZN7S7116C43v11Ev();
extern void _ZN7S7116C43v12Ev();
extern void _ZN7S7116C43v13Ev();
extern void _ZN7S7116C43v14Ev();
extern void _ZN7S7116C43v15Ev();
extern void _ZN7S7116C43v16Ev();
extern void _ZN7S7116C43v17Ev();
extern void _ZN7S7116C33v18Ev();
extern void _ZN7S7116C33v19Ev();
extern void _ZN7S7116C33v20Ev();
extern void _ZN7S7116C33v21Ev();
static  VTBL_ENTRY vtc_S7116C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7116C3[0]),
  (VTBL_ENTRY)&_ZN7S7116C42v9Ev,
  (VTBL_ENTRY)&_ZN7S7116C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7116C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7116C43v12Ev,
  (VTBL_ENTRY)&_ZN7S7116C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7116C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7116C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7116C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7116C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7116C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7116C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7116C33v20Ev,
  (VTBL_ENTRY)&_ZN7S7116C33v21Ev,
};
extern VTBL_ENTRY _ZTV7S7116C3[];
static  VTT_ENTRY vtt_S7116C3[] = {
  {&(_ZTV7S7116C3[12]),  12,25},
  {&(_ZTV7S7116C3[12]),  12,25},
};
extern VTBL_ENTRY _ZTI7S7116C3[];
extern  VTBL_ENTRY _ZTV7S7116C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7116C3[];
Class_Descriptor cd_S7116C3 = {  "S7116C3", // class name
  bases_S7116C3, 1,
  &(vtc_S7116C3[0]), // expected_vtbl_contents
  &(vtt_S7116C3[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S7116C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7116C3),25, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7116C3),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7116C1  : S7116C2 , S7116C3 {
  int s7116c1f0[2];
  virtual void  v1(); // _ZN7S7116C12v1Ev
  virtual void  v2(); // _ZN7S7116C12v2Ev
  virtual void  v3(); // _ZN7S7116C12v3Ev
  virtual void  v4(); // _ZN7S7116C12v4Ev
  virtual void  v5(); // _ZN7S7116C12v5Ev
  virtual void  v6(); // _ZN7S7116C12v6Ev
  ~S7116C1(); // tgen
  S7116C1(); // tgen
};
//SIG(1 S7116C1) C1{ BC2{ vd v7 v8 FL Fi} BC3{ VBC4{ v9 v10 v11 v12 v13 v14 v15 v16 v17} v18 v19 v20 v21 FL} v1 v2 v3 v4 v5 v6 Fi[2]}


void  S7116C1 ::v1(){vfunc_called(this, "_ZN7S7116C12v1Ev");}
void  S7116C1 ::v2(){vfunc_called(this, "_ZN7S7116C12v2Ev");}
void  S7116C1 ::v3(){vfunc_called(this, "_ZN7S7116C12v3Ev");}
void  S7116C1 ::v4(){vfunc_called(this, "_ZN7S7116C12v4Ev");}
void  S7116C1 ::v5(){vfunc_called(this, "_ZN7S7116C12v5Ev");}
void  S7116C1 ::v6(){vfunc_called(this, "_ZN7S7116C12v6Ev");}
S7116C1 ::~S7116C1(){ note_dtor("S7116C1", this);} // tgen
S7116C1 ::S7116C1(){ note_ctor("S7116C1", this);} // tgen

static void Test_S7116C1()
{
  extern Class_Descriptor cd_S7116C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,10)];
    init_test(&cd_S7116C1, buf);
    S7116C1 *dp, &lv = *(dp=new (buf) S7116C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,36), "sizeof(S7116C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7116C1)");
    check_base_class_offset(lv, (S7116C2*), 0, "S7116C1");
    check_base_class_offset(lv, (S7116C4*)(S7116C3*), ABISELECT(24,16), "S7116C1");
    check_base_class_offset(lv, (S7116C3*), ABISELECT(24,16), "S7116C1");
    check_field_offset(lv, s7116c1f0, ABISELECT(40,28), "S7116C1.s7116c1f0");
    test_class_info(&lv, &cd_S7116C1);
    dp->~S7116C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7116C1(Test_S7116C1, "S7116C1", ABISELECT(48,36));

#else // __cplusplus

extern void _ZN7S7116C1C1Ev();
extern void _ZN7S7116C1D1Ev();
Name_Map name_map_S7116C1[] = {
  NSPAIR(_ZN7S7116C1C1Ev),
  NSPAIR(_ZN7S7116C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7116C2;
extern VTBL_ENTRY _ZTI7S7116C2[];
extern  VTBL_ENTRY _ZTV7S7116C2[];
extern Class_Descriptor cd_S7116C4;
extern VTBL_ENTRY _ZTI7S7116C4[];
extern  VTBL_ENTRY _ZTV7S7116C4[];
extern Class_Descriptor cd_S7116C3;
extern VTBL_ENTRY _ZTI7S7116C3[];
extern  VTBL_ENTRY _ZTV7S7116C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7116C3[];
static Base_Class bases_S7116C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7116C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7116C4,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7116C3,    ABISELECT(24,16), //bcp->offset
    13, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7116C1[];
extern void _ZN7S7116C1D1Ev();
extern void _ZN7S7116C1D0Ev();
extern void _ZN7S7116C22v7Ev();
extern void _ZN7S7116C22v8Ev();
extern void _ZN7S7116C12v1Ev();
extern void _ZN7S7116C12v2Ev();
extern void _ZN7S7116C12v3Ev();
extern void _ZN7S7116C12v4Ev();
extern void _ZN7S7116C12v5Ev();
extern void _ZN7S7116C12v6Ev();
extern void _ZN7S7116C42v9Ev();
extern void _ZN7S7116C43v10Ev();
extern void _ZN7S7116C43v11Ev();
extern void _ZN7S7116C43v12Ev();
extern void _ZN7S7116C43v13Ev();
extern void _ZN7S7116C43v14Ev();
extern void _ZN7S7116C43v15Ev();
extern void _ZN7S7116C43v16Ev();
extern void _ZN7S7116C43v17Ev();
extern void _ZN7S7116C33v18Ev();
extern void _ZN7S7116C33v19Ev();
extern void _ZN7S7116C33v20Ev();
extern void _ZN7S7116C33v21Ev();
static  VTBL_ENTRY vtc_S7116C1[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7116C1[0]),
  (VTBL_ENTRY)&_ZN7S7116C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7116C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7116C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7116C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7116C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7116C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7116C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7116C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7116C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7116C12v6Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7116C1[0]),
  (VTBL_ENTRY)&_ZN7S7116C42v9Ev,
  (VTBL_ENTRY)&_ZN7S7116C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7116C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7116C43v12Ev,
  (VTBL_ENTRY)&_ZN7S7116C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7116C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7116C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7116C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7116C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7116C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7116C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7116C33v20Ev,
  (VTBL_ENTRY)&_ZN7S7116C33v21Ev,
};
extern VTBL_ENTRY _ZTV7S7116C1[];
extern void _ZN7S7116C42v9Ev();
extern void _ZN7S7116C43v10Ev();
extern void _ZN7S7116C43v11Ev();
extern void _ZN7S7116C43v12Ev();
extern void _ZN7S7116C43v13Ev();
extern void _ZN7S7116C43v14Ev();
extern void _ZN7S7116C43v15Ev();
extern void _ZN7S7116C43v16Ev();
extern void _ZN7S7116C43v17Ev();
extern void _ZN7S7116C33v18Ev();
extern void _ZN7S7116C33v19Ev();
extern void _ZN7S7116C33v20Ev();
extern void _ZN7S7116C33v21Ev();
static  VTBL_ENTRY _tg__ZTV7S7116C3__7S7116C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7116C3[0]),
  (VTBL_ENTRY)&_ZN7S7116C42v9Ev,
  (VTBL_ENTRY)&_ZN7S7116C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7116C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7116C43v12Ev,
  (VTBL_ENTRY)&_ZN7S7116C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7116C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7116C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7116C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7116C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7116C33v18Ev,
  (VTBL_ENTRY)&_ZN7S7116C33v19Ev,
  (VTBL_ENTRY)&_ZN7S7116C33v20Ev,
  (VTBL_ENTRY)&_ZN7S7116C33v21Ev,
};
static  VTT_ENTRY vtt_S7116C1[] = {
  {&(_ZTV7S7116C1[3]),  3,38},
  {&(_tg__ZTV7S7116C3__7S7116C1[12]),  12,25},
  {&(_tg__ZTV7S7116C3__7S7116C1[12]),  12,25},
  {&(_ZTV7S7116C1[25]),  25,38},
  {&(_ZTV7S7116C1[25]),  25,38},
};
extern VTBL_ENTRY _ZTI7S7116C1[];
extern  VTBL_ENTRY _ZTV7S7116C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7116C1[];
Class_Descriptor cd_S7116C1 = {  "S7116C1", // class name
  bases_S7116C1, 3,
  &(vtc_S7116C1[0]), // expected_vtbl_contents
  &(vtt_S7116C1[0]), // expected_vtt_contents
  ABISELECT(48,36), // object size
  NSPAIRA(_ZTI7S7116C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7116C1),38, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7116C1),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3744C2  : S1679C4_nt {
  virtual void  v8(); // _ZN7S3744C22v8Ev
  virtual void  v9(); // _ZN7S3744C22v9Ev
  virtual void  v10(); // _ZN7S3744C23v10Ev
  virtual void  v11(); // _ZN7S3744C23v11Ev
  virtual void  v12(); // _ZN7S3744C23v12Ev
  virtual void  v13(); // _ZN7S3744C23v13Ev
  virtual void  v14(); // _ZN7S3744C23v14Ev
  virtual void  v15(); // _ZN7S3744C23v15Ev
  virtual void  v16(); // _ZN7S3744C23v16Ev
  virtual void  v17(); // _ZN7S3744C23v17Ev
  virtual void  v18(); // _ZN7S3744C23v18Ev
  virtual void  v19(); // _ZN7S3744C23v19Ev
  ~S3744C2(); // tgen
  S3744C2(); // tgen
};
//SIG(-1 S3744C2) C1{ BC2{ vd m Fi} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


void  S3744C2 ::v8(){vfunc_called(this, "_ZN7S3744C22v8Ev");}
void  S3744C2 ::v9(){vfunc_called(this, "_ZN7S3744C22v9Ev");}
void  S3744C2 ::v10(){vfunc_called(this, "_ZN7S3744C23v10Ev");}
void  S3744C2 ::v11(){vfunc_called(this, "_ZN7S3744C23v11Ev");}
void  S3744C2 ::v12(){vfunc_called(this, "_ZN7S3744C23v12Ev");}
void  S3744C2 ::v13(){vfunc_called(this, "_ZN7S3744C23v13Ev");}
void  S3744C2 ::v14(){vfunc_called(this, "_ZN7S3744C23v14Ev");}
void  S3744C2 ::v15(){vfunc_called(this, "_ZN7S3744C23v15Ev");}
void  S3744C2 ::v16(){vfunc_called(this, "_ZN7S3744C23v16Ev");}
void  S3744C2 ::v17(){vfunc_called(this, "_ZN7S3744C23v17Ev");}
void  S3744C2 ::v18(){vfunc_called(this, "_ZN7S3744C23v18Ev");}
void  S3744C2 ::v19(){vfunc_called(this, "_ZN7S3744C23v19Ev");}
S3744C2 ::~S3744C2(){ note_dtor("S3744C2", this);} // tgen
S3744C2 ::S3744C2(){ note_ctor("S3744C2", this);} // tgen

static void Test_S3744C2()
{
  extern Class_Descriptor cd_S3744C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3744C2, buf);
    S3744C2 *dp, &lv = *(dp=new (buf) S3744C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3744C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3744C2)");
    check_base_class_offset(lv, (S1679C4_nt*), 0, "S3744C2");
    test_class_info(&lv, &cd_S3744C2);
    dp->~S3744C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3744C2(Test_S3744C2, "S3744C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3744C2C1Ev();
extern void _ZN7S3744C2D1Ev();
Name_Map name_map_S3744C2[] = {
  NSPAIR(_ZN7S3744C2C1Ev),
  NSPAIR(_ZN7S3744C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
static Base_Class bases_S3744C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3744C2[];
extern void _ZN7S3744C2D1Ev();
extern void _ZN7S3744C2D0Ev();
extern void _ZN7S3744C22v8Ev();
extern void _ZN7S3744C22v9Ev();
extern void _ZN7S3744C23v10Ev();
extern void _ZN7S3744C23v11Ev();
extern void _ZN7S3744C23v12Ev();
extern void _ZN7S3744C23v13Ev();
extern void _ZN7S3744C23v14Ev();
extern void _ZN7S3744C23v15Ev();
extern void _ZN7S3744C23v16Ev();
extern void _ZN7S3744C23v17Ev();
extern void _ZN7S3744C23v18Ev();
extern void _ZN7S3744C23v19Ev();
static  VTBL_ENTRY vtc_S3744C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3744C2[0]),
  (VTBL_ENTRY)&_ZN7S3744C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3744C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3744C22v8Ev,
  (VTBL_ENTRY)&_ZN7S3744C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3744C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3744C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3744C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3744C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3744C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3744C23v15Ev,
  (VTBL_ENTRY)&_ZN7S3744C23v16Ev,
  (VTBL_ENTRY)&_ZN7S3744C23v17Ev,
  (VTBL_ENTRY)&_ZN7S3744C23v18Ev,
  (VTBL_ENTRY)&_ZN7S3744C23v19Ev,
};
extern VTBL_ENTRY _ZTI7S3744C2[];
extern  VTBL_ENTRY _ZTV7S3744C2[];
Class_Descriptor cd_S3744C2 = {  "S3744C2", // class name
  bases_S3744C2, 1,
  &(vtc_S3744C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3744C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3744C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3744C1  : S3744C2 {
  char s3744c1f0[2];
  ::S3765C5_nt s3744c1f1;
  virtual  ~S3744C1(); // _ZN7S3744C1D1Ev
  virtual void  v1(); // _ZN7S3744C12v1Ev
  virtual void  v2(); // _ZN7S3744C12v2Ev
  virtual void  v3(); // _ZN7S3744C12v3Ev
  virtual void  v4(); // _ZN7S3744C12v4Ev
  virtual void  v5(); // _ZN7S3744C12v5Ev
  virtual void  v6(); // _ZN7S3744C12v6Ev
  virtual void  v7(); // _ZN7S3744C12v7Ev
  S3744C1(); // tgen
};
//SIG(1 S3744C1) C1{ BC2{ BC3{ vd m Fi} v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19} vd v1 v2 v3 v4 v5 v6 v7 Fc[2] FC4{ m Fp[2]}}


 S3744C1 ::~S3744C1(){ note_dtor("S3744C1", this);}
void  S3744C1 ::v1(){vfunc_called(this, "_ZN7S3744C12v1Ev");}
void  S3744C1 ::v2(){vfunc_called(this, "_ZN7S3744C12v2Ev");}
void  S3744C1 ::v3(){vfunc_called(this, "_ZN7S3744C12v3Ev");}
void  S3744C1 ::v4(){vfunc_called(this, "_ZN7S3744C12v4Ev");}
void  S3744C1 ::v5(){vfunc_called(this, "_ZN7S3744C12v5Ev");}
void  S3744C1 ::v6(){vfunc_called(this, "_ZN7S3744C12v6Ev");}
void  S3744C1 ::v7(){vfunc_called(this, "_ZN7S3744C12v7Ev");}
S3744C1 ::S3744C1(){ note_ctor("S3744C1", this);} // tgen

static void Test_S3744C1()
{
  extern Class_Descriptor cd_S3744C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S3744C1, buf);
    S3744C1 *dp, &lv = *(dp=new (buf) S3744C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S3744C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3744C1)");
    check_base_class_offset(lv, (S1679C4_nt*)(S3744C2*), 0, "S3744C1");
    check_base_class_offset(lv, (S3744C2*), 0, "S3744C1");
    check_field_offset(lv, s3744c1f0, ABISELECT(12,8), "S3744C1.s3744c1f0");
    check_field_offset(lv, s3744c1f1, ABISELECT(16,12), "S3744C1.s3744c1f1");
    test_class_info(&lv, &cd_S3744C1);
    dp->~S3744C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3744C1(Test_S3744C1, "S3744C1", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S3744C1C1Ev();
extern void _ZN7S3744C1D1Ev();
Name_Map name_map_S3744C1[] = {
  NSPAIR(_ZN7S3744C1C1Ev),
  NSPAIR(_ZN7S3744C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
extern Class_Descriptor cd_S3744C2;
extern VTBL_ENTRY _ZTI7S3744C2[];
extern  VTBL_ENTRY _ZTV7S3744C2[];
static Base_Class bases_S3744C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3744C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3744C1[];
extern void _ZN7S3744C1D1Ev();
extern void _ZN7S3744C1D0Ev();
extern void _ZN7S3744C22v8Ev();
extern void _ZN7S3744C22v9Ev();
extern void _ZN7S3744C23v10Ev();
extern void _ZN7S3744C23v11Ev();
extern void _ZN7S3744C23v12Ev();
extern void _ZN7S3744C23v13Ev();
extern void _ZN7S3744C23v14Ev();
extern void _ZN7S3744C23v15Ev();
extern void _ZN7S3744C23v16Ev();
extern void _ZN7S3744C23v17Ev();
extern void _ZN7S3744C23v18Ev();
extern void _ZN7S3744C23v19Ev();
extern void _ZN7S3744C12v1Ev();
extern void _ZN7S3744C12v2Ev();
extern void _ZN7S3744C12v3Ev();
extern void _ZN7S3744C12v4Ev();
extern void _ZN7S3744C12v5Ev();
extern void _ZN7S3744C12v6Ev();
extern void _ZN7S3744C12v7Ev();
static  VTBL_ENTRY vtc_S3744C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3744C1[0]),
  (VTBL_ENTRY)&_ZN7S3744C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3744C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3744C22v8Ev,
  (VTBL_ENTRY)&_ZN7S3744C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3744C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3744C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3744C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3744C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3744C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3744C23v15Ev,
  (VTBL_ENTRY)&_ZN7S3744C23v16Ev,
  (VTBL_ENTRY)&_ZN7S3744C23v17Ev,
  (VTBL_ENTRY)&_ZN7S3744C23v18Ev,
  (VTBL_ENTRY)&_ZN7S3744C23v19Ev,
  (VTBL_ENTRY)&_ZN7S3744C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3744C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3744C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3744C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3744C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3744C12v6Ev,
  (VTBL_ENTRY)&_ZN7S3744C12v7Ev,
};
extern VTBL_ENTRY _ZTI7S3744C1[];
extern  VTBL_ENTRY _ZTV7S3744C1[];
Class_Descriptor cd_S3744C1 = {  "S3744C1", // class name
  bases_S3744C1, 2,
  &(vtc_S3744C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S3744C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3744C1),23, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3746C2  : S1679C4_nt {
  virtual void  v8(); // _ZN7S3746C22v8Ev
  virtual void  v9(); // _ZN7S3746C22v9Ev
  virtual void  v10(); // _ZN7S3746C23v10Ev
  virtual void  v11(); // _ZN7S3746C23v11Ev
  virtual void  v12(); // _ZN7S3746C23v12Ev
  virtual void  v13(); // _ZN7S3746C23v13Ev
  virtual void  v14(); // _ZN7S3746C23v14Ev
  virtual void  v15(); // _ZN7S3746C23v15Ev
  virtual void  v16(); // _ZN7S3746C23v16Ev
  virtual void  v17(); // _ZN7S3746C23v17Ev
  virtual void  v18(); // _ZN7S3746C23v18Ev
  virtual void  v19(); // _ZN7S3746C23v19Ev
  ~S3746C2(); // tgen
  S3746C2(); // tgen
};
//SIG(-1 S3746C2) C1{ BC2{ vd m Fi} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


void  S3746C2 ::v8(){vfunc_called(this, "_ZN7S3746C22v8Ev");}
void  S3746C2 ::v9(){vfunc_called(this, "_ZN7S3746C22v9Ev");}
void  S3746C2 ::v10(){vfunc_called(this, "_ZN7S3746C23v10Ev");}
void  S3746C2 ::v11(){vfunc_called(this, "_ZN7S3746C23v11Ev");}
void  S3746C2 ::v12(){vfunc_called(this, "_ZN7S3746C23v12Ev");}
void  S3746C2 ::v13(){vfunc_called(this, "_ZN7S3746C23v13Ev");}
void  S3746C2 ::v14(){vfunc_called(this, "_ZN7S3746C23v14Ev");}
void  S3746C2 ::v15(){vfunc_called(this, "_ZN7S3746C23v15Ev");}
void  S3746C2 ::v16(){vfunc_called(this, "_ZN7S3746C23v16Ev");}
void  S3746C2 ::v17(){vfunc_called(this, "_ZN7S3746C23v17Ev");}
void  S3746C2 ::v18(){vfunc_called(this, "_ZN7S3746C23v18Ev");}
void  S3746C2 ::v19(){vfunc_called(this, "_ZN7S3746C23v19Ev");}
S3746C2 ::~S3746C2(){ note_dtor("S3746C2", this);} // tgen
S3746C2 ::S3746C2(){ note_ctor("S3746C2", this);} // tgen

static void Test_S3746C2()
{
  extern Class_Descriptor cd_S3746C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3746C2, buf);
    S3746C2 *dp, &lv = *(dp=new (buf) S3746C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3746C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3746C2)");
    check_base_class_offset(lv, (S1679C4_nt*), 0, "S3746C2");
    test_class_info(&lv, &cd_S3746C2);
    dp->~S3746C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3746C2(Test_S3746C2, "S3746C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3746C2C1Ev();
extern void _ZN7S3746C2D1Ev();
Name_Map name_map_S3746C2[] = {
  NSPAIR(_ZN7S3746C2C1Ev),
  NSPAIR(_ZN7S3746C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
static Base_Class bases_S3746C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3746C2[];
extern void _ZN7S3746C2D1Ev();
extern void _ZN7S3746C2D0Ev();
extern void _ZN7S3746C22v8Ev();
extern void _ZN7S3746C22v9Ev();
extern void _ZN7S3746C23v10Ev();
extern void _ZN7S3746C23v11Ev();
extern void _ZN7S3746C23v12Ev();
extern void _ZN7S3746C23v13Ev();
extern void _ZN7S3746C23v14Ev();
extern void _ZN7S3746C23v15Ev();
extern void _ZN7S3746C23v16Ev();
extern void _ZN7S3746C23v17Ev();
extern void _ZN7S3746C23v18Ev();
extern void _ZN7S3746C23v19Ev();
static  VTBL_ENTRY vtc_S3746C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3746C2[0]),
  (VTBL_ENTRY)&_ZN7S3746C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3746C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3746C22v8Ev,
  (VTBL_ENTRY)&_ZN7S3746C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3746C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3746C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3746C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3746C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3746C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3746C23v15Ev,
  (VTBL_ENTRY)&_ZN7S3746C23v16Ev,
  (VTBL_ENTRY)&_ZN7S3746C23v17Ev,
  (VTBL_ENTRY)&_ZN7S3746C23v18Ev,
  (VTBL_ENTRY)&_ZN7S3746C23v19Ev,
};
extern VTBL_ENTRY _ZTI7S3746C2[];
extern  VTBL_ENTRY _ZTV7S3746C2[];
Class_Descriptor cd_S3746C2 = {  "S3746C2", // class name
  bases_S3746C2, 1,
  &(vtc_S3746C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3746C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3746C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3746C1  : S3746C2 {
  ::S3765C5_nt s3746c1f0;
  char s3746c1f1[2];
  virtual  ~S3746C1(); // _ZN7S3746C1D1Ev
  virtual void  v1(); // _ZN7S3746C12v1Ev
  virtual void  v2(); // _ZN7S3746C12v2Ev
  virtual void  v3(); // _ZN7S3746C12v3Ev
  virtual void  v4(); // _ZN7S3746C12v4Ev
  virtual void  v5(); // _ZN7S3746C12v5Ev
  virtual void  v6(); // _ZN7S3746C12v6Ev
  virtual void  v7(); // _ZN7S3746C12v7Ev
  S3746C1(); // tgen
};
//SIG(1 S3746C1) C1{ BC2{ BC3{ vd m Fi} v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19} vd v1 v2 v3 v4 v5 v6 v7 FC4{ m Fp[2]} Fc[2]}


 S3746C1 ::~S3746C1(){ note_dtor("S3746C1", this);}
void  S3746C1 ::v1(){vfunc_called(this, "_ZN7S3746C12v1Ev");}
void  S3746C1 ::v2(){vfunc_called(this, "_ZN7S3746C12v2Ev");}
void  S3746C1 ::v3(){vfunc_called(this, "_ZN7S3746C12v3Ev");}
void  S3746C1 ::v4(){vfunc_called(this, "_ZN7S3746C12v4Ev");}
void  S3746C1 ::v5(){vfunc_called(this, "_ZN7S3746C12v5Ev");}
void  S3746C1 ::v6(){vfunc_called(this, "_ZN7S3746C12v6Ev");}
void  S3746C1 ::v7(){vfunc_called(this, "_ZN7S3746C12v7Ev");}
S3746C1 ::S3746C1(){ note_ctor("S3746C1", this);} // tgen

static void Test_S3746C1()
{
  extern Class_Descriptor cd_S3746C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S3746C1, buf);
    S3746C1 *dp, &lv = *(dp=new (buf) S3746C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S3746C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3746C1)");
    check_base_class_offset(lv, (S1679C4_nt*)(S3746C2*), 0, "S3746C1");
    check_base_class_offset(lv, (S3746C2*), 0, "S3746C1");
    check_field_offset(lv, s3746c1f0, ABISELECT(16,8), "S3746C1.s3746c1f0");
    check_field_offset(lv, s3746c1f1, ABISELECT(32,16), "S3746C1.s3746c1f1");
    test_class_info(&lv, &cd_S3746C1);
    dp->~S3746C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3746C1(Test_S3746C1, "S3746C1", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN7S3746C1C1Ev();
extern void _ZN7S3746C1D1Ev();
Name_Map name_map_S3746C1[] = {
  NSPAIR(_ZN7S3746C1C1Ev),
  NSPAIR(_ZN7S3746C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
extern Class_Descriptor cd_S3746C2;
extern VTBL_ENTRY _ZTI7S3746C2[];
extern  VTBL_ENTRY _ZTV7S3746C2[];
static Base_Class bases_S3746C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3746C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3746C1[];
extern void _ZN7S3746C1D1Ev();
extern void _ZN7S3746C1D0Ev();
extern void _ZN7S3746C22v8Ev();
extern void _ZN7S3746C22v9Ev();
extern void _ZN7S3746C23v10Ev();
extern void _ZN7S3746C23v11Ev();
extern void _ZN7S3746C23v12Ev();
extern void _ZN7S3746C23v13Ev();
extern void _ZN7S3746C23v14Ev();
extern void _ZN7S3746C23v15Ev();
extern void _ZN7S3746C23v16Ev();
extern void _ZN7S3746C23v17Ev();
extern void _ZN7S3746C23v18Ev();
extern void _ZN7S3746C23v19Ev();
extern void _ZN7S3746C12v1Ev();
extern void _ZN7S3746C12v2Ev();
extern void _ZN7S3746C12v3Ev();
extern void _ZN7S3746C12v4Ev();
extern void _ZN7S3746C12v5Ev();
extern void _ZN7S3746C12v6Ev();
extern void _ZN7S3746C12v7Ev();
static  VTBL_ENTRY vtc_S3746C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3746C1[0]),
  (VTBL_ENTRY)&_ZN7S3746C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3746C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3746C22v8Ev,
  (VTBL_ENTRY)&_ZN7S3746C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3746C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3746C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3746C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3746C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3746C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3746C23v15Ev,
  (VTBL_ENTRY)&_ZN7S3746C23v16Ev,
  (VTBL_ENTRY)&_ZN7S3746C23v17Ev,
  (VTBL_ENTRY)&_ZN7S3746C23v18Ev,
  (VTBL_ENTRY)&_ZN7S3746C23v19Ev,
  (VTBL_ENTRY)&_ZN7S3746C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3746C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3746C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3746C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3746C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3746C12v6Ev,
  (VTBL_ENTRY)&_ZN7S3746C12v7Ev,
};
extern VTBL_ENTRY _ZTI7S3746C1[];
extern  VTBL_ENTRY _ZTV7S3746C1[];
Class_Descriptor cd_S3746C1 = {  "S3746C1", // class name
  bases_S3746C1, 2,
  &(vtc_S3746C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI7S3746C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3746C1),23, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3754C2  : S1679C4_nt {
  virtual void  v8(); // _ZN7S3754C22v8Ev
  virtual void  v9(); // _ZN7S3754C22v9Ev
  virtual void  v10(); // _ZN7S3754C23v10Ev
  virtual void  v11(); // _ZN7S3754C23v11Ev
  virtual void  v12(); // _ZN7S3754C23v12Ev
  virtual void  v13(); // _ZN7S3754C23v13Ev
  virtual void  v14(); // _ZN7S3754C23v14Ev
  virtual void  v15(); // _ZN7S3754C23v15Ev
  virtual void  v16(); // _ZN7S3754C23v16Ev
  virtual void  v17(); // _ZN7S3754C23v17Ev
  virtual void  v18(); // _ZN7S3754C23v18Ev
  virtual void  v19(); // _ZN7S3754C23v19Ev
  ~S3754C2(); // tgen
  S3754C2(); // tgen
};
//SIG(-1 S3754C2) C1{ BC2{ vd m Fi} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


void  S3754C2 ::v8(){vfunc_called(this, "_ZN7S3754C22v8Ev");}
void  S3754C2 ::v9(){vfunc_called(this, "_ZN7S3754C22v9Ev");}
void  S3754C2 ::v10(){vfunc_called(this, "_ZN7S3754C23v10Ev");}
void  S3754C2 ::v11(){vfunc_called(this, "_ZN7S3754C23v11Ev");}
void  S3754C2 ::v12(){vfunc_called(this, "_ZN7S3754C23v12Ev");}
void  S3754C2 ::v13(){vfunc_called(this, "_ZN7S3754C23v13Ev");}
void  S3754C2 ::v14(){vfunc_called(this, "_ZN7S3754C23v14Ev");}
void  S3754C2 ::v15(){vfunc_called(this, "_ZN7S3754C23v15Ev");}
void  S3754C2 ::v16(){vfunc_called(this, "_ZN7S3754C23v16Ev");}
void  S3754C2 ::v17(){vfunc_called(this, "_ZN7S3754C23v17Ev");}
void  S3754C2 ::v18(){vfunc_called(this, "_ZN7S3754C23v18Ev");}
void  S3754C2 ::v19(){vfunc_called(this, "_ZN7S3754C23v19Ev");}
S3754C2 ::~S3754C2(){ note_dtor("S3754C2", this);} // tgen
S3754C2 ::S3754C2(){ note_ctor("S3754C2", this);} // tgen

static void Test_S3754C2()
{
  extern Class_Descriptor cd_S3754C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3754C2, buf);
    S3754C2 *dp, &lv = *(dp=new (buf) S3754C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3754C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3754C2)");
    check_base_class_offset(lv, (S1679C4_nt*), 0, "S3754C2");
    test_class_info(&lv, &cd_S3754C2);
    dp->~S3754C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3754C2(Test_S3754C2, "S3754C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3754C2C1Ev();
extern void _ZN7S3754C2D1Ev();
Name_Map name_map_S3754C2[] = {
  NSPAIR(_ZN7S3754C2C1Ev),
  NSPAIR(_ZN7S3754C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
static Base_Class bases_S3754C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3754C2[];
extern void _ZN7S3754C2D1Ev();
extern void _ZN7S3754C2D0Ev();
extern void _ZN7S3754C22v8Ev();
extern void _ZN7S3754C22v9Ev();
extern void _ZN7S3754C23v10Ev();
extern void _ZN7S3754C23v11Ev();
extern void _ZN7S3754C23v12Ev();
extern void _ZN7S3754C23v13Ev();
extern void _ZN7S3754C23v14Ev();
extern void _ZN7S3754C23v15Ev();
extern void _ZN7S3754C23v16Ev();
extern void _ZN7S3754C23v17Ev();
extern void _ZN7S3754C23v18Ev();
extern void _ZN7S3754C23v19Ev();
static  VTBL_ENTRY vtc_S3754C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3754C2[0]),
  (VTBL_ENTRY)&_ZN7S3754C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3754C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3754C22v8Ev,
  (VTBL_ENTRY)&_ZN7S3754C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3754C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3754C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3754C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3754C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3754C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3754C23v15Ev,
  (VTBL_ENTRY)&_ZN7S3754C23v16Ev,
  (VTBL_ENTRY)&_ZN7S3754C23v17Ev,
  (VTBL_ENTRY)&_ZN7S3754C23v18Ev,
  (VTBL_ENTRY)&_ZN7S3754C23v19Ev,
};
extern VTBL_ENTRY _ZTI7S3754C2[];
extern  VTBL_ENTRY _ZTV7S3754C2[];
Class_Descriptor cd_S3754C2 = {  "S3754C2", // class name
  bases_S3754C2, 1,
  &(vtc_S3754C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3754C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3754C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3754C1  : S3754C2 {
  ::S3765C5_nt s3754c1f0;
  int s3754c1f1[3];
  virtual  ~S3754C1(); // _ZN7S3754C1D1Ev
  virtual void  v1(); // _ZN7S3754C12v1Ev
  virtual void  v2(); // _ZN7S3754C12v2Ev
  virtual void  v3(); // _ZN7S3754C12v3Ev
  virtual void  v4(); // _ZN7S3754C12v4Ev
  virtual void  v5(); // _ZN7S3754C12v5Ev
  virtual void  v6(); // _ZN7S3754C12v6Ev
  virtual void  v7(); // _ZN7S3754C12v7Ev
  S3754C1(); // tgen
};
//SIG(1 S3754C1) C1{ BC2{ BC3{ vd m Fi} v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19} vd v1 v2 v3 v4 v5 v6 v7 FC4{ m Fp[2]} Fi[3]}


 S3754C1 ::~S3754C1(){ note_dtor("S3754C1", this);}
void  S3754C1 ::v1(){vfunc_called(this, "_ZN7S3754C12v1Ev");}
void  S3754C1 ::v2(){vfunc_called(this, "_ZN7S3754C12v2Ev");}
void  S3754C1 ::v3(){vfunc_called(this, "_ZN7S3754C12v3Ev");}
void  S3754C1 ::v4(){vfunc_called(this, "_ZN7S3754C12v4Ev");}
void  S3754C1 ::v5(){vfunc_called(this, "_ZN7S3754C12v5Ev");}
void  S3754C1 ::v6(){vfunc_called(this, "_ZN7S3754C12v6Ev");}
void  S3754C1 ::v7(){vfunc_called(this, "_ZN7S3754C12v7Ev");}
S3754C1 ::S3754C1(){ note_ctor("S3754C1", this);} // tgen

static void Test_S3754C1()
{
  extern Class_Descriptor cd_S3754C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S3754C1, buf);
    S3754C1 *dp, &lv = *(dp=new (buf) S3754C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S3754C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3754C1)");
    check_base_class_offset(lv, (S1679C4_nt*)(S3754C2*), 0, "S3754C1");
    check_base_class_offset(lv, (S3754C2*), 0, "S3754C1");
    check_field_offset(lv, s3754c1f0, ABISELECT(16,8), "S3754C1.s3754c1f0");
    check_field_offset(lv, s3754c1f1, ABISELECT(32,16), "S3754C1.s3754c1f1");
    test_class_info(&lv, &cd_S3754C1);
    dp->~S3754C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3754C1(Test_S3754C1, "S3754C1", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN7S3754C1C1Ev();
extern void _ZN7S3754C1D1Ev();
Name_Map name_map_S3754C1[] = {
  NSPAIR(_ZN7S3754C1C1Ev),
  NSPAIR(_ZN7S3754C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
extern Class_Descriptor cd_S3754C2;
extern VTBL_ENTRY _ZTI7S3754C2[];
extern  VTBL_ENTRY _ZTV7S3754C2[];
static Base_Class bases_S3754C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3754C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3754C1[];
extern void _ZN7S3754C1D1Ev();
extern void _ZN7S3754C1D0Ev();
extern void _ZN7S3754C22v8Ev();
extern void _ZN7S3754C22v9Ev();
extern void _ZN7S3754C23v10Ev();
extern void _ZN7S3754C23v11Ev();
extern void _ZN7S3754C23v12Ev();
extern void _ZN7S3754C23v13Ev();
extern void _ZN7S3754C23v14Ev();
extern void _ZN7S3754C23v15Ev();
extern void _ZN7S3754C23v16Ev();
extern void _ZN7S3754C23v17Ev();
extern void _ZN7S3754C23v18Ev();
extern void _ZN7S3754C23v19Ev();
extern void _ZN7S3754C12v1Ev();
extern void _ZN7S3754C12v2Ev();
extern void _ZN7S3754C12v3Ev();
extern void _ZN7S3754C12v4Ev();
extern void _ZN7S3754C12v5Ev();
extern void _ZN7S3754C12v6Ev();
extern void _ZN7S3754C12v7Ev();
static  VTBL_ENTRY vtc_S3754C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3754C1[0]),
  (VTBL_ENTRY)&_ZN7S3754C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3754C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3754C22v8Ev,
  (VTBL_ENTRY)&_ZN7S3754C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3754C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3754C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3754C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3754C23v13Ev,
  (VTBL_ENTRY)&_ZN7S3754C23v14Ev,
  (VTBL_ENTRY)&_ZN7S3754C23v15Ev,
  (VTBL_ENTRY)&_ZN7S3754C23v16Ev,
  (VTBL_ENTRY)&_ZN7S3754C23v17Ev,
  (VTBL_ENTRY)&_ZN7S3754C23v18Ev,
  (VTBL_ENTRY)&_ZN7S3754C23v19Ev,
  (VTBL_ENTRY)&_ZN7S3754C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3754C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3754C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3754C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3754C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3754C12v6Ev,
  (VTBL_ENTRY)&_ZN7S3754C12v7Ev,
};
extern VTBL_ENTRY _ZTI7S3754C1[];
extern  VTBL_ENTRY _ZTV7S3754C1[];
Class_Descriptor cd_S3754C1 = {  "S3754C1", // class name
  bases_S3754C1, 2,
  &(vtc_S3754C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI7S3754C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3754C1),23, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19521C4  {
  void *s19521c4f0[2];
  int s19521c4f1;
  short s19521c4f2;
  int s19521c4f3;
  virtual void  v3(); // _ZN8S19521C42v3Ev
  ~S19521C4(); // tgen
  S19521C4(); // tgen
};
//SIG(-1 S19521C4) C1{ v1 Fp[2] Fi Fs Fi}


void  S19521C4 ::v3(){vfunc_called(this, "_ZN8S19521C42v3Ev");}
S19521C4 ::~S19521C4(){ note_dtor("S19521C4", this);} // tgen
S19521C4 ::S19521C4(){ note_ctor("S19521C4", this);} // tgen

static void Test_S19521C4()
{
  extern Class_Descriptor cd_S19521C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S19521C4, buf);
    S19521C4 *dp, &lv = *(dp=new (buf) S19521C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S19521C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19521C4)");
    check_field_offset(lv, s19521c4f0, ABISELECT(8,4), "S19521C4.s19521c4f0");
    check_field_offset(lv, s19521c4f1, ABISELECT(24,12), "S19521C4.s19521c4f1");
    check_field_offset(lv, s19521c4f2, ABISELECT(28,16), "S19521C4.s19521c4f2");
    check_field_offset(lv, s19521c4f3, ABISELECT(32,20), "S19521C4.s19521c4f3");
    test_class_info(&lv, &cd_S19521C4);
    dp->~S19521C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19521C4(Test_S19521C4, "S19521C4", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN8S19521C4C1Ev();
extern void _ZN8S19521C4D1Ev();
Name_Map name_map_S19521C4[] = {
  NSPAIR(_ZN8S19521C4C1Ev),
  NSPAIR(_ZN8S19521C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19521C4[];
extern void _ZN8S19521C42v3Ev();
static  VTBL_ENTRY vtc_S19521C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19521C4[0]),
  (VTBL_ENTRY)&_ZN8S19521C42v3Ev,
};
extern VTBL_ENTRY _ZTI8S19521C4[];
extern  VTBL_ENTRY _ZTV8S19521C4[];
Class_Descriptor cd_S19521C4 = {  "S19521C4", // class name
  0,0,//no base classes
  &(vtc_S19521C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI8S19521C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19521C4),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19521C3  : virtual S19521C4 {
  ::S19521C4 s19521c3f0;
  int s19521c3f1[9];
  virtual void  v4(); // _ZN8S19521C32v4Ev
  ~S19521C3(); // tgen
  S19521C3(); // tgen
};
//SIG(-1 S19521C3) C1{ VBC2{ v2 Fp[2] Fi Fs Fi} v1 FC2 Fi[9]}


void  S19521C3 ::v4(){vfunc_called(this, "_ZN8S19521C32v4Ev");}
S19521C3 ::~S19521C3(){ note_dtor("S19521C3", this);} // tgen
S19521C3 ::S19521C3(){ note_ctor("S19521C3", this);} // tgen

static void Test_S19521C3()
{
  extern Class_Descriptor cd_S19521C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,23)];
    init_test(&cd_S19521C3, buf);
    S19521C3 *dp, &lv = *(dp=new (buf) S19521C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,88), "sizeof(S19521C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19521C3)");
    check_base_class_offset(lv, (S19521C4*), ABISELECT(88,64), "S19521C3");
    check_field_offset(lv, s19521c3f0, ABISELECT(8,4), "S19521C3.s19521c3f0");
    check_field_offset(lv, s19521c3f1, ABISELECT(48,28), "S19521C3.s19521c3f1");
    test_class_info(&lv, &cd_S19521C3);
    dp->~S19521C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19521C3(Test_S19521C3, "S19521C3", ABISELECT(128,88));

#else // __cplusplus

extern void _ZN8S19521C3C1Ev();
extern void _ZN8S19521C3D1Ev();
Name_Map name_map_S19521C3[] = {
  NSPAIR(_ZN8S19521C3C1Ev),
  NSPAIR(_ZN8S19521C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19521C4;
extern VTBL_ENTRY _ZTI8S19521C4[];
extern  VTBL_ENTRY _ZTV8S19521C4[];
static Base_Class bases_S19521C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19521C4,    ABISELECT(88,64), //bcp->offset
    4, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19521C3[];
extern void _ZN8S19521C32v4Ev();
extern void _ZN8S19521C42v3Ev();
static  VTBL_ENTRY vtc_S19521C3[] = {
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19521C3[0]),
  (VTBL_ENTRY)&_ZN8S19521C32v4Ev,
  0,
  ABISELECT(-88,-64),
  (VTBL_ENTRY)&(_ZTI8S19521C3[0]),
  (VTBL_ENTRY)&_ZN8S19521C42v3Ev,
};
extern VTBL_ENTRY _ZTV8S19521C3[];
static  VTT_ENTRY vtt_S19521C3[] = {
  {&(_ZTV8S19521C3[3]),  3,8},
  {&(_ZTV8S19521C3[7]),  7,8},
};
extern VTBL_ENTRY _ZTI8S19521C3[];
extern  VTBL_ENTRY _ZTV8S19521C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19521C3[];
Class_Descriptor cd_S19521C3 = {  "S19521C3", // class name
  bases_S19521C3, 1,
  &(vtc_S19521C3[0]), // expected_vtbl_contents
  &(vtt_S19521C3[0]), // expected_vtt_contents
  ABISELECT(128,88), // object size
  NSPAIRA(_ZTI8S19521C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19521C3),8, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19521C3),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19521C2  : S19521C3 , S19521C4 {
  ~S19521C2(); // tgen
  S19521C2(); // tgen
};
//SIG(-1 S19521C2) C1{ BC2{ VBC3{ v1 Fp[2] Fi Fs Fi} v2 FC3 Fi[9]} BC3}


S19521C2 ::~S19521C2(){ note_dtor("S19521C2", this);} // tgen
S19521C2 ::S19521C2(){ note_ctor("S19521C2", this);} // tgen

static void Test_S19521C2()
{
  extern Class_Descriptor cd_S19521C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,29)];
    init_test(&cd_S19521C2, buf);
    S19521C2 *dp, &lv = *(dp=new (buf) S19521C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,112), "sizeof(S19521C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19521C2)");
    check_base_class_offset(lv, (S19521C4*)(S19521C3*), ABISELECT(128,88), "S19521C2");
    check_base_class_offset(lv, (S19521C3*), 0, "S19521C2");
    /*is_ambiguous_... S19521C2::S19521C4 */ AMB_check_base_class_offset(lv, (S19521C4*), ABISELECT(88,64), "S19521C2");
    test_class_info(&lv, &cd_S19521C2);
    dp->~S19521C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19521C2(Test_S19521C2, "S19521C2", ABISELECT(168,112));

#else // __cplusplus

extern void _ZN8S19521C2C1Ev();
extern void _ZN8S19521C2D1Ev();
Name_Map name_map_S19521C2[] = {
  NSPAIR(_ZN8S19521C2C1Ev),
  NSPAIR(_ZN8S19521C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19521C4;
extern VTBL_ENTRY _ZTI8S19521C4[];
extern  VTBL_ENTRY _ZTV8S19521C4[];
extern Class_Descriptor cd_S19521C3;
extern VTBL_ENTRY _ZTI8S19521C3[];
extern  VTBL_ENTRY _ZTV8S19521C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19521C3[];
extern Class_Descriptor cd_S19521C4;
extern VTBL_ENTRY _ZTI8S19521C4[];
extern  VTBL_ENTRY _ZTV8S19521C4[];
static Base_Class bases_S19521C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19521C4,    ABISELECT(128,88), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19521C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19521C4,    ABISELECT(88,64), //bcp->offset
    4, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19521C2[];
extern void _ZN8S19521C32v4Ev();
extern void _ZN8S19521C42v3Ev();
extern void _ZN8S19521C42v3Ev();
static  VTBL_ENTRY vtc_S19521C2[] = {
  ABISELECT(128,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19521C2[0]),
  (VTBL_ENTRY)&_ZN8S19521C32v4Ev,
  ABISELECT(-88,-64),
  (VTBL_ENTRY)&(_ZTI8S19521C2[0]),
  (VTBL_ENTRY)&_ZN8S19521C42v3Ev,
  0,
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S19521C2[0]),
  (VTBL_ENTRY)&_ZN8S19521C42v3Ev,
};
extern VTBL_ENTRY _ZTV8S19521C2[];
extern void _ZN8S19521C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19521C3__8S19521C2[] = {
  ABISELECT(128,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19521C3[0]),
  (VTBL_ENTRY)&_ZN8S19521C32v4Ev,
};
extern void _ZN8S19521C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19521C4__8S19521C3__8S19521C2[] = {
  0,
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S19521C3[0]),
  (VTBL_ENTRY)&_ZN8S19521C42v3Ev,
};
static  VTT_ENTRY vtt_S19521C2[] = {
  {&(_ZTV8S19521C2[3]),  3,11},
  {&(_tg__ZTV8S19521C3__8S19521C2[3]),  3,4},
  {&(_tg__ZTV8S19521C4__8S19521C3__8S19521C2[3]),  3,4},
  {&(_ZTV8S19521C2[10]),  10,11},
};
extern VTBL_ENTRY _ZTI8S19521C2[];
extern  VTBL_ENTRY _ZTV8S19521C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19521C2[];
Class_Descriptor cd_S19521C2 = {  "S19521C2", // class name
  bases_S19521C2, 3,
  &(vtc_S19521C2[0]), // expected_vtbl_contents
  &(vtt_S19521C2[0]), // expected_vtt_contents
  ABISELECT(168,112), // object size
  NSPAIRA(_ZTI8S19521C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19521C2),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19521C2),4, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19521C6  : S19521C4 , S19521C3 , virtual S19521C2 {
  virtual void  v5(); // _ZN8S19521C62v5Ev
  virtual void  v6(); // _ZN8S19521C62v6Ev
  ~S19521C6(); // tgen
  S19521C6(); // tgen
};
//SIG(-1 S19521C6) C1{ BC2{ v3 Fp[2] Fi Fs Fi} BC3{ VBC2 v4 FC2 Fi[9]} VBC4{ BC3 BC2} v1 v2}


void  S19521C6 ::v5(){vfunc_called(this, "_ZN8S19521C62v5Ev");}
void  S19521C6 ::v6(){vfunc_called(this, "_ZN8S19521C62v6Ev");}
S19521C6 ::~S19521C6(){ note_dtor("S19521C6", this);} // tgen
S19521C6 ::S19521C6(){ note_ctor("S19521C6", this);} // tgen

static void Test_S19521C6()
{
  extern Class_Descriptor cd_S19521C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(38,51)];
    init_test(&cd_S19521C6, buf);
    S19521C6 *dp, &lv = *(dp=new (buf) S19521C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(296,200), "sizeof(S19521C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19521C6)");
    /*is_ambiguous_... S19521C6::S19521C4 */ AMB_check_base_class_offset(lv, (S19521C4*), 0, "S19521C6");
    /*is_ambiguous_... S19521C6::S19521C3 */ AMB_check_base_class_offset(lv, (S19521C4*)(S19521C3*), ABISELECT(128,88), "S19521C6");
    check_base_class_offset(lv, (S19521C4*)(S19521C3*)(S19521C2*), ABISELECT(128,88), "S19521C6");
    /*is_ambiguous_... S19521C6::S19521C3 */ AMB_check_base_class_offset(lv, (S19521C3*), ABISELECT(40,24), "S19521C6");
    check_base_class_offset(lv, (S19521C3*)(S19521C2*), ABISELECT(168,112), "S19521C6");
    /*is_ambiguous_... S19521C2::S19521C4 */ AMB_check_base_class_offset(lv, (S19521C4*)(S19521C2*), ABISELECT(256,176), "S19521C6");
    check_base_class_offset(lv, (S19521C2*), ABISELECT(168,112), "S19521C6");
    test_class_info(&lv, &cd_S19521C6);
    dp->~S19521C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19521C6(Test_S19521C6, "S19521C6", ABISELECT(296,200));

#else // __cplusplus

extern void _ZN8S19521C6C1Ev();
extern void _ZN8S19521C6D1Ev();
Name_Map name_map_S19521C6[] = {
  NSPAIR(_ZN8S19521C6C1Ev),
  NSPAIR(_ZN8S19521C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19521C4;
extern VTBL_ENTRY _ZTI8S19521C4[];
extern  VTBL_ENTRY _ZTV8S19521C4[];
extern Class_Descriptor cd_S19521C4;
extern VTBL_ENTRY _ZTI8S19521C4[];
extern  VTBL_ENTRY _ZTV8S19521C4[];
extern Class_Descriptor cd_S19521C3;
extern VTBL_ENTRY _ZTI8S19521C3[];
extern  VTBL_ENTRY _ZTV8S19521C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19521C3[];
extern Class_Descriptor cd_S19521C3;
extern VTBL_ENTRY _ZTI8S19521C3[];
extern  VTBL_ENTRY _ZTV8S19521C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19521C3[];
extern Class_Descriptor cd_S19521C4;
extern VTBL_ENTRY _ZTI8S19521C4[];
extern  VTBL_ENTRY _ZTV8S19521C4[];
extern Class_Descriptor cd_S19521C2;
extern VTBL_ENTRY _ZTI8S19521C2[];
extern  VTBL_ENTRY _ZTV8S19521C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19521C2[];
static Base_Class bases_S19521C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19521C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19521C4,    ABISELECT(128,88), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19521C3,    ABISELECT(40,24), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19521C3,    ABISELECT(168,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19521C4,    ABISELECT(256,176), //bcp->offset
    21, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19521C2,    ABISELECT(168,112), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19521C6[];
extern void _ZN8S19521C42v3Ev();
extern void _ZN8S19521C62v5Ev();
extern void _ZN8S19521C62v6Ev();
extern void _ZN8S19521C32v4Ev();
extern void _ZN8S19521C42v3Ev();
extern void _ZN8S19521C32v4Ev();
extern void _ZN8S19521C42v3Ev();
static  VTBL_ENTRY vtc_S19521C6[] = {
  ABISELECT(168,112),
  ABISELECT(128,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19521C6[0]),
  (VTBL_ENTRY)&_ZN8S19521C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19521C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19521C62v6Ev,
  ABISELECT(88,64),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S19521C6[0]),
  (VTBL_ENTRY)&_ZN8S19521C32v4Ev,
  0,
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S19521C6[0]),
  (VTBL_ENTRY)&_ZN8S19521C42v3Ev,
  ABISELECT(88,64),
  0,
  ABISELECT(-40,-24),
  ABISELECT(-168,-112),
  (VTBL_ENTRY)&(_ZTI8S19521C6[0]),
  (VTBL_ENTRY)&_ZN8S19521C32v4Ev,
  ABISELECT(-256,-176),
  (VTBL_ENTRY)&(_ZTI8S19521C6[0]),
  (VTBL_ENTRY)&_ZN8S19521C42v3Ev,
};
extern VTBL_ENTRY _ZTV8S19521C6[];
extern void _ZN8S19521C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19521C3__8S19521C6[] = {
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19521C3[0]),
  (VTBL_ENTRY)&_ZN8S19521C32v4Ev,
};
extern void _ZN8S19521C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19521C4__8S19521C3__8S19521C6[] = {
  0,
  ABISELECT(-88,-64),
  (VTBL_ENTRY)&(_ZTI8S19521C3[0]),
  (VTBL_ENTRY)&_ZN8S19521C42v3Ev,
};
extern void _ZN8S19521C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19521C2__8S19521C6[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19521C2[0]),
  (VTBL_ENTRY)&_ZN8S19521C32v4Ev,
};
extern void _ZN8S19521C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19521C38S19521C2__A1__8S19521C6[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19521C3[0]),
  (VTBL_ENTRY)&_ZN8S19521C32v4Ev,
};
extern void _ZN8S19521C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19521C4__8S19521C38S19521C2__A1__8S19521C6[] = {
  0,
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S19521C3[0]),
  (VTBL_ENTRY)&_ZN8S19521C42v3Ev,
};
extern void _ZN8S19521C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19521C4__8S19521C2__8S19521C6[] = {
  0,
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S19521C2[0]),
  (VTBL_ENTRY)&_ZN8S19521C42v3Ev,
};
static  VTT_ENTRY vtt_S19521C6[] = {
  {&(_ZTV8S19521C6[4]),  4,24},
  {&(_tg__ZTV8S19521C3__8S19521C6[3]),  3,4},
  {&(_tg__ZTV8S19521C4__8S19521C3__8S19521C6[3]),  3,4},
  {&(_ZTV8S19521C6[10]),  10,24},
  {&(_ZTV8S19521C6[14]),  14,24},
  {&(_ZTV8S19521C6[20]),  20,24},
  {&(_ZTV8S19521C6[23]),  23,24},
  {&(_tg__ZTV8S19521C2__8S19521C6[3]),  3,4},
  {&(_tg__ZTV8S19521C38S19521C2__A1__8S19521C6[3]),  3,4},
  {&(_tg__ZTV8S19521C4__8S19521C38S19521C2__A1__8S19521C6[3]),  3,4},
  {&(_tg__ZTV8S19521C4__8S19521C2__8S19521C6[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19521C6[];
extern  VTBL_ENTRY _ZTV8S19521C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19521C6[];
Class_Descriptor cd_S19521C6 = {  "S19521C6", // class name
  bases_S19521C6, 6,
  &(vtc_S19521C6[0]), // expected_vtbl_contents
  &(vtt_S19521C6[0]), // expected_vtt_contents
  ABISELECT(296,200), // object size
  NSPAIRA(_ZTI8S19521C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19521C6),24, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19521C6),11, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19521C5  : virtual S19521C4 , S19521C6 {
  int s19521c5f0[2];
  virtual void  v7(); // _ZN8S19521C52v7Ev
  ~S19521C5(); // tgen
  S19521C5(); // tgen
};
//SIG(-1 S19521C5) C1{ VBC2{ v2 Fp[2] Fi Fs Fi} BC3{ BC2 BC4{ VBC2 v3 FC2 Fi[9]} VBC5{ BC4 BC2} v4 v5} v1 Fi[2]}


void  S19521C5 ::v7(){vfunc_called(this, "_ZN8S19521C52v7Ev");}
S19521C5 ::~S19521C5(){ note_dtor("S19521C5", this);} // tgen
S19521C5 ::S19521C5(){ note_ctor("S19521C5", this);} // tgen

static void Test_S19521C5()
{
  extern Class_Descriptor cd_S19521C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(39,53)];
    init_test(&cd_S19521C5, buf);
    S19521C5 *dp, &lv = *(dp=new (buf) S19521C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,208), "sizeof(S19521C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19521C5)");
    /*is_ambiguous_... S19521C5::S19521C4 */ AMB_check_base_class_offset(lv, (S19521C4*), ABISELECT(136,96), "S19521C5");
    /*is_ambiguous_... S19521C6::S19521C3 */ AMB_check_base_class_offset(lv, (S19521C4*)(S19521C3*)(S19521C6*), ABISELECT(136,96), "S19521C5");
    check_base_class_offset(lv, (S19521C4*)(S19521C3*)(S19521C2*), ABISELECT(136,96), "S19521C5");
    /*is_ambiguous_... S19521C6::S19521C4 */ AMB_check_base_class_offset(lv, (S19521C4*)(S19521C6*), 0, "S19521C5");
    /*is_ambiguous_... S19521C6::S19521C3 */ AMB_check_base_class_offset(lv, (S19521C3*)(S19521C6*), ABISELECT(40,24), "S19521C5");
    check_base_class_offset(lv, (S19521C3*)(S19521C2*), ABISELECT(176,120), "S19521C5");
    /*is_ambiguous_... S19521C2::S19521C4 */ AMB_check_base_class_offset(lv, (S19521C4*)(S19521C2*), ABISELECT(264,184), "S19521C5");
    check_base_class_offset(lv, (S19521C2*)(S19521C6*), ABISELECT(176,120), "S19521C5");
    check_base_class_offset(lv, (S19521C6*), 0, "S19521C5");
    check_field_offset(lv, s19521c5f0, ABISELECT(124,88), "S19521C5.s19521c5f0");
    test_class_info(&lv, &cd_S19521C5);
    dp->~S19521C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19521C5(Test_S19521C5, "S19521C5", ABISELECT(304,208));

#else // __cplusplus

extern void _ZN8S19521C5C1Ev();
extern void _ZN8S19521C5D1Ev();
Name_Map name_map_S19521C5[] = {
  NSPAIR(_ZN8S19521C5C1Ev),
  NSPAIR(_ZN8S19521C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19521C4;
extern VTBL_ENTRY _ZTI8S19521C4[];
extern  VTBL_ENTRY _ZTV8S19521C4[];
extern Class_Descriptor cd_S19521C4;
extern VTBL_ENTRY _ZTI8S19521C4[];
extern  VTBL_ENTRY _ZTV8S19521C4[];
extern Class_Descriptor cd_S19521C3;
extern VTBL_ENTRY _ZTI8S19521C3[];
extern  VTBL_ENTRY _ZTV8S19521C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19521C3[];
extern Class_Descriptor cd_S19521C3;
extern VTBL_ENTRY _ZTI8S19521C3[];
extern  VTBL_ENTRY _ZTV8S19521C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19521C3[];
extern Class_Descriptor cd_S19521C4;
extern VTBL_ENTRY _ZTI8S19521C4[];
extern  VTBL_ENTRY _ZTV8S19521C4[];
extern Class_Descriptor cd_S19521C2;
extern VTBL_ENTRY _ZTI8S19521C2[];
extern  VTBL_ENTRY _ZTV8S19521C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19521C2[];
extern Class_Descriptor cd_S19521C6;
extern VTBL_ENTRY _ZTI8S19521C6[];
extern  VTBL_ENTRY _ZTV8S19521C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19521C6[];
static Base_Class bases_S19521C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19521C4,    ABISELECT(136,96), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19521C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19521C3,    ABISELECT(40,24), //bcp->offset
    8, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19521C3,    ABISELECT(176,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19521C4,    ABISELECT(264,184), //bcp->offset
    22, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19521C2,    ABISELECT(176,120), //bcp->offset
    16, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19521C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19521C5[];
extern void _ZN8S19521C42v3Ev();
extern void _ZN8S19521C62v5Ev();
extern void _ZN8S19521C62v6Ev();
extern void _ZN8S19521C52v7Ev();
extern void _ZN8S19521C32v4Ev();
extern void _ZN8S19521C42v3Ev();
extern void _ZN8S19521C32v4Ev();
extern void _ZN8S19521C42v3Ev();
static  VTBL_ENTRY vtc_S19521C5[] = {
  ABISELECT(176,120),
  ABISELECT(136,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19521C5[0]),
  (VTBL_ENTRY)&_ZN8S19521C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19521C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19521C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19521C52v7Ev,
  ABISELECT(96,72),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S19521C5[0]),
  (VTBL_ENTRY)&_ZN8S19521C32v4Ev,
  0,
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S19521C5[0]),
  (VTBL_ENTRY)&_ZN8S19521C42v3Ev,
  ABISELECT(88,64),
  0,
  ABISELECT(-40,-24),
  ABISELECT(-176,-120),
  (VTBL_ENTRY)&(_ZTI8S19521C5[0]),
  (VTBL_ENTRY)&_ZN8S19521C32v4Ev,
  ABISELECT(-264,-184),
  (VTBL_ENTRY)&(_ZTI8S19521C5[0]),
  (VTBL_ENTRY)&_ZN8S19521C42v3Ev,
};
extern VTBL_ENTRY _ZTV8S19521C5[];
extern void _ZN8S19521C42v3Ev();
extern void _ZN8S19521C62v5Ev();
extern void _ZN8S19521C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19521C6__8S19521C5[] = {
  ABISELECT(176,120),
  ABISELECT(136,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19521C6[0]),
  (VTBL_ENTRY)&_ZN8S19521C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19521C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19521C62v6Ev,
};
extern void _ZN8S19521C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19521C38S19521C6__8S19521C5[] = {
  ABISELECT(96,72),
  0,
  (VTBL_ENTRY)&(_ZTI8S19521C3[0]),
  (VTBL_ENTRY)&_ZN8S19521C32v4Ev,
};
extern void _ZN8S19521C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19521C4__8S19521C38S19521C6__8S19521C5[] = {
  0,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI8S19521C3[0]),
  (VTBL_ENTRY)&_ZN8S19521C42v3Ev,
};
extern void _ZN8S19521C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19521C3__8S19521C6__8S19521C5[] = {
  ABISELECT(96,72),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S19521C6[0]),
  (VTBL_ENTRY)&_ZN8S19521C32v4Ev,
};
extern void _ZN8S19521C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19521C4__A1__8S19521C6__8S19521C5[] = {
  0,
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S19521C6[0]),
  (VTBL_ENTRY)&_ZN8S19521C42v3Ev,
};
extern void _ZN8S19521C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19521C2__8S19521C6__8S19521C5[] = {
  ABISELECT(88,64),
  0,
  ABISELECT(-40,-24),
  ABISELECT(-176,-120),
  (VTBL_ENTRY)&(_ZTI8S19521C6[0]),
  (VTBL_ENTRY)&_ZN8S19521C32v4Ev,
};
extern void _ZN8S19521C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19521C48S19521C2__A2__8S19521C6__8S19521C5[] = {
  ABISELECT(-264,-184),
  (VTBL_ENTRY)&(_ZTI8S19521C6[0]),
  (VTBL_ENTRY)&_ZN8S19521C42v3Ev,
};
extern void _ZN8S19521C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19521C2__8S19521C5[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19521C2[0]),
  (VTBL_ENTRY)&_ZN8S19521C32v4Ev,
};
extern void _ZN8S19521C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19521C38S19521C2__A1__8S19521C5[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19521C3[0]),
  (VTBL_ENTRY)&_ZN8S19521C32v4Ev,
};
extern void _ZN8S19521C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19521C4__8S19521C38S19521C2__A1__8S19521C5[] = {
  0,
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S19521C3[0]),
  (VTBL_ENTRY)&_ZN8S19521C42v3Ev,
};
extern void _ZN8S19521C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19521C4__8S19521C2__8S19521C5[] = {
  0,
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S19521C2[0]),
  (VTBL_ENTRY)&_ZN8S19521C42v3Ev,
};
static  VTT_ENTRY vtt_S19521C5[] = {
  {&(_ZTV8S19521C5[4]),  4,25},
  {&(_tg__ZTV8S19521C6__8S19521C5[4]),  4,7},
  {&(_tg__ZTV8S19521C38S19521C6__8S19521C5[3]),  3,4},
  {&(_tg__ZTV8S19521C4__8S19521C38S19521C6__8S19521C5[3]),  3,4},
  {&(_tg__ZTV8S19521C3__8S19521C6__8S19521C5[3]),  3,4},
  {&(_tg__ZTV8S19521C4__A1__8S19521C6__8S19521C5[3]),  3,4},
  {&(_tg__ZTV8S19521C2__8S19521C6__8S19521C5[5]),  5,6},
  {&(_tg__ZTV8S19521C48S19521C2__A2__8S19521C6__8S19521C5[2]),  2,3},
  {&(_ZTV8S19521C5[15]),  15,25},
  {&(_ZTV8S19521C5[11]),  11,25},
  {&(_ZTV8S19521C5[21]),  21,25},
  {&(_ZTV8S19521C5[24]),  24,25},
  {&(_tg__ZTV8S19521C2__8S19521C5[3]),  3,4},
  {&(_tg__ZTV8S19521C38S19521C2__A1__8S19521C5[3]),  3,4},
  {&(_tg__ZTV8S19521C4__8S19521C38S19521C2__A1__8S19521C5[3]),  3,4},
  {&(_tg__ZTV8S19521C4__8S19521C2__8S19521C5[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19521C5[];
extern  VTBL_ENTRY _ZTV8S19521C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19521C5[];
Class_Descriptor cd_S19521C5 = {  "S19521C5", // class name
  bases_S19521C5, 7,
  &(vtc_S19521C5[0]), // expected_vtbl_contents
  &(vtt_S19521C5[0]), // expected_vtt_contents
  ABISELECT(304,208), // object size
  NSPAIRA(_ZTI8S19521C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19521C5),25, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19521C5),16, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19521C1  : virtual S19521C2 , S19521C5 , virtual S19521C3 {
  virtual void  v1(); // _ZN8S19521C12v1Ev
  virtual void  v2(); // _ZN8S19521C12v2Ev
  ~S19521C1(); // tgen
  S19521C1(); // tgen
};
//SIG(1 S19521C1) C1{ VBC2{ BC3{ VBC4{ v3 Fp[2] Fi Fs Fi} v4 FC4 Fi[9]} BC4} BC5{ VBC4 BC6{ BC4 BC3 VBC2 v5 v6} v7 Fi[2]} VBC3 v1 v2}


void  S19521C1 ::v1(){vfunc_called(this, "_ZN8S19521C12v1Ev");}
void  S19521C1 ::v2(){vfunc_called(this, "_ZN8S19521C12v2Ev");}
S19521C1 ::~S19521C1(){ note_dtor("S19521C1", this);} // tgen
S19521C1 ::S19521C1(){ note_ctor("S19521C1", this);} // tgen

static void Test_S19521C1()
{
  extern Class_Descriptor cd_S19521C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(50,69)];
    init_test(&cd_S19521C1, buf);
    S19521C1 *dp, &lv = *(dp=new (buf) S19521C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(392,272), "sizeof(S19521C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19521C1)");
    check_base_class_offset(lv, (S19521C4*)(S19521C3*)(S19521C2*), ABISELECT(264,184), "S19521C1");
    /*is_ambiguous_... S19521C5::S19521C4 */ AMB_check_base_class_offset(lv, (S19521C4*)(S19521C5*), ABISELECT(264,184), "S19521C1");
    /*is_ambiguous_... S19521C6::S19521C3 */ AMB_check_base_class_offset(lv, (S19521C4*)(S19521C3*)(S19521C6*)(S19521C5*), ABISELECT(264,184), "S19521C1");
    /*is_ambiguous_... S19521C1::S19521C3 */ AMB_check_base_class_offset(lv, (S19521C4*)(S19521C3*), ABISELECT(264,184), "S19521C1");
    check_base_class_offset(lv, (S19521C3*)(S19521C2*), ABISELECT(136,96), "S19521C1");
    /*is_ambiguous_... S19521C2::S19521C4 */ AMB_check_base_class_offset(lv, (S19521C4*)(S19521C2*), ABISELECT(224,160), "S19521C1");
    check_base_class_offset(lv, (S19521C2*), ABISELECT(136,96), "S19521C1");
    check_base_class_offset(lv, (S19521C2*)(S19521C6*)(S19521C5*), ABISELECT(136,96), "S19521C1");
    /*is_ambiguous_... S19521C6::S19521C4 */ AMB_check_base_class_offset(lv, (S19521C4*)(S19521C6*)(S19521C5*), 0, "S19521C1");
    /*is_ambiguous_... S19521C6::S19521C3 */ AMB_check_base_class_offset(lv, (S19521C3*)(S19521C6*)(S19521C5*), ABISELECT(40,24), "S19521C1");
    check_base_class_offset(lv, (S19521C6*)(S19521C5*), 0, "S19521C1");
    check_base_class_offset(lv, (S19521C5*), 0, "S19521C1");
    /*is_ambiguous_... S19521C1::S19521C3 */ AMB_check_base_class_offset(lv, (S19521C3*), ABISELECT(304,208), "S19521C1");
    test_class_info(&lv, &cd_S19521C1);
    dp->~S19521C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19521C1(Test_S19521C1, "S19521C1", ABISELECT(392,272));

#else // __cplusplus

extern void _ZN8S19521C1C1Ev();
extern void _ZN8S19521C1D1Ev();
Name_Map name_map_S19521C1[] = {
  NSPAIR(_ZN8S19521C1C1Ev),
  NSPAIR(_ZN8S19521C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19521C4;
extern VTBL_ENTRY _ZTI8S19521C4[];
extern  VTBL_ENTRY _ZTV8S19521C4[];
extern Class_Descriptor cd_S19521C3;
extern VTBL_ENTRY _ZTI8S19521C3[];
extern  VTBL_ENTRY _ZTV8S19521C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19521C3[];
extern Class_Descriptor cd_S19521C4;
extern VTBL_ENTRY _ZTI8S19521C4[];
extern  VTBL_ENTRY _ZTV8S19521C4[];
extern Class_Descriptor cd_S19521C2;
extern VTBL_ENTRY _ZTI8S19521C2[];
extern  VTBL_ENTRY _ZTV8S19521C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19521C2[];
extern Class_Descriptor cd_S19521C4;
extern VTBL_ENTRY _ZTI8S19521C4[];
extern  VTBL_ENTRY _ZTV8S19521C4[];
extern Class_Descriptor cd_S19521C3;
extern VTBL_ENTRY _ZTI8S19521C3[];
extern  VTBL_ENTRY _ZTV8S19521C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19521C3[];
extern Class_Descriptor cd_S19521C6;
extern VTBL_ENTRY _ZTI8S19521C6[];
extern  VTBL_ENTRY _ZTV8S19521C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19521C6[];
extern Class_Descriptor cd_S19521C5;
extern VTBL_ENTRY _ZTI8S19521C5[];
extern  VTBL_ENTRY _ZTV8S19521C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19521C5[];
extern Class_Descriptor cd_S19521C3;
extern VTBL_ENTRY _ZTI8S19521C3[];
extern  VTBL_ENTRY _ZTV8S19521C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19521C3[];
static Base_Class bases_S19521C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19521C4,    ABISELECT(264,184), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19521C3,    ABISELECT(136,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19521C4,    ABISELECT(224,160), //bcp->offset
    21, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19521C2,    ABISELECT(136,96), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19521C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19521C3,    ABISELECT(40,24), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19521C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19521C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19521C3,    ABISELECT(304,208), //bcp->offset
    28, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19521C1[];
extern void _ZN8S19521C42v3Ev();
extern void _ZN8S19521C62v5Ev();
extern void _ZN8S19521C62v6Ev();
extern void _ZN8S19521C52v7Ev();
extern void _ZN8S19521C12v1Ev();
extern void _ZN8S19521C12v2Ev();
extern void _ZN8S19521C32v4Ev();
extern void _ZN8S19521C32v4Ev();
extern void _ZN8S19521C42v3Ev();
extern void _ZN8S19521C42v3Ev();
extern void _ZN8S19521C32v4Ev();
static  VTBL_ENTRY vtc_S19521C1[] = {
  ABISELECT(304,208),
  ABISELECT(136,96),
  ABISELECT(264,184),
  0,
  (VTBL_ENTRY)&(_ZTI8S19521C1[0]),
  (VTBL_ENTRY)&_ZN8S19521C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19521C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19521C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19521C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19521C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19521C12v2Ev,
  ABISELECT(224,160),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S19521C1[0]),
  (VTBL_ENTRY)&_ZN8S19521C32v4Ev,
  ABISELECT(88,64),
  0,
  ABISELECT(128,88),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S19521C1[0]),
  (VTBL_ENTRY)&_ZN8S19521C32v4Ev,
  ABISELECT(-224,-160),
  (VTBL_ENTRY)&(_ZTI8S19521C1[0]),
  (VTBL_ENTRY)&_ZN8S19521C42v3Ev,
  0,
  ABISELECT(-264,-184),
  (VTBL_ENTRY)&(_ZTI8S19521C1[0]),
  (VTBL_ENTRY)&_ZN8S19521C42v3Ev,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-304,-208),
  (VTBL_ENTRY)&(_ZTI8S19521C1[0]),
  (VTBL_ENTRY)&_ZN8S19521C32v4Ev,
};
extern VTBL_ENTRY _ZTV8S19521C1[];
extern void _ZN8S19521C42v3Ev();
extern void _ZN8S19521C62v5Ev();
extern void _ZN8S19521C62v6Ev();
extern void _ZN8S19521C52v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19521C5__8S19521C1[] = {
  ABISELECT(136,96),
  ABISELECT(264,184),
  0,
  (VTBL_ENTRY)&(_ZTI8S19521C5[0]),
  (VTBL_ENTRY)&_ZN8S19521C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19521C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19521C62v6Ev,
  (VTBL_ENTRY)&_ZN8S19521C52v7Ev,
};
extern void _ZN8S19521C42v3Ev();
extern void _ZN8S19521C62v5Ev();
extern void _ZN8S19521C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19521C68S19521C5__8S19521C1[] = {
  ABISELECT(136,96),
  ABISELECT(264,184),
  0,
  (VTBL_ENTRY)&(_ZTI8S19521C6[0]),
  (VTBL_ENTRY)&_ZN8S19521C42v3Ev,
  (VTBL_ENTRY)&_ZN8S19521C62v5Ev,
  (VTBL_ENTRY)&_ZN8S19521C62v6Ev,
};
extern void _ZN8S19521C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19521C38S19521C68S19521C5__A1__8S19521C1[] = {
  ABISELECT(224,160),
  0,
  (VTBL_ENTRY)&(_ZTI8S19521C3[0]),
  (VTBL_ENTRY)&_ZN8S19521C32v4Ev,
};
extern void _ZN8S19521C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19521C4__8S19521C38S19521C68S19521C5__A1__8S19521C1[] = {
  0,
  ABISELECT(-224,-160),
  (VTBL_ENTRY)&(_ZTI8S19521C3[0]),
  (VTBL_ENTRY)&_ZN8S19521C42v3Ev,
};
extern void _ZN8S19521C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19521C3__8S19521C68S19521C5__8S19521C1[] = {
  ABISELECT(224,160),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S19521C6[0]),
  (VTBL_ENTRY)&_ZN8S19521C32v4Ev,
};
extern void _ZN8S19521C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19521C4__A1__8S19521C68S19521C5__8S19521C1[] = {
  0,
  ABISELECT(-264,-184),
  (VTBL_ENTRY)&(_ZTI8S19521C6[0]),
  (VTBL_ENTRY)&_ZN8S19521C42v3Ev,
};
extern void _ZN8S19521C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19521C2__8S19521C68S19521C5__8S19521C1[] = {
  ABISELECT(88,64),
  0,
  ABISELECT(128,88),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S19521C6[0]),
  (VTBL_ENTRY)&_ZN8S19521C32v4Ev,
};
extern void _ZN8S19521C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19521C48S19521C2__A2__8S19521C68S19521C5__8S19521C1[] = {
  ABISELECT(-224,-160),
  (VTBL_ENTRY)&(_ZTI8S19521C6[0]),
  (VTBL_ENTRY)&_ZN8S19521C42v3Ev,
};
extern void _ZN8S19521C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19521C4__8S19521C5__8S19521C1[] = {
  0,
  ABISELECT(-264,-184),
  (VTBL_ENTRY)&(_ZTI8S19521C5[0]),
  (VTBL_ENTRY)&_ZN8S19521C42v3Ev,
};
extern void _ZN8S19521C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19521C38S19521C6__8S19521C5__8S19521C1[] = {
  ABISELECT(224,160),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S19521C5[0]),
  (VTBL_ENTRY)&_ZN8S19521C32v4Ev,
};
extern void _ZN8S19521C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19521C2__8S19521C5__8S19521C1[] = {
  ABISELECT(88,64),
  0,
  ABISELECT(128,88),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S19521C5[0]),
  (VTBL_ENTRY)&_ZN8S19521C32v4Ev,
};
extern void _ZN8S19521C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19521C48S19521C2__A2__8S19521C5__8S19521C1[] = {
  ABISELECT(-224,-160),
  (VTBL_ENTRY)&(_ZTI8S19521C5[0]),
  (VTBL_ENTRY)&_ZN8S19521C42v3Ev,
};
extern void _ZN8S19521C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19521C2__8S19521C1[] = {
  ABISELECT(128,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19521C2[0]),
  (VTBL_ENTRY)&_ZN8S19521C32v4Ev,
};
extern void _ZN8S19521C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19521C38S19521C2__8S19521C1[] = {
  ABISELECT(128,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19521C3[0]),
  (VTBL_ENTRY)&_ZN8S19521C32v4Ev,
};
extern void _ZN8S19521C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19521C4__8S19521C38S19521C2__8S19521C1[] = {
  0,
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S19521C3[0]),
  (VTBL_ENTRY)&_ZN8S19521C42v3Ev,
};
extern void _ZN8S19521C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19521C4__8S19521C2__8S19521C1[] = {
  0,
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S19521C2[0]),
  (VTBL_ENTRY)&_ZN8S19521C42v3Ev,
};
extern void _ZN8S19521C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S19521C3__A2__8S19521C1[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19521C3[0]),
  (VTBL_ENTRY)&_ZN8S19521C32v4Ev,
};
extern void _ZN8S19521C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19521C4__8S19521C3__A2__8S19521C1[] = {
  0,
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S19521C3[0]),
  (VTBL_ENTRY)&_ZN8S19521C42v3Ev,
};
static  VTT_ENTRY vtt_S19521C1[] = {
  {&(_ZTV8S19521C1[5]),  5,33},
  {&(_tg__ZTV8S19521C5__8S19521C1[4]),  4,8},
  {&(_tg__ZTV8S19521C68S19521C5__8S19521C1[4]),  4,7},
  {&(_tg__ZTV8S19521C38S19521C68S19521C5__A1__8S19521C1[3]),  3,4},
  {&(_tg__ZTV8S19521C4__8S19521C38S19521C68S19521C5__A1__8S19521C1[3]),  3,4},
  {&(_tg__ZTV8S19521C3__8S19521C68S19521C5__8S19521C1[3]),  3,4},
  {&(_tg__ZTV8S19521C4__A1__8S19521C68S19521C5__8S19521C1[3]),  3,4},
  {&(_tg__ZTV8S19521C2__8S19521C68S19521C5__8S19521C1[5]),  5,6},
  {&(_tg__ZTV8S19521C48S19521C2__A2__8S19521C68S19521C5__8S19521C1[2]),  2,3},
  {&(_tg__ZTV8S19521C4__8S19521C5__8S19521C1[3]),  3,4},
  {&(_tg__ZTV8S19521C38S19521C6__8S19521C5__8S19521C1[3]),  3,4},
  {&(_tg__ZTV8S19521C2__8S19521C5__8S19521C1[5]),  5,6},
  {&(_tg__ZTV8S19521C48S19521C2__A2__8S19521C5__8S19521C1[2]),  2,3},
  {&(_ZTV8S19521C1[20]),  20,33},
  {&(_ZTV8S19521C1[27]),  27,33},
  {&(_ZTV8S19521C1[23]),  23,33},
  {&(_ZTV8S19521C1[14]),  14,33},
  {&(_ZTV8S19521C1[32]),  32,33},
  {&(_tg__ZTV8S19521C2__8S19521C1[3]),  3,4},
  {&(_tg__ZTV8S19521C38S19521C2__8S19521C1[3]),  3,4},
  {&(_tg__ZTV8S19521C4__8S19521C38S19521C2__8S19521C1[3]),  3,4},
  {&(_tg__ZTV8S19521C4__8S19521C2__8S19521C1[3]),  3,4},
  {&(_tg__ZTV8S19521C3__A2__8S19521C1[3]),  3,4},
  {&(_tg__ZTV8S19521C4__8S19521C3__A2__8S19521C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19521C1[];
extern  VTBL_ENTRY _ZTV8S19521C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19521C1[];
Class_Descriptor cd_S19521C1 = {  "S19521C1", // class name
  bases_S19521C1, 9,
  &(vtc_S19521C1[0]), // expected_vtbl_contents
  &(vtt_S19521C1[0]), // expected_vtt_contents
  ABISELECT(392,272), // object size
  NSPAIRA(_ZTI8S19521C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19521C1),33, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19521C1),24, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2990C3  {
  virtual  ~S2990C3(); // _ZN7S2990C3D1Ev
  virtual void  v1(); // _ZN7S2990C32v1Ev
  virtual void  v2(); // _ZN7S2990C32v2Ev
  S2990C3(); // tgen
};
//SIG(-1 S2990C3) C1{ vd v1 v2}


 S2990C3 ::~S2990C3(){ note_dtor("S2990C3", this);}
void  S2990C3 ::v1(){vfunc_called(this, "_ZN7S2990C32v1Ev");}
void  S2990C3 ::v2(){vfunc_called(this, "_ZN7S2990C32v2Ev");}
S2990C3 ::S2990C3(){ note_ctor("S2990C3", this);} // tgen

static void Test_S2990C3()
{
  extern Class_Descriptor cd_S2990C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S2990C3, buf);
    S2990C3 *dp, &lv = *(dp=new (buf) S2990C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S2990C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2990C3)");
    test_class_info(&lv, &cd_S2990C3);
    dp->~S2990C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2990C3(Test_S2990C3, "S2990C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S2990C3C1Ev();
extern void _ZN7S2990C3D1Ev();
Name_Map name_map_S2990C3[] = {
  NSPAIR(_ZN7S2990C3C1Ev),
  NSPAIR(_ZN7S2990C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2990C3[];
extern void _ZN7S2990C3D1Ev();
extern void _ZN7S2990C3D0Ev();
extern void _ZN7S2990C32v1Ev();
extern void _ZN7S2990C32v2Ev();
static  VTBL_ENTRY vtc_S2990C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2990C3[0]),
  (VTBL_ENTRY)&_ZN7S2990C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2990C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2990C32v1Ev,
  (VTBL_ENTRY)&_ZN7S2990C32v2Ev,
};
extern VTBL_ENTRY _ZTI7S2990C3[];
extern  VTBL_ENTRY _ZTV7S2990C3[];
Class_Descriptor cd_S2990C3 = {  "S2990C3", // class name
  0,0,//no base classes
  &(vtc_S2990C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S2990C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2990C3),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2990C5  {
  virtual void  v3(); // _ZN7S2990C52v3Ev
  virtual void  v4(); // _ZN7S2990C52v4Ev
  virtual void  v5(); // _ZN7S2990C52v5Ev
  virtual void  v6(); // _ZN7S2990C52v6Ev
  virtual void  v7(); // _ZN7S2990C52v7Ev
  virtual void  v8(); // _ZN7S2990C52v8Ev
  virtual void  v9(); // _ZN7S2990C52v9Ev
  virtual void  v10(); // _ZN7S2990C53v10Ev
  virtual void  v11(); // _ZN7S2990C53v11Ev
  ~S2990C5(); // tgen
  S2990C5(); // tgen
};
//SIG(-1 S2990C5) C1{ v1 v2 v3 v4 v5 v6 v7 v8 v9}


void  S2990C5 ::v3(){vfunc_called(this, "_ZN7S2990C52v3Ev");}
void  S2990C5 ::v4(){vfunc_called(this, "_ZN7S2990C52v4Ev");}
void  S2990C5 ::v5(){vfunc_called(this, "_ZN7S2990C52v5Ev");}
void  S2990C5 ::v6(){vfunc_called(this, "_ZN7S2990C52v6Ev");}
void  S2990C5 ::v7(){vfunc_called(this, "_ZN7S2990C52v7Ev");}
void  S2990C5 ::v8(){vfunc_called(this, "_ZN7S2990C52v8Ev");}
void  S2990C5 ::v9(){vfunc_called(this, "_ZN7S2990C52v9Ev");}
void  S2990C5 ::v10(){vfunc_called(this, "_ZN7S2990C53v10Ev");}
void  S2990C5 ::v11(){vfunc_called(this, "_ZN7S2990C53v11Ev");}
S2990C5 ::~S2990C5(){ note_dtor("S2990C5", this);} // tgen
S2990C5 ::S2990C5(){ note_ctor("S2990C5", this);} // tgen

static void Test_S2990C5()
{
  extern Class_Descriptor cd_S2990C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S2990C5, buf);
    S2990C5 *dp, &lv = *(dp=new (buf) S2990C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S2990C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2990C5)");
    test_class_info(&lv, &cd_S2990C5);
    dp->~S2990C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2990C5(Test_S2990C5, "S2990C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S2990C5C1Ev();
extern void _ZN7S2990C5D1Ev();
Name_Map name_map_S2990C5[] = {
  NSPAIR(_ZN7S2990C5C1Ev),
  NSPAIR(_ZN7S2990C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2990C5[];
extern void _ZN7S2990C52v3Ev();
extern void _ZN7S2990C52v4Ev();
extern void _ZN7S2990C52v5Ev();
extern void _ZN7S2990C52v6Ev();
extern void _ZN7S2990C52v7Ev();
extern void _ZN7S2990C52v8Ev();
extern void _ZN7S2990C52v9Ev();
extern void _ZN7S2990C53v10Ev();
extern void _ZN7S2990C53v11Ev();
static  VTBL_ENTRY vtc_S2990C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2990C5[0]),
  (VTBL_ENTRY)&_ZN7S2990C52v3Ev,
  (VTBL_ENTRY)&_ZN7S2990C52v4Ev,
  (VTBL_ENTRY)&_ZN7S2990C52v5Ev,
  (VTBL_ENTRY)&_ZN7S2990C52v6Ev,
  (VTBL_ENTRY)&_ZN7S2990C52v7Ev,
  (VTBL_ENTRY)&_ZN7S2990C52v8Ev,
  (VTBL_ENTRY)&_ZN7S2990C52v9Ev,
  (VTBL_ENTRY)&_ZN7S2990C53v10Ev,
  (VTBL_ENTRY)&_ZN7S2990C53v11Ev,
};
extern VTBL_ENTRY _ZTI7S2990C5[];
extern  VTBL_ENTRY _ZTV7S2990C5[];
Class_Descriptor cd_S2990C5 = {  "S2990C5", // class name
  0,0,//no base classes
  &(vtc_S2990C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S2990C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2990C5),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2990C4  : virtual S2990C5 {
  __tsi64 s2990c4f0;
  virtual void  v12(); // _ZN7S2990C43v12Ev
  virtual void  v13(); // _ZN7S2990C43v13Ev
  virtual void  v14(); // _ZN7S2990C43v14Ev
  virtual void  v15(); // _ZN7S2990C43v15Ev
  ~S2990C4(); // tgen
  S2990C4(); // tgen
};
//SIG(-1 S2990C4) C1{ VBC2{ v5 v6 v7 v8 v9 v10 v11 v12 v13} v1 v2 v3 v4 FL}


void  S2990C4 ::v12(){vfunc_called(this, "_ZN7S2990C43v12Ev");}
void  S2990C4 ::v13(){vfunc_called(this, "_ZN7S2990C43v13Ev");}
void  S2990C4 ::v14(){vfunc_called(this, "_ZN7S2990C43v14Ev");}
void  S2990C4 ::v15(){vfunc_called(this, "_ZN7S2990C43v15Ev");}
S2990C4 ::~S2990C4(){ note_dtor("S2990C4", this);} // tgen
S2990C4 ::S2990C4(){ note_ctor("S2990C4", this);} // tgen

static void Test_S2990C4()
{
  extern Class_Descriptor cd_S2990C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S2990C4, buf);
    S2990C4 *dp, &lv = *(dp=new (buf) S2990C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S2990C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2990C4)");
    check_base_class_offset(lv, (S2990C5*), 0, "S2990C4");
    check_field_offset(lv, s2990c4f0, ABISELECT(8,4), "S2990C4.s2990c4f0");
    test_class_info(&lv, &cd_S2990C4);
    dp->~S2990C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2990C4(Test_S2990C4, "S2990C4", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S2990C4C1Ev();
extern void _ZN7S2990C4D1Ev();
Name_Map name_map_S2990C4[] = {
  NSPAIR(_ZN7S2990C4C1Ev),
  NSPAIR(_ZN7S2990C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2990C5;
extern VTBL_ENTRY _ZTI7S2990C5[];
extern  VTBL_ENTRY _ZTV7S2990C5[];
static Base_Class bases_S2990C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2990C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S2990C4[];
extern void _ZN7S2990C52v3Ev();
extern void _ZN7S2990C52v4Ev();
extern void _ZN7S2990C52v5Ev();
extern void _ZN7S2990C52v6Ev();
extern void _ZN7S2990C52v7Ev();
extern void _ZN7S2990C52v8Ev();
extern void _ZN7S2990C52v9Ev();
extern void _ZN7S2990C53v10Ev();
extern void _ZN7S2990C53v11Ev();
extern void _ZN7S2990C43v12Ev();
extern void _ZN7S2990C43v13Ev();
extern void _ZN7S2990C43v14Ev();
extern void _ZN7S2990C43v15Ev();
static  VTBL_ENTRY vtc_S2990C4[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S2990C4[0]),
  (VTBL_ENTRY)&_ZN7S2990C52v3Ev,
  (VTBL_ENTRY)&_ZN7S2990C52v4Ev,
  (VTBL_ENTRY)&_ZN7S2990C52v5Ev,
  (VTBL_ENTRY)&_ZN7S2990C52v6Ev,
  (VTBL_ENTRY)&_ZN7S2990C52v7Ev,
  (VTBL_ENTRY)&_ZN7S2990C52v8Ev,
  (VTBL_ENTRY)&_ZN7S2990C52v9Ev,
  (VTBL_ENTRY)&_ZN7S2990C53v10Ev,
  (VTBL_ENTRY)&_ZN7S2990C53v11Ev,
  (VTBL_ENTRY)&_ZN7S2990C43v12Ev,
  (VTBL_ENTRY)&_ZN7S2990C43v13Ev,
  (VTBL_ENTRY)&_ZN7S2990C43v14Ev,
  (VTBL_ENTRY)&_ZN7S2990C43v15Ev,
};
extern VTBL_ENTRY _ZTV7S2990C4[];
static  VTT_ENTRY vtt_S2990C4[] = {
  {&(_ZTV7S2990C4[12]),  12,25},
  {&(_ZTV7S2990C4[12]),  12,25},
};
extern VTBL_ENTRY _ZTI7S2990C4[];
extern  VTBL_ENTRY _ZTV7S2990C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2990C4[];
Class_Descriptor cd_S2990C4 = {  "S2990C4", // class name
  bases_S2990C4, 1,
  &(vtc_S2990C4[0]), // expected_vtbl_contents
  &(vtt_S2990C4[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S2990C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S2990C4),25, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2990C4),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2990C2  : S2990C3 , S2990C4 {
  void *s2990c2f0;
  virtual void  v16(); // _ZN7S2990C23v16Ev
  virtual void  v17(); // _ZN7S2990C23v17Ev
  virtual void  v18(); // _ZN7S2990C23v18Ev
  virtual void  v19(); // _ZN7S2990C23v19Ev
  ~S2990C2(); // tgen
  S2990C2(); // tgen
};
//SIG(-1 S2990C2) C1{ BC2{ vd v5 v6} BC3{ VBC4{ v7 v8 v9 v10 v11 v12 v13 v14 v15} v16 v17 v18 v19 FL} v1 v2 v3 v4 Fp}


void  S2990C2 ::v16(){vfunc_called(this, "_ZN7S2990C23v16Ev");}
void  S2990C2 ::v17(){vfunc_called(this, "_ZN7S2990C23v17Ev");}
void  S2990C2 ::v18(){vfunc_called(this, "_ZN7S2990C23v18Ev");}
void  S2990C2 ::v19(){vfunc_called(this, "_ZN7S2990C23v19Ev");}
S2990C2 ::~S2990C2(){ note_dtor("S2990C2", this);} // tgen
S2990C2 ::S2990C2(){ note_ctor("S2990C2", this);} // tgen

static void Test_S2990C2()
{
  extern Class_Descriptor cd_S2990C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S2990C2, buf);
    S2990C2 *dp, &lv = *(dp=new (buf) S2990C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S2990C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2990C2)");
    check_base_class_offset(lv, (S2990C3*), 0, "S2990C2");
    check_base_class_offset(lv, (S2990C5*)(S2990C4*), ABISELECT(8,4), "S2990C2");
    check_base_class_offset(lv, (S2990C4*), ABISELECT(8,4), "S2990C2");
    check_field_offset(lv, s2990c2f0, ABISELECT(24,16), "S2990C2.s2990c2f0");
    test_class_info(&lv, &cd_S2990C2);
    dp->~S2990C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2990C2(Test_S2990C2, "S2990C2", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S2990C2C1Ev();
extern void _ZN7S2990C2D1Ev();
Name_Map name_map_S2990C2[] = {
  NSPAIR(_ZN7S2990C2C1Ev),
  NSPAIR(_ZN7S2990C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2990C3;
extern VTBL_ENTRY _ZTI7S2990C3[];
extern  VTBL_ENTRY _ZTV7S2990C3[];
extern Class_Descriptor cd_S2990C5;
extern VTBL_ENTRY _ZTI7S2990C5[];
extern  VTBL_ENTRY _ZTV7S2990C5[];
extern Class_Descriptor cd_S2990C4;
extern VTBL_ENTRY _ZTI7S2990C4[];
extern  VTBL_ENTRY _ZTV7S2990C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2990C4[];
static Base_Class bases_S2990C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2990C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2990C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S2990C4,    ABISELECT(8,4), //bcp->offset
    11, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2990C2[];
extern void _ZN7S2990C2D1Ev();
extern void _ZN7S2990C2D0Ev();
extern void _ZN7S2990C32v1Ev();
extern void _ZN7S2990C32v2Ev();
extern void _ZN7S2990C23v16Ev();
extern void _ZN7S2990C23v17Ev();
extern void _ZN7S2990C23v18Ev();
extern void _ZN7S2990C23v19Ev();
extern void _ZN7S2990C52v3Ev();
extern void _ZN7S2990C52v4Ev();
extern void _ZN7S2990C52v5Ev();
extern void _ZN7S2990C52v6Ev();
extern void _ZN7S2990C52v7Ev();
extern void _ZN7S2990C52v8Ev();
extern void _ZN7S2990C52v9Ev();
extern void _ZN7S2990C53v10Ev();
extern void _ZN7S2990C53v11Ev();
extern void _ZN7S2990C43v12Ev();
extern void _ZN7S2990C43v13Ev();
extern void _ZN7S2990C43v14Ev();
extern void _ZN7S2990C43v15Ev();
static  VTBL_ENTRY vtc_S2990C2[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S2990C2[0]),
  (VTBL_ENTRY)&_ZN7S2990C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2990C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2990C32v1Ev,
  (VTBL_ENTRY)&_ZN7S2990C32v2Ev,
  (VTBL_ENTRY)&_ZN7S2990C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2990C23v17Ev,
  (VTBL_ENTRY)&_ZN7S2990C23v18Ev,
  (VTBL_ENTRY)&_ZN7S2990C23v19Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S2990C2[0]),
  (VTBL_ENTRY)&_ZN7S2990C52v3Ev,
  (VTBL_ENTRY)&_ZN7S2990C52v4Ev,
  (VTBL_ENTRY)&_ZN7S2990C52v5Ev,
  (VTBL_ENTRY)&_ZN7S2990C52v6Ev,
  (VTBL_ENTRY)&_ZN7S2990C52v7Ev,
  (VTBL_ENTRY)&_ZN7S2990C52v8Ev,
  (VTBL_ENTRY)&_ZN7S2990C52v9Ev,
  (VTBL_ENTRY)&_ZN7S2990C53v10Ev,
  (VTBL_ENTRY)&_ZN7S2990C53v11Ev,
  (VTBL_ENTRY)&_ZN7S2990C43v12Ev,
  (VTBL_ENTRY)&_ZN7S2990C43v13Ev,
  (VTBL_ENTRY)&_ZN7S2990C43v14Ev,
  (VTBL_ENTRY)&_ZN7S2990C43v15Ev,
};
extern VTBL_ENTRY _ZTV7S2990C2[];
extern void _ZN7S2990C52v3Ev();
extern void _ZN7S2990C52v4Ev();
extern void _ZN7S2990C52v5Ev();
extern void _ZN7S2990C52v6Ev();
extern void _ZN7S2990C52v7Ev();
extern void _ZN7S2990C52v8Ev();
extern void _ZN7S2990C52v9Ev();
extern void _ZN7S2990C53v10Ev();
extern void _ZN7S2990C53v11Ev();
extern void _ZN7S2990C43v12Ev();
extern void _ZN7S2990C43v13Ev();
extern void _ZN7S2990C43v14Ev();
extern void _ZN7S2990C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S2990C4__7S2990C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S2990C4[0]),
  (VTBL_ENTRY)&_ZN7S2990C52v3Ev,
  (VTBL_ENTRY)&_ZN7S2990C52v4Ev,
  (VTBL_ENTRY)&_ZN7S2990C52v5Ev,
  (VTBL_ENTRY)&_ZN7S2990C52v6Ev,
  (VTBL_ENTRY)&_ZN7S2990C52v7Ev,
  (VTBL_ENTRY)&_ZN7S2990C52v8Ev,
  (VTBL_ENTRY)&_ZN7S2990C52v9Ev,
  (VTBL_ENTRY)&_ZN7S2990C53v10Ev,
  (VTBL_ENTRY)&_ZN7S2990C53v11Ev,
  (VTBL_ENTRY)&_ZN7S2990C43v12Ev,
  (VTBL_ENTRY)&_ZN7S2990C43v13Ev,
  (VTBL_ENTRY)&_ZN7S2990C43v14Ev,
  (VTBL_ENTRY)&_ZN7S2990C43v15Ev,
};
static  VTT_ENTRY vtt_S2990C2[] = {
  {&(_ZTV7S2990C2[3]),  3,36},
  {&(_tg__ZTV7S2990C4__7S2990C2[12]),  12,25},
  {&(_tg__ZTV7S2990C4__7S2990C2[12]),  12,25},
  {&(_ZTV7S2990C2[23]),  23,36},
  {&(_ZTV7S2990C2[23]),  23,36},
};
extern VTBL_ENTRY _ZTI7S2990C2[];
extern  VTBL_ENTRY _ZTV7S2990C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2990C2[];
Class_Descriptor cd_S2990C2 = {  "S2990C2", // class name
  bases_S2990C2, 3,
  &(vtc_S2990C2[0]), // expected_vtbl_contents
  &(vtt_S2990C2[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S2990C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S2990C2),36, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2990C2),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2990C1  : S2990C2 {
  ::S5266C29 s2990c1f0;
  ~S2990C1(); // tgen
  S2990C1(); // tgen
};
//SIG(1 S2990C1) C1{ BC2{ BC3{ vd v1 v2} BC4{ VBC5{ v3 v4 v5 v6 v7 v8 v9 v10 v11} v12 v13 v14 v15 FL} v16 v17 v18 v19 Fp} FC6{ m}}


S2990C1 ::~S2990C1(){ note_dtor("S2990C1", this);} // tgen
S2990C1 ::S2990C1(){ note_ctor("S2990C1", this);} // tgen

static void Test_S2990C1()
{
  extern Class_Descriptor cd_S2990C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S2990C1, buf);
    S2990C1 *dp, &lv = *(dp=new (buf) S2990C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S2990C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2990C1)");
    check_base_class_offset(lv, (S2990C3*)(S2990C2*), 0, "S2990C1");
    check_base_class_offset(lv, (S2990C5*)(S2990C4*)(S2990C2*), ABISELECT(8,4), "S2990C1");
    check_base_class_offset(lv, (S2990C4*)(S2990C2*), ABISELECT(8,4), "S2990C1");
    check_base_class_offset(lv, (S2990C2*), 0, "S2990C1");
    check_field_offset(lv, s2990c1f0, ABISELECT(32,20), "S2990C1.s2990c1f0");
    test_class_info(&lv, &cd_S2990C1);
    dp->~S2990C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2990C1(Test_S2990C1, "S2990C1", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN7S2990C1C1Ev();
extern void _ZN7S2990C1D1Ev();
Name_Map name_map_S2990C1[] = {
  NSPAIR(_ZN7S2990C1C1Ev),
  NSPAIR(_ZN7S2990C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2990C3;
extern VTBL_ENTRY _ZTI7S2990C3[];
extern  VTBL_ENTRY _ZTV7S2990C3[];
extern Class_Descriptor cd_S2990C5;
extern VTBL_ENTRY _ZTI7S2990C5[];
extern  VTBL_ENTRY _ZTV7S2990C5[];
extern Class_Descriptor cd_S2990C4;
extern VTBL_ENTRY _ZTI7S2990C4[];
extern  VTBL_ENTRY _ZTV7S2990C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2990C4[];
extern Class_Descriptor cd_S2990C2;
extern VTBL_ENTRY _ZTI7S2990C2[];
extern  VTBL_ENTRY _ZTV7S2990C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2990C2[];
static Base_Class bases_S2990C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2990C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S2990C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S2990C4,    ABISELECT(8,4), //bcp->offset
    11, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S2990C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2990C1[];
extern void _ZN7S2990C1D1Ev();
extern void _ZN7S2990C1D0Ev();
extern void _ZN7S2990C32v1Ev();
extern void _ZN7S2990C32v2Ev();
extern void _ZN7S2990C23v16Ev();
extern void _ZN7S2990C23v17Ev();
extern void _ZN7S2990C23v18Ev();
extern void _ZN7S2990C23v19Ev();
extern void _ZN7S2990C52v3Ev();
extern void _ZN7S2990C52v4Ev();
extern void _ZN7S2990C52v5Ev();
extern void _ZN7S2990C52v6Ev();
extern void _ZN7S2990C52v7Ev();
extern void _ZN7S2990C52v8Ev();
extern void _ZN7S2990C52v9Ev();
extern void _ZN7S2990C53v10Ev();
extern void _ZN7S2990C53v11Ev();
extern void _ZN7S2990C43v12Ev();
extern void _ZN7S2990C43v13Ev();
extern void _ZN7S2990C43v14Ev();
extern void _ZN7S2990C43v15Ev();
static  VTBL_ENTRY vtc_S2990C1[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S2990C1[0]),
  (VTBL_ENTRY)&_ZN7S2990C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2990C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2990C32v1Ev,
  (VTBL_ENTRY)&_ZN7S2990C32v2Ev,
  (VTBL_ENTRY)&_ZN7S2990C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2990C23v17Ev,
  (VTBL_ENTRY)&_ZN7S2990C23v18Ev,
  (VTBL_ENTRY)&_ZN7S2990C23v19Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S2990C1[0]),
  (VTBL_ENTRY)&_ZN7S2990C52v3Ev,
  (VTBL_ENTRY)&_ZN7S2990C52v4Ev,
  (VTBL_ENTRY)&_ZN7S2990C52v5Ev,
  (VTBL_ENTRY)&_ZN7S2990C52v6Ev,
  (VTBL_ENTRY)&_ZN7S2990C52v7Ev,
  (VTBL_ENTRY)&_ZN7S2990C52v8Ev,
  (VTBL_ENTRY)&_ZN7S2990C52v9Ev,
  (VTBL_ENTRY)&_ZN7S2990C53v10Ev,
  (VTBL_ENTRY)&_ZN7S2990C53v11Ev,
  (VTBL_ENTRY)&_ZN7S2990C43v12Ev,
  (VTBL_ENTRY)&_ZN7S2990C43v13Ev,
  (VTBL_ENTRY)&_ZN7S2990C43v14Ev,
  (VTBL_ENTRY)&_ZN7S2990C43v15Ev,
};
extern VTBL_ENTRY _ZTV7S2990C1[];
extern void _ZN7S2990C2D1Ev();
extern void _ZN7S2990C2D0Ev();
extern void _ZN7S2990C32v1Ev();
extern void _ZN7S2990C32v2Ev();
extern void _ZN7S2990C23v16Ev();
extern void _ZN7S2990C23v17Ev();
extern void _ZN7S2990C23v18Ev();
extern void _ZN7S2990C23v19Ev();
static  VTBL_ENTRY _tg__ZTV7S2990C2__7S2990C1[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S2990C2[0]),
  (VTBL_ENTRY)&_ZN7S2990C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2990C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2990C32v1Ev,
  (VTBL_ENTRY)&_ZN7S2990C32v2Ev,
  (VTBL_ENTRY)&_ZN7S2990C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2990C23v17Ev,
  (VTBL_ENTRY)&_ZN7S2990C23v18Ev,
  (VTBL_ENTRY)&_ZN7S2990C23v19Ev,
};
extern void _ZN7S2990C52v3Ev();
extern void _ZN7S2990C52v4Ev();
extern void _ZN7S2990C52v5Ev();
extern void _ZN7S2990C52v6Ev();
extern void _ZN7S2990C52v7Ev();
extern void _ZN7S2990C52v8Ev();
extern void _ZN7S2990C52v9Ev();
extern void _ZN7S2990C53v10Ev();
extern void _ZN7S2990C53v11Ev();
extern void _ZN7S2990C43v12Ev();
extern void _ZN7S2990C43v13Ev();
extern void _ZN7S2990C43v14Ev();
extern void _ZN7S2990C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S2990C47S2990C2__7S2990C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S2990C4[0]),
  (VTBL_ENTRY)&_ZN7S2990C52v3Ev,
  (VTBL_ENTRY)&_ZN7S2990C52v4Ev,
  (VTBL_ENTRY)&_ZN7S2990C52v5Ev,
  (VTBL_ENTRY)&_ZN7S2990C52v6Ev,
  (VTBL_ENTRY)&_ZN7S2990C52v7Ev,
  (VTBL_ENTRY)&_ZN7S2990C52v8Ev,
  (VTBL_ENTRY)&_ZN7S2990C52v9Ev,
  (VTBL_ENTRY)&_ZN7S2990C53v10Ev,
  (VTBL_ENTRY)&_ZN7S2990C53v11Ev,
  (VTBL_ENTRY)&_ZN7S2990C43v12Ev,
  (VTBL_ENTRY)&_ZN7S2990C43v13Ev,
  (VTBL_ENTRY)&_ZN7S2990C43v14Ev,
  (VTBL_ENTRY)&_ZN7S2990C43v15Ev,
};
extern void _ZN7S2990C52v3Ev();
extern void _ZN7S2990C52v4Ev();
extern void _ZN7S2990C52v5Ev();
extern void _ZN7S2990C52v6Ev();
extern void _ZN7S2990C52v7Ev();
extern void _ZN7S2990C52v8Ev();
extern void _ZN7S2990C52v9Ev();
extern void _ZN7S2990C53v10Ev();
extern void _ZN7S2990C53v11Ev();
extern void _ZN7S2990C43v12Ev();
extern void _ZN7S2990C43v13Ev();
extern void _ZN7S2990C43v14Ev();
extern void _ZN7S2990C43v15Ev();
static  VTBL_ENTRY _tg__ZTV7S2990C4__7S2990C2__7S2990C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S2990C2[0]),
  (VTBL_ENTRY)&_ZN7S2990C52v3Ev,
  (VTBL_ENTRY)&_ZN7S2990C52v4Ev,
  (VTBL_ENTRY)&_ZN7S2990C52v5Ev,
  (VTBL_ENTRY)&_ZN7S2990C52v6Ev,
  (VTBL_ENTRY)&_ZN7S2990C52v7Ev,
  (VTBL_ENTRY)&_ZN7S2990C52v8Ev,
  (VTBL_ENTRY)&_ZN7S2990C52v9Ev,
  (VTBL_ENTRY)&_ZN7S2990C53v10Ev,
  (VTBL_ENTRY)&_ZN7S2990C53v11Ev,
  (VTBL_ENTRY)&_ZN7S2990C43v12Ev,
  (VTBL_ENTRY)&_ZN7S2990C43v13Ev,
  (VTBL_ENTRY)&_ZN7S2990C43v14Ev,
  (VTBL_ENTRY)&_ZN7S2990C43v15Ev,
};
static  VTT_ENTRY vtt_S2990C1[] = {
  {&(_ZTV7S2990C1[3]),  3,36},
  {&(_tg__ZTV7S2990C2__7S2990C1[3]),  3,11},
  {&(_tg__ZTV7S2990C47S2990C2__7S2990C1[12]),  12,25},
  {&(_tg__ZTV7S2990C47S2990C2__7S2990C1[12]),  12,25},
  {&(_tg__ZTV7S2990C4__7S2990C2__7S2990C1[12]),  12,25},
  {&(_tg__ZTV7S2990C4__7S2990C2__7S2990C1[12]),  12,25},
  {&(_ZTV7S2990C1[23]),  23,36},
  {&(_ZTV7S2990C1[23]),  23,36},
};
extern VTBL_ENTRY _ZTI7S2990C1[];
extern  VTBL_ENTRY _ZTV7S2990C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2990C1[];
Class_Descriptor cd_S2990C1 = {  "S2990C1", // class name
  bases_S2990C1, 4,
  &(vtc_S2990C1[0]), // expected_vtbl_contents
  &(vtt_S2990C1[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI7S2990C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2990C1),36, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2990C1),8, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20823C3  {
  int s20823c3f0;
  __tsi64 s20823c3f1;
  virtual  ~S20823C3(); // _ZN8S20823C3D1Ev
  virtual void  v2(); // _ZN8S20823C32v2Ev
  virtual void  v3(); // _ZN8S20823C32v3Ev
  virtual void  v4(); // _ZN8S20823C32v4Ev
  S20823C3(); // tgen
};
//SIG(-1 S20823C3) C1{ vd v1 v2 v3 Fi FL}


 S20823C3 ::~S20823C3(){ note_dtor("S20823C3", this);}
void  S20823C3 ::v2(){vfunc_called(this, "_ZN8S20823C32v2Ev");}
void  S20823C3 ::v3(){vfunc_called(this, "_ZN8S20823C32v3Ev");}
void  S20823C3 ::v4(){vfunc_called(this, "_ZN8S20823C32v4Ev");}
S20823C3 ::S20823C3(){ note_ctor("S20823C3", this);} // tgen

static void Test_S20823C3()
{
  extern Class_Descriptor cd_S20823C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S20823C3, buf);
    S20823C3 *dp, &lv = *(dp=new (buf) S20823C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S20823C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20823C3)");
    check_field_offset(lv, s20823c3f0, ABISELECT(8,4), "S20823C3.s20823c3f0");
    check_field_offset(lv, s20823c3f1, ABISELECT(16,8), "S20823C3.s20823c3f1");
    test_class_info(&lv, &cd_S20823C3);
    dp->~S20823C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20823C3(Test_S20823C3, "S20823C3", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S20823C3C1Ev();
extern void _ZN8S20823C3D1Ev();
Name_Map name_map_S20823C3[] = {
  NSPAIR(_ZN8S20823C3C1Ev),
  NSPAIR(_ZN8S20823C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20823C3[];
extern void _ZN8S20823C3D1Ev();
extern void _ZN8S20823C3D0Ev();
extern void _ZN8S20823C32v2Ev();
extern void _ZN8S20823C32v3Ev();
extern void _ZN8S20823C32v4Ev();
static  VTBL_ENTRY vtc_S20823C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20823C3[0]),
  (VTBL_ENTRY)&_ZN8S20823C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20823C3D0Ev,
  (VTBL_ENTRY)&_ZN8S20823C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20823C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20823C32v4Ev,
};
extern VTBL_ENTRY _ZTI8S20823C3[];
extern  VTBL_ENTRY _ZTV8S20823C3[];
Class_Descriptor cd_S20823C3 = {  "S20823C3", // class name
  0,0,//no base classes
  &(vtc_S20823C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S20823C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20823C3),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20823C4  : virtual S20823C3 {
  virtual void  v5(); // _ZN8S20823C42v5Ev
  virtual void  v6(); // _ZN8S20823C42v6Ev
  virtual void  v7(); // _ZN8S20823C42v7Ev
  virtual void  v8(); // _ZN8S20823C42v8Ev
  virtual void  v9(); // _ZN8S20823C42v9Ev
  ~S20823C4(); // tgen
  S20823C4(); // tgen
};
//SIG(-1 S20823C4) C1{ VBC2{ vd v6 v7 v8 Fi FL} v1 v2 v3 v4 v5}


void  S20823C4 ::v5(){vfunc_called(this, "_ZN8S20823C42v5Ev");}
void  S20823C4 ::v6(){vfunc_called(this, "_ZN8S20823C42v6Ev");}
void  S20823C4 ::v7(){vfunc_called(this, "_ZN8S20823C42v7Ev");}
void  S20823C4 ::v8(){vfunc_called(this, "_ZN8S20823C42v8Ev");}
void  S20823C4 ::v9(){vfunc_called(this, "_ZN8S20823C42v9Ev");}
S20823C4 ::~S20823C4(){ note_dtor("S20823C4", this);} // tgen
S20823C4 ::S20823C4(){ note_ctor("S20823C4", this);} // tgen

static void Test_S20823C4()
{
  extern Class_Descriptor cd_S20823C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S20823C4, buf);
    S20823C4 *dp, &lv = *(dp=new (buf) S20823C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S20823C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20823C4)");
    check_base_class_offset(lv, (S20823C3*), ABISELECT(8,4), "S20823C4");
    test_class_info(&lv, &cd_S20823C4);
    dp->~S20823C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20823C4(Test_S20823C4, "S20823C4", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S20823C4C1Ev();
extern void _ZN8S20823C4D1Ev();
Name_Map name_map_S20823C4[] = {
  NSPAIR(_ZN8S20823C4C1Ev),
  NSPAIR(_ZN8S20823C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20823C3;
extern VTBL_ENTRY _ZTI8S20823C3[];
extern  VTBL_ENTRY _ZTV8S20823C3[];
static Base_Class bases_S20823C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20823C3,    ABISELECT(8,4), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20823C4[];
extern void _ZN8S20823C42v5Ev();
extern void _ZN8S20823C42v6Ev();
extern void _ZN8S20823C42v7Ev();
extern void _ZN8S20823C42v8Ev();
extern void _ZN8S20823C42v9Ev();
extern void _ZN8S20823C4D1Ev();
extern void _ZN8S20823C4D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S20823C4D1Ev,_ZTv0_n12_N8S20823C4D1Ev)();
extern void ABISELECT(_ZThn8_N8S20823C4D1Ev,_ZThn4_N8S20823C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20823C4D0Ev,_ZTv0_n12_N8S20823C4D0Ev)();
extern void ABISELECT(_ZThn8_N8S20823C4D0Ev,_ZThn4_N8S20823C4D0Ev)() __attribute__((weak));
extern void _ZN8S20823C32v2Ev();
extern void _ZN8S20823C32v3Ev();
extern void _ZN8S20823C32v4Ev();
static  VTBL_ENTRY vtc_S20823C4[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20823C4[0]),
  (VTBL_ENTRY)&_ZN8S20823C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20823C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20823C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20823C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20823C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20823C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20823C4D0Ev,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20823C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20823C4D1Ev,_ZTv0_n12_N8S20823C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20823C4D0Ev,_ZTv0_n12_N8S20823C4D0Ev),
  (VTBL_ENTRY)&_ZN8S20823C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20823C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20823C32v4Ev,
};
extern VTBL_ENTRY _ZTV8S20823C4[];
static  VTT_ENTRY vtt_S20823C4[] = {
  {&(_ZTV8S20823C4[3]),  3,21},
  {&(_ZTV8S20823C4[16]),  16,21},
};
extern VTBL_ENTRY _ZTI8S20823C4[];
extern  VTBL_ENTRY _ZTV8S20823C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20823C4[];
static VTBL_ENTRY alt_thunk_names125[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20823C4D0Ev,_ZTv0_n12_N8S20823C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20823C4D0Ev,_ZThn4_N8S20823C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20823C4D1Ev,_ZTv0_n12_N8S20823C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20823C4D1Ev,_ZThn4_N8S20823C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20823C4 = {  "S20823C4", // class name
  bases_S20823C4, 1,
  &(vtc_S20823C4[0]), // expected_vtbl_contents
  &(vtt_S20823C4[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S20823C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20823C4),21, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20823C4),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names125,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20823C2  : virtual S20823C3 , S20823C4 {
  int s20823c2f0;
  void *s20823c2f1;
  char s20823c2f2[8];
  virtual  ~S20823C2(); // _ZN8S20823C2D2Ev
  virtual void  v10(); // _ZN8S20823C23v10Ev
  virtual void  v11(); // _ZN8S20823C23v11Ev
  virtual void  v12(); // _ZN8S20823C23v12Ev
  virtual void  v13(); // _ZN8S20823C23v13Ev
  virtual void  v14(); // _ZN8S20823C23v14Ev
  S20823C2(); // tgen
};
//SIG(-1 S20823C2) C1{ VBC2{ vd v6 v7 v8 Fi FL} BC3{ VBC2 v9 v10 v11 v12 v13} vd v1 v2 v3 v4 v5 Fi Fp Fc[8]}


 S20823C2 ::~S20823C2(){ note_dtor("S20823C2", this);}
void  S20823C2 ::v10(){vfunc_called(this, "_ZN8S20823C23v10Ev");}
void  S20823C2 ::v11(){vfunc_called(this, "_ZN8S20823C23v11Ev");}
void  S20823C2 ::v12(){vfunc_called(this, "_ZN8S20823C23v12Ev");}
void  S20823C2 ::v13(){vfunc_called(this, "_ZN8S20823C23v13Ev");}
void  S20823C2 ::v14(){vfunc_called(this, "_ZN8S20823C23v14Ev");}
S20823C2 ::S20823C2(){ note_ctor("S20823C2", this);} // tgen

static void Test_S20823C2()
{
  extern Class_Descriptor cd_S20823C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S20823C2, buf);
    S20823C2 *dp, &lv = *(dp=new (buf) S20823C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S20823C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20823C2)");
    check_base_class_offset(lv, (S20823C3*), ABISELECT(32,20), "S20823C2");
    check_base_class_offset(lv, (S20823C3*)(S20823C4*), ABISELECT(32,20), "S20823C2");
    check_base_class_offset(lv, (S20823C4*), 0, "S20823C2");
    check_field_offset(lv, s20823c2f0, ABISELECT(8,4), "S20823C2.s20823c2f0");
    check_field_offset(lv, s20823c2f1, ABISELECT(16,8), "S20823C2.s20823c2f1");
    check_field_offset(lv, s20823c2f2, ABISELECT(24,12), "S20823C2.s20823c2f2");
    test_class_info(&lv, &cd_S20823C2);
    dp->~S20823C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20823C2(Test_S20823C2, "S20823C2", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN8S20823C2C1Ev();
extern void _ZN8S20823C2D2Ev();
Name_Map name_map_S20823C2[] = {
  NSPAIR(_ZN8S20823C2C1Ev),
  NSPAIR(_ZN8S20823C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20823C3;
extern VTBL_ENTRY _ZTI8S20823C3[];
extern  VTBL_ENTRY _ZTV8S20823C3[];
extern Class_Descriptor cd_S20823C4;
extern VTBL_ENTRY _ZTI8S20823C4[];
extern  VTBL_ENTRY _ZTV8S20823C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20823C4[];
static Base_Class bases_S20823C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20823C3,    ABISELECT(32,20), //bcp->offset
    15, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20823C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20823C2[];
extern void _ZN8S20823C42v5Ev();
extern void _ZN8S20823C42v6Ev();
extern void _ZN8S20823C42v7Ev();
extern void _ZN8S20823C42v8Ev();
extern void _ZN8S20823C42v9Ev();
extern void _ZN8S20823C2D1Ev();
extern void _ZN8S20823C2D0Ev();
extern void _ZN8S20823C23v10Ev();
extern void _ZN8S20823C23v11Ev();
extern void _ZN8S20823C23v12Ev();
extern void _ZN8S20823C23v13Ev();
extern void _ZN8S20823C23v14Ev();
extern void ABISELECT(_ZTv0_n24_N8S20823C2D1Ev,_ZTv0_n12_N8S20823C2D1Ev)();
extern void ABISELECT(_ZThn32_N8S20823C2D1Ev,_ZThn20_N8S20823C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20823C2D0Ev,_ZTv0_n12_N8S20823C2D0Ev)();
extern void ABISELECT(_ZThn32_N8S20823C2D0Ev,_ZThn20_N8S20823C2D0Ev)() __attribute__((weak));
extern void _ZN8S20823C32v2Ev();
extern void _ZN8S20823C32v3Ev();
extern void _ZN8S20823C32v4Ev();
static  VTBL_ENTRY vtc_S20823C2[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20823C2[0]),
  (VTBL_ENTRY)&_ZN8S20823C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20823C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20823C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20823C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20823C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20823C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20823C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20823C23v10Ev,
  (VTBL_ENTRY)&_ZN8S20823C23v11Ev,
  (VTBL_ENTRY)&_ZN8S20823C23v12Ev,
  (VTBL_ENTRY)&_ZN8S20823C23v13Ev,
  (VTBL_ENTRY)&_ZN8S20823C23v14Ev,
  0,
  0,
  0,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S20823C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20823C2D1Ev,_ZTv0_n12_N8S20823C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20823C2D0Ev,_ZTv0_n12_N8S20823C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20823C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20823C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20823C32v4Ev,
};
extern VTBL_ENTRY _ZTV8S20823C2[];
extern void _ZN8S20823C42v5Ev();
extern void _ZN8S20823C42v6Ev();
extern void _ZN8S20823C42v7Ev();
extern void _ZN8S20823C42v8Ev();
extern void _ZN8S20823C42v9Ev();
extern void _ZN8S20823C4D1Ev();
extern void _ZN8S20823C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20823C4__8S20823C2[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20823C4[0]),
  (VTBL_ENTRY)&_ZN8S20823C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20823C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20823C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20823C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20823C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20823C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20823C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20823C4D1Ev,_ZTv0_n12_N8S20823C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S20823C4D1Ev,_ZThn20_N8S20823C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20823C4D0Ev,_ZTv0_n12_N8S20823C4D0Ev)();
extern void ABISELECT(_ZThn32_N8S20823C4D0Ev,_ZThn20_N8S20823C4D0Ev)() __attribute__((weak));
extern void _ZN8S20823C32v2Ev();
extern void _ZN8S20823C32v3Ev();
extern void _ZN8S20823C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20823C3__8S20823C4__8S20823C2[] = {
  0,
  0,
  0,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S20823C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20823C4D1Ev,_ZTv0_n12_N8S20823C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20823C4D0Ev,_ZTv0_n12_N8S20823C4D0Ev),
  (VTBL_ENTRY)&_ZN8S20823C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20823C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20823C32v4Ev,
};
static  VTT_ENTRY vtt_S20823C2[] = {
  {&(_ZTV8S20823C2[3]),  3,26},
  {&(_tg__ZTV8S20823C4__8S20823C2[3]),  3,10},
  {&(_tg__ZTV8S20823C3__8S20823C4__8S20823C2[6]),  6,11},
  {&(_ZTV8S20823C2[21]),  21,26},
};
extern VTBL_ENTRY _ZTI8S20823C2[];
extern  VTBL_ENTRY _ZTV8S20823C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20823C2[];
static VTBL_ENTRY alt_thunk_names126[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20823C4D0Ev,_ZTv0_n12_N8S20823C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20823C4D0Ev,_ZThn20_N8S20823C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20823C4D1Ev,_ZTv0_n12_N8S20823C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20823C4D1Ev,_ZThn20_N8S20823C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20823C2D0Ev,_ZTv0_n12_N8S20823C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20823C2D0Ev,_ZThn20_N8S20823C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20823C2D1Ev,_ZTv0_n12_N8S20823C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20823C2D1Ev,_ZThn20_N8S20823C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20823C2 = {  "S20823C2", // class name
  bases_S20823C2, 2,
  &(vtc_S20823C2[0]), // expected_vtbl_contents
  &(vtt_S20823C2[0]), // expected_vtt_contents
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI8S20823C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20823C2),26, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20823C2),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names126,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20823C1  : virtual S20823C2 {
  virtual  ~S20823C1(); // _ZN8S20823C1D2Ev
  virtual void  v1(); // _ZN8S20823C12v1Ev
  S20823C1(); // tgen
};
//SIG(1 S20823C1) C1{ VBC2{ VBC3{ vd v2 v3 v4 Fi FL} BC4{ VBC3 v5 v6 v7 v8 v9} vd v10 v11 v12 v13 v14 Fi Fp Fc[8]} vd v1}


 S20823C1 ::~S20823C1(){ note_dtor("S20823C1", this);}
void  S20823C1 ::v1(){vfunc_called(this, "_ZN8S20823C12v1Ev");}
S20823C1 ::S20823C1(){ note_ctor("S20823C1", this);} // tgen

static void Test_S20823C1()
{
  extern Class_Descriptor cd_S20823C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,11)];
    init_test(&cd_S20823C1, buf);
    S20823C1 *dp, &lv = *(dp=new (buf) S20823C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,40), "sizeof(S20823C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20823C1)");
    check_base_class_offset(lv, (S20823C3*)(S20823C2*), ABISELECT(40,24), "S20823C1");
    check_base_class_offset(lv, (S20823C3*)(S20823C4*)(S20823C2*), ABISELECT(40,24), "S20823C1");
    check_base_class_offset(lv, (S20823C4*)(S20823C2*), ABISELECT(8,4), "S20823C1");
    check_base_class_offset(lv, (S20823C2*), ABISELECT(8,4), "S20823C1");
    test_class_info(&lv, &cd_S20823C1);
    dp->~S20823C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20823C1(Test_S20823C1, "S20823C1", ABISELECT(64,40));

#else // __cplusplus

extern void _ZN8S20823C1C1Ev();
extern void _ZN8S20823C1D2Ev();
Name_Map name_map_S20823C1[] = {
  NSPAIR(_ZN8S20823C1C1Ev),
  NSPAIR(_ZN8S20823C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20823C3;
extern VTBL_ENTRY _ZTI8S20823C3[];
extern  VTBL_ENTRY _ZTV8S20823C3[];
extern Class_Descriptor cd_S20823C4;
extern VTBL_ENTRY _ZTI8S20823C4[];
extern  VTBL_ENTRY _ZTV8S20823C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20823C4[];
extern Class_Descriptor cd_S20823C2;
extern VTBL_ENTRY _ZTI8S20823C2[];
extern  VTBL_ENTRY _ZTV8S20823C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20823C2[];
static Base_Class bases_S20823C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20823C3,    ABISELECT(40,24), //bcp->offset
    33, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20823C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20823C2,    ABISELECT(8,4), //bcp->offset
    7, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20823C1[];
extern void _ZN8S20823C1D1Ev();
extern void _ZN8S20823C1D0Ev();
extern void _ZN8S20823C12v1Ev();
extern void _ZN8S20823C42v5Ev();
extern void _ZN8S20823C42v6Ev();
extern void _ZN8S20823C42v7Ev();
extern void _ZN8S20823C42v8Ev();
extern void _ZN8S20823C42v9Ev();
extern void ABISELECT(_ZTv0_n72_N8S20823C1D1Ev,_ZTv0_n36_N8S20823C1D1Ev)();
extern void ABISELECT(_ZThn8_N8S20823C1D1Ev,_ZThn4_N8S20823C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S20823C1D0Ev,_ZTv0_n36_N8S20823C1D0Ev)();
extern void ABISELECT(_ZThn8_N8S20823C1D0Ev,_ZThn4_N8S20823C1D0Ev)() __attribute__((weak));
extern void _ZN8S20823C23v10Ev();
extern void _ZN8S20823C23v11Ev();
extern void _ZN8S20823C23v12Ev();
extern void _ZN8S20823C23v13Ev();
extern void _ZN8S20823C23v14Ev();
extern void ABISELECT(_ZTv0_n24_N8S20823C1D1Ev,_ZTv0_n12_N8S20823C1D1Ev)();
extern void ABISELECT(_ZThn40_N8S20823C1D1Ev,_ZThn24_N8S20823C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20823C1D0Ev,_ZTv0_n12_N8S20823C1D0Ev)();
extern void ABISELECT(_ZThn40_N8S20823C1D0Ev,_ZThn24_N8S20823C1D0Ev)() __attribute__((weak));
extern void _ZN8S20823C32v2Ev();
extern void _ZN8S20823C32v3Ev();
extern void _ZN8S20823C32v4Ev();
static  VTBL_ENTRY vtc_S20823C1[] = {
  ABISELECT(40,24),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20823C1[0]),
  (VTBL_ENTRY)&_ZN8S20823C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20823C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20823C12v1Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,20),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20823C1[0]),
  (VTBL_ENTRY)&_ZN8S20823C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20823C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20823C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20823C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20823C42v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20823C1D1Ev,_ZTv0_n36_N8S20823C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20823C1D0Ev,_ZTv0_n36_N8S20823C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20823C23v10Ev,
  (VTBL_ENTRY)&_ZN8S20823C23v11Ev,
  (VTBL_ENTRY)&_ZN8S20823C23v12Ev,
  (VTBL_ENTRY)&_ZN8S20823C23v13Ev,
  (VTBL_ENTRY)&_ZN8S20823C23v14Ev,
  0,
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S20823C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20823C1D1Ev,_ZTv0_n12_N8S20823C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20823C1D0Ev,_ZTv0_n12_N8S20823C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20823C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20823C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20823C32v4Ev,
};
extern VTBL_ENTRY _ZTV8S20823C1[];
extern void _ZN8S20823C42v5Ev();
extern void _ZN8S20823C42v6Ev();
extern void _ZN8S20823C42v7Ev();
extern void _ZN8S20823C42v8Ev();
extern void _ZN8S20823C42v9Ev();
extern void _ZN8S20823C2D1Ev();
extern void _ZN8S20823C2D0Ev();
extern void _ZN8S20823C23v10Ev();
extern void _ZN8S20823C23v11Ev();
extern void _ZN8S20823C23v12Ev();
extern void _ZN8S20823C23v13Ev();
extern void _ZN8S20823C23v14Ev();
static  VTBL_ENTRY _tg__ZTV8S20823C2__8S20823C1[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20823C2[0]),
  (VTBL_ENTRY)&_ZN8S20823C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20823C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20823C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20823C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20823C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20823C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20823C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20823C23v10Ev,
  (VTBL_ENTRY)&_ZN8S20823C23v11Ev,
  (VTBL_ENTRY)&_ZN8S20823C23v12Ev,
  (VTBL_ENTRY)&_ZN8S20823C23v13Ev,
  (VTBL_ENTRY)&_ZN8S20823C23v14Ev,
};
extern void _ZN8S20823C42v5Ev();
extern void _ZN8S20823C42v6Ev();
extern void _ZN8S20823C42v7Ev();
extern void _ZN8S20823C42v8Ev();
extern void _ZN8S20823C42v9Ev();
extern void _ZN8S20823C4D1Ev();
extern void _ZN8S20823C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20823C48S20823C2__8S20823C1[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20823C4[0]),
  (VTBL_ENTRY)&_ZN8S20823C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20823C42v6Ev,
  (VTBL_ENTRY)&_ZN8S20823C42v7Ev,
  (VTBL_ENTRY)&_ZN8S20823C42v8Ev,
  (VTBL_ENTRY)&_ZN8S20823C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20823C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20823C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20823C4D1Ev,_ZTv0_n12_N8S20823C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S20823C4D1Ev,_ZThn20_N8S20823C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20823C4D0Ev,_ZTv0_n12_N8S20823C4D0Ev)();
extern void ABISELECT(_ZThn32_N8S20823C4D0Ev,_ZThn20_N8S20823C4D0Ev)() __attribute__((weak));
extern void _ZN8S20823C32v2Ev();
extern void _ZN8S20823C32v3Ev();
extern void _ZN8S20823C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20823C3__8S20823C48S20823C2__8S20823C1[] = {
  0,
  0,
  0,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S20823C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20823C4D1Ev,_ZTv0_n12_N8S20823C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20823C4D0Ev,_ZTv0_n12_N8S20823C4D0Ev),
  (VTBL_ENTRY)&_ZN8S20823C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20823C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20823C32v4Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20823C2D1Ev,_ZTv0_n12_N8S20823C2D1Ev)();
extern void ABISELECT(_ZThn32_N8S20823C2D1Ev,_ZThn20_N8S20823C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20823C2D0Ev,_ZTv0_n12_N8S20823C2D0Ev)();
extern void ABISELECT(_ZThn32_N8S20823C2D0Ev,_ZThn20_N8S20823C2D0Ev)() __attribute__((weak));
extern void _ZN8S20823C32v2Ev();
extern void _ZN8S20823C32v3Ev();
extern void _ZN8S20823C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20823C3__8S20823C2__8S20823C1[] = {
  0,
  0,
  0,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S20823C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20823C2D1Ev,_ZTv0_n12_N8S20823C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20823C2D0Ev,_ZTv0_n12_N8S20823C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20823C32v2Ev,
  (VTBL_ENTRY)&_ZN8S20823C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20823C32v4Ev,
};
static  VTT_ENTRY vtt_S20823C1[] = {
  {&(_ZTV8S20823C1[4]),  4,44},
  {&(_ZTV8S20823C1[21]),  21,44},
  {&(_ZTV8S20823C1[39]),  39,44},
  {&(_tg__ZTV8S20823C2__8S20823C1[3]),  3,15},
  {&(_tg__ZTV8S20823C48S20823C2__8S20823C1[3]),  3,10},
  {&(_tg__ZTV8S20823C3__8S20823C48S20823C2__8S20823C1[6]),  6,11},
  {&(_tg__ZTV8S20823C3__8S20823C2__8S20823C1[6]),  6,11},
};
extern VTBL_ENTRY _ZTI8S20823C1[];
extern  VTBL_ENTRY _ZTV8S20823C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20823C1[];
static VTBL_ENTRY alt_thunk_names127[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20823C2D0Ev,_ZTv0_n12_N8S20823C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20823C2D0Ev,_ZThn20_N8S20823C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20823C2D1Ev,_ZTv0_n12_N8S20823C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20823C2D1Ev,_ZThn20_N8S20823C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20823C4D0Ev,_ZTv0_n12_N8S20823C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20823C4D0Ev,_ZThn20_N8S20823C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20823C4D1Ev,_ZTv0_n12_N8S20823C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20823C4D1Ev,_ZThn20_N8S20823C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20823C1D0Ev,_ZTv0_n12_N8S20823C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20823C1D0Ev,_ZThn24_N8S20823C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20823C1D1Ev,_ZTv0_n12_N8S20823C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20823C1D1Ev,_ZThn24_N8S20823C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20823C1D0Ev,_ZTv0_n36_N8S20823C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20823C1D0Ev,_ZThn4_N8S20823C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20823C1D1Ev,_ZTv0_n36_N8S20823C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20823C1D1Ev,_ZThn4_N8S20823C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20823C1 = {  "S20823C1", // class name
  bases_S20823C1, 3,
  &(vtc_S20823C1[0]), // expected_vtbl_contents
  &(vtt_S20823C1[0]), // expected_vtt_contents
  ABISELECT(64,40), // object size
  NSPAIRA(_ZTI8S20823C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20823C1),44, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20823C1),7, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names127,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6564C2  {
  virtual void  v2(); // _ZN7S6564C22v2Ev
  virtual void  v3(); // _ZN7S6564C22v3Ev
  virtual void  v4(); // _ZN7S6564C22v4Ev
  virtual void  v5(); // _ZN7S6564C22v5Ev
  virtual void  v6(); // _ZN7S6564C22v6Ev
  virtual void  v7(); // _ZN7S6564C22v7Ev
  virtual void  v8(); // _ZN7S6564C22v8Ev
  virtual void  v9(); // _ZN7S6564C22v9Ev
  virtual void  v10(); // _ZN7S6564C23v10Ev
  ~S6564C2(); // tgen
  S6564C2(); // tgen
};
//SIG(-1 S6564C2) C1{ v1 v2 v3 v4 v5 v6 v7 v8 v9}


void  S6564C2 ::v2(){vfunc_called(this, "_ZN7S6564C22v2Ev");}
void  S6564C2 ::v3(){vfunc_called(this, "_ZN7S6564C22v3Ev");}
void  S6564C2 ::v4(){vfunc_called(this, "_ZN7S6564C22v4Ev");}
void  S6564C2 ::v5(){vfunc_called(this, "_ZN7S6564C22v5Ev");}
void  S6564C2 ::v6(){vfunc_called(this, "_ZN7S6564C22v6Ev");}
void  S6564C2 ::v7(){vfunc_called(this, "_ZN7S6564C22v7Ev");}
void  S6564C2 ::v8(){vfunc_called(this, "_ZN7S6564C22v8Ev");}
void  S6564C2 ::v9(){vfunc_called(this, "_ZN7S6564C22v9Ev");}
void  S6564C2 ::v10(){vfunc_called(this, "_ZN7S6564C23v10Ev");}
S6564C2 ::~S6564C2(){ note_dtor("S6564C2", this);} // tgen
S6564C2 ::S6564C2(){ note_ctor("S6564C2", this);} // tgen

static void Test_S6564C2()
{
  extern Class_Descriptor cd_S6564C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S6564C2, buf);
    S6564C2 *dp, &lv = *(dp=new (buf) S6564C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S6564C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6564C2)");
    test_class_info(&lv, &cd_S6564C2);
    dp->~S6564C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6564C2(Test_S6564C2, "S6564C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S6564C2C1Ev();
extern void _ZN7S6564C2D1Ev();
Name_Map name_map_S6564C2[] = {
  NSPAIR(_ZN7S6564C2C1Ev),
  NSPAIR(_ZN7S6564C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6564C2[];
extern void _ZN7S6564C22v2Ev();
extern void _ZN7S6564C22v3Ev();
extern void _ZN7S6564C22v4Ev();
extern void _ZN7S6564C22v5Ev();
extern void _ZN7S6564C22v6Ev();
extern void _ZN7S6564C22v7Ev();
extern void _ZN7S6564C22v8Ev();
extern void _ZN7S6564C22v9Ev();
extern void _ZN7S6564C23v10Ev();
static  VTBL_ENTRY vtc_S6564C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6564C2[0]),
  (VTBL_ENTRY)&_ZN7S6564C22v2Ev,
  (VTBL_ENTRY)&_ZN7S6564C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6564C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6564C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6564C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6564C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6564C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6564C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6564C23v10Ev,
};
extern VTBL_ENTRY _ZTI7S6564C2[];
extern  VTBL_ENTRY _ZTV7S6564C2[];
Class_Descriptor cd_S6564C2 = {  "S6564C2", // class name
  0,0,//no base classes
  &(vtc_S6564C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6564C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6564C2),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6564C3  : virtual S6564C2 {
  virtual  ~S6564C3(); // _ZN7S6564C3D2Ev
  virtual void  v11(); // _ZN7S6564C33v11Ev
  virtual void  v12(); // _ZN7S6564C33v12Ev
  virtual void  v13(); // _ZN7S6564C33v13Ev
  virtual void  v14(); // _ZN7S6564C33v14Ev
  virtual void  v15(); // _ZN7S6564C33v15Ev
  virtual void  v16(); // _ZN7S6564C33v16Ev
  virtual void  v17(); // _ZN7S6564C33v17Ev
  virtual void  v18(); // _ZN7S6564C33v18Ev
  virtual void  v19(); // _ZN7S6564C33v19Ev
  S6564C3(); // tgen
};
//SIG(-1 S6564C3) C1{ VBC2{ v10 v11 v12 v13 v14 v15 v16 v17 v18} vd v1 v2 v3 v4 v5 v6 v7 v8 v9}


 S6564C3 ::~S6564C3(){ note_dtor("S6564C3", this);}
void  S6564C3 ::v11(){vfunc_called(this, "_ZN7S6564C33v11Ev");}
void  S6564C3 ::v12(){vfunc_called(this, "_ZN7S6564C33v12Ev");}
void  S6564C3 ::v13(){vfunc_called(this, "_ZN7S6564C33v13Ev");}
void  S6564C3 ::v14(){vfunc_called(this, "_ZN7S6564C33v14Ev");}
void  S6564C3 ::v15(){vfunc_called(this, "_ZN7S6564C33v15Ev");}
void  S6564C3 ::v16(){vfunc_called(this, "_ZN7S6564C33v16Ev");}
void  S6564C3 ::v17(){vfunc_called(this, "_ZN7S6564C33v17Ev");}
void  S6564C3 ::v18(){vfunc_called(this, "_ZN7S6564C33v18Ev");}
void  S6564C3 ::v19(){vfunc_called(this, "_ZN7S6564C33v19Ev");}
S6564C3 ::S6564C3(){ note_ctor("S6564C3", this);} // tgen

static void Test_S6564C3()
{
  extern Class_Descriptor cd_S6564C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S6564C3, buf);
    S6564C3 *dp, &lv = *(dp=new (buf) S6564C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S6564C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6564C3)");
    check_base_class_offset(lv, (S6564C2*), 0, "S6564C3");
    test_class_info(&lv, &cd_S6564C3);
    dp->~S6564C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6564C3(Test_S6564C3, "S6564C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S6564C3C1Ev();
extern void _ZN7S6564C3D2Ev();
Name_Map name_map_S6564C3[] = {
  NSPAIR(_ZN7S6564C3C1Ev),
  NSPAIR(_ZN7S6564C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6564C2;
extern VTBL_ENTRY _ZTI7S6564C2[];
extern  VTBL_ENTRY _ZTV7S6564C2[];
static Base_Class bases_S6564C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6564C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6564C3[];
extern void _ZN7S6564C22v2Ev();
extern void _ZN7S6564C22v3Ev();
extern void _ZN7S6564C22v4Ev();
extern void _ZN7S6564C22v5Ev();
extern void _ZN7S6564C22v6Ev();
extern void _ZN7S6564C22v7Ev();
extern void _ZN7S6564C22v8Ev();
extern void _ZN7S6564C22v9Ev();
extern void _ZN7S6564C23v10Ev();
extern void _ZN7S6564C3D1Ev();
extern void _ZN7S6564C3D0Ev();
extern void _ZN7S6564C33v11Ev();
extern void _ZN7S6564C33v12Ev();
extern void _ZN7S6564C33v13Ev();
extern void _ZN7S6564C33v14Ev();
extern void _ZN7S6564C33v15Ev();
extern void _ZN7S6564C33v16Ev();
extern void _ZN7S6564C33v17Ev();
extern void _ZN7S6564C33v18Ev();
extern void _ZN7S6564C33v19Ev();
static  VTBL_ENTRY vtc_S6564C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6564C3[0]),
  (VTBL_ENTRY)&_ZN7S6564C22v2Ev,
  (VTBL_ENTRY)&_ZN7S6564C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6564C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6564C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6564C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6564C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6564C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6564C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6564C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6564C3D1Ev,
  (VTBL_ENTRY)&_ZN7S6564C3D0Ev,
  (VTBL_ENTRY)&_ZN7S6564C33v11Ev,
  (VTBL_ENTRY)&_ZN7S6564C33v12Ev,
  (VTBL_ENTRY)&_ZN7S6564C33v13Ev,
  (VTBL_ENTRY)&_ZN7S6564C33v14Ev,
  (VTBL_ENTRY)&_ZN7S6564C33v15Ev,
  (VTBL_ENTRY)&_ZN7S6564C33v16Ev,
  (VTBL_ENTRY)&_ZN7S6564C33v17Ev,
  (VTBL_ENTRY)&_ZN7S6564C33v18Ev,
  (VTBL_ENTRY)&_ZN7S6564C33v19Ev,
};
extern VTBL_ENTRY _ZTV7S6564C3[];
static  VTT_ENTRY vtt_S6564C3[] = {
  {&(_ZTV7S6564C3[12]),  12,32},
  {&(_ZTV7S6564C3[12]),  12,32},
};
extern VTBL_ENTRY _ZTI7S6564C3[];
extern  VTBL_ENTRY _ZTV7S6564C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6564C3[];
Class_Descriptor cd_S6564C3 = {  "S6564C3", // class name
  bases_S6564C3, 1,
  &(vtc_S6564C3[0]), // expected_vtbl_contents
  &(vtt_S6564C3[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6564C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S6564C3),32, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6564C3),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6564C1  : S6564C2 , S6564C3 {
  void *s6564c1f0;
  virtual  ~S6564C1(); // _ZN7S6564C1D2Ev
  virtual void  v1(); // _ZN7S6564C12v1Ev
  S6564C1(); // tgen
};
//SIG(1 S6564C1) C1{ BC2{ v2 v3 v4 v5 v6 v7 v8 v9 v10} BC3{ VBC2 vd v11 v12 v13 v14 v15 v16 v17 v18 v19} vd v1 Fp}


 S6564C1 ::~S6564C1(){ note_dtor("S6564C1", this);}
void  S6564C1 ::v1(){vfunc_called(this, "_ZN7S6564C12v1Ev");}
S6564C1 ::S6564C1(){ note_ctor("S6564C1", this);} // tgen

static void Test_S6564C1()
{
  extern Class_Descriptor cd_S6564C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S6564C1, buf);
    S6564C1 *dp, &lv = *(dp=new (buf) S6564C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S6564C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6564C1)");
    /*is_ambiguous_... S6564C1::S6564C2 */ AMB_check_base_class_offset(lv, (S6564C2*), 0, "S6564C1");
    check_base_class_offset(lv, (S6564C2*)(S6564C3*), ABISELECT(8,4), "S6564C1");
    check_base_class_offset(lv, (S6564C3*), ABISELECT(8,4), "S6564C1");
    check_field_offset(lv, s6564c1f0, ABISELECT(16,8), "S6564C1.s6564c1f0");
    test_class_info(&lv, &cd_S6564C1);
    dp->~S6564C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6564C1(Test_S6564C1, "S6564C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S6564C1C1Ev();
extern void _ZN7S6564C1D2Ev();
Name_Map name_map_S6564C1[] = {
  NSPAIR(_ZN7S6564C1C1Ev),
  NSPAIR(_ZN7S6564C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6564C2;
extern VTBL_ENTRY _ZTI7S6564C2[];
extern  VTBL_ENTRY _ZTV7S6564C2[];
extern Class_Descriptor cd_S6564C2;
extern VTBL_ENTRY _ZTI7S6564C2[];
extern  VTBL_ENTRY _ZTV7S6564C2[];
extern Class_Descriptor cd_S6564C3;
extern VTBL_ENTRY _ZTI7S6564C3[];
extern  VTBL_ENTRY _ZTV7S6564C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6564C3[];
static Base_Class bases_S6564C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6564C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6564C2,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S6564C3,    ABISELECT(8,4), //bcp->offset
    15, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6564C1[];
extern void _ZN7S6564C22v2Ev();
extern void _ZN7S6564C22v3Ev();
extern void _ZN7S6564C22v4Ev();
extern void _ZN7S6564C22v5Ev();
extern void _ZN7S6564C22v6Ev();
extern void _ZN7S6564C22v7Ev();
extern void _ZN7S6564C22v8Ev();
extern void _ZN7S6564C22v9Ev();
extern void _ZN7S6564C23v10Ev();
extern void _ZN7S6564C1D1Ev();
extern void _ZN7S6564C1D0Ev();
extern void _ZN7S6564C12v1Ev();
extern void _ZN7S6564C22v2Ev();
extern void _ZN7S6564C22v3Ev();
extern void _ZN7S6564C22v4Ev();
extern void _ZN7S6564C22v5Ev();
extern void _ZN7S6564C22v6Ev();
extern void _ZN7S6564C22v7Ev();
extern void _ZN7S6564C22v8Ev();
extern void _ZN7S6564C22v9Ev();
extern void _ZN7S6564C23v10Ev();
extern void ABISELECT(_ZThn8_N7S6564C1D1Ev,_ZThn4_N7S6564C1D1Ev)();
extern void ABISELECT(_ZThn8_N7S6564C1D0Ev,_ZThn4_N7S6564C1D0Ev)();
extern void _ZN7S6564C33v11Ev();
extern void _ZN7S6564C33v12Ev();
extern void _ZN7S6564C33v13Ev();
extern void _ZN7S6564C33v14Ev();
extern void _ZN7S6564C33v15Ev();
extern void _ZN7S6564C33v16Ev();
extern void _ZN7S6564C33v17Ev();
extern void _ZN7S6564C33v18Ev();
extern void _ZN7S6564C33v19Ev();
static  VTBL_ENTRY vtc_S6564C1[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S6564C1[0]),
  (VTBL_ENTRY)&_ZN7S6564C22v2Ev,
  (VTBL_ENTRY)&_ZN7S6564C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6564C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6564C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6564C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6564C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6564C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6564C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6564C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6564C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6564C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6564C12v1Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S6564C1[0]),
  (VTBL_ENTRY)&_ZN7S6564C22v2Ev,
  (VTBL_ENTRY)&_ZN7S6564C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6564C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6564C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6564C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6564C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6564C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6564C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6564C23v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S6564C1D1Ev,_ZThn4_N7S6564C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S6564C1D0Ev,_ZThn4_N7S6564C1D0Ev),
  (VTBL_ENTRY)&_ZN7S6564C33v11Ev,
  (VTBL_ENTRY)&_ZN7S6564C33v12Ev,
  (VTBL_ENTRY)&_ZN7S6564C33v13Ev,
  (VTBL_ENTRY)&_ZN7S6564C33v14Ev,
  (VTBL_ENTRY)&_ZN7S6564C33v15Ev,
  (VTBL_ENTRY)&_ZN7S6564C33v16Ev,
  (VTBL_ENTRY)&_ZN7S6564C33v17Ev,
  (VTBL_ENTRY)&_ZN7S6564C33v18Ev,
  (VTBL_ENTRY)&_ZN7S6564C33v19Ev,
};
extern VTBL_ENTRY _ZTV7S6564C1[];
extern void _ZN7S6564C22v2Ev();
extern void _ZN7S6564C22v3Ev();
extern void _ZN7S6564C22v4Ev();
extern void _ZN7S6564C22v5Ev();
extern void _ZN7S6564C22v6Ev();
extern void _ZN7S6564C22v7Ev();
extern void _ZN7S6564C22v8Ev();
extern void _ZN7S6564C22v9Ev();
extern void _ZN7S6564C23v10Ev();
extern void _ZN7S6564C3D1Ev();
extern void _ZN7S6564C3D0Ev();
extern void _ZN7S6564C33v11Ev();
extern void _ZN7S6564C33v12Ev();
extern void _ZN7S6564C33v13Ev();
extern void _ZN7S6564C33v14Ev();
extern void _ZN7S6564C33v15Ev();
extern void _ZN7S6564C33v16Ev();
extern void _ZN7S6564C33v17Ev();
extern void _ZN7S6564C33v18Ev();
extern void _ZN7S6564C33v19Ev();
static  VTBL_ENTRY _tg__ZTV7S6564C3__7S6564C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6564C3[0]),
  (VTBL_ENTRY)&_ZN7S6564C22v2Ev,
  (VTBL_ENTRY)&_ZN7S6564C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6564C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6564C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6564C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6564C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6564C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6564C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6564C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6564C3D1Ev,
  (VTBL_ENTRY)&_ZN7S6564C3D0Ev,
  (VTBL_ENTRY)&_ZN7S6564C33v11Ev,
  (VTBL_ENTRY)&_ZN7S6564C33v12Ev,
  (VTBL_ENTRY)&_ZN7S6564C33v13Ev,
  (VTBL_ENTRY)&_ZN7S6564C33v14Ev,
  (VTBL_ENTRY)&_ZN7S6564C33v15Ev,
  (VTBL_ENTRY)&_ZN7S6564C33v16Ev,
  (VTBL_ENTRY)&_ZN7S6564C33v17Ev,
  (VTBL_ENTRY)&_ZN7S6564C33v18Ev,
  (VTBL_ENTRY)&_ZN7S6564C33v19Ev,
};
static  VTT_ENTRY vtt_S6564C1[] = {
  {&(_ZTV7S6564C1[3]),  3,47},
  {&(_tg__ZTV7S6564C3__7S6564C1[12]),  12,32},
  {&(_tg__ZTV7S6564C3__7S6564C1[12]),  12,32},
  {&(_ZTV7S6564C1[27]),  27,47},
  {&(_ZTV7S6564C1[27]),  27,47},
};
extern VTBL_ENTRY _ZTI7S6564C1[];
extern  VTBL_ENTRY _ZTV7S6564C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6564C1[];
Class_Descriptor cd_S6564C1 = {  "S6564C1", // class name
  bases_S6564C1, 3,
  &(vtc_S6564C1[0]), // expected_vtbl_contents
  &(vtt_S6564C1[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S6564C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6564C1),47, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6564C1),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21607C5_nt  {
  void *s21607c5f0;
  int s21607c5f1[2];
  void *s21607c5f2[2];
  void  mf21607c5(); // _ZN11S21607C5_nt9mf21607c5Ev
};
//SIG(-1 S21607C5_nt) C1{ m Fp Fi[2] Fp[2]}


void  S21607C5_nt ::mf21607c5(){}

//skip512 S21607C5_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21607C1  {
  int s21607c1f0;
  ::S3765C5_nt s21607c1f1;
  void *s21607c1f2;
  ::S5266C19_nt s21607c1f3;
  ::S5266C19_nt s21607c1f4;
  char s21607c1f5[6];
  void *s21607c1f6[2];
  int s21607c1f7;
  ::S21607C5_nt s21607c1f8;
  ::S5266C19_nt s21607c1f9;
  void  mf21607c1(); // _ZN8S21607C19mf21607c1Ev
  virtual  ~S21607C1(); // _ZN8S21607C1D1Ev
  S21607C1(); // tgen
};
//SIG(1 S21607C1) C1{ vd m Fi FC2{ m Fp[2]} Fp FC3{ m Fp Fi FC4{ m}} FC3 Fc[6] Fp[2] Fi FC5{ m Fp Fi[2] Fp[2]} FC3}


void  S21607C1 ::mf21607c1(){}
 S21607C1 ::~S21607C1(){ note_dtor("S21607C1", this);}
S21607C1 ::S21607C1(){ note_ctor("S21607C1", this);} // tgen

static void Test_S21607C1()
{
  extern Class_Descriptor cd_S21607C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,25)];
    init_test(&cd_S21607C1, buf);
    S21607C1 *dp, &lv = *(dp=new (buf) S21607C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,96), "sizeof(S21607C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21607C1)");
    check_field_offset(lv, s21607c1f0, ABISELECT(8,4), "S21607C1.s21607c1f0");
    check_field_offset(lv, s21607c1f1, ABISELECT(16,8), "S21607C1.s21607c1f1");
    check_field_offset(lv, s21607c1f2, ABISELECT(32,16), "S21607C1.s21607c1f2");
    check_field_offset(lv, s21607c1f3, ABISELECT(40,20), "S21607C1.s21607c1f3");
    check_field_offset(lv, s21607c1f4, ABISELECT(56,32), "S21607C1.s21607c1f4");
    check_field_offset(lv, s21607c1f5, ABISELECT(72,44), "S21607C1.s21607c1f5");
    check_field_offset(lv, s21607c1f6, ABISELECT(80,52), "S21607C1.s21607c1f6");
    check_field_offset(lv, s21607c1f7, ABISELECT(96,60), "S21607C1.s21607c1f7");
    check_field_offset(lv, s21607c1f8, ABISELECT(104,64), "S21607C1.s21607c1f8");
    check_field_offset(lv, s21607c1f9, ABISELECT(136,84), "S21607C1.s21607c1f9");
    test_class_info(&lv, &cd_S21607C1);
    dp->~S21607C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21607C1(Test_S21607C1, "S21607C1", ABISELECT(152,96));

#else // __cplusplus

extern void _ZN8S21607C1C1Ev();
extern void _ZN8S21607C1D1Ev();
Name_Map name_map_S21607C1[] = {
  NSPAIR(_ZN8S21607C1C1Ev),
  NSPAIR(_ZN8S21607C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21607C1[];
extern void _ZN8S21607C1D1Ev();
extern void _ZN8S21607C1D0Ev();
static  VTBL_ENTRY vtc_S21607C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21607C1[0]),
  (VTBL_ENTRY)&_ZN8S21607C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21607C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21607C1[];
extern  VTBL_ENTRY _ZTV8S21607C1[];
Class_Descriptor cd_S21607C1 = {  "S21607C1", // class name
  0,0,//no base classes
  &(vtc_S21607C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(152,96), // object size
  NSPAIRA(_ZTI8S21607C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21607C1),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4387C3_nt  {
  ::S5266C19_nt s4387c3f0;
  int s4387c3f1[2];
  char s4387c3f2;
  virtual  ~S4387C3_nt(); // _ZN10S4387C3_ntD1Ev
  virtual void  v2(); // _ZN10S4387C3_nt2v2Ev
  virtual void  v3(); // _ZN10S4387C3_nt2v3Ev
  virtual void  v4(); // _ZN10S4387C3_nt2v4Ev
  S4387C3_nt(); // tgen
};
//SIG(-1 S4387C3_nt) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S4387C3_nt ::~S4387C3_nt(){ note_dtor("S4387C3_nt", this);}
void  S4387C3_nt ::v2(){vfunc_called(this, "_ZN10S4387C3_nt2v2Ev");}
void  S4387C3_nt ::v3(){vfunc_called(this, "_ZN10S4387C3_nt2v3Ev");}
void  S4387C3_nt ::v4(){vfunc_called(this, "_ZN10S4387C3_nt2v4Ev");}
S4387C3_nt ::S4387C3_nt(){ note_ctor("S4387C3_nt", this);} // tgen

//skip512 S4387C3_nt

#else // __cplusplus

extern void _ZN10S4387C3_ntC1Ev();
extern void _ZN10S4387C3_ntD1Ev();
Name_Map name_map_S4387C3_nt[] = {
  NSPAIR(_ZN10S4387C3_ntC1Ev),
  NSPAIR(_ZN10S4387C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S4387C3_nt[];
extern void _ZN10S4387C3_ntD1Ev();
extern void _ZN10S4387C3_ntD0Ev();
extern void _ZN10S4387C3_nt2v2Ev();
extern void _ZN10S4387C3_nt2v3Ev();
extern void _ZN10S4387C3_nt2v4Ev();
static  VTBL_ENTRY vtc_S4387C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4387C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S4387C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4387C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S4387C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN10S4387C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S4387C3_nt2v4Ev,
};
extern VTBL_ENTRY _ZTI10S4387C3_nt[];
VTBL_ENTRY *P__ZTI10S4387C3_nt = _ZTI10S4387C3_nt; 
extern  VTBL_ENTRY _ZTV10S4387C3_nt[];
Class_Descriptor cd_S4387C3_nt = {  "S4387C3_nt", // class name
  0,0,//no base classes
  &(vtc_S4387C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI10S4387C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S4387C3_nt),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4387C2_nt  : S4387C3_nt {
  void *s4387c2f0;
  virtual void  v5(); // _ZN10S4387C2_nt2v5Ev
  virtual void  v6(); // _ZN10S4387C2_nt2v6Ev
  ~S4387C2_nt(); // tgen
  S4387C2_nt(); // tgen
};
//SIG(-1 S4387C2_nt) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} v1 v2 Fp}


void  S4387C2_nt ::v5(){vfunc_called(this, "_ZN10S4387C2_nt2v5Ev");}
void  S4387C2_nt ::v6(){vfunc_called(this, "_ZN10S4387C2_nt2v6Ev");}
S4387C2_nt ::~S4387C2_nt(){ note_dtor("S4387C2_nt", this);} // tgen
S4387C2_nt ::S4387C2_nt(){ note_ctor("S4387C2_nt", this);} // tgen

//skip512 S4387C2_nt

#else // __cplusplus

extern void _ZN10S4387C2_ntC1Ev();
extern void _ZN10S4387C2_ntD1Ev();
Name_Map name_map_S4387C2_nt[] = {
  NSPAIR(_ZN10S4387C2_ntC1Ev),
  NSPAIR(_ZN10S4387C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4387C3_nt;
extern VTBL_ENTRY _ZTI10S4387C3_nt[];
extern  VTBL_ENTRY _ZTV10S4387C3_nt[];
static Base_Class bases_S4387C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4387C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S4387C2_nt[];
extern void _ZN10S4387C2_ntD1Ev();
extern void _ZN10S4387C2_ntD0Ev();
extern void _ZN10S4387C3_nt2v2Ev();
extern void _ZN10S4387C3_nt2v3Ev();
extern void _ZN10S4387C3_nt2v4Ev();
extern void _ZN10S4387C2_nt2v5Ev();
extern void _ZN10S4387C2_nt2v6Ev();
static  VTBL_ENTRY vtc_S4387C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4387C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S4387C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4387C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S4387C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN10S4387C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S4387C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S4387C2_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S4387C2_nt2v6Ev,
};
extern VTBL_ENTRY _ZTI10S4387C2_nt[];
VTBL_ENTRY *P__ZTI10S4387C2_nt = _ZTI10S4387C2_nt; 
extern  VTBL_ENTRY _ZTV10S4387C2_nt[];
Class_Descriptor cd_S4387C2_nt = {  "S4387C2_nt", // class name
  bases_S4387C2_nt, 1,
  &(vtc_S4387C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI10S4387C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S4387C2_nt),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4387C1  : S4387C2_nt {
  ::S3765C5_nt s4387c1f0;
  __tsi64 s4387c1f1;
  ::S17777C6_nt s4387c1f2;
  virtual void  v1(); // _ZN7S4387C12v1Ev
  ~S4387C1(); // tgen
  S4387C1(); // tgen
};
//SIG(1 S4387C1) C1{ BC2{ BC3{ vd v2 v3 v4 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} v5 v6 Fp} v1 FC6{ m Fp[2]} FL FC7{ m Fp}}


void  S4387C1 ::v1(){vfunc_called(this, "_ZN7S4387C12v1Ev");}
S4387C1 ::~S4387C1(){ note_dtor("S4387C1", this);} // tgen
S4387C1 ::S4387C1(){ note_ctor("S4387C1", this);} // tgen

static void Test_S4387C1()
{
  extern Class_Descriptor cd_S4387C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,14)];
    init_test(&cd_S4387C1, buf);
    S4387C1 *dp, &lv = *(dp=new (buf) S4387C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,52), "sizeof(S4387C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4387C1)");
    check_base_class_offset(lv, (S4387C3_nt*)(S4387C2_nt*), 0, "S4387C1");
    check_base_class_offset(lv, (S4387C2_nt*), 0, "S4387C1");
    check_field_offset(lv, s4387c1f0, ABISELECT(48,32), "S4387C1.s4387c1f0");
    check_field_offset(lv, s4387c1f1, ABISELECT(64,40), "S4387C1.s4387c1f1");
    check_field_offset(lv, s4387c1f2, ABISELECT(72,48), "S4387C1.s4387c1f2");
    test_class_info(&lv, &cd_S4387C1);
    dp->~S4387C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4387C1(Test_S4387C1, "S4387C1", ABISELECT(80,52));

#else // __cplusplus

extern void _ZN7S4387C1C1Ev();
extern void _ZN7S4387C1D1Ev();
Name_Map name_map_S4387C1[] = {
  NSPAIR(_ZN7S4387C1C1Ev),
  NSPAIR(_ZN7S4387C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4387C3_nt;
extern VTBL_ENTRY _ZTI10S4387C3_nt[];
extern  VTBL_ENTRY _ZTV10S4387C3_nt[];
extern Class_Descriptor cd_S4387C2_nt;
extern VTBL_ENTRY _ZTI10S4387C2_nt[];
extern  VTBL_ENTRY _ZTV10S4387C2_nt[];
static Base_Class bases_S4387C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4387C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4387C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4387C1[];
extern void _ZN7S4387C1D1Ev();
extern void _ZN7S4387C1D0Ev();
extern void _ZN10S4387C3_nt2v2Ev();
extern void _ZN10S4387C3_nt2v3Ev();
extern void _ZN10S4387C3_nt2v4Ev();
extern void _ZN10S4387C2_nt2v5Ev();
extern void _ZN10S4387C2_nt2v6Ev();
extern void _ZN7S4387C12v1Ev();
static  VTBL_ENTRY vtc_S4387C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4387C1[0]),
  (VTBL_ENTRY)&_ZN7S4387C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4387C1D0Ev,
  (VTBL_ENTRY)&_ZN10S4387C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN10S4387C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S4387C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S4387C2_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S4387C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN7S4387C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4387C1[];
extern  VTBL_ENTRY _ZTV7S4387C1[];
Class_Descriptor cd_S4387C1 = {  "S4387C1", // class name
  bases_S4387C1, 2,
  &(vtc_S4387C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,52), // object size
  NSPAIRA(_ZTI7S4387C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4387C1),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15924C4_nt  {
  void *s15924c4f0;
  int s15924c4f1;
  void  mf15924c4(); // _ZN11S15924C4_nt9mf15924c4Ev
};
//SIG(-1 S15924C4_nt) C1{ m Fp Fi}


void  S15924C4_nt ::mf15924c4(){}

//skip512 S15924C4_nt

#else // __cplusplus

Class_Descriptor cd_S15924C4_nt = {  "S15924C4_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(16,8), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15924C3_nt  : S15924C4_nt {
};
//SIG(-1 S15924C3_nt) C1{ BC2{ m Fp Fi}}



//skip512 S15924C3_nt

#else // __cplusplus

extern Class_Descriptor cd_S15924C4_nt;
static Base_Class bases_S15924C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S15924C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15924C2_nt  {
  int s15924c2f0;
  ::S15924C3_nt s15924c2f1;
  void  mf15924c2(); // _ZN11S15924C2_nt9mf15924c2Ev
};
//SIG(-1 S15924C2_nt) C1{ m Fi FC2{ BC3{ m Fp Fi}}}


void  S15924C2_nt ::mf15924c2(){}

//skip512 S15924C2_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15924C9_nt  {
  ::S3042C4_nt s15924c9f0;
};
//SIG(-1 S15924C9_nt) C1{ FC2{ FL[4]}}



//skip512 S15924C9_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15924C8_nt  {
  ::S15924C9_nt s15924c8f0;
  void  mf15924c8(); // _ZN11S15924C8_nt9mf15924c8Ev
};
//SIG(-1 S15924C8_nt) C1{ m FC2{ FC3{ FL[4]}}}


void  S15924C8_nt ::mf15924c8(){}

//skip512 S15924C8_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15924C1  {
  ::S15924C2_nt s15924c1f0;
  ::S15924C2_nt s15924c1f1;
  char s15924c1f2;
  ::S15924C8_nt s15924c1f3;
  void  mf15924c1(); // _ZN8S15924C19mf15924c1Ev
};
//SIG(1 S15924C1) C1{ m FC2{ m Fi FC3{ BC4{ m Fp Fi}}} FC2 Fc FC5{ m FC6{ FC7{ FL[4]}}}}


void  S15924C1 ::mf15924c1(){}

static void Test_S15924C1()
{
  {
    init_simple_test("S15924C1");
    S15924C1 lv;
    check2(sizeof(lv), ABISELECT(88,60), "sizeof(S15924C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15924C1)");
    check_field_offset(lv, s15924c1f0, 0, "S15924C1.s15924c1f0");
    check_field_offset(lv, s15924c1f1, ABISELECT(24,12), "S15924C1.s15924c1f1");
    check_field_offset(lv, s15924c1f2, ABISELECT(48,24), "S15924C1.s15924c1f2");
    check_field_offset(lv, s15924c1f3, ABISELECT(56,28), "S15924C1.s15924c1f3");
  }
}
static Arrange_To_Call_Me vS15924C1(Test_S15924C1, "S15924C1", ABISELECT(88,60));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19304C3  {
  virtual void  v2(); // _ZN8S19304C32v2Ev
  virtual void  v3(); // _ZN8S19304C32v3Ev
  virtual void  v4(); // _ZN8S19304C32v4Ev
  virtual void  v5(); // _ZN8S19304C32v5Ev
  virtual void  v6(); // _ZN8S19304C32v6Ev
  virtual void  v7(); // _ZN8S19304C32v7Ev
  virtual void  v8(); // _ZN8S19304C32v8Ev
  virtual void  v9(); // _ZN8S19304C32v9Ev
  virtual void  v10(); // _ZN8S19304C33v10Ev
  ~S19304C3(); // tgen
  S19304C3(); // tgen
};
//SIG(-1 S19304C3) C1{ v1 v2 v3 v4 v5 v6 v7 v8 v9}


void  S19304C3 ::v2(){vfunc_called(this, "_ZN8S19304C32v2Ev");}
void  S19304C3 ::v3(){vfunc_called(this, "_ZN8S19304C32v3Ev");}
void  S19304C3 ::v4(){vfunc_called(this, "_ZN8S19304C32v4Ev");}
void  S19304C3 ::v5(){vfunc_called(this, "_ZN8S19304C32v5Ev");}
void  S19304C3 ::v6(){vfunc_called(this, "_ZN8S19304C32v6Ev");}
void  S19304C3 ::v7(){vfunc_called(this, "_ZN8S19304C32v7Ev");}
void  S19304C3 ::v8(){vfunc_called(this, "_ZN8S19304C32v8Ev");}
void  S19304C3 ::v9(){vfunc_called(this, "_ZN8S19304C32v9Ev");}
void  S19304C3 ::v10(){vfunc_called(this, "_ZN8S19304C33v10Ev");}
S19304C3 ::~S19304C3(){ note_dtor("S19304C3", this);} // tgen
S19304C3 ::S19304C3(){ note_ctor("S19304C3", this);} // tgen

static void Test_S19304C3()
{
  extern Class_Descriptor cd_S19304C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19304C3, buf);
    S19304C3 *dp, &lv = *(dp=new (buf) S19304C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19304C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19304C3)");
    test_class_info(&lv, &cd_S19304C3);
    dp->~S19304C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19304C3(Test_S19304C3, "S19304C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S19304C3C1Ev();
extern void _ZN8S19304C3D1Ev();
Name_Map name_map_S19304C3[] = {
  NSPAIR(_ZN8S19304C3C1Ev),
  NSPAIR(_ZN8S19304C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19304C3[];
extern void _ZN8S19304C32v2Ev();
extern void _ZN8S19304C32v3Ev();
extern void _ZN8S19304C32v4Ev();
extern void _ZN8S19304C32v5Ev();
extern void _ZN8S19304C32v6Ev();
extern void _ZN8S19304C32v7Ev();
extern void _ZN8S19304C32v8Ev();
extern void _ZN8S19304C32v9Ev();
extern void _ZN8S19304C33v10Ev();
static  VTBL_ENTRY vtc_S19304C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19304C3[0]),
  (VTBL_ENTRY)&_ZN8S19304C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v6Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19304C33v10Ev,
};
extern VTBL_ENTRY _ZTI8S19304C3[];
extern  VTBL_ENTRY _ZTV8S19304C3[];
Class_Descriptor cd_S19304C3 = {  "S19304C3", // class name
  0,0,//no base classes
  &(vtc_S19304C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19304C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19304C3),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19304C4  : virtual S19304C3 {
  __tsi64 s19304c4f0;
  virtual void  v11(); // _ZN8S19304C43v11Ev
  virtual void  v12(); // _ZN8S19304C43v12Ev
  virtual void  v13(); // _ZN8S19304C43v13Ev
  virtual void  v14(); // _ZN8S19304C43v14Ev
  ~S19304C4(); // tgen
  S19304C4(); // tgen
};
//SIG(-1 S19304C4) C1{ VBC2{ v5 v6 v7 v8 v9 v10 v11 v12 v13} v1 v2 v3 v4 FL}


void  S19304C4 ::v11(){vfunc_called(this, "_ZN8S19304C43v11Ev");}
void  S19304C4 ::v12(){vfunc_called(this, "_ZN8S19304C43v12Ev");}
void  S19304C4 ::v13(){vfunc_called(this, "_ZN8S19304C43v13Ev");}
void  S19304C4 ::v14(){vfunc_called(this, "_ZN8S19304C43v14Ev");}
S19304C4 ::~S19304C4(){ note_dtor("S19304C4", this);} // tgen
S19304C4 ::S19304C4(){ note_ctor("S19304C4", this);} // tgen

static void Test_S19304C4()
{
  extern Class_Descriptor cd_S19304C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S19304C4, buf);
    S19304C4 *dp, &lv = *(dp=new (buf) S19304C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S19304C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19304C4)");
    check_base_class_offset(lv, (S19304C3*), 0, "S19304C4");
    check_field_offset(lv, s19304c4f0, ABISELECT(8,4), "S19304C4.s19304c4f0");
    test_class_info(&lv, &cd_S19304C4);
    dp->~S19304C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19304C4(Test_S19304C4, "S19304C4", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S19304C4C1Ev();
extern void _ZN8S19304C4D1Ev();
Name_Map name_map_S19304C4[] = {
  NSPAIR(_ZN8S19304C4C1Ev),
  NSPAIR(_ZN8S19304C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19304C3;
extern VTBL_ENTRY _ZTI8S19304C3[];
extern  VTBL_ENTRY _ZTV8S19304C3[];
static Base_Class bases_S19304C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19304C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19304C4[];
extern void _ZN8S19304C32v2Ev();
extern void _ZN8S19304C32v3Ev();
extern void _ZN8S19304C32v4Ev();
extern void _ZN8S19304C32v5Ev();
extern void _ZN8S19304C32v6Ev();
extern void _ZN8S19304C32v7Ev();
extern void _ZN8S19304C32v8Ev();
extern void _ZN8S19304C32v9Ev();
extern void _ZN8S19304C33v10Ev();
extern void _ZN8S19304C43v11Ev();
extern void _ZN8S19304C43v12Ev();
extern void _ZN8S19304C43v13Ev();
extern void _ZN8S19304C43v14Ev();
static  VTBL_ENTRY vtc_S19304C4[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19304C4[0]),
  (VTBL_ENTRY)&_ZN8S19304C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v6Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19304C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19304C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19304C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19304C43v13Ev,
  (VTBL_ENTRY)&_ZN8S19304C43v14Ev,
};
extern VTBL_ENTRY _ZTV8S19304C4[];
static  VTT_ENTRY vtt_S19304C4[] = {
  {&(_ZTV8S19304C4[12]),  12,25},
  {&(_ZTV8S19304C4[12]),  12,25},
};
extern VTBL_ENTRY _ZTI8S19304C4[];
extern  VTBL_ENTRY _ZTV8S19304C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19304C4[];
Class_Descriptor cd_S19304C4 = {  "S19304C4", // class name
  bases_S19304C4, 1,
  &(vtc_S19304C4[0]), // expected_vtbl_contents
  &(vtt_S19304C4[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S19304C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19304C4),25, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19304C4),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19304C2  : S19304C3 , S19304C4 {
  virtual void  v15(); // _ZN8S19304C23v15Ev
  virtual void  v16(); // _ZN8S19304C23v16Ev
  ~S19304C2(); // tgen
  S19304C2(); // tgen
};
//SIG(-1 S19304C2) C1{ BC2{ v3 v4 v5 v6 v7 v8 v9 v10 v11} BC3{ VBC2 v12 v13 v14 v15 FL} v1 v2}


void  S19304C2 ::v15(){vfunc_called(this, "_ZN8S19304C23v15Ev");}
void  S19304C2 ::v16(){vfunc_called(this, "_ZN8S19304C23v16Ev");}
S19304C2 ::~S19304C2(){ note_dtor("S19304C2", this);} // tgen
S19304C2 ::S19304C2(){ note_ctor("S19304C2", this);} // tgen

static void Test_S19304C2()
{
  extern Class_Descriptor cd_S19304C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S19304C2, buf);
    S19304C2 *dp, &lv = *(dp=new (buf) S19304C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S19304C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19304C2)");
    /*is_ambiguous_... S19304C2::S19304C3 */ AMB_check_base_class_offset(lv, (S19304C3*), 0, "S19304C2");
    check_base_class_offset(lv, (S19304C3*)(S19304C4*), ABISELECT(8,4), "S19304C2");
    check_base_class_offset(lv, (S19304C4*), ABISELECT(8,4), "S19304C2");
    test_class_info(&lv, &cd_S19304C2);
    dp->~S19304C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19304C2(Test_S19304C2, "S19304C2", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S19304C2C1Ev();
extern void _ZN8S19304C2D1Ev();
Name_Map name_map_S19304C2[] = {
  NSPAIR(_ZN8S19304C2C1Ev),
  NSPAIR(_ZN8S19304C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19304C3;
extern VTBL_ENTRY _ZTI8S19304C3[];
extern  VTBL_ENTRY _ZTV8S19304C3[];
extern Class_Descriptor cd_S19304C3;
extern VTBL_ENTRY _ZTI8S19304C3[];
extern  VTBL_ENTRY _ZTV8S19304C3[];
extern Class_Descriptor cd_S19304C4;
extern VTBL_ENTRY _ZTI8S19304C4[];
extern  VTBL_ENTRY _ZTV8S19304C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19304C4[];
static Base_Class bases_S19304C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19304C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19304C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19304C4,    ABISELECT(8,4), //bcp->offset
    14, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19304C2[];
extern void _ZN8S19304C32v2Ev();
extern void _ZN8S19304C32v3Ev();
extern void _ZN8S19304C32v4Ev();
extern void _ZN8S19304C32v5Ev();
extern void _ZN8S19304C32v6Ev();
extern void _ZN8S19304C32v7Ev();
extern void _ZN8S19304C32v8Ev();
extern void _ZN8S19304C32v9Ev();
extern void _ZN8S19304C33v10Ev();
extern void _ZN8S19304C23v15Ev();
extern void _ZN8S19304C23v16Ev();
extern void _ZN8S19304C32v2Ev();
extern void _ZN8S19304C32v3Ev();
extern void _ZN8S19304C32v4Ev();
extern void _ZN8S19304C32v5Ev();
extern void _ZN8S19304C32v6Ev();
extern void _ZN8S19304C32v7Ev();
extern void _ZN8S19304C32v8Ev();
extern void _ZN8S19304C32v9Ev();
extern void _ZN8S19304C33v10Ev();
extern void _ZN8S19304C43v11Ev();
extern void _ZN8S19304C43v12Ev();
extern void _ZN8S19304C43v13Ev();
extern void _ZN8S19304C43v14Ev();
static  VTBL_ENTRY vtc_S19304C2[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19304C2[0]),
  (VTBL_ENTRY)&_ZN8S19304C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v6Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19304C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19304C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19304C23v16Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19304C2[0]),
  (VTBL_ENTRY)&_ZN8S19304C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v6Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19304C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19304C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19304C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19304C43v13Ev,
  (VTBL_ENTRY)&_ZN8S19304C43v14Ev,
};
extern VTBL_ENTRY _ZTV8S19304C2[];
extern void _ZN8S19304C32v2Ev();
extern void _ZN8S19304C32v3Ev();
extern void _ZN8S19304C32v4Ev();
extern void _ZN8S19304C32v5Ev();
extern void _ZN8S19304C32v6Ev();
extern void _ZN8S19304C32v7Ev();
extern void _ZN8S19304C32v8Ev();
extern void _ZN8S19304C32v9Ev();
extern void _ZN8S19304C33v10Ev();
extern void _ZN8S19304C43v11Ev();
extern void _ZN8S19304C43v12Ev();
extern void _ZN8S19304C43v13Ev();
extern void _ZN8S19304C43v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19304C4__8S19304C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19304C4[0]),
  (VTBL_ENTRY)&_ZN8S19304C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v6Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19304C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19304C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19304C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19304C43v13Ev,
  (VTBL_ENTRY)&_ZN8S19304C43v14Ev,
};
static  VTT_ENTRY vtt_S19304C2[] = {
  {&(_ZTV8S19304C2[3]),  3,39},
  {&(_tg__ZTV8S19304C4__8S19304C2[12]),  12,25},
  {&(_tg__ZTV8S19304C4__8S19304C2[12]),  12,25},
  {&(_ZTV8S19304C2[26]),  26,39},
  {&(_ZTV8S19304C2[26]),  26,39},
};
extern VTBL_ENTRY _ZTI8S19304C2[];
extern  VTBL_ENTRY _ZTV8S19304C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19304C2[];
Class_Descriptor cd_S19304C2 = {  "S19304C2", // class name
  bases_S19304C2, 3,
  &(vtc_S19304C2[0]), // expected_vtbl_contents
  &(vtt_S19304C2[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S19304C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19304C2),39, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19304C2),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19304C1  : virtual S19304C2 {
  int s19304c1f0;
  virtual  ~S19304C1(); // _ZN8S19304C1D2Ev
  virtual void  v1(); // _ZN8S19304C12v1Ev
  S19304C1(); // tgen
};
//SIG(1 S19304C1) C1{ VBC2{ BC3{ v2 v3 v4 v5 v6 v7 v8 v9 v10} BC4{ VBC3 v11 v12 v13 v14 FL} v15 v16} vd v1 Fi}


 S19304C1 ::~S19304C1(){ note_dtor("S19304C1", this);}
void  S19304C1 ::v1(){vfunc_called(this, "_ZN8S19304C12v1Ev");}
S19304C1 ::S19304C1(){ note_ctor("S19304C1", this);} // tgen

static void Test_S19304C1()
{
  extern Class_Descriptor cd_S19304C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S19304C1, buf);
    S19304C1 *dp, &lv = *(dp=new (buf) S19304C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S19304C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19304C1)");
    /*is_ambiguous_... S19304C2::S19304C3 */ AMB_check_base_class_offset(lv, (S19304C3*)(S19304C2*), ABISELECT(16,8), "S19304C1");
    check_base_class_offset(lv, (S19304C3*)(S19304C4*)(S19304C2*), 0, "S19304C1");
    check_base_class_offset(lv, (S19304C4*)(S19304C2*), ABISELECT(24,12), "S19304C1");
    check_base_class_offset(lv, (S19304C2*), ABISELECT(16,8), "S19304C1");
    check_field_offset(lv, s19304c1f0, ABISELECT(8,4), "S19304C1.s19304c1f0");
    test_class_info(&lv, &cd_S19304C1);
    dp->~S19304C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19304C1(Test_S19304C1, "S19304C1", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN8S19304C1C1Ev();
extern void _ZN8S19304C1D2Ev();
Name_Map name_map_S19304C1[] = {
  NSPAIR(_ZN8S19304C1C1Ev),
  NSPAIR(_ZN8S19304C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19304C3;
extern VTBL_ENTRY _ZTI8S19304C3[];
extern  VTBL_ENTRY _ZTV8S19304C3[];
extern Class_Descriptor cd_S19304C3;
extern VTBL_ENTRY _ZTI8S19304C3[];
extern  VTBL_ENTRY _ZTV8S19304C3[];
extern Class_Descriptor cd_S19304C4;
extern VTBL_ENTRY _ZTI8S19304C4[];
extern  VTBL_ENTRY _ZTV8S19304C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19304C4[];
extern Class_Descriptor cd_S19304C2;
extern VTBL_ENTRY _ZTI8S19304C2[];
extern  VTBL_ENTRY _ZTV8S19304C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19304C2[];
static Base_Class bases_S19304C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19304C3,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19304C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19304C4,    ABISELECT(24,12), //bcp->offset
    54, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19304C2,    ABISELECT(16,8), //bcp->offset
    25, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19304C1[];
extern void _ZN8S19304C32v2Ev();
extern void _ZN8S19304C32v3Ev();
extern void _ZN8S19304C32v4Ev();
extern void _ZN8S19304C32v5Ev();
extern void _ZN8S19304C32v6Ev();
extern void _ZN8S19304C32v7Ev();
extern void _ZN8S19304C32v8Ev();
extern void _ZN8S19304C32v9Ev();
extern void _ZN8S19304C33v10Ev();
extern void _ZN8S19304C1D1Ev();
extern void _ZN8S19304C1D0Ev();
extern void _ZN8S19304C12v1Ev();
extern void _ZN8S19304C32v2Ev();
extern void _ZN8S19304C32v3Ev();
extern void _ZN8S19304C32v4Ev();
extern void _ZN8S19304C32v5Ev();
extern void _ZN8S19304C32v6Ev();
extern void _ZN8S19304C32v7Ev();
extern void _ZN8S19304C32v8Ev();
extern void _ZN8S19304C32v9Ev();
extern void _ZN8S19304C33v10Ev();
extern void _ZN8S19304C23v15Ev();
extern void _ZN8S19304C23v16Ev();
extern void _ZN8S19304C32v2Ev();
extern void _ZN8S19304C32v3Ev();
extern void _ZN8S19304C32v4Ev();
extern void _ZN8S19304C32v5Ev();
extern void _ZN8S19304C32v6Ev();
extern void _ZN8S19304C32v7Ev();
extern void _ZN8S19304C32v8Ev();
extern void _ZN8S19304C32v9Ev();
extern void _ZN8S19304C33v10Ev();
extern void _ZN8S19304C43v11Ev();
extern void _ZN8S19304C43v12Ev();
extern void _ZN8S19304C43v13Ev();
extern void _ZN8S19304C43v14Ev();
static  VTBL_ENTRY vtc_S19304C1[] = {
  0,
  ABISELECT(16,8),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19304C1[0]),
  (VTBL_ENTRY)&_ZN8S19304C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v6Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19304C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19304C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19304C1D0Ev,
  (VTBL_ENTRY)&_ZN8S19304C12v1Ev,
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19304C1[0]),
  (VTBL_ENTRY)&_ZN8S19304C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v6Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19304C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19304C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19304C23v16Ev,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19304C1[0]),
  (VTBL_ENTRY)&_ZN8S19304C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v6Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19304C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19304C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19304C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19304C43v13Ev,
  (VTBL_ENTRY)&_ZN8S19304C43v14Ev,
};
extern VTBL_ENTRY _ZTV8S19304C1[];
extern void _ZN8S19304C32v2Ev();
extern void _ZN8S19304C32v3Ev();
extern void _ZN8S19304C32v4Ev();
extern void _ZN8S19304C32v5Ev();
extern void _ZN8S19304C32v6Ev();
extern void _ZN8S19304C32v7Ev();
extern void _ZN8S19304C32v8Ev();
extern void _ZN8S19304C32v9Ev();
extern void _ZN8S19304C33v10Ev();
extern void _ZN8S19304C23v15Ev();
extern void _ZN8S19304C23v16Ev();
static  VTBL_ENTRY _tg__ZTV8S19304C2__8S19304C1[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19304C2[0]),
  (VTBL_ENTRY)&_ZN8S19304C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v6Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19304C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19304C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19304C23v16Ev,
};
extern void _ZN8S19304C32v2Ev();
extern void _ZN8S19304C32v3Ev();
extern void _ZN8S19304C32v4Ev();
extern void _ZN8S19304C32v5Ev();
extern void _ZN8S19304C32v6Ev();
extern void _ZN8S19304C32v7Ev();
extern void _ZN8S19304C32v8Ev();
extern void _ZN8S19304C32v9Ev();
extern void _ZN8S19304C33v10Ev();
extern void _ZN8S19304C43v11Ev();
extern void _ZN8S19304C43v12Ev();
extern void _ZN8S19304C43v13Ev();
extern void _ZN8S19304C43v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19304C48S19304C2__8S19304C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19304C4[0]),
  (VTBL_ENTRY)&_ZN8S19304C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v6Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19304C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19304C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19304C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19304C43v13Ev,
  (VTBL_ENTRY)&_ZN8S19304C43v14Ev,
};
extern void _ZN8S19304C32v2Ev();
extern void _ZN8S19304C32v3Ev();
extern void _ZN8S19304C32v4Ev();
extern void _ZN8S19304C32v5Ev();
extern void _ZN8S19304C32v6Ev();
extern void _ZN8S19304C32v7Ev();
extern void _ZN8S19304C32v8Ev();
extern void _ZN8S19304C32v9Ev();
extern void _ZN8S19304C33v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19304C3__8S19304C48S19304C2__8S19304C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S19304C4[0]),
  (VTBL_ENTRY)&_ZN8S19304C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v6Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19304C33v10Ev,
};
extern void _ZN8S19304C32v2Ev();
extern void _ZN8S19304C32v3Ev();
extern void _ZN8S19304C32v4Ev();
extern void _ZN8S19304C32v5Ev();
extern void _ZN8S19304C32v6Ev();
extern void _ZN8S19304C32v7Ev();
extern void _ZN8S19304C32v8Ev();
extern void _ZN8S19304C32v9Ev();
extern void _ZN8S19304C33v10Ev();
extern void _ZN8S19304C43v11Ev();
extern void _ZN8S19304C43v12Ev();
extern void _ZN8S19304C43v13Ev();
extern void _ZN8S19304C43v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19304C4__8S19304C2__8S19304C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19304C2[0]),
  (VTBL_ENTRY)&_ZN8S19304C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v6Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19304C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19304C43v11Ev,
  (VTBL_ENTRY)&_ZN8S19304C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19304C43v13Ev,
  (VTBL_ENTRY)&_ZN8S19304C43v14Ev,
};
extern void _ZN8S19304C32v2Ev();
extern void _ZN8S19304C32v3Ev();
extern void _ZN8S19304C32v4Ev();
extern void _ZN8S19304C32v5Ev();
extern void _ZN8S19304C32v6Ev();
extern void _ZN8S19304C32v7Ev();
extern void _ZN8S19304C32v8Ev();
extern void _ZN8S19304C32v9Ev();
extern void _ZN8S19304C33v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19304C3__A1__8S19304C2__8S19304C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19304C2[0]),
  (VTBL_ENTRY)&_ZN8S19304C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v4Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v6Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19304C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19304C33v10Ev,
};
static  VTT_ENTRY vtt_S19304C1[] = {
  {&(_ZTV8S19304C1[13]),  13,79},
  {&(_ZTV8S19304C1[43]),  43,79},
  {&(_ZTV8S19304C1[66]),  66,79},
  {&(_ZTV8S19304C1[13]),  13,79},
  {&(_tg__ZTV8S19304C2__8S19304C1[3]),  3,14},
  {&(_tg__ZTV8S19304C48S19304C2__8S19304C1[12]),  12,25},
  {&(_tg__ZTV8S19304C3__8S19304C48S19304C2__8S19304C1[11]),  11,20},
  {&(_tg__ZTV8S19304C4__8S19304C2__8S19304C1[12]),  12,25},
  {&(_tg__ZTV8S19304C3__A1__8S19304C2__8S19304C1[11]),  11,20},
};
extern VTBL_ENTRY _ZTI8S19304C1[];
extern  VTBL_ENTRY _ZTV8S19304C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19304C1[];
Class_Descriptor cd_S19304C1 = {  "S19304C1", // class name
  bases_S19304C1, 4,
  &(vtc_S19304C1[0]), // expected_vtbl_contents
  &(vtt_S19304C1[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI8S19304C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19304C1),79, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19304C1),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19018C3  : S5266C29 , S7719C4_nt {
};
//SIG(-1 S19018C3) C1{ BC2{ m} BC3{ m Fc}}



static void Test_S19018C3()
{
  extern Class_Descriptor cd_S19018C3;
  void *lvp;
  {
    char buf[1];
    init_test(&cd_S19018C3, buf);
    S19018C3 &lv = *(new (buf) S19018C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1, "sizeof(S19018C3)");
    check2(__alignof__(lv), 1, "__alignof__(S19018C3)");
    check_base_class_offset(lv, (S5266C29*), 0, "S19018C3");
    check_base_class_offset(lv, (S7719C4_nt*), 0, "S19018C3");
    test_class_info(&lv, &cd_S19018C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19018C3(Test_S19018C3, "S19018C3", 1);

#else // __cplusplus

extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
static Base_Class bases_S19018C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7719C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19018C3[];
Class_Descriptor cd_S19018C3 = {  "S19018C3", // class name
  bases_S19018C3, 2,
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI8S19018C3),ABISELECT(56,32), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19018C6  : S7719C4_nt , S5266C29 , virtual S5266C26 {
  ~S19018C6(); // tgen
  S19018C6(); // tgen
};
//SIG(-1 S19018C6) C1{ BC2{ m Fc} BC3{ m} VBC4{ m}}


S19018C6 ::~S19018C6(){ note_dtor("S19018C6", this);} // tgen
S19018C6 ::S19018C6(){ note_ctor("S19018C6", this);} // tgen

static void Test_S19018C6()
{
  extern Class_Descriptor cd_S19018C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19018C6, buf);
    S19018C6 *dp, &lv = *(dp=new (buf) S19018C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19018C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19018C6)");
    check_base_class_offset(lv, (S7719C4_nt*), ABISELECT(8,4), "S19018C6");
    check_base_class_offset(lv, (S5266C29*), 0, "S19018C6");
    check_base_class_offset(lv, (S5266C26*), 0, "S19018C6");
    test_class_info(&lv, &cd_S19018C6);
    dp->~S19018C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19018C6(Test_S19018C6, "S19018C6", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19018C6C1Ev();
extern void _ZN8S19018C6D1Ev();
Name_Map name_map_S19018C6[] = {
  NSPAIR(_ZN8S19018C6C1Ev),
  NSPAIR(_ZN8S19018C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
static Base_Class bases_S19018C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7719C4_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19018C6[];
static  VTBL_ENTRY vtc_S19018C6[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19018C6[0]),
};
extern VTBL_ENTRY _ZTV8S19018C6[];
static  VTT_ENTRY vtt_S19018C6[] = {
  {&(_ZTV8S19018C6[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19018C6[];
extern  VTBL_ENTRY _ZTV8S19018C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19018C6[];
Class_Descriptor cd_S19018C6 = {  "S19018C6", // class name
  bases_S19018C6, 3,
  &(vtc_S19018C6[0]), // expected_vtbl_contents
  &(vtt_S19018C6[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19018C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19018C6),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19018C6),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19018C2  : S19018C3 , S5266C29 , S19018C6 {
  __tsi64 s19018c2f0;
  ~S19018C2(); // tgen
  S19018C2(); // tgen
};
//SIG(-1 S19018C2) C1{ BC2{ BC3{ m} BC4{ m Fc}} BC3 BC5{ BC4 BC3 VBC6{ m}} FL}


S19018C2 ::~S19018C2(){ note_dtor("S19018C2", this);} // tgen
S19018C2 ::S19018C2(){ note_ctor("S19018C2", this);} // tgen

static void Test_S19018C2()
{
  extern Class_Descriptor cd_S19018C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S19018C2, buf);
    S19018C2 *dp, &lv = *(dp=new (buf) S19018C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S19018C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19018C2)");
    check_base_class_offset(lv, (S5266C29*)(S19018C3*), ABISELECT(9,5), "S19018C2");
    check_base_class_offset(lv, (S7719C4_nt*)(S19018C3*), ABISELECT(9,5), "S19018C2");
    check_base_class_offset(lv, (S19018C3*), ABISELECT(9,5), "S19018C2");
    /*is_ambiguous_... S19018C2::S5266C29 */ AMB_check_base_class_offset(lv, (S5266C29*), ABISELECT(10,6), "S19018C2");
    check_base_class_offset(lv, (S7719C4_nt*)(S19018C6*), ABISELECT(8,4), "S19018C2");
    check_base_class_offset(lv, (S5266C29*)(S19018C6*), 0, "S19018C2");
    check_base_class_offset(lv, (S5266C26*)(S19018C6*), 0, "S19018C2");
    check_base_class_offset(lv, (S19018C6*), 0, "S19018C2");
    check_field_offset(lv, s19018c2f0, ABISELECT(16,8), "S19018C2.s19018c2f0");
    test_class_info(&lv, &cd_S19018C2);
    dp->~S19018C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19018C2(Test_S19018C2, "S19018C2", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S19018C2C1Ev();
extern void _ZN8S19018C2D1Ev();
Name_Map name_map_S19018C2[] = {
  NSPAIR(_ZN8S19018C2C1Ev),
  NSPAIR(_ZN8S19018C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S19018C3;
extern VTBL_ENTRY _ZTI8S19018C3[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S19018C6;
extern VTBL_ENTRY _ZTI8S19018C6[];
extern  VTBL_ENTRY _ZTV8S19018C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19018C6[];
static Base_Class bases_S19018C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C29,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19018C3,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C29,    ABISELECT(10,6), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7719C4_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19018C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19018C2[];
static  VTBL_ENTRY vtc_S19018C2[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19018C2[0]),
};
extern VTBL_ENTRY _ZTV8S19018C2[];
static  VTBL_ENTRY _tg__ZTV8S19018C6__8S19018C2[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19018C6[0]),
};
static  VTT_ENTRY vtt_S19018C2[] = {
  {&(_ZTV8S19018C2[3]),  3,3},
  {&(_tg__ZTV8S19018C6__8S19018C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19018C2[];
extern  VTBL_ENTRY _ZTV8S19018C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19018C2[];
Class_Descriptor cd_S19018C2 = {  "S19018C2", // class name
  bases_S19018C2, 8,
  &(vtc_S19018C2[0]), // expected_vtbl_contents
  &(vtt_S19018C2[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S19018C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19018C2),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19018C2),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19018C9  : virtual S19018C6 {
  long double s19018c9f0;
  void *s19018c9f1[8];
  ~S19018C9(); // tgen
  S19018C9(); // tgen
};
//SIG(-1 S19018C9) C1{ VBC2{ BC3{ m Fc} BC4{ m} VBC5{ m}} FD Fp[8]}


S19018C9 ::~S19018C9(){ note_dtor("S19018C9", this);} // tgen
S19018C9 ::S19018C9(){ note_ctor("S19018C9", this);} // tgen

static void Test_S19018C9()
{
  extern Class_Descriptor cd_S19018C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(8,15)];
    init_test(&cd_S19018C9, buf);
    S19018C9 *dp, &lv = *(dp=new (buf) S19018C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,56), "sizeof(S19018C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19018C9)");
    check_base_class_offset(lv, (S7719C4_nt*)(S19018C6*), ABISELECT(104,52), "S19018C9");
    check_base_class_offset(lv, (S5266C29*)(S19018C6*), ABISELECT(96,48), "S19018C9");
    check_base_class_offset(lv, (S5266C26*)(S19018C6*), 0, "S19018C9");
    check_base_class_offset(lv, (S19018C6*), ABISELECT(96,48), "S19018C9");
    check_field_offset(lv, s19018c9f0, ABISELECT(16,4), "S19018C9.s19018c9f0");
    check_field_offset(lv, s19018c9f1, ABISELECT(32,16), "S19018C9.s19018c9f1");
    test_class_info(&lv, &cd_S19018C9);
    dp->~S19018C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19018C9(Test_S19018C9, "S19018C9", ABISELECT(112,56));

#else // __cplusplus

extern void _ZN8S19018C9C1Ev();
extern void _ZN8S19018C9D1Ev();
Name_Map name_map_S19018C9[] = {
  NSPAIR(_ZN8S19018C9C1Ev),
  NSPAIR(_ZN8S19018C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S19018C6;
extern VTBL_ENTRY _ZTI8S19018C6[];
extern  VTBL_ENTRY _ZTV8S19018C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19018C6[];
static Base_Class bases_S19018C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7719C4_nt,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S5266C29,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19018C6,    ABISELECT(96,48), //bcp->offset
    4, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19018C9[];
static  VTBL_ENTRY vtc_S19018C9[] = {
  0,
  ABISELECT(96,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S19018C9[0]),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S19018C9[0]),
};
extern VTBL_ENTRY _ZTV8S19018C9[];
static  VTBL_ENTRY _tg__ZTV8S19018C6__8S19018C9[] = {
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S19018C6[0]),
};
static  VTT_ENTRY vtt_S19018C9[] = {
  {&(_ZTV8S19018C9[4]),  4,7},
  {&(_ZTV8S19018C9[7]),  7,7},
  {&(_tg__ZTV8S19018C6__8S19018C9[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19018C9[];
extern  VTBL_ENTRY _ZTV8S19018C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19018C9[];
Class_Descriptor cd_S19018C9 = {  "S19018C9", // class name
  bases_S19018C9, 4,
  &(vtc_S19018C9[0]), // expected_vtbl_contents
  &(vtt_S19018C9[0]), // expected_vtt_contents
  ABISELECT(112,56), // object size
  NSPAIRA(_ZTI8S19018C9),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19018C9),7, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19018C9),3, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19018C1  : virtual S19018C2 , S5266C22 , S19018C9 , S19018C6 {
  ~S19018C1(); // tgen
  S19018C1(); // tgen
};
//SIG(1 S19018C1) C1{ VBC2{ BC3{ BC4{ m} BC5{ m Fc}} BC4 BC6{ BC5 BC4 VBC7{ m}} FL} BC8{ m} BC9{ VBC6 FD Fp[8]} BC6}


S19018C1 ::~S19018C1(){ note_dtor("S19018C1", this);} // tgen
S19018C1 ::S19018C1(){ note_ctor("S19018C1", this);} // tgen

static void Test_S19018C1()
{
  extern Class_Descriptor cd_S19018C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,21)];
    init_test(&cd_S19018C1, buf);
    S19018C1 *dp, &lv = *(dp=new (buf) S19018C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,80), "sizeof(S19018C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19018C1)");
    check_base_class_offset(lv, (S5266C29*)(S19018C3*)(S19018C2*), ABISELECT(121,61), "S19018C1");
    check_base_class_offset(lv, (S7719C4_nt*)(S19018C3*)(S19018C2*), ABISELECT(121,61), "S19018C1");
    check_base_class_offset(lv, (S19018C3*)(S19018C2*), ABISELECT(121,61), "S19018C1");
    /*is_ambiguous_... S19018C2::S5266C29 */ AMB_check_base_class_offset(lv, (S5266C29*)(S19018C2*), ABISELECT(122,62), "S19018C1");
    check_base_class_offset(lv, (S7719C4_nt*)(S19018C6*)(S19018C2*), ABISELECT(120,60), "S19018C1");
    check_base_class_offset(lv, (S5266C29*)(S19018C6*)(S19018C2*), ABISELECT(112,56), "S19018C1");
    check_base_class_offset(lv, (S5266C26*)(S19018C6*)(S19018C2*), 0, "S19018C1");
    /*is_ambiguous_... S19018C1::S19018C6 */ AMB_check_base_class_offset(lv, (S5266C26*)(S19018C6*), 0, "S19018C1");
    /*is_ambiguous_... S19018C1::S19018C6 */ AMB_check_base_class_offset(lv, (S5266C26*)(S19018C6*), 0, "S19018C1");
    check_base_class_offset(lv, (S19018C6*)(S19018C2*), ABISELECT(112,56), "S19018C1");
    check_base_class_offset(lv, (S19018C2*), ABISELECT(112,56), "S19018C1");
    check_base_class_offset(lv, (S5266C22*), 0, "S19018C1");
    /*is_ambiguous_... S19018C1::S19018C6 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S19018C6*), ABISELECT(144,76), "S19018C1");
    /*is_ambiguous_... S19018C1::S19018C6 */ AMB_check_base_class_offset(lv, (S5266C29*)(S19018C6*), ABISELECT(136,72), "S19018C1");
    check_base_class_offset(lv, (S19018C6*)(S19018C9*), ABISELECT(136,72), "S19018C1");
    check_base_class_offset(lv, (S19018C9*), 0, "S19018C1");
    /*is_ambiguous_... S19018C1::S19018C6 */ AMB_check_base_class_offset(lv, (S7719C4_nt*)(S19018C6*), ABISELECT(104,52), "S19018C1");
    /*is_ambiguous_... S19018C1::S19018C6 */ AMB_check_base_class_offset(lv, (S5266C29*)(S19018C6*), ABISELECT(96,48), "S19018C1");
    /*is_ambiguous_... S19018C1::S19018C6 */ AMB_check_base_class_offset(lv, (S19018C6*), ABISELECT(96,48), "S19018C1");
    test_class_info(&lv, &cd_S19018C1);
    dp->~S19018C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19018C1(Test_S19018C1, "S19018C1", ABISELECT(160,80));

#else // __cplusplus

extern void _ZN8S19018C1C1Ev();
extern void _ZN8S19018C1D1Ev();
Name_Map name_map_S19018C1[] = {
  NSPAIR(_ZN8S19018C1C1Ev),
  NSPAIR(_ZN8S19018C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S19018C3;
extern VTBL_ENTRY _ZTI8S19018C3[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S19018C6;
extern VTBL_ENTRY _ZTI8S19018C6[];
extern  VTBL_ENTRY _ZTV8S19018C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19018C6[];
extern Class_Descriptor cd_S19018C2;
extern VTBL_ENTRY _ZTI8S19018C2[];
extern  VTBL_ENTRY _ZTV8S19018C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19018C2[];
extern Class_Descriptor cd_S5266C22;
extern VTBL_ENTRY _ZTI8S5266C22[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S19018C6;
extern VTBL_ENTRY _ZTI8S19018C6[];
extern  VTBL_ENTRY _ZTV8S19018C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19018C6[];
extern Class_Descriptor cd_S19018C9;
extern VTBL_ENTRY _ZTI8S19018C9[];
extern  VTBL_ENTRY _ZTV8S19018C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19018C9[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S19018C6;
extern VTBL_ENTRY _ZTI8S19018C6[];
extern  VTBL_ENTRY _ZTV8S19018C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19018C6[];
static Base_Class bases_S19018C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C29,    ABISELECT(121,61), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(121,61), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19018C3,    ABISELECT(121,61), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S5266C29,    ABISELECT(122,62), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S5266C29,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19018C6,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19018C2,    ABISELECT(112,56), //bcp->offset
    8, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5266C22,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7719C4_nt,    ABISELECT(144,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S5266C29,    ABISELECT(136,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19018C6,    ABISELECT(136,72), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19018C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7719C4_nt,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S5266C29,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19018C6,    ABISELECT(96,48), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19018C1[];
static  VTBL_ENTRY vtc_S19018C1[] = {
  ABISELECT(112,56),
  0,
  ABISELECT(136,72),
  0,
  (VTBL_ENTRY)&(_ZTI8S19018C1[0]),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S19018C1[0]),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S19018C1[0]),
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S19018C1[0]),
};
extern VTBL_ENTRY _ZTV8S19018C1[];
static  VTBL_ENTRY _tg__ZTV8S19018C9__8S19018C1[] = {
  0,
  ABISELECT(136,72),
  0,
  (VTBL_ENTRY)&(_ZTI8S19018C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19018C6__8S19018C9__8S19018C1[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S19018C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19018C6__A__8S19018C1[] = {
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S19018C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19018C2__8S19018C1[] = {
  ABISELECT(-112,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19018C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19018C68S19018C2__8S19018C1[] = {
  ABISELECT(-112,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19018C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19018C6__A1__8S19018C1[] = {
  ABISELECT(-136,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S19018C6[0]),
};
static  VTT_ENTRY vtt_S19018C1[] = {
  {&(_ZTV8S19018C1[5]),  5,14},
  {&(_tg__ZTV8S19018C9__8S19018C1[4]),  4,4},
  {&(_tg__ZTV8S19018C6__8S19018C9__8S19018C1[3]),  3,3},
  {&(_tg__ZTV8S19018C6__A__8S19018C1[3]),  3,3},
  {&(_ZTV8S19018C1[11]),  11,14},
  {&(_ZTV8S19018C1[14]),  14,14},
  {&(_ZTV8S19018C1[8]),  8,14},
  {&(_tg__ZTV8S19018C2__8S19018C1[3]),  3,3},
  {&(_tg__ZTV8S19018C68S19018C2__8S19018C1[3]),  3,3},
  {&(_tg__ZTV8S19018C6__A1__8S19018C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19018C1[];
extern  VTBL_ENTRY _ZTV8S19018C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19018C1[];
Class_Descriptor cd_S19018C1 = {  "S19018C1", // class name
  bases_S19018C1, 17,
  &(vtc_S19018C1[0]), // expected_vtbl_contents
  &(vtt_S19018C1[0]), // expected_vtt_contents
  ABISELECT(160,80), // object size
  NSPAIRA(_ZTI8S19018C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19018C1),14, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19018C1),10, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9307C2  {
  ::S5266C19_nt s9307c2f0;
  int s9307c2f1[2];
  char s9307c2f2;
  virtual  ~S9307C2(); // _ZN7S9307C2D1Ev
  virtual void  v3(); // _ZN7S9307C22v3Ev
  virtual void  v4(); // _ZN7S9307C22v4Ev
  virtual void  v5(); // _ZN7S9307C22v5Ev
  S9307C2(); // tgen
};
//SIG(-1 S9307C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9307C2 ::~S9307C2(){ note_dtor("S9307C2", this);}
void  S9307C2 ::v3(){vfunc_called(this, "_ZN7S9307C22v3Ev");}
void  S9307C2 ::v4(){vfunc_called(this, "_ZN7S9307C22v4Ev");}
void  S9307C2 ::v5(){vfunc_called(this, "_ZN7S9307C22v5Ev");}
S9307C2 ::S9307C2(){ note_ctor("S9307C2", this);} // tgen

static void Test_S9307C2()
{
  extern Class_Descriptor cd_S9307C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9307C2, buf);
    S9307C2 *dp, &lv = *(dp=new (buf) S9307C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9307C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9307C2)");
    check_field_offset(lv, s9307c2f0, ABISELECT(8,4), "S9307C2.s9307c2f0");
    check_field_offset(lv, s9307c2f1, ABISELECT(24,16), "S9307C2.s9307c2f1");
    check_field_offset(lv, s9307c2f2, ABISELECT(32,24), "S9307C2.s9307c2f2");
    test_class_info(&lv, &cd_S9307C2);
    dp->~S9307C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9307C2(Test_S9307C2, "S9307C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9307C2C1Ev();
extern void _ZN7S9307C2D1Ev();
Name_Map name_map_S9307C2[] = {
  NSPAIR(_ZN7S9307C2C1Ev),
  NSPAIR(_ZN7S9307C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9307C2[];
extern void _ZN7S9307C2D1Ev();
extern void _ZN7S9307C2D0Ev();
extern void _ZN7S9307C22v3Ev();
extern void _ZN7S9307C22v4Ev();
extern void _ZN7S9307C22v5Ev();
static  VTBL_ENTRY vtc_S9307C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9307C2[0]),
  (VTBL_ENTRY)&_ZN7S9307C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9307C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9307C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9307C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9307C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S9307C2[];
extern  VTBL_ENTRY _ZTV7S9307C2[];
Class_Descriptor cd_S9307C2 = {  "S9307C2", // class name
  0,0,//no base classes
  &(vtc_S9307C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9307C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9307C2),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9307C6  {
  char s9307c6f0[961];
  __tsi64 s9307c6f1;
};
//SIG(-1 S9307C6) C1{ Fc[961] FL}



static void Test_S9307C6()
{
  {
    init_simple_test("S9307C6");
    S9307C6 lv;
    check2(sizeof(lv), ABISELECT(976,972), "sizeof(S9307C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9307C6)");
    check_field_offset(lv, s9307c6f0, 0, "S9307C6.s9307c6f0");
    check_field_offset(lv, s9307c6f1, ABISELECT(968,964), "S9307C6.s9307c6f1");
  }
}
static Arrange_To_Call_Me vS9307C6(Test_S9307C6, "S9307C6", ABISELECT(976,972));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9307C1  : S9307C2 {
  ::S17777C6_nt s9307c1f0;
  ::S9307C6 s9307c1f1;
  virtual  ~S9307C1(); // _ZN7S9307C1D1Ev
  virtual void  v1(); // _ZN7S9307C12v1Ev
  virtual void  v2(); // _ZN7S9307C12v2Ev
  S9307C1(); // tgen
};
//SIG(1 S9307C1) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 FC5{ m Fp} FC6{ Fc[961] FL}}


 S9307C1 ::~S9307C1(){ note_dtor("S9307C1", this);}
void  S9307C1 ::v1(){vfunc_called(this, "_ZN7S9307C12v1Ev");}
void  S9307C1 ::v2(){vfunc_called(this, "_ZN7S9307C12v2Ev");}
S9307C1 ::S9307C1(){ note_ctor("S9307C1", this);} // tgen

static void Test_S9307C1()
{
  extern Class_Descriptor cd_S9307C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(129,252)];
    init_test(&cd_S9307C1, buf);
    S9307C1 *dp, &lv = *(dp=new (buf) S9307C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1024,1004), "sizeof(S9307C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9307C1)");
    check_base_class_offset(lv, (S9307C2*), 0, "S9307C1");
    check_field_offset(lv, s9307c1f0, ABISELECT(40,28), "S9307C1.s9307c1f0");
    check_field_offset(lv, s9307c1f1, ABISELECT(48,32), "S9307C1.s9307c1f1");
    test_class_info(&lv, &cd_S9307C1);
    dp->~S9307C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9307C1(Test_S9307C1, "S9307C1", ABISELECT(1024,1004));

#else // __cplusplus

extern void _ZN7S9307C1C1Ev();
extern void _ZN7S9307C1D1Ev();
Name_Map name_map_S9307C1[] = {
  NSPAIR(_ZN7S9307C1C1Ev),
  NSPAIR(_ZN7S9307C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9307C2;
extern VTBL_ENTRY _ZTI7S9307C2[];
extern  VTBL_ENTRY _ZTV7S9307C2[];
static Base_Class bases_S9307C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9307C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9307C1[];
extern void _ZN7S9307C1D1Ev();
extern void _ZN7S9307C1D0Ev();
extern void _ZN7S9307C22v3Ev();
extern void _ZN7S9307C22v4Ev();
extern void _ZN7S9307C22v5Ev();
extern void _ZN7S9307C12v1Ev();
extern void _ZN7S9307C12v2Ev();
static  VTBL_ENTRY vtc_S9307C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9307C1[0]),
  (VTBL_ENTRY)&_ZN7S9307C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9307C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9307C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9307C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9307C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9307C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9307C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9307C1[];
extern  VTBL_ENTRY _ZTV7S9307C1[];
Class_Descriptor cd_S9307C1 = {  "S9307C1", // class name
  bases_S9307C1, 1,
  &(vtc_S9307C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1024,1004), // object size
  NSPAIRA(_ZTI7S9307C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9307C1),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21732C5_nt  {
  int s21732c5f0[5];
  void  mf21732c5(); // _ZN11S21732C5_nt9mf21732c5Ev
};
//SIG(-1 S21732C5_nt) C1{ m Fi[5]}


void  S21732C5_nt ::mf21732c5(){}

//skip512 S21732C5_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21732C1  {
  void *s21732c1f0;
  ::S5266C19_nt s21732c1f1;
  int s21732c1f2;
  ::S17777C6_nt s21732c1f3;
  int s21732c1f4[5];
  ::S5266C19_nt s21732c1f5;
  char s21732c1f6[3];
  ::S21732C5_nt s21732c1f7;
  ::S4533C11_nt s21732c1f8;
  void  mf21732c1(); // _ZN8S21732C19mf21732c1Ev
  virtual  ~S21732C1(); // _ZN8S21732C1D1Ev
  S21732C1(); // tgen
};
//SIG(1 S21732C1) C1{ vd m Fp FC2{ m Fp Fi FC3{ m}} Fi FC4{ m Fp} Fi[5] FC2 Fc[3] FC5{ m Fi[5]} FC6{ m Fp}}


void  S21732C1 ::mf21732c1(){}
 S21732C1 ::~S21732C1(){ note_dtor("S21732C1", this);}
S21732C1 ::S21732C1(){ note_ctor("S21732C1", this);} // tgen

static void Test_S21732C1()
{
  extern Class_Descriptor cd_S21732C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,23)];
    init_test(&cd_S21732C1, buf);
    S21732C1 *dp, &lv = *(dp=new (buf) S21732C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,88), "sizeof(S21732C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21732C1)");
    check_field_offset(lv, s21732c1f0, ABISELECT(8,4), "S21732C1.s21732c1f0");
    check_field_offset(lv, s21732c1f1, ABISELECT(16,8), "S21732C1.s21732c1f1");
    check_field_offset(lv, s21732c1f2, ABISELECT(32,20), "S21732C1.s21732c1f2");
    check_field_offset(lv, s21732c1f3, ABISELECT(40,24), "S21732C1.s21732c1f3");
    check_field_offset(lv, s21732c1f4, ABISELECT(48,28), "S21732C1.s21732c1f4");
    check_field_offset(lv, s21732c1f5, ABISELECT(72,48), "S21732C1.s21732c1f5");
    check_field_offset(lv, s21732c1f6, ABISELECT(88,60), "S21732C1.s21732c1f6");
    check_field_offset(lv, s21732c1f7, ABISELECT(92,64), "S21732C1.s21732c1f7");
    check_field_offset(lv, s21732c1f8, ABISELECT(112,84), "S21732C1.s21732c1f8");
    test_class_info(&lv, &cd_S21732C1);
    dp->~S21732C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21732C1(Test_S21732C1, "S21732C1", ABISELECT(120,88));

#else // __cplusplus

extern void _ZN8S21732C1C1Ev();
extern void _ZN8S21732C1D1Ev();
Name_Map name_map_S21732C1[] = {
  NSPAIR(_ZN8S21732C1C1Ev),
  NSPAIR(_ZN8S21732C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21732C1[];
extern void _ZN8S21732C1D1Ev();
extern void _ZN8S21732C1D0Ev();
static  VTBL_ENTRY vtc_S21732C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21732C1[0]),
  (VTBL_ENTRY)&_ZN8S21732C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21732C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21732C1[];
extern  VTBL_ENTRY _ZTV8S21732C1[];
Class_Descriptor cd_S21732C1 = {  "S21732C1", // class name
  0,0,//no base classes
  &(vtc_S21732C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,88), // object size
  NSPAIRA(_ZTI8S21732C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21732C1),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2631C2_nt  : S7719C17_nt {
};
//SIG(-1 S2631C2_nt) C1{ BC2{ m Fi}}



//skip512 S2631C2_nt

#else // __cplusplus

extern Class_Descriptor cd_S7719C17_nt;
extern VTBL_ENTRY _ZTI11S7719C17_nt[];
static Base_Class bases_S2631C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7719C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S2631C2_nt = {  "S2631C2_nt", // class name
  bases_S2631C2_nt, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2631C4_nt  {
  ::S17777C6_nt s2631c4f0;
  void  mf2631c4(); // _ZN10S2631C4_nt8mf2631c4Ev
};
//SIG(-1 S2631C4_nt) C1{ m FC2{ m Fp}}


void  S2631C4_nt ::mf2631c4(){}

//skip512 S2631C4_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2631C6_nt  {
  int s2631c6f0;
  void  mf2631c6(); // _ZN10S2631C6_nt8mf2631c6Ev
};
//SIG(-1 S2631C6_nt) C1{ m Fi}


void  S2631C6_nt ::mf2631c6(){}

//skip512 S2631C6_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2631C7_nt  {
  short s2631c7f0[2];
  void *s2631c7f1[19];
};
//SIG(-1 S2631C7_nt) C1{ Fs[2] Fp[19]}



//skip512 S2631C7_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2631C1  : S2631C2_nt {
  ::S2631C4_nt s2631c1f0;
  char s2631c1f1;
  int s2631c1f2;
  ::S2631C6_nt s2631c1f3;
  void *s2631c1f4;
  ::S2631C7_nt s2631c1f5;
  ::S4533C11_nt s2631c1f6;
};
//SIG(1 S2631C1) C1{ BC2{ BC3{ m Fi}} FC4{ m FC5{ m Fp}} Fc Fi FC6{ m Fi} Fp FC7{ Fs[2] Fp[19]} FC8{ m Fp}}



static void Test_S2631C1()
{
  extern Class_Descriptor cd_S2631C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(27,28)];
    init_test(&cd_S2631C1, buf);
    S2631C1 &lv = *(new (buf) S2631C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,108), "sizeof(S2631C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2631C1)");
    check_base_class_offset(lv, (S7719C17_nt*)(S2631C2_nt*), 0, "S2631C1");
    check_base_class_offset(lv, (S2631C2_nt*), 0, "S2631C1");
    check_field_offset(lv, s2631c1f0, ABISELECT(8,4), "S2631C1.s2631c1f0");
    check_field_offset(lv, s2631c1f1, ABISELECT(16,8), "S2631C1.s2631c1f1");
    check_field_offset(lv, s2631c1f2, ABISELECT(20,12), "S2631C1.s2631c1f2");
    check_field_offset(lv, s2631c1f3, ABISELECT(24,16), "S2631C1.s2631c1f3");
    check_field_offset(lv, s2631c1f4, ABISELECT(32,20), "S2631C1.s2631c1f4");
    check_field_offset(lv, s2631c1f5, ABISELECT(40,24), "S2631C1.s2631c1f5");
    check_field_offset(lv, s2631c1f6, ABISELECT(200,104), "S2631C1.s2631c1f6");
    test_class_info(&lv, &cd_S2631C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2631C1(Test_S2631C1, "S2631C1", ABISELECT(208,108));

#else // __cplusplus

extern Class_Descriptor cd_S7719C17_nt;
extern VTBL_ENTRY _ZTI11S7719C17_nt[];
extern Class_Descriptor cd_S2631C2_nt;
static Base_Class bases_S2631C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7719C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2631C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S2631C1 = {  "S2631C1", // class name
  bases_S2631C1, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(208,108), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11199C2_nt  {
  char s11199c2f0[64];
};
//SIG(-1 S11199C2_nt) C1{ Fc[64]}



//skip512 S11199C2_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11199C5_nt  {
  char s11199c5f0[20];
};
//SIG(-1 S11199C5_nt) C1{ Fc[20]}



//skip512 S11199C5_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11199C4_nt  {
  ::S11199C5_nt s11199c4f0;
  char s11199c4f1[16];
};
//SIG(-1 S11199C4_nt) C1{ FC2{ Fc[20]} Fc[16]}



//skip512 S11199C4_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11199C6_nt  {
  char s11199c6f0[12];
};
//SIG(-1 S11199C6_nt) C1{ Fc[12]}



//skip512 S11199C6_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11199C7_nt  {
  long s11199c7f0;
};
//SIG(-1 S11199C7_nt) C1{ Fl}



//skip512 S11199C7_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11199C3  {
  __tsi64 s11199c3f0;
  int s11199c3f1;
  ::S11199C4_nt s11199c3f2;
  ::S11199C6_nt s11199c3f3;
  ::S11199C7_nt s11199c3f4;
};
//SIG(-1 S11199C3) C1{ FL Fi FC2{ FC3{ Fc[20]} Fc[16]} FC4{ Fc[12]} FC5{ Fl}}



static void Test_S11199C3()
{
  {
    init_simple_test("S11199C3");
    S11199C3 lv;
    check2(sizeof(lv), ABISELECT(72,64), "sizeof(S11199C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11199C3)");
    check_field_offset(lv, s11199c3f0, 0, "S11199C3.s11199c3f0");
    check_field_offset(lv, s11199c3f1, 8, "S11199C3.s11199c3f1");
    check_field_offset(lv, s11199c3f2, 12, "S11199C3.s11199c3f2");
    check_field_offset(lv, s11199c3f3, 48, "S11199C3.s11199c3f3");
    check_field_offset(lv, s11199c3f4, ABISELECT(64,60), "S11199C3.s11199c3f4");
  }
}
static Arrange_To_Call_Me vS11199C3(Test_S11199C3, "S11199C3", ABISELECT(72,64));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11199C1  {
  ::S11199C2_nt s11199c1f0;
  ::S11199C3 s11199c1f1;
  __tsi64 s11199c1f2;
  void *s11199c1f3;
  char s11199c1f4[4];
};
//SIG(1 S11199C1) C1{ FC2{ Fc[64]} FC3{ FL Fi FC4{ FC5{ Fc[20]} Fc[16]} FC6{ Fc[12]} FC7{ Fl}} FL Fp Fc[4]}



static void Test_S11199C1()
{
  {
    init_simple_test("S11199C1");
    S11199C1 lv;
    check2(sizeof(lv), ABISELECT(160,144), "sizeof(S11199C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11199C1)");
    check_field_offset(lv, s11199c1f0, 0, "S11199C1.s11199c1f0");
    check_field_offset(lv, s11199c1f1, 64, "S11199C1.s11199c1f1");
    check_field_offset(lv, s11199c1f2, ABISELECT(136,128), "S11199C1.s11199c1f2");
    check_field_offset(lv, s11199c1f3, ABISELECT(144,136), "S11199C1.s11199c1f3");
    check_field_offset(lv, s11199c1f4, ABISELECT(152,140), "S11199C1.s11199c1f4");
  }
}
static Arrange_To_Call_Me vS11199C1(Test_S11199C1, "S11199C1", ABISELECT(160,144));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4094C2_nt  : S19905C19 {
  short s4094c2f0[2];
  virtual  ~S4094C2_nt(); // _ZN10S4094C2_ntD1Ev
  virtual void  v5(); // _ZN10S4094C2_nt2v5Ev
  S4094C2_nt(); // tgen
};
//SIG(-1 S4094C2_nt) C1{ BC2{ vd m} vd v1 Fs[2]}


 S4094C2_nt ::~S4094C2_nt(){ note_dtor("S4094C2_nt", this);}
void  S4094C2_nt ::v5(){vfunc_called(this, "_ZN10S4094C2_nt2v5Ev");}
S4094C2_nt ::S4094C2_nt(){ note_ctor("S4094C2_nt", this);} // tgen

//skip512 S4094C2_nt

#else // __cplusplus

extern void _ZN10S4094C2_ntC1Ev();
extern void _ZN10S4094C2_ntD1Ev();
Name_Map name_map_S4094C2_nt[] = {
  NSPAIR(_ZN10S4094C2_ntC1Ev),
  NSPAIR(_ZN10S4094C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
static Base_Class bases_S4094C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19905C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S4094C2_nt[];
extern void _ZN10S4094C2_ntD1Ev();
extern void _ZN10S4094C2_ntD0Ev();
extern void _ZN10S4094C2_nt2v5Ev();
static  VTBL_ENTRY vtc_S4094C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4094C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S4094C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4094C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S4094C2_nt2v5Ev,
};
extern VTBL_ENTRY _ZTI10S4094C2_nt[];
VTBL_ENTRY *P__ZTI10S4094C2_nt = _ZTI10S4094C2_nt; 
extern  VTBL_ENTRY _ZTV10S4094C2_nt[];
Class_Descriptor cd_S4094C2_nt = {  "S4094C2_nt", // class name
  bases_S4094C2_nt, 1,
  &(vtc_S4094C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S4094C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S4094C2_nt),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4094C5_nt  {
  char s4094c5f0;
  void  mf4094c5(); // _ZN10S4094C5_nt8mf4094c5Ev
};
//SIG(-1 S4094C5_nt) C1{ m Fc}


void  S4094C5_nt ::mf4094c5(){}

//skip512 S4094C5_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4094C1  : S4094C2_nt {
  void *s4094c1f0[5];
  ::S7719C4_nt s4094c1f1;
  ::S4094C5_nt s4094c1f2;
  void *s4094c1f3;
  int s4094c1f4;
  void *s4094c1f5;
  virtual  ~S4094C1(); // _ZN7S4094C1D1Ev
  virtual void  v1(); // _ZN7S4094C12v1Ev
  virtual void  v2(); // _ZN7S4094C12v2Ev
  virtual void  v3(); // _ZN7S4094C12v3Ev
  virtual void  v4(); // _ZN7S4094C12v4Ev
  S4094C1(); // tgen
};
//SIG(1 S4094C1) C1{ BC2{ BC3{ vd m} vd v5 Fs[2]} vd v1 v2 v3 v4 Fp[5] FC4{ m Fc} FC5{ m Fc} Fp Fi Fp}


 S4094C1 ::~S4094C1(){ note_dtor("S4094C1", this);}
void  S4094C1 ::v1(){vfunc_called(this, "_ZN7S4094C12v1Ev");}
void  S4094C1 ::v2(){vfunc_called(this, "_ZN7S4094C12v2Ev");}
void  S4094C1 ::v3(){vfunc_called(this, "_ZN7S4094C12v3Ev");}
void  S4094C1 ::v4(){vfunc_called(this, "_ZN7S4094C12v4Ev");}
S4094C1 ::S4094C1(){ note_ctor("S4094C1", this);} // tgen

static void Test_S4094C1()
{
  extern Class_Descriptor cd_S4094C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[12];
    init_test(&cd_S4094C1, buf);
    S4094C1 *dp, &lv = *(dp=new (buf) S4094C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,44), "sizeof(S4094C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4094C1)");
    check_base_class_offset(lv, (S19905C19*)(S4094C2_nt*), 0, "S4094C1");
    check_base_class_offset(lv, (S4094C2_nt*), 0, "S4094C1");
    check_field_offset(lv, s4094c1f0, ABISELECT(16,8), "S4094C1.s4094c1f0");
    check_field_offset(lv, s4094c1f1, ABISELECT(56,28), "S4094C1.s4094c1f1");
    check_field_offset(lv, s4094c1f2, ABISELECT(57,29), "S4094C1.s4094c1f2");
    check_field_offset(lv, s4094c1f3, ABISELECT(64,32), "S4094C1.s4094c1f3");
    check_field_offset(lv, s4094c1f4, ABISELECT(72,36), "S4094C1.s4094c1f4");
    check_field_offset(lv, s4094c1f5, ABISELECT(80,40), "S4094C1.s4094c1f5");
    test_class_info(&lv, &cd_S4094C1);
    dp->~S4094C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4094C1(Test_S4094C1, "S4094C1", ABISELECT(88,44));

#else // __cplusplus

extern void _ZN7S4094C1C1Ev();
extern void _ZN7S4094C1D1Ev();
Name_Map name_map_S4094C1[] = {
  NSPAIR(_ZN7S4094C1C1Ev),
  NSPAIR(_ZN7S4094C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
extern Class_Descriptor cd_S4094C2_nt;
extern VTBL_ENTRY _ZTI10S4094C2_nt[];
extern  VTBL_ENTRY _ZTV10S4094C2_nt[];
static Base_Class bases_S4094C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19905C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4094C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4094C1[];
extern void _ZN7S4094C1D1Ev();
extern void _ZN7S4094C1D0Ev();
extern void _ZN10S4094C2_nt2v5Ev();
extern void _ZN7S4094C12v1Ev();
extern void _ZN7S4094C12v2Ev();
extern void _ZN7S4094C12v3Ev();
extern void _ZN7S4094C12v4Ev();
static  VTBL_ENTRY vtc_S4094C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4094C1[0]),
  (VTBL_ENTRY)&_ZN7S4094C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4094C1D0Ev,
  (VTBL_ENTRY)&_ZN10S4094C2_nt2v5Ev,
  (VTBL_ENTRY)&_ZN7S4094C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4094C12v2Ev,
  (VTBL_ENTRY)&_ZN7S4094C12v3Ev,
  (VTBL_ENTRY)&_ZN7S4094C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S4094C1[];
extern  VTBL_ENTRY _ZTV7S4094C1[];
Class_Descriptor cd_S4094C1 = {  "S4094C1", // class name
  bases_S4094C1, 2,
  &(vtc_S4094C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,44), // object size
  NSPAIRA(_ZTI7S4094C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4094C1),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18085C1  {
  void *s18085c1f0[2];
  int s18085c1f1[11];
  void *s18085c1f2;
  int s18085c1f3[3];
  char s18085c1f4;
  void *s18085c1f5;
  int s18085c1f6[3];
  char s18085c1f7;
  void *s18085c1f8;
  int s18085c1f9[3];
  char s18085c1f10;
  void *s18085c1f11;
  int s18085c1f12[3];
  char s18085c1f13;
  void *s18085c1f14;
  int s18085c1f15[3];
  void  mf18085c1(); // _ZN8S18085C19mf18085c1Ev
};
//SIG(1 S18085C1) C1{ m Fp[2] Fi[11] Fp Fi[3] Fc Fp Fi[3] Fc Fp Fi[3] Fc Fp Fi[3] Fc Fp Fi[3]}


void  S18085C1 ::mf18085c1(){}

static void Test_S18085C1()
{
  {
    init_simple_test("S18085C1");
    S18085C1 lv;
    check2(sizeof(lv), ABISELECT(184,148), "sizeof(S18085C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18085C1)");
    check_field_offset(lv, s18085c1f0, 0, "S18085C1.s18085c1f0");
    check_field_offset(lv, s18085c1f1, ABISELECT(16,8), "S18085C1.s18085c1f1");
    check_field_offset(lv, s18085c1f2, ABISELECT(64,52), "S18085C1.s18085c1f2");
    check_field_offset(lv, s18085c1f3, ABISELECT(72,56), "S18085C1.s18085c1f3");
    check_field_offset(lv, s18085c1f4, ABISELECT(84,68), "S18085C1.s18085c1f4");
    check_field_offset(lv, s18085c1f5, ABISELECT(88,72), "S18085C1.s18085c1f5");
    check_field_offset(lv, s18085c1f6, ABISELECT(96,76), "S18085C1.s18085c1f6");
    check_field_offset(lv, s18085c1f7, ABISELECT(108,88), "S18085C1.s18085c1f7");
    check_field_offset(lv, s18085c1f8, ABISELECT(112,92), "S18085C1.s18085c1f8");
    check_field_offset(lv, s18085c1f9, ABISELECT(120,96), "S18085C1.s18085c1f9");
    check_field_offset(lv, s18085c1f10, ABISELECT(132,108), "S18085C1.s18085c1f10");
    check_field_offset(lv, s18085c1f11, ABISELECT(136,112), "S18085C1.s18085c1f11");
    check_field_offset(lv, s18085c1f12, ABISELECT(144,116), "S18085C1.s18085c1f12");
    check_field_offset(lv, s18085c1f13, ABISELECT(156,128), "S18085C1.s18085c1f13");
    check_field_offset(lv, s18085c1f14, ABISELECT(160,132), "S18085C1.s18085c1f14");
    check_field_offset(lv, s18085c1f15, ABISELECT(168,136), "S18085C1.s18085c1f15");
  }
}
static Arrange_To_Call_Me vS18085C1(Test_S18085C1, "S18085C1", ABISELECT(184,148));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19998C2  {
  virtual void  v10(); // _ZN8S19998C23v10Ev
  virtual void  v11(); // _ZN8S19998C23v11Ev
  virtual void  v12(); // _ZN8S19998C23v12Ev
  virtual void  v13(); // _ZN8S19998C23v13Ev
  virtual void  v14(); // _ZN8S19998C23v14Ev
  virtual void  v15(); // _ZN8S19998C23v15Ev
  virtual void  v16(); // _ZN8S19998C23v16Ev
  virtual void  v17(); // _ZN8S19998C23v17Ev
  virtual void  v18(); // _ZN8S19998C23v18Ev
  ~S19998C2(); // tgen
  S19998C2(); // tgen
};
//SIG(-1 S19998C2) C1{ v1 v2 v3 v4 v5 v6 v7 v8 v9}


void  S19998C2 ::v10(){vfunc_called(this, "_ZN8S19998C23v10Ev");}
void  S19998C2 ::v11(){vfunc_called(this, "_ZN8S19998C23v11Ev");}
void  S19998C2 ::v12(){vfunc_called(this, "_ZN8S19998C23v12Ev");}
void  S19998C2 ::v13(){vfunc_called(this, "_ZN8S19998C23v13Ev");}
void  S19998C2 ::v14(){vfunc_called(this, "_ZN8S19998C23v14Ev");}
void  S19998C2 ::v15(){vfunc_called(this, "_ZN8S19998C23v15Ev");}
void  S19998C2 ::v16(){vfunc_called(this, "_ZN8S19998C23v16Ev");}
void  S19998C2 ::v17(){vfunc_called(this, "_ZN8S19998C23v17Ev");}
void  S19998C2 ::v18(){vfunc_called(this, "_ZN8S19998C23v18Ev");}
S19998C2 ::~S19998C2(){ note_dtor("S19998C2", this);} // tgen
S19998C2 ::S19998C2(){ note_ctor("S19998C2", this);} // tgen

static void Test_S19998C2()
{
  extern Class_Descriptor cd_S19998C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19998C2, buf);
    S19998C2 *dp, &lv = *(dp=new (buf) S19998C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19998C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19998C2)");
    test_class_info(&lv, &cd_S19998C2);
    dp->~S19998C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19998C2(Test_S19998C2, "S19998C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S19998C2C1Ev();
extern void _ZN8S19998C2D1Ev();
Name_Map name_map_S19998C2[] = {
  NSPAIR(_ZN8S19998C2C1Ev),
  NSPAIR(_ZN8S19998C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19998C2[];
extern void _ZN8S19998C23v10Ev();
extern void _ZN8S19998C23v11Ev();
extern void _ZN8S19998C23v12Ev();
extern void _ZN8S19998C23v13Ev();
extern void _ZN8S19998C23v14Ev();
extern void _ZN8S19998C23v15Ev();
extern void _ZN8S19998C23v16Ev();
extern void _ZN8S19998C23v17Ev();
extern void _ZN8S19998C23v18Ev();
static  VTBL_ENTRY vtc_S19998C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19998C2[0]),
  (VTBL_ENTRY)&_ZN8S19998C23v10Ev,
  (VTBL_ENTRY)&_ZN8S19998C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19998C23v12Ev,
  (VTBL_ENTRY)&_ZN8S19998C23v13Ev,
  (VTBL_ENTRY)&_ZN8S19998C23v14Ev,
  (VTBL_ENTRY)&_ZN8S19998C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19998C23v16Ev,
  (VTBL_ENTRY)&_ZN8S19998C23v17Ev,
  (VTBL_ENTRY)&_ZN8S19998C23v18Ev,
};
extern VTBL_ENTRY _ZTI8S19998C2[];
extern  VTBL_ENTRY _ZTV8S19998C2[];
Class_Descriptor cd_S19998C2 = {  "S19998C2", // class name
  0,0,//no base classes
  &(vtc_S19998C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19998C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19998C2),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19998C1  : virtual S19998C2 {
  int s19998c1f0;
  virtual void  v1(); // _ZN8S19998C12v1Ev
  virtual void  v2(); // _ZN8S19998C12v2Ev
  virtual void  v3(); // _ZN8S19998C12v3Ev
  virtual void  v4(); // _ZN8S19998C12v4Ev
  virtual void  v5(); // _ZN8S19998C12v5Ev
  virtual void  v6(); // _ZN8S19998C12v6Ev
  virtual void  v7(); // _ZN8S19998C12v7Ev
  virtual void  v8(); // _ZN8S19998C12v8Ev
  virtual void  v9(); // _ZN8S19998C12v9Ev
  ~S19998C1(); // tgen
  S19998C1(); // tgen
};
//SIG(1 S19998C1) C1{ VBC2{ v10 v11 v12 v13 v14 v15 v16 v17 v18} v1 v2 v3 v4 v5 v6 v7 v8 v9 Fi}


void  S19998C1 ::v1(){vfunc_called(this, "_ZN8S19998C12v1Ev");}
void  S19998C1 ::v2(){vfunc_called(this, "_ZN8S19998C12v2Ev");}
void  S19998C1 ::v3(){vfunc_called(this, "_ZN8S19998C12v3Ev");}
void  S19998C1 ::v4(){vfunc_called(this, "_ZN8S19998C12v4Ev");}
void  S19998C1 ::v5(){vfunc_called(this, "_ZN8S19998C12v5Ev");}
void  S19998C1 ::v6(){vfunc_called(this, "_ZN8S19998C12v6Ev");}
void  S19998C1 ::v7(){vfunc_called(this, "_ZN8S19998C12v7Ev");}
void  S19998C1 ::v8(){vfunc_called(this, "_ZN8S19998C12v8Ev");}
void  S19998C1 ::v9(){vfunc_called(this, "_ZN8S19998C12v9Ev");}
S19998C1 ::~S19998C1(){ note_dtor("S19998C1", this);} // tgen
S19998C1 ::S19998C1(){ note_ctor("S19998C1", this);} // tgen

static void Test_S19998C1()
{
  extern Class_Descriptor cd_S19998C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19998C1, buf);
    S19998C1 *dp, &lv = *(dp=new (buf) S19998C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19998C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19998C1)");
    check_base_class_offset(lv, (S19998C2*), 0, "S19998C1");
    check_field_offset(lv, s19998c1f0, ABISELECT(8,4), "S19998C1.s19998c1f0");
    test_class_info(&lv, &cd_S19998C1);
    dp->~S19998C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19998C1(Test_S19998C1, "S19998C1", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19998C1C1Ev();
extern void _ZN8S19998C1D1Ev();
Name_Map name_map_S19998C1[] = {
  NSPAIR(_ZN8S19998C1C1Ev),
  NSPAIR(_ZN8S19998C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19998C2;
extern VTBL_ENTRY _ZTI8S19998C2[];
extern  VTBL_ENTRY _ZTV8S19998C2[];
static Base_Class bases_S19998C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19998C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19998C1[];
extern void _ZN8S19998C23v10Ev();
extern void _ZN8S19998C23v11Ev();
extern void _ZN8S19998C23v12Ev();
extern void _ZN8S19998C23v13Ev();
extern void _ZN8S19998C23v14Ev();
extern void _ZN8S19998C23v15Ev();
extern void _ZN8S19998C23v16Ev();
extern void _ZN8S19998C23v17Ev();
extern void _ZN8S19998C23v18Ev();
extern void _ZN8S19998C12v1Ev();
extern void _ZN8S19998C12v2Ev();
extern void _ZN8S19998C12v3Ev();
extern void _ZN8S19998C12v4Ev();
extern void _ZN8S19998C12v5Ev();
extern void _ZN8S19998C12v6Ev();
extern void _ZN8S19998C12v7Ev();
extern void _ZN8S19998C12v8Ev();
extern void _ZN8S19998C12v9Ev();
static  VTBL_ENTRY vtc_S19998C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19998C1[0]),
  (VTBL_ENTRY)&_ZN8S19998C23v10Ev,
  (VTBL_ENTRY)&_ZN8S19998C23v11Ev,
  (VTBL_ENTRY)&_ZN8S19998C23v12Ev,
  (VTBL_ENTRY)&_ZN8S19998C23v13Ev,
  (VTBL_ENTRY)&_ZN8S19998C23v14Ev,
  (VTBL_ENTRY)&_ZN8S19998C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19998C23v16Ev,
  (VTBL_ENTRY)&_ZN8S19998C23v17Ev,
  (VTBL_ENTRY)&_ZN8S19998C23v18Ev,
  (VTBL_ENTRY)&_ZN8S19998C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19998C12v2Ev,
  (VTBL_ENTRY)&_ZN8S19998C12v3Ev,
  (VTBL_ENTRY)&_ZN8S19998C12v4Ev,
  (VTBL_ENTRY)&_ZN8S19998C12v5Ev,
  (VTBL_ENTRY)&_ZN8S19998C12v6Ev,
  (VTBL_ENTRY)&_ZN8S19998C12v7Ev,
  (VTBL_ENTRY)&_ZN8S19998C12v8Ev,
  (VTBL_ENTRY)&_ZN8S19998C12v9Ev,
};
extern VTBL_ENTRY _ZTV8S19998C1[];
static  VTT_ENTRY vtt_S19998C1[] = {
  {&(_ZTV8S19998C1[12]),  12,30},
  {&(_ZTV8S19998C1[12]),  12,30},
};
extern VTBL_ENTRY _ZTI8S19998C1[];
extern  VTBL_ENTRY _ZTV8S19998C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19998C1[];
Class_Descriptor cd_S19998C1 = {  "S19998C1", // class name
  bases_S19998C1, 1,
  &(vtc_S19998C1[0]), // expected_vtbl_contents
  &(vtt_S19998C1[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19998C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19998C1),30, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19998C1),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20349C2  {
  int s20349c2f0:32;
  char s20349c2f1:4;
  int s20349c2f2[2];
  void *s20349c2f3;
  virtual void  v7(); // _ZN8S20349C22v7Ev
  virtual void  v8(); // _ZN8S20349C22v8Ev
  virtual void  v9(); // _ZN8S20349C22v9Ev
  virtual void  v10(); // _ZN8S20349C23v10Ev
  virtual void  v11(); // _ZN8S20349C23v11Ev
  ~S20349C2(); // tgen
  S20349C2(); // tgen
};
//SIG(-1 S20349C2) C1{ v1 v2 v3 v4 v5 Fi:32 Fc:4 Fi[2] Fp}


void  S20349C2 ::v7(){vfunc_called(this, "_ZN8S20349C22v7Ev");}
void  S20349C2 ::v8(){vfunc_called(this, "_ZN8S20349C22v8Ev");}
void  S20349C2 ::v9(){vfunc_called(this, "_ZN8S20349C22v9Ev");}
void  S20349C2 ::v10(){vfunc_called(this, "_ZN8S20349C23v10Ev");}
void  S20349C2 ::v11(){vfunc_called(this, "_ZN8S20349C23v11Ev");}
S20349C2 ::~S20349C2(){ note_dtor("S20349C2", this);} // tgen
S20349C2 ::S20349C2(){ note_ctor("S20349C2", this);} // tgen

static void Test_S20349C2()
{
  extern Class_Descriptor cd_S20349C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S20349C2, buf);
    S20349C2 *dp, &lv = *(dp=new (buf) S20349C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S20349C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20349C2)");
    set_bf_and_test(lv, s20349c2f0, ABISELECT(8,4), 0, 32, 1, "S20349C2");
    set_bf_and_test(lv, s20349c2f0, ABISELECT(8,4), 0, 32, hide_sll(1LL<<31), "S20349C2");
    set_bf_and_test(lv, s20349c2f1, ABISELECT(12,8), 0, 4, 1, "S20349C2");
    set_bf_and_test(lv, s20349c2f1, ABISELECT(12,8), 0, 4, hide_sll(1LL<<3), "S20349C2");
    check_field_offset(lv, s20349c2f2, ABISELECT(16,12), "S20349C2.s20349c2f2");
    check_field_offset(lv, s20349c2f3, ABISELECT(24,20), "S20349C2.s20349c2f3");
    test_class_info(&lv, &cd_S20349C2);
    dp->~S20349C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20349C2(Test_S20349C2, "S20349C2", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN8S20349C2C1Ev();
extern void _ZN8S20349C2D1Ev();
Name_Map name_map_S20349C2[] = {
  NSPAIR(_ZN8S20349C2C1Ev),
  NSPAIR(_ZN8S20349C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20349C2[];
extern void _ZN8S20349C22v7Ev();
extern void _ZN8S20349C22v8Ev();
extern void _ZN8S20349C22v9Ev();
extern void _ZN8S20349C23v10Ev();
extern void _ZN8S20349C23v11Ev();
static  VTBL_ENTRY vtc_S20349C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20349C2[0]),
  (VTBL_ENTRY)&_ZN8S20349C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20349C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20349C22v9Ev,
  (VTBL_ENTRY)&_ZN8S20349C23v10Ev,
  (VTBL_ENTRY)&_ZN8S20349C23v11Ev,
};
extern VTBL_ENTRY _ZTI8S20349C2[];
extern  VTBL_ENTRY _ZTV8S20349C2[];
Class_Descriptor cd_S20349C2 = {  "S20349C2", // class name
  0,0,//no base classes
  &(vtc_S20349C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI8S20349C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20349C2),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20349C1  : virtual S20349C2 {
  void *s20349c1f0;
  short s20349c1f1:16;
  virtual void  v1(); // _ZN8S20349C12v1Ev
  virtual void  v2(); // _ZN8S20349C12v2Ev
  virtual void  v3(); // _ZN8S20349C12v3Ev
  virtual void  v4(); // _ZN8S20349C12v4Ev
  virtual void  v5(); // _ZN8S20349C12v5Ev
  virtual void  v6(); // _ZN8S20349C12v6Ev
  ~S20349C1(); // tgen
  S20349C1(); // tgen
};
//SIG(1 S20349C1) C1{ VBC2{ v7 v8 v9 v10 v11 Fi:32 Fc:4 Fi[2] Fp} v1 v2 v3 v4 v5 v6 Fp Fs:16}


void  S20349C1 ::v1(){vfunc_called(this, "_ZN8S20349C12v1Ev");}
void  S20349C1 ::v2(){vfunc_called(this, "_ZN8S20349C12v2Ev");}
void  S20349C1 ::v3(){vfunc_called(this, "_ZN8S20349C12v3Ev");}
void  S20349C1 ::v4(){vfunc_called(this, "_ZN8S20349C12v4Ev");}
void  S20349C1 ::v5(){vfunc_called(this, "_ZN8S20349C12v5Ev");}
void  S20349C1 ::v6(){vfunc_called(this, "_ZN8S20349C12v6Ev");}
S20349C1 ::~S20349C1(){ note_dtor("S20349C1", this);} // tgen
S20349C1 ::S20349C1(){ note_ctor("S20349C1", this);} // tgen

static void Test_S20349C1()
{
  extern Class_Descriptor cd_S20349C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S20349C1, buf);
    S20349C1 *dp, &lv = *(dp=new (buf) S20349C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S20349C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20349C1)");
    check_base_class_offset(lv, (S20349C2*), ABISELECT(24,12), "S20349C1");
    check_field_offset(lv, s20349c1f0, ABISELECT(8,4), "S20349C1.s20349c1f0");
    set_bf_and_test(lv, s20349c1f1, ABISELECT(16,8), 0, 16, 1, "S20349C1");
    set_bf_and_test(lv, s20349c1f1, ABISELECT(16,8), 0, 16, hide_sll(1LL<<15), "S20349C1");
    test_class_info(&lv, &cd_S20349C1);
    dp->~S20349C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20349C1(Test_S20349C1, "S20349C1", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN8S20349C1C1Ev();
extern void _ZN8S20349C1D1Ev();
Name_Map name_map_S20349C1[] = {
  NSPAIR(_ZN8S20349C1C1Ev),
  NSPAIR(_ZN8S20349C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20349C2;
extern VTBL_ENTRY _ZTI8S20349C2[];
extern  VTBL_ENTRY _ZTV8S20349C2[];
static Base_Class bases_S20349C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20349C2,    ABISELECT(24,12), //bcp->offset
    9, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20349C1[];
extern void _ZN8S20349C12v1Ev();
extern void _ZN8S20349C12v2Ev();
extern void _ZN8S20349C12v3Ev();
extern void _ZN8S20349C12v4Ev();
extern void _ZN8S20349C12v5Ev();
extern void _ZN8S20349C12v6Ev();
extern void _ZN8S20349C22v7Ev();
extern void _ZN8S20349C22v8Ev();
extern void _ZN8S20349C22v9Ev();
extern void _ZN8S20349C23v10Ev();
extern void _ZN8S20349C23v11Ev();
static  VTBL_ENTRY vtc_S20349C1[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20349C1[0]),
  (VTBL_ENTRY)&_ZN8S20349C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20349C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20349C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20349C12v4Ev,
  (VTBL_ENTRY)&_ZN8S20349C12v5Ev,
  (VTBL_ENTRY)&_ZN8S20349C12v6Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20349C1[0]),
  (VTBL_ENTRY)&_ZN8S20349C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20349C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20349C22v9Ev,
  (VTBL_ENTRY)&_ZN8S20349C23v10Ev,
  (VTBL_ENTRY)&_ZN8S20349C23v11Ev,
};
extern VTBL_ENTRY _ZTV8S20349C1[];
static  VTT_ENTRY vtt_S20349C1[] = {
  {&(_ZTV8S20349C1[3]),  3,21},
  {&(_ZTV8S20349C1[16]),  16,21},
};
extern VTBL_ENTRY _ZTI8S20349C1[];
extern  VTBL_ENTRY _ZTV8S20349C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20349C1[];
Class_Descriptor cd_S20349C1 = {  "S20349C1", // class name
  bases_S20349C1, 1,
  &(vtc_S20349C1[0]), // expected_vtbl_contents
  &(vtt_S20349C1[0]), // expected_vtt_contents
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI8S20349C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20349C1),21, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20349C1),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9303C2  {
  ::S5266C19_nt s9303c2f0;
  int s9303c2f1[2];
  char s9303c2f2;
  virtual  ~S9303C2(); // _ZN7S9303C2D1Ev
  virtual void  v3(); // _ZN7S9303C22v3Ev
  virtual void  v4(); // _ZN7S9303C22v4Ev
  virtual void  v5(); // _ZN7S9303C22v5Ev
  S9303C2(); // tgen
};
//SIG(-1 S9303C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9303C2 ::~S9303C2(){ note_dtor("S9303C2", this);}
void  S9303C2 ::v3(){vfunc_called(this, "_ZN7S9303C22v3Ev");}
void  S9303C2 ::v4(){vfunc_called(this, "_ZN7S9303C22v4Ev");}
void  S9303C2 ::v5(){vfunc_called(this, "_ZN7S9303C22v5Ev");}
S9303C2 ::S9303C2(){ note_ctor("S9303C2", this);} // tgen

static void Test_S9303C2()
{
  extern Class_Descriptor cd_S9303C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9303C2, buf);
    S9303C2 *dp, &lv = *(dp=new (buf) S9303C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9303C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9303C2)");
    check_field_offset(lv, s9303c2f0, ABISELECT(8,4), "S9303C2.s9303c2f0");
    check_field_offset(lv, s9303c2f1, ABISELECT(24,16), "S9303C2.s9303c2f1");
    check_field_offset(lv, s9303c2f2, ABISELECT(32,24), "S9303C2.s9303c2f2");
    test_class_info(&lv, &cd_S9303C2);
    dp->~S9303C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9303C2(Test_S9303C2, "S9303C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9303C2C1Ev();
extern void _ZN7S9303C2D1Ev();
Name_Map name_map_S9303C2[] = {
  NSPAIR(_ZN7S9303C2C1Ev),
  NSPAIR(_ZN7S9303C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9303C2[];
extern void _ZN7S9303C2D1Ev();
extern void _ZN7S9303C2D0Ev();
extern void _ZN7S9303C22v3Ev();
extern void _ZN7S9303C22v4Ev();
extern void _ZN7S9303C22v5Ev();
static  VTBL_ENTRY vtc_S9303C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9303C2[0]),
  (VTBL_ENTRY)&_ZN7S9303C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9303C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9303C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9303C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9303C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S9303C2[];
extern  VTBL_ENTRY _ZTV7S9303C2[];
Class_Descriptor cd_S9303C2 = {  "S9303C2", // class name
  0,0,//no base classes
  &(vtc_S9303C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9303C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9303C2),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9303C1  : S9303C2 {
  ::S3765C5_nt s9303c1f0;
  int s9303c1f1;
  virtual  ~S9303C1(); // _ZN7S9303C1D1Ev
  virtual void  v1(); // _ZN7S9303C12v1Ev
  virtual void  v2(); // _ZN7S9303C12v2Ev
  S9303C1(); // tgen
};
//SIG(1 S9303C1) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 FC5{ m Fp[2]} Fi}


 S9303C1 ::~S9303C1(){ note_dtor("S9303C1", this);}
void  S9303C1 ::v1(){vfunc_called(this, "_ZN7S9303C12v1Ev");}
void  S9303C1 ::v2(){vfunc_called(this, "_ZN7S9303C12v2Ev");}
S9303C1 ::S9303C1(){ note_ctor("S9303C1", this);} // tgen

static void Test_S9303C1()
{
  extern Class_Descriptor cd_S9303C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,11)];
    init_test(&cd_S9303C1, buf);
    S9303C1 *dp, &lv = *(dp=new (buf) S9303C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,40), "sizeof(S9303C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9303C1)");
    check_base_class_offset(lv, (S9303C2*), 0, "S9303C1");
    check_field_offset(lv, s9303c1f0, ABISELECT(40,28), "S9303C1.s9303c1f0");
    check_field_offset(lv, s9303c1f1, ABISELECT(56,36), "S9303C1.s9303c1f1");
    test_class_info(&lv, &cd_S9303C1);
    dp->~S9303C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9303C1(Test_S9303C1, "S9303C1", ABISELECT(64,40));

#else // __cplusplus

extern void _ZN7S9303C1C1Ev();
extern void _ZN7S9303C1D1Ev();
Name_Map name_map_S9303C1[] = {
  NSPAIR(_ZN7S9303C1C1Ev),
  NSPAIR(_ZN7S9303C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9303C2;
extern VTBL_ENTRY _ZTI7S9303C2[];
extern  VTBL_ENTRY _ZTV7S9303C2[];
static Base_Class bases_S9303C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9303C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9303C1[];
extern void _ZN7S9303C1D1Ev();
extern void _ZN7S9303C1D0Ev();
extern void _ZN7S9303C22v3Ev();
extern void _ZN7S9303C22v4Ev();
extern void _ZN7S9303C22v5Ev();
extern void _ZN7S9303C12v1Ev();
extern void _ZN7S9303C12v2Ev();
static  VTBL_ENTRY vtc_S9303C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9303C1[0]),
  (VTBL_ENTRY)&_ZN7S9303C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9303C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9303C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9303C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9303C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9303C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9303C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9303C1[];
extern  VTBL_ENTRY _ZTV7S9303C1[];
Class_Descriptor cd_S9303C1 = {  "S9303C1", // class name
  bases_S9303C1, 1,
  &(vtc_S9303C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,40), // object size
  NSPAIRA(_ZTI7S9303C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9303C1),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17188C2  {
  int s17188c2f0;
  ::S5266C19_nt s17188c2f1;
  ::S5266C19_nt s17188c2f2;
  ::S5266C19_nt s17188c2f3;
  ::S5266C19_nt s17188c2f4;
  ::S5266C19_nt s17188c2f5;
  ::S5266C19_nt s17188c2f6;
  int s17188c2f7[2];
  ::S5266C19_nt s17188c2f8;
  void  mf17188c2(); // _ZN8S17188C29mf17188c2Ev
};
//SIG(-1 S17188C2) C1{ m Fi FC2{ m Fp Fi FC3{ m}} FC2 FC2 FC2 FC2 FC2 Fi[2] FC2}


void  S17188C2 ::mf17188c2(){}

static void Test_S17188C2()
{
  {
    init_simple_test("S17188C2");
    S17188C2 lv;
    check2(sizeof(lv), ABISELECT(128,96), "sizeof(S17188C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17188C2)");
    check_field_offset(lv, s17188c2f0, 0, "S17188C2.s17188c2f0");
    check_field_offset(lv, s17188c2f1, ABISELECT(8,4), "S17188C2.s17188c2f1");
    check_field_offset(lv, s17188c2f2, ABISELECT(24,16), "S17188C2.s17188c2f2");
    check_field_offset(lv, s17188c2f3, ABISELECT(40,28), "S17188C2.s17188c2f3");
    check_field_offset(lv, s17188c2f4, ABISELECT(56,40), "S17188C2.s17188c2f4");
    check_field_offset(lv, s17188c2f5, ABISELECT(72,52), "S17188C2.s17188c2f5");
    check_field_offset(lv, s17188c2f6, ABISELECT(88,64), "S17188C2.s17188c2f6");
    check_field_offset(lv, s17188c2f7, ABISELECT(104,76), "S17188C2.s17188c2f7");
    check_field_offset(lv, s17188c2f8, ABISELECT(112,84), "S17188C2.s17188c2f8");
  }
}
static Arrange_To_Call_Me vS17188C2(Test_S17188C2, "S17188C2", ABISELECT(128,96));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17188C1  {
  int s17188c1f0[3];
  ::S17188C2 s17188c1f1;
  void  mf17188c1(); // _ZN8S17188C19mf17188c1Ev
};
//SIG(1 S17188C1) C1{ m Fi[3] FC2{ m Fi FC3{ m Fp Fi FC4{ m}} FC3 FC3 FC3 FC3 FC3 Fi[2] FC3}}


void  S17188C1 ::mf17188c1(){}

static void Test_S17188C1()
{
  {
    init_simple_test("S17188C1");
    S17188C1 lv;
    check2(sizeof(lv), ABISELECT(144,108), "sizeof(S17188C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17188C1)");
    check_field_offset(lv, s17188c1f0, 0, "S17188C1.s17188c1f0");
    check_field_offset(lv, s17188c1f1, ABISELECT(16,12), "S17188C1.s17188c1f1");
  }
}
static Arrange_To_Call_Me vS17188C1(Test_S17188C1, "S17188C1", ABISELECT(144,108));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12286C1  {
  int s12286c1f0;
  char s12286c1f1[4];
  ::S11199C3 s12286c1f2;
  __tsi64 s12286c1f3[2];
};
//SIG(1 S12286C1) C1{ Fi Fc[4] FC2{ FL Fi FC3{ FC4{ Fc[20]} Fc[16]} FC5{ Fc[12]} FC6{ Fl}} FL[2]}



static void Test_S12286C1()
{
  {
    init_simple_test("S12286C1");
    S12286C1 lv;
    check2(sizeof(lv), ABISELECT(96,88), "sizeof(S12286C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12286C1)");
    check_field_offset(lv, s12286c1f0, 0, "S12286C1.s12286c1f0");
    check_field_offset(lv, s12286c1f1, 4, "S12286C1.s12286c1f1");
    check_field_offset(lv, s12286c1f2, 8, "S12286C1.s12286c1f2");
    check_field_offset(lv, s12286c1f3, ABISELECT(80,72), "S12286C1.s12286c1f3");
  }
}
static Arrange_To_Call_Me vS12286C1(Test_S12286C1, "S12286C1", ABISELECT(96,88));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20386C2  {
  virtual void  v8(); // _ZN8S20386C22v8Ev
  virtual void  v9(); // _ZN8S20386C22v9Ev
  virtual void  v10(); // _ZN8S20386C23v10Ev
  virtual void  v11(); // _ZN8S20386C23v11Ev
  virtual void  v12(); // _ZN8S20386C23v12Ev
  virtual void  v13(); // _ZN8S20386C23v13Ev
  virtual void  v14(); // _ZN8S20386C23v14Ev
  virtual void  v15(); // _ZN8S20386C23v15Ev
  virtual void  v16(); // _ZN8S20386C23v16Ev
  ~S20386C2(); // tgen
  S20386C2(); // tgen
};
//SIG(-1 S20386C2) C1{ v1 v2 v3 v4 v5 v6 v7 v8 v9}


void  S20386C2 ::v8(){vfunc_called(this, "_ZN8S20386C22v8Ev");}
void  S20386C2 ::v9(){vfunc_called(this, "_ZN8S20386C22v9Ev");}
void  S20386C2 ::v10(){vfunc_called(this, "_ZN8S20386C23v10Ev");}
void  S20386C2 ::v11(){vfunc_called(this, "_ZN8S20386C23v11Ev");}
void  S20386C2 ::v12(){vfunc_called(this, "_ZN8S20386C23v12Ev");}
void  S20386C2 ::v13(){vfunc_called(this, "_ZN8S20386C23v13Ev");}
void  S20386C2 ::v14(){vfunc_called(this, "_ZN8S20386C23v14Ev");}
void  S20386C2 ::v15(){vfunc_called(this, "_ZN8S20386C23v15Ev");}
void  S20386C2 ::v16(){vfunc_called(this, "_ZN8S20386C23v16Ev");}
S20386C2 ::~S20386C2(){ note_dtor("S20386C2", this);} // tgen
S20386C2 ::S20386C2(){ note_ctor("S20386C2", this);} // tgen

static void Test_S20386C2()
{
  extern Class_Descriptor cd_S20386C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20386C2, buf);
    S20386C2 *dp, &lv = *(dp=new (buf) S20386C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20386C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20386C2)");
    test_class_info(&lv, &cd_S20386C2);
    dp->~S20386C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20386C2(Test_S20386C2, "S20386C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S20386C2C1Ev();
extern void _ZN8S20386C2D1Ev();
Name_Map name_map_S20386C2[] = {
  NSPAIR(_ZN8S20386C2C1Ev),
  NSPAIR(_ZN8S20386C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20386C2[];
extern void _ZN8S20386C22v8Ev();
extern void _ZN8S20386C22v9Ev();
extern void _ZN8S20386C23v10Ev();
extern void _ZN8S20386C23v11Ev();
extern void _ZN8S20386C23v12Ev();
extern void _ZN8S20386C23v13Ev();
extern void _ZN8S20386C23v14Ev();
extern void _ZN8S20386C23v15Ev();
extern void _ZN8S20386C23v16Ev();
static  VTBL_ENTRY vtc_S20386C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20386C2[0]),
  (VTBL_ENTRY)&_ZN8S20386C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20386C22v9Ev,
  (VTBL_ENTRY)&_ZN8S20386C23v10Ev,
  (VTBL_ENTRY)&_ZN8S20386C23v11Ev,
  (VTBL_ENTRY)&_ZN8S20386C23v12Ev,
  (VTBL_ENTRY)&_ZN8S20386C23v13Ev,
  (VTBL_ENTRY)&_ZN8S20386C23v14Ev,
  (VTBL_ENTRY)&_ZN8S20386C23v15Ev,
  (VTBL_ENTRY)&_ZN8S20386C23v16Ev,
};
extern VTBL_ENTRY _ZTI8S20386C2[];
extern  VTBL_ENTRY _ZTV8S20386C2[];
Class_Descriptor cd_S20386C2 = {  "S20386C2", // class name
  0,0,//no base classes
  &(vtc_S20386C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20386C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20386C2),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20386C1  : virtual S20386C2 {
  __tsi64 s20386c1f0[2];
  virtual void  v1(); // _ZN8S20386C12v1Ev
  virtual void  v2(); // _ZN8S20386C12v2Ev
  virtual void  v3(); // _ZN8S20386C12v3Ev
  virtual void  v4(); // _ZN8S20386C12v4Ev
  virtual void  v5(); // _ZN8S20386C12v5Ev
  virtual void  v6(); // _ZN8S20386C12v6Ev
  virtual void  v7(); // _ZN8S20386C12v7Ev
  ~S20386C1(); // tgen
  S20386C1(); // tgen
};
//SIG(1 S20386C1) C1{ VBC2{ v8 v9 v10 v11 v12 v13 v14 v15 v16} v1 v2 v3 v4 v5 v6 v7 FL[2]}


void  S20386C1 ::v1(){vfunc_called(this, "_ZN8S20386C12v1Ev");}
void  S20386C1 ::v2(){vfunc_called(this, "_ZN8S20386C12v2Ev");}
void  S20386C1 ::v3(){vfunc_called(this, "_ZN8S20386C12v3Ev");}
void  S20386C1 ::v4(){vfunc_called(this, "_ZN8S20386C12v4Ev");}
void  S20386C1 ::v5(){vfunc_called(this, "_ZN8S20386C12v5Ev");}
void  S20386C1 ::v6(){vfunc_called(this, "_ZN8S20386C12v6Ev");}
void  S20386C1 ::v7(){vfunc_called(this, "_ZN8S20386C12v7Ev");}
S20386C1 ::~S20386C1(){ note_dtor("S20386C1", this);} // tgen
S20386C1 ::S20386C1(){ note_ctor("S20386C1", this);} // tgen

static void Test_S20386C1()
{
  extern Class_Descriptor cd_S20386C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,6)];
    init_test(&cd_S20386C1, buf);
    S20386C1 *dp, &lv = *(dp=new (buf) S20386C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S20386C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20386C1)");
    check_base_class_offset(lv, (S20386C2*), 0, "S20386C1");
    check_field_offset(lv, s20386c1f0, ABISELECT(8,4), "S20386C1.s20386c1f0");
    test_class_info(&lv, &cd_S20386C1);
    dp->~S20386C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20386C1(Test_S20386C1, "S20386C1", ABISELECT(24,20));

#else // __cplusplus

extern void _ZN8S20386C1C1Ev();
extern void _ZN8S20386C1D1Ev();
Name_Map name_map_S20386C1[] = {
  NSPAIR(_ZN8S20386C1C1Ev),
  NSPAIR(_ZN8S20386C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20386C2;
extern VTBL_ENTRY _ZTI8S20386C2[];
extern  VTBL_ENTRY _ZTV8S20386C2[];
static Base_Class bases_S20386C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20386C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20386C1[];
extern void _ZN8S20386C22v8Ev();
extern void _ZN8S20386C22v9Ev();
extern void _ZN8S20386C23v10Ev();
extern void _ZN8S20386C23v11Ev();
extern void _ZN8S20386C23v12Ev();
extern void _ZN8S20386C23v13Ev();
extern void _ZN8S20386C23v14Ev();
extern void _ZN8S20386C23v15Ev();
extern void _ZN8S20386C23v16Ev();
extern void _ZN8S20386C12v1Ev();
extern void _ZN8S20386C12v2Ev();
extern void _ZN8S20386C12v3Ev();
extern void _ZN8S20386C12v4Ev();
extern void _ZN8S20386C12v5Ev();
extern void _ZN8S20386C12v6Ev();
extern void _ZN8S20386C12v7Ev();
static  VTBL_ENTRY vtc_S20386C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20386C1[0]),
  (VTBL_ENTRY)&_ZN8S20386C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20386C22v9Ev,
  (VTBL_ENTRY)&_ZN8S20386C23v10Ev,
  (VTBL_ENTRY)&_ZN8S20386C23v11Ev,
  (VTBL_ENTRY)&_ZN8S20386C23v12Ev,
  (VTBL_ENTRY)&_ZN8S20386C23v13Ev,
  (VTBL_ENTRY)&_ZN8S20386C23v14Ev,
  (VTBL_ENTRY)&_ZN8S20386C23v15Ev,
  (VTBL_ENTRY)&_ZN8S20386C23v16Ev,
  (VTBL_ENTRY)&_ZN8S20386C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20386C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20386C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20386C12v4Ev,
  (VTBL_ENTRY)&_ZN8S20386C12v5Ev,
  (VTBL_ENTRY)&_ZN8S20386C12v6Ev,
  (VTBL_ENTRY)&_ZN8S20386C12v7Ev,
};
extern VTBL_ENTRY _ZTV8S20386C1[];
static  VTT_ENTRY vtt_S20386C1[] = {
  {&(_ZTV8S20386C1[12]),  12,28},
  {&(_ZTV8S20386C1[12]),  12,28},
};
extern VTBL_ENTRY _ZTI8S20386C1[];
extern  VTBL_ENTRY _ZTV8S20386C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20386C1[];
Class_Descriptor cd_S20386C1 = {  "S20386C1", // class name
  bases_S20386C1, 1,
  &(vtc_S20386C1[0]), // expected_vtbl_contents
  &(vtt_S20386C1[0]), // expected_vtt_contents
  ABISELECT(24,20), // object size
  NSPAIRA(_ZTI8S20386C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20386C1),28, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20386C1),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17552C4_nt  {
  ::S6795C6_nt s17552c4f0;
  void *s17552c4f1;
  void  mf17552c4(); // _ZN11S17552C4_nt9mf17552c4Ev
  virtual  ~S17552C4_nt(); // _ZN11S17552C4_ntD1Ev
  S17552C4_nt(); // tgen
};
//SIG(1 S17552C4_nt) C1{ vd m FC2{ m Fp Fi Fp} Fp}


void  S17552C4_nt ::mf17552c4(){}
 S17552C4_nt ::~S17552C4_nt(){ note_dtor("S17552C4_nt", this);}
S17552C4_nt ::S17552C4_nt(){ note_ctor("S17552C4_nt", this);} // tgen

//skip512 S17552C4_nt

#else // __cplusplus

extern void _ZN11S17552C4_ntC1Ev();
extern void _ZN11S17552C4_ntD1Ev();
Name_Map name_map_S17552C4_nt[] = {
  NSPAIR(_ZN11S17552C4_ntC1Ev),
  NSPAIR(_ZN11S17552C4_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S17552C4_nt[];
extern void _ZN11S17552C4_ntD1Ev();
extern void _ZN11S17552C4_ntD0Ev();
static  VTBL_ENTRY vtc_S17552C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S17552C4_nt[0]),
  (VTBL_ENTRY)&_ZN11S17552C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S17552C4_ntD0Ev,
};
extern VTBL_ENTRY _ZTI11S17552C4_nt[];
VTBL_ENTRY *P__ZTI11S17552C4_nt = _ZTI11S17552C4_nt; 
extern  VTBL_ENTRY _ZTV11S17552C4_nt[];
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17552C1  {
  void *s17552c1f0;
  ::S1672C15_nt s17552c1f1;
  int s17552c1f2[2];
  ::S17552C4_nt s17552c1f3[100];
  char s17552c1f4;
  void  mf17552c1(); // _ZN8S17552C19mf17552c1Ev
};
//SIG(1 S17552C1) C1{ m Fp FC2{ m FC3{ FL[4]}} Fi[2] FC4{ vd m FC5{ m Fp Fi Fp} Fp}[100] Fc}


void  S17552C1 ::mf17552c1(){}

static void Test_S17552C1()
{
  {
    init_simple_test("S17552C1");
    S17552C1 lv;
    check2(sizeof(lv), ABISELECT(4056,2048), "sizeof(S17552C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17552C1)");
    check_field_offset(lv, s17552c1f0, 0, "S17552C1.s17552c1f0");
    check_field_offset(lv, s17552c1f1, ABISELECT(8,4), "S17552C1.s17552c1f1");
    check_field_offset(lv, s17552c1f2, ABISELECT(40,36), "S17552C1.s17552c1f2");
    check_field_offset(lv, s17552c1f3, ABISELECT(48,44), "S17552C1.s17552c1f3");
    check_field_offset(lv, s17552c1f4, ABISELECT(4048,2044), "S17552C1.s17552c1f4");
  }
}
static Arrange_To_Call_Me vS17552C1(Test_S17552C1, "S17552C1", ABISELECT(4056,2048));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9356C2  {
  ::S5266C19_nt s9356c2f0;
  int s9356c2f1[2];
  char s9356c2f2;
  virtual  ~S9356C2(); // _ZN7S9356C2D1Ev
  virtual void  v3(); // _ZN7S9356C22v3Ev
  virtual void  v4(); // _ZN7S9356C22v4Ev
  virtual void  v5(); // _ZN7S9356C22v5Ev
  S9356C2(); // tgen
};
//SIG(-1 S9356C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9356C2 ::~S9356C2(){ note_dtor("S9356C2", this);}
void  S9356C2 ::v3(){vfunc_called(this, "_ZN7S9356C22v3Ev");}
void  S9356C2 ::v4(){vfunc_called(this, "_ZN7S9356C22v4Ev");}
void  S9356C2 ::v5(){vfunc_called(this, "_ZN7S9356C22v5Ev");}
S9356C2 ::S9356C2(){ note_ctor("S9356C2", this);} // tgen

static void Test_S9356C2()
{
  extern Class_Descriptor cd_S9356C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9356C2, buf);
    S9356C2 *dp, &lv = *(dp=new (buf) S9356C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9356C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9356C2)");
    check_field_offset(lv, s9356c2f0, ABISELECT(8,4), "S9356C2.s9356c2f0");
    check_field_offset(lv, s9356c2f1, ABISELECT(24,16), "S9356C2.s9356c2f1");
    check_field_offset(lv, s9356c2f2, ABISELECT(32,24), "S9356C2.s9356c2f2");
    test_class_info(&lv, &cd_S9356C2);
    dp->~S9356C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9356C2(Test_S9356C2, "S9356C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9356C2C1Ev();
extern void _ZN7S9356C2D1Ev();
Name_Map name_map_S9356C2[] = {
  NSPAIR(_ZN7S9356C2C1Ev),
  NSPAIR(_ZN7S9356C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9356C2[];
extern void _ZN7S9356C2D1Ev();
extern void _ZN7S9356C2D0Ev();
extern void _ZN7S9356C22v3Ev();
extern void _ZN7S9356C22v4Ev();
extern void _ZN7S9356C22v5Ev();
static  VTBL_ENTRY vtc_S9356C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9356C2[0]),
  (VTBL_ENTRY)&_ZN7S9356C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9356C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9356C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9356C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9356C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S9356C2[];
extern  VTBL_ENTRY _ZTV7S9356C2[];
Class_Descriptor cd_S9356C2 = {  "S9356C2", // class name
  0,0,//no base classes
  &(vtc_S9356C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9356C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9356C2),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9356C1  : S9356C2 {
  void *s9356c1f0;
  ::S5266C19_nt s9356c1f1;
  int s9356c1f2;
  virtual  ~S9356C1(); // _ZN7S9356C1D1Ev
  virtual void  v1(); // _ZN7S9356C12v1Ev
  virtual void  v2(); // _ZN7S9356C12v2Ev
  S9356C1(); // tgen
};
//SIG(1 S9356C1) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 Fp FC3 Fi}


 S9356C1 ::~S9356C1(){ note_dtor("S9356C1", this);}
void  S9356C1 ::v1(){vfunc_called(this, "_ZN7S9356C12v1Ev");}
void  S9356C1 ::v2(){vfunc_called(this, "_ZN7S9356C12v2Ev");}
S9356C1 ::S9356C1(){ note_ctor("S9356C1", this);} // tgen

static void Test_S9356C1()
{
  extern Class_Descriptor cd_S9356C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,13)];
    init_test(&cd_S9356C1, buf);
    S9356C1 *dp, &lv = *(dp=new (buf) S9356C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,48), "sizeof(S9356C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9356C1)");
    check_base_class_offset(lv, (S9356C2*), 0, "S9356C1");
    check_field_offset(lv, s9356c1f0, ABISELECT(40,28), "S9356C1.s9356c1f0");
    check_field_offset(lv, s9356c1f1, ABISELECT(48,32), "S9356C1.s9356c1f1");
    check_field_offset(lv, s9356c1f2, ABISELECT(64,44), "S9356C1.s9356c1f2");
    test_class_info(&lv, &cd_S9356C1);
    dp->~S9356C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9356C1(Test_S9356C1, "S9356C1", ABISELECT(72,48));

#else // __cplusplus

extern void _ZN7S9356C1C1Ev();
extern void _ZN7S9356C1D1Ev();
Name_Map name_map_S9356C1[] = {
  NSPAIR(_ZN7S9356C1C1Ev),
  NSPAIR(_ZN7S9356C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9356C2;
extern VTBL_ENTRY _ZTI7S9356C2[];
extern  VTBL_ENTRY _ZTV7S9356C2[];
static Base_Class bases_S9356C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9356C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9356C1[];
extern void _ZN7S9356C1D1Ev();
extern void _ZN7S9356C1D0Ev();
extern void _ZN7S9356C22v3Ev();
extern void _ZN7S9356C22v4Ev();
extern void _ZN7S9356C22v5Ev();
extern void _ZN7S9356C12v1Ev();
extern void _ZN7S9356C12v2Ev();
static  VTBL_ENTRY vtc_S9356C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9356C1[0]),
  (VTBL_ENTRY)&_ZN7S9356C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9356C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9356C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9356C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9356C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9356C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9356C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9356C1[];
extern  VTBL_ENTRY _ZTV7S9356C1[];
Class_Descriptor cd_S9356C1 = {  "S9356C1", // class name
  bases_S9356C1, 1,
  &(vtc_S9356C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,48), // object size
  NSPAIRA(_ZTI7S9356C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9356C1),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12447C2_nt  {
  int s12447c2f0[2];
};
//SIG(-1 S12447C2_nt) C1{ Fi[2]}



//skip512 S12447C2_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12447C3_nt  {
  int s12447c3f0;
};
//SIG(-1 S12447C3_nt) C1{ Fi}



//skip512 S12447C3_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12447C1  {
  int s12447c1f0;
  ::S12447C2_nt s12447c1f1;
  void *s12447c1f2;
  ::S12447C3_nt s12447c1f3;
  void *s12447c1f4;
  int s12447c1f5;
  void *s12447c1f6[2];
  int s12447c1f7[2];
  void *s12447c1f8[2];
  int s12447c1f9;
  void *s12447c1f10;
  int s12447c1f11[2];
  void *s12447c1f12;
};
//SIG(1 S12447C1) C1{ Fi FC2{ Fi[2]} Fp FC3{ Fi} Fp Fi Fp[2] Fi[2] Fp[2] Fi Fp Fi[2] Fp}



static void Test_S12447C1()
{
  {
    init_simple_test("S12447C1");
    S12447C1 lv;
    check2(sizeof(lv), ABISELECT(120,72), "sizeof(S12447C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12447C1)");
    check_field_offset(lv, s12447c1f0, 0, "S12447C1.s12447c1f0");
    check_field_offset(lv, s12447c1f1, 4, "S12447C1.s12447c1f1");
    check_field_offset(lv, s12447c1f2, ABISELECT(16,12), "S12447C1.s12447c1f2");
    check_field_offset(lv, s12447c1f3, ABISELECT(24,16), "S12447C1.s12447c1f3");
    check_field_offset(lv, s12447c1f4, ABISELECT(32,20), "S12447C1.s12447c1f4");
    check_field_offset(lv, s12447c1f5, ABISELECT(40,24), "S12447C1.s12447c1f5");
    check_field_offset(lv, s12447c1f6, ABISELECT(48,28), "S12447C1.s12447c1f6");
    check_field_offset(lv, s12447c1f7, ABISELECT(64,36), "S12447C1.s12447c1f7");
    check_field_offset(lv, s12447c1f8, ABISELECT(72,44), "S12447C1.s12447c1f8");
    check_field_offset(lv, s12447c1f9, ABISELECT(88,52), "S12447C1.s12447c1f9");
    check_field_offset(lv, s12447c1f10, ABISELECT(96,56), "S12447C1.s12447c1f10");
    check_field_offset(lv, s12447c1f11, ABISELECT(104,60), "S12447C1.s12447c1f11");
    check_field_offset(lv, s12447c1f12, ABISELECT(112,68), "S12447C1.s12447c1f12");
  }
}
static Arrange_To_Call_Me vS12447C1(Test_S12447C1, "S12447C1", ABISELECT(120,72));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9970C2  {
  virtual  ~S9970C2(); // _ZN7S9970C2D1Ev
  virtual void  v5(); // _ZN7S9970C22v5Ev
  virtual void  v6(); // _ZN7S9970C22v6Ev
  virtual void  v7(); // _ZN7S9970C22v7Ev
  virtual void  v8(); // _ZN7S9970C22v8Ev
  S9970C2(); // tgen
};
//SIG(-1 S9970C2) C1{ vd v1 v2 v3 v4}


 S9970C2 ::~S9970C2(){ note_dtor("S9970C2", this);}
void  S9970C2 ::v5(){vfunc_called(this, "_ZN7S9970C22v5Ev");}
void  S9970C2 ::v6(){vfunc_called(this, "_ZN7S9970C22v6Ev");}
void  S9970C2 ::v7(){vfunc_called(this, "_ZN7S9970C22v7Ev");}
void  S9970C2 ::v8(){vfunc_called(this, "_ZN7S9970C22v8Ev");}
S9970C2 ::S9970C2(){ note_ctor("S9970C2", this);} // tgen

static void Test_S9970C2()
{
  extern Class_Descriptor cd_S9970C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S9970C2, buf);
    S9970C2 *dp, &lv = *(dp=new (buf) S9970C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S9970C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9970C2)");
    test_class_info(&lv, &cd_S9970C2);
    dp->~S9970C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9970C2(Test_S9970C2, "S9970C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S9970C2C1Ev();
extern void _ZN7S9970C2D1Ev();
Name_Map name_map_S9970C2[] = {
  NSPAIR(_ZN7S9970C2C1Ev),
  NSPAIR(_ZN7S9970C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9970C2[];
extern void _ZN7S9970C2D1Ev();
extern void _ZN7S9970C2D0Ev();
extern void _ZN7S9970C22v5Ev();
extern void _ZN7S9970C22v6Ev();
extern void _ZN7S9970C22v7Ev();
extern void _ZN7S9970C22v8Ev();
static  VTBL_ENTRY vtc_S9970C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9970C2[0]),
  (VTBL_ENTRY)&_ZN7S9970C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9970C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9970C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9970C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9970C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9970C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S9970C2[];
extern  VTBL_ENTRY _ZTV7S9970C2[];
Class_Descriptor cd_S9970C2 = {  "S9970C2", // class name
  0,0,//no base classes
  &(vtc_S9970C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S9970C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9970C2),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9970C1  : S9970C2 {
  void *s9970c1f0;
  ::S3765C5_nt s9970c1f1;
  int s9970c1f2[6];
  char s9970c1f3;
  int s9970c1f4;
  virtual  ~S9970C1(); // _ZN7S9970C1D1Ev
  virtual void  v1(); // _ZN7S9970C12v1Ev
  virtual void  v2(); // _ZN7S9970C12v2Ev
  virtual void  v3(); // _ZN7S9970C12v3Ev
  virtual void  v4(); // _ZN7S9970C12v4Ev
  S9970C1(); // tgen
};
//SIG(1 S9970C1) C1{ BC2{ vd v5 v6 v7 v8} vd v1 v2 v3 v4 Fp FC3{ m Fp[2]} Fi[6] Fc Fi}


 S9970C1 ::~S9970C1(){ note_dtor("S9970C1", this);}
void  S9970C1 ::v1(){vfunc_called(this, "_ZN7S9970C12v1Ev");}
void  S9970C1 ::v2(){vfunc_called(this, "_ZN7S9970C12v2Ev");}
void  S9970C1 ::v3(){vfunc_called(this, "_ZN7S9970C12v3Ev");}
void  S9970C1 ::v4(){vfunc_called(this, "_ZN7S9970C12v4Ev");}
S9970C1 ::S9970C1(){ note_ctor("S9970C1", this);} // tgen

static void Test_S9970C1()
{
  extern Class_Descriptor cd_S9970C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,13)];
    init_test(&cd_S9970C1, buf);
    S9970C1 *dp, &lv = *(dp=new (buf) S9970C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,48), "sizeof(S9970C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9970C1)");
    check_base_class_offset(lv, (S9970C2*), 0, "S9970C1");
    check_field_offset(lv, s9970c1f0, ABISELECT(8,4), "S9970C1.s9970c1f0");
    check_field_offset(lv, s9970c1f1, ABISELECT(16,8), "S9970C1.s9970c1f1");
    check_field_offset(lv, s9970c1f2, ABISELECT(32,16), "S9970C1.s9970c1f2");
    check_field_offset(lv, s9970c1f3, ABISELECT(56,40), "S9970C1.s9970c1f3");
    check_field_offset(lv, s9970c1f4, ABISELECT(60,44), "S9970C1.s9970c1f4");
    test_class_info(&lv, &cd_S9970C1);
    dp->~S9970C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9970C1(Test_S9970C1, "S9970C1", ABISELECT(64,48));

#else // __cplusplus

extern void _ZN7S9970C1C1Ev();
extern void _ZN7S9970C1D1Ev();
Name_Map name_map_S9970C1[] = {
  NSPAIR(_ZN7S9970C1C1Ev),
  NSPAIR(_ZN7S9970C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9970C2;
extern VTBL_ENTRY _ZTI7S9970C2[];
extern  VTBL_ENTRY _ZTV7S9970C2[];
static Base_Class bases_S9970C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9970C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9970C1[];
extern void _ZN7S9970C1D1Ev();
extern void _ZN7S9970C1D0Ev();
extern void _ZN7S9970C22v5Ev();
extern void _ZN7S9970C22v6Ev();
extern void _ZN7S9970C22v7Ev();
extern void _ZN7S9970C22v8Ev();
extern void _ZN7S9970C12v1Ev();
extern void _ZN7S9970C12v2Ev();
extern void _ZN7S9970C12v3Ev();
extern void _ZN7S9970C12v4Ev();
static  VTBL_ENTRY vtc_S9970C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9970C1[0]),
  (VTBL_ENTRY)&_ZN7S9970C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9970C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9970C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9970C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9970C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9970C22v8Ev,
  (VTBL_ENTRY)&_ZN7S9970C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9970C12v2Ev,
  (VTBL_ENTRY)&_ZN7S9970C12v3Ev,
  (VTBL_ENTRY)&_ZN7S9970C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S9970C1[];
extern  VTBL_ENTRY _ZTV7S9970C1[];
Class_Descriptor cd_S9970C1 = {  "S9970C1", // class name
  bases_S9970C1, 1,
  &(vtc_S9970C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,48), // object size
  NSPAIRA(_ZTI7S9970C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9970C1),12, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15837C2  {
  ::S5266C19_nt s15837c2f0;
  int s15837c2f1;
  ::S5266C19_nt s15837c2f2;
  ::S5266C19_nt s15837c2f3;
  ::S5266C19_nt s15837c2f4;
  ::S21732C5_nt s15837c2f5;
  char s15837c2f6;
  void  mf15837c2(); // _ZN8S15837C29mf15837c2Ev
};
//SIG(-1 S15837C2) C1{ m FC2{ m Fp Fi FC3{ m}} Fi FC2 FC2 FC2 FC4{ m Fi[5]} Fc}


void  S15837C2 ::mf15837c2(){}

static void Test_S15837C2()
{
  {
    init_simple_test("S15837C2");
    S15837C2 lv;
    check2(sizeof(lv), ABISELECT(96,76), "sizeof(S15837C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15837C2)");
    check_field_offset(lv, s15837c2f0, 0, "S15837C2.s15837c2f0");
    check_field_offset(lv, s15837c2f1, ABISELECT(16,12), "S15837C2.s15837c2f1");
    check_field_offset(lv, s15837c2f2, ABISELECT(24,16), "S15837C2.s15837c2f2");
    check_field_offset(lv, s15837c2f3, ABISELECT(40,28), "S15837C2.s15837c2f3");
    check_field_offset(lv, s15837c2f4, ABISELECT(56,40), "S15837C2.s15837c2f4");
    check_field_offset(lv, s15837c2f5, ABISELECT(72,52), "S15837C2.s15837c2f5");
    check_field_offset(lv, s15837c2f6, ABISELECT(92,72), "S15837C2.s15837c2f6");
  }
}
static Arrange_To_Call_Me vS15837C2(Test_S15837C2, "S15837C2", ABISELECT(96,76));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15837C1  {
  ::S15837C2 s15837c1f0;
  int s15837c1f1;
  void  mf15837c1(); // _ZN8S15837C19mf15837c1Ev
};
//SIG(1 S15837C1) C1{ m FC2{ m FC3{ m Fp Fi FC4{ m}} Fi FC3 FC3 FC3 FC5{ m Fi[5]} Fc} Fi}


void  S15837C1 ::mf15837c1(){}

static void Test_S15837C1()
{
  {
    init_simple_test("S15837C1");
    S15837C1 lv;
    check2(sizeof(lv), ABISELECT(104,80), "sizeof(S15837C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15837C1)");
    check_field_offset(lv, s15837c1f0, 0, "S15837C1.s15837c1f0");
    check_field_offset(lv, s15837c1f1, ABISELECT(96,76), "S15837C1.s15837c1f1");
  }
}
static Arrange_To_Call_Me vS15837C1(Test_S15837C1, "S15837C1", ABISELECT(104,80));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19690C3  : S3589C3 {
  __tsi64 s19690c3f0;
  ::S3589C4 s19690c3f1;
  virtual  ~S19690C3(); // _ZN8S19690C3D1Ev
  S19690C3(); // tgen
};
//SIG(-1 S19690C3) C1{ BC2{ vd m Fc FU3{ m Fc[6]}} vd FL FU3}


 S19690C3 ::~S19690C3(){ note_dtor("S19690C3", this);}
S19690C3 ::S19690C3(){ note_ctor("S19690C3", this);} // tgen

static void Test_S19690C3()
{
  extern Class_Descriptor cd_S19690C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,8)];
    init_test(&cd_S19690C3, buf);
    S19690C3 *dp, &lv = *(dp=new (buf) S19690C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,28), "sizeof(S19690C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19690C3)");
    check_base_class_offset(lv, (S3589C3*), 0, "S19690C3");
    check_field_offset(lv, s19690c3f0, ABISELECT(16,12), "S19690C3.s19690c3f0");
    check_field_offset(lv, s19690c3f1, ABISELECT(24,20), "S19690C3.s19690c3f1");
    test_class_info(&lv, &cd_S19690C3);
    dp->~S19690C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19690C3(Test_S19690C3, "S19690C3", ABISELECT(32,28));

#else // __cplusplus

extern void _ZN8S19690C3C1Ev();
extern void _ZN8S19690C3D1Ev();
Name_Map name_map_S19690C3[] = {
  NSPAIR(_ZN8S19690C3C1Ev),
  NSPAIR(_ZN8S19690C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
static Base_Class bases_S19690C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3589C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19690C3[];
extern void _ZN8S19690C3D1Ev();
extern void _ZN8S19690C3D0Ev();
static  VTBL_ENTRY vtc_S19690C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19690C3[0]),
  (VTBL_ENTRY)&_ZN8S19690C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19690C3D0Ev,
};
extern VTBL_ENTRY _ZTI8S19690C3[];
extern  VTBL_ENTRY _ZTV8S19690C3[];
Class_Descriptor cd_S19690C3 = {  "S19690C3", // class name
  bases_S19690C3, 1,
  &(vtc_S19690C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,28), // object size
  NSPAIRA(_ZTI8S19690C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19690C3),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19690C1  : virtual S3589C13_nt , virtual S19690C3 {
  void *s19690c1f0;
  __tsi64 s19690c1f1;
  virtual  ~S19690C1(); // _ZN8S19690C1D2Ev
  S19690C1(); // tgen
};
//SIG(1 S19690C1) C1{ VBC2{ m FD} VBC3{ BC4{ vd m Fc FU5{ m Fc[6]}} vd FL FU5} vd Fp FL}


 S19690C1 ::~S19690C1(){ note_dtor("S19690C1", this);}
S19690C1 ::S19690C1(){ note_ctor("S19690C1", this);} // tgen

static void Test_S19690C1()
{
  extern Class_Descriptor cd_S19690C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,15)];
    init_test(&cd_S19690C1, buf);
    S19690C1 *dp, &lv = *(dp=new (buf) S19690C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,56), "sizeof(S19690C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19690C1)");
    check_base_class_offset(lv, (S3589C13_nt*), ABISELECT(32,16), "S19690C1");
    check_base_class_offset(lv, (S3589C3*)(S19690C3*), ABISELECT(48,28), "S19690C1");
    check_base_class_offset(lv, (S19690C3*), ABISELECT(48,28), "S19690C1");
    check_field_offset(lv, s19690c1f0, ABISELECT(8,4), "S19690C1.s19690c1f0");
    check_field_offset(lv, s19690c1f1, ABISELECT(16,8), "S19690C1.s19690c1f1");
    test_class_info(&lv, &cd_S19690C1);
    dp->~S19690C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19690C1(Test_S19690C1, "S19690C1", ABISELECT(80,56));

#else // __cplusplus

extern void _ZN8S19690C1C1Ev();
extern void _ZN8S19690C1D2Ev();
Name_Map name_map_S19690C1[] = {
  NSPAIR(_ZN8S19690C1C1Ev),
  NSPAIR(_ZN8S19690C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3589C13_nt;
extern VTBL_ENTRY _ZTI11S3589C13_nt[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S19690C3;
extern VTBL_ENTRY _ZTI8S19690C3[];
extern  VTBL_ENTRY _ZTV8S19690C3[];
static Base_Class bases_S19690C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3589C13_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3589C3,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19690C3,    ABISELECT(48,28), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19690C1[];
extern void _ZN8S19690C1D1Ev();
extern void _ZN8S19690C1D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19690C1D1Ev,_ZTv0_n12_N8S19690C1D1Ev)();
extern void ABISELECT(_ZThn48_N8S19690C1D1Ev,_ZThn28_N8S19690C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19690C1D0Ev,_ZTv0_n12_N8S19690C1D0Ev)();
extern void ABISELECT(_ZThn48_N8S19690C1D0Ev,_ZThn28_N8S19690C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19690C1[] = {
  ABISELECT(48,28),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19690C1[0]),
  (VTBL_ENTRY)&_ZN8S19690C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19690C1D0Ev,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19690C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19690C1D1Ev,_ZTv0_n12_N8S19690C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19690C1D0Ev,_ZTv0_n12_N8S19690C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19690C1[];
static  VTT_ENTRY vtt_S19690C1[] = {
  {&(_ZTV8S19690C1[4]),  4,11},
  {&(_ZTV8S19690C1[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S19690C1[];
extern  VTBL_ENTRY _ZTV8S19690C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19690C1[];
static VTBL_ENTRY alt_thunk_names128[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19690C1D0Ev,_ZTv0_n12_N8S19690C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19690C1D0Ev,_ZThn28_N8S19690C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19690C1D1Ev,_ZTv0_n12_N8S19690C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19690C1D1Ev,_ZThn28_N8S19690C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19690C1 = {  "S19690C1", // class name
  bases_S19690C1, 3,
  &(vtc_S19690C1[0]), // expected_vtbl_contents
  &(vtt_S19690C1[0]), // expected_vtt_contents
  ABISELECT(80,56), // object size
  NSPAIRA(_ZTI8S19690C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19690C1),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19690C1),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names128,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7367C3  : S3589C3 {
  __tsi64 s7367c3f0;
  ::S3589C4 s7367c3f1;
  virtual  ~S7367C3(); // _ZN7S7367C3D1Ev
  S7367C3(); // tgen
};
//SIG(-1 S7367C3) C1{ BC2{ vd m Fc FU3{ m Fc[6]}} vd FL FU3}


 S7367C3 ::~S7367C3(){ note_dtor("S7367C3", this);}
S7367C3 ::S7367C3(){ note_ctor("S7367C3", this);} // tgen

static void Test_S7367C3()
{
  extern Class_Descriptor cd_S7367C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,8)];
    init_test(&cd_S7367C3, buf);
    S7367C3 *dp, &lv = *(dp=new (buf) S7367C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,28), "sizeof(S7367C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7367C3)");
    check_base_class_offset(lv, (S3589C3*), 0, "S7367C3");
    check_field_offset(lv, s7367c3f0, ABISELECT(16,12), "S7367C3.s7367c3f0");
    check_field_offset(lv, s7367c3f1, ABISELECT(24,20), "S7367C3.s7367c3f1");
    test_class_info(&lv, &cd_S7367C3);
    dp->~S7367C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7367C3(Test_S7367C3, "S7367C3", ABISELECT(32,28));

#else // __cplusplus

extern void _ZN7S7367C3C1Ev();
extern void _ZN7S7367C3D1Ev();
Name_Map name_map_S7367C3[] = {
  NSPAIR(_ZN7S7367C3C1Ev),
  NSPAIR(_ZN7S7367C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
static Base_Class bases_S7367C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3589C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7367C3[];
extern void _ZN7S7367C3D1Ev();
extern void _ZN7S7367C3D0Ev();
static  VTBL_ENTRY vtc_S7367C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7367C3[0]),
  (VTBL_ENTRY)&_ZN7S7367C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7367C3D0Ev,
};
extern VTBL_ENTRY _ZTI7S7367C3[];
extern  VTBL_ENTRY _ZTV7S7367C3[];
Class_Descriptor cd_S7367C3 = {  "S7367C3", // class name
  bases_S7367C3, 1,
  &(vtc_S7367C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,28), // object size
  NSPAIRA(_ZTI7S7367C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7367C3),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7367C2  : virtual S7367C3 , virtual S3589C3 {
  virtual  ~S7367C2(); // _ZN7S7367C2D2Ev
  S7367C2(); // tgen
};
//SIG(-1 S7367C2) C1{ VBC2{ BC3{ vd m Fc FU4{ m Fc[6]}} vd FL FU4} VBC3 vd}


 S7367C2 ::~S7367C2(){ note_dtor("S7367C2", this);}
S7367C2 ::S7367C2(){ note_ctor("S7367C2", this);} // tgen

static void Test_S7367C2()
{
  extern Class_Descriptor cd_S7367C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,12)];
    init_test(&cd_S7367C2, buf);
    S7367C2 *dp, &lv = *(dp=new (buf) S7367C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,44), "sizeof(S7367C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7367C2)");
    check_base_class_offset(lv, (S3589C3*)(S7367C3*), ABISELECT(8,4), "S7367C2");
    check_base_class_offset(lv, (S7367C3*), ABISELECT(8,4), "S7367C2");
    /*is_ambiguous_... S7367C2::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*), ABISELECT(40,32), "S7367C2");
    test_class_info(&lv, &cd_S7367C2);
    dp->~S7367C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7367C2(Test_S7367C2, "S7367C2", ABISELECT(56,44));

#else // __cplusplus

extern void _ZN7S7367C2C1Ev();
extern void _ZN7S7367C2D2Ev();
Name_Map name_map_S7367C2[] = {
  NSPAIR(_ZN7S7367C2C1Ev),
  NSPAIR(_ZN7S7367C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S7367C3;
extern VTBL_ENTRY _ZTI7S7367C3[];
extern  VTBL_ENTRY _ZTV7S7367C3[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
static Base_Class bases_S7367C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3589C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7367C3,    ABISELECT(8,4), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3589C3,    ABISELECT(40,32), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7367C2[];
extern void _ZN7S7367C2D1Ev();
extern void _ZN7S7367C2D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S7367C2D1Ev,_ZTv0_n12_N7S7367C2D1Ev)();
extern void ABISELECT(_ZThn8_N7S7367C2D1Ev,_ZThn4_N7S7367C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7367C2D0Ev,_ZTv0_n12_N7S7367C2D0Ev)();
extern void ABISELECT(_ZThn8_N7S7367C2D0Ev,_ZThn4_N7S7367C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7367C2D1Ev,_ZTv0_n12_N7S7367C2D1Ev)();
extern void ABISELECT(_ZThn40_N7S7367C2D1Ev,_ZThn32_N7S7367C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7367C2D0Ev,_ZTv0_n12_N7S7367C2D0Ev)();
extern void ABISELECT(_ZThn40_N7S7367C2D0Ev,_ZThn32_N7S7367C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7367C2[] = {
  ABISELECT(40,32),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7367C2[0]),
  (VTBL_ENTRY)&_ZN7S7367C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7367C2D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7367C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7367C2D1Ev,_ZTv0_n12_N7S7367C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7367C2D0Ev,_ZTv0_n12_N7S7367C2D0Ev),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI7S7367C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7367C2D1Ev,_ZTv0_n12_N7S7367C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7367C2D0Ev,_ZTv0_n12_N7S7367C2D0Ev),
};
extern VTBL_ENTRY _ZTV7S7367C2[];
static  VTT_ENTRY vtt_S7367C2[] = {
  {&(_ZTV7S7367C2[4]),  4,16},
  {&(_ZTV7S7367C2[9]),  9,16},
  {&(_ZTV7S7367C2[14]),  14,16},
};
extern VTBL_ENTRY _ZTI7S7367C2[];
extern  VTBL_ENTRY _ZTV7S7367C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7367C2[];
static VTBL_ENTRY alt_thunk_names129[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7367C2D0Ev,_ZTv0_n12_N7S7367C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7367C2D0Ev,_ZThn32_N7S7367C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7367C2D0Ev,_ZThn4_N7S7367C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7367C2D1Ev,_ZTv0_n12_N7S7367C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7367C2D1Ev,_ZThn32_N7S7367C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7367C2D1Ev,_ZThn4_N7S7367C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7367C2 = {  "S7367C2", // class name
  bases_S7367C2, 3,
  &(vtc_S7367C2[0]), // expected_vtbl_contents
  &(vtt_S7367C2[0]), // expected_vtt_contents
  ABISELECT(56,44), // object size
  NSPAIRA(_ZTI7S7367C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7367C2),16, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7367C2),3, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names129,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7367C1  : S7367C2 {
  int s7367c1f0;
  virtual  ~S7367C1(); // _ZN7S7367C1D2Ev
  S7367C1(); // tgen
};
//SIG(1 S7367C1) C1{ BC2{ VBC3{ BC4{ vd m Fc FU5{ m Fc[6]}} vd FL FU5} VBC4 vd} vd Fi}


 S7367C1 ::~S7367C1(){ note_dtor("S7367C1", this);}
S7367C1 ::S7367C1(){ note_ctor("S7367C1", this);} // tgen

static void Test_S7367C1()
{
  extern Class_Descriptor cd_S7367C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,13)];
    init_test(&cd_S7367C1, buf);
    S7367C1 *dp, &lv = *(dp=new (buf) S7367C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,48), "sizeof(S7367C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7367C1)");
    check_base_class_offset(lv, (S3589C3*)(S7367C3*), ABISELECT(16,8), "S7367C1");
    check_base_class_offset(lv, (S7367C3*)(S7367C2*), ABISELECT(16,8), "S7367C1");
    /*is_ambiguous_... S7367C2::S3589C3 */ AMB_check_base_class_offset(lv, (S3589C3*)(S7367C2*), ABISELECT(48,36), "S7367C1");
    check_base_class_offset(lv, (S7367C2*), 0, "S7367C1");
    check_field_offset(lv, s7367c1f0, ABISELECT(8,4), "S7367C1.s7367c1f0");
    test_class_info(&lv, &cd_S7367C1);
    dp->~S7367C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7367C1(Test_S7367C1, "S7367C1", ABISELECT(64,48));

#else // __cplusplus

extern void _ZN7S7367C1C1Ev();
extern void _ZN7S7367C1D2Ev();
Name_Map name_map_S7367C1[] = {
  NSPAIR(_ZN7S7367C1C1Ev),
  NSPAIR(_ZN7S7367C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S7367C3;
extern VTBL_ENTRY _ZTI7S7367C3[];
extern  VTBL_ENTRY _ZTV7S7367C3[];
extern Class_Descriptor cd_S3589C3;
extern VTBL_ENTRY _ZTI7S3589C3[];
extern  VTBL_ENTRY _ZTV7S3589C3[];
extern Class_Descriptor cd_S7367C2;
extern VTBL_ENTRY _ZTI7S7367C2[];
extern  VTBL_ENTRY _ZTV7S7367C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7367C2[];
static Base_Class bases_S7367C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3589C3,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7367C3,    ABISELECT(16,8), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3589C3,    ABISELECT(48,36), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7367C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7367C1[];
extern void _ZN7S7367C1D1Ev();
extern void _ZN7S7367C1D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S7367C1D1Ev,_ZTv0_n12_N7S7367C1D1Ev)();
extern void ABISELECT(_ZThn16_N7S7367C1D1Ev,_ZThn8_N7S7367C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7367C1D0Ev,_ZTv0_n12_N7S7367C1D0Ev)();
extern void ABISELECT(_ZThn16_N7S7367C1D0Ev,_ZThn8_N7S7367C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7367C1D1Ev,_ZTv0_n12_N7S7367C1D1Ev)();
extern void ABISELECT(_ZThn48_N7S7367C1D1Ev,_ZThn36_N7S7367C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7367C1D0Ev,_ZTv0_n12_N7S7367C1D0Ev)();
extern void ABISELECT(_ZThn48_N7S7367C1D0Ev,_ZThn36_N7S7367C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7367C1[] = {
  ABISELECT(48,36),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7367C1[0]),
  (VTBL_ENTRY)&_ZN7S7367C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7367C1D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7367C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7367C1D1Ev,_ZTv0_n12_N7S7367C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7367C1D0Ev,_ZTv0_n12_N7S7367C1D0Ev),
  ABISELECT(-48,-36),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI7S7367C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7367C1D1Ev,_ZTv0_n12_N7S7367C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7367C1D0Ev,_ZTv0_n12_N7S7367C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S7367C1[];
extern void _ZN7S7367C2D1Ev();
extern void _ZN7S7367C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7367C2__7S7367C1[] = {
  ABISELECT(48,36),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7367C2[0]),
  (VTBL_ENTRY)&_ZN7S7367C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7367C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7367C2D1Ev,_ZTv0_n12_N7S7367C2D1Ev)();
extern void ABISELECT(_ZThn16_N7S7367C2D1Ev,_ZThn8_N7S7367C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7367C2D0Ev,_ZTv0_n12_N7S7367C2D0Ev)();
extern void ABISELECT(_ZThn16_N7S7367C2D0Ev,_ZThn8_N7S7367C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7367C3__7S7367C2__7S7367C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7367C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7367C2D1Ev,_ZTv0_n12_N7S7367C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7367C2D0Ev,_ZTv0_n12_N7S7367C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7367C2D1Ev,_ZTv0_n12_N7S7367C2D1Ev)();
extern void ABISELECT(_ZThn48_N7S7367C2D1Ev,_ZThn36_N7S7367C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7367C2D0Ev,_ZTv0_n12_N7S7367C2D0Ev)();
extern void ABISELECT(_ZThn48_N7S7367C2D0Ev,_ZThn36_N7S7367C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3589C3__A1__7S7367C2__7S7367C1[] = {
  ABISELECT(-48,-36),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI7S7367C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7367C2D1Ev,_ZTv0_n12_N7S7367C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7367C2D0Ev,_ZTv0_n12_N7S7367C2D0Ev),
};
static  VTT_ENTRY vtt_S7367C1[] = {
  {&(_ZTV7S7367C1[4]),  4,16},
  {&(_tg__ZTV7S7367C2__7S7367C1[4]),  4,6},
  {&(_tg__ZTV7S7367C3__7S7367C2__7S7367C1[3]),  3,5},
  {&(_tg__ZTV7S3589C3__A1__7S7367C2__7S7367C1[3]),  3,5},
  {&(_ZTV7S7367C1[9]),  9,16},
  {&(_ZTV7S7367C1[14]),  14,16},
};
extern VTBL_ENTRY _ZTI7S7367C1[];
extern  VTBL_ENTRY _ZTV7S7367C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7367C1[];
static VTBL_ENTRY alt_thunk_names130[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7367C2D0Ev,_ZTv0_n12_N7S7367C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7367C2D0Ev,_ZThn36_N7S7367C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7367C2D0Ev,_ZThn8_N7S7367C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7367C2D1Ev,_ZTv0_n12_N7S7367C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7367C2D1Ev,_ZThn36_N7S7367C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7367C2D1Ev,_ZThn8_N7S7367C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7367C1D0Ev,_ZTv0_n12_N7S7367C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7367C1D0Ev,_ZThn36_N7S7367C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7367C1D0Ev,_ZThn8_N7S7367C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7367C1D1Ev,_ZTv0_n12_N7S7367C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7367C1D1Ev,_ZThn36_N7S7367C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7367C1D1Ev,_ZThn8_N7S7367C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7367C1 = {  "S7367C1", // class name
  bases_S7367C1, 4,
  &(vtc_S7367C1[0]), // expected_vtbl_contents
  &(vtt_S7367C1[0]), // expected_vtt_contents
  ABISELECT(64,48), // object size
  NSPAIRA(_ZTI7S7367C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7367C1),16, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7367C1),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names130,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17467C1  {
  void *s17467c1f0;
  char s17467c1f1[2];
  int s17467c1f2[3];
  ::S5266C19_nt s17467c1f3;
  char s17467c1f4;
  int s17467c1f5;
  void *s17467c1f6;
  char s17467c1f7[2];
  void *s17467c1f8;
  char s17467c1f9;
  void  mf17467c1(); // _ZN8S17467C19mf17467c1Ev
};
//SIG(1 S17467C1) C1{ m Fp Fc[2] Fi[3] FC2{ m Fp Fi FC3{ m}} Fc Fi Fp Fc[2] Fp Fc}


void  S17467C1 ::mf17467c1(){}

static void Test_S17467C1()
{
  {
    init_simple_test("S17467C1");
    S17467C1 lv;
    check2(sizeof(lv), ABISELECT(80,56), "sizeof(S17467C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17467C1)");
    check_field_offset(lv, s17467c1f0, 0, "S17467C1.s17467c1f0");
    check_field_offset(lv, s17467c1f1, ABISELECT(8,4), "S17467C1.s17467c1f1");
    check_field_offset(lv, s17467c1f2, ABISELECT(12,8), "S17467C1.s17467c1f2");
    check_field_offset(lv, s17467c1f3, ABISELECT(24,20), "S17467C1.s17467c1f3");
    check_field_offset(lv, s17467c1f4, ABISELECT(40,32), "S17467C1.s17467c1f4");
    check_field_offset(lv, s17467c1f5, ABISELECT(44,36), "S17467C1.s17467c1f5");
    check_field_offset(lv, s17467c1f6, ABISELECT(48,40), "S17467C1.s17467c1f6");
    check_field_offset(lv, s17467c1f7, ABISELECT(56,44), "S17467C1.s17467c1f7");
    check_field_offset(lv, s17467c1f8, ABISELECT(64,48), "S17467C1.s17467c1f8");
    check_field_offset(lv, s17467c1f9, ABISELECT(72,52), "S17467C1.s17467c1f9");
  }
}
static Arrange_To_Call_Me vS17467C1(Test_S17467C1, "S17467C1", ABISELECT(80,56));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9344C2  {
  ::S5266C19_nt s9344c2f0;
  int s9344c2f1[2];
  char s9344c2f2;
  virtual  ~S9344C2(); // _ZN7S9344C2D1Ev
  virtual void  v3(); // _ZN7S9344C22v3Ev
  virtual void  v4(); // _ZN7S9344C22v4Ev
  virtual void  v5(); // _ZN7S9344C22v5Ev
  S9344C2(); // tgen
};
//SIG(-1 S9344C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9344C2 ::~S9344C2(){ note_dtor("S9344C2", this);}
void  S9344C2 ::v3(){vfunc_called(this, "_ZN7S9344C22v3Ev");}
void  S9344C2 ::v4(){vfunc_called(this, "_ZN7S9344C22v4Ev");}
void  S9344C2 ::v5(){vfunc_called(this, "_ZN7S9344C22v5Ev");}
S9344C2 ::S9344C2(){ note_ctor("S9344C2", this);} // tgen

static void Test_S9344C2()
{
  extern Class_Descriptor cd_S9344C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9344C2, buf);
    S9344C2 *dp, &lv = *(dp=new (buf) S9344C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9344C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9344C2)");
    check_field_offset(lv, s9344c2f0, ABISELECT(8,4), "S9344C2.s9344c2f0");
    check_field_offset(lv, s9344c2f1, ABISELECT(24,16), "S9344C2.s9344c2f1");
    check_field_offset(lv, s9344c2f2, ABISELECT(32,24), "S9344C2.s9344c2f2");
    test_class_info(&lv, &cd_S9344C2);
    dp->~S9344C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9344C2(Test_S9344C2, "S9344C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9344C2C1Ev();
extern void _ZN7S9344C2D1Ev();
Name_Map name_map_S9344C2[] = {
  NSPAIR(_ZN7S9344C2C1Ev),
  NSPAIR(_ZN7S9344C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9344C2[];
extern void _ZN7S9344C2D1Ev();
extern void _ZN7S9344C2D0Ev();
extern void _ZN7S9344C22v3Ev();
extern void _ZN7S9344C22v4Ev();
extern void _ZN7S9344C22v5Ev();
static  VTBL_ENTRY vtc_S9344C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9344C2[0]),
  (VTBL_ENTRY)&_ZN7S9344C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9344C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9344C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9344C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9344C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S9344C2[];
extern  VTBL_ENTRY _ZTV7S9344C2[];
Class_Descriptor cd_S9344C2 = {  "S9344C2", // class name
  0,0,//no base classes
  &(vtc_S9344C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9344C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9344C2),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9344C1  : S9344C2 {
  __tsi64 s9344c1f0;
  virtual  ~S9344C1(); // _ZN7S9344C1D1Ev
  virtual void  v1(); // _ZN7S9344C12v1Ev
  virtual void  v2(); // _ZN7S9344C12v2Ev
  S9344C1(); // tgen
};
//SIG(1 S9344C1) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 FL}


 S9344C1 ::~S9344C1(){ note_dtor("S9344C1", this);}
void  S9344C1 ::v1(){vfunc_called(this, "_ZN7S9344C12v1Ev");}
void  S9344C1 ::v2(){vfunc_called(this, "_ZN7S9344C12v2Ev");}
S9344C1 ::S9344C1(){ note_ctor("S9344C1", this);} // tgen

static void Test_S9344C1()
{
  extern Class_Descriptor cd_S9344C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,10)];
    init_test(&cd_S9344C1, buf);
    S9344C1 *dp, &lv = *(dp=new (buf) S9344C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,36), "sizeof(S9344C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9344C1)");
    check_base_class_offset(lv, (S9344C2*), 0, "S9344C1");
    check_field_offset(lv, s9344c1f0, ABISELECT(40,28), "S9344C1.s9344c1f0");
    test_class_info(&lv, &cd_S9344C1);
    dp->~S9344C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9344C1(Test_S9344C1, "S9344C1", ABISELECT(48,36));

#else // __cplusplus

extern void _ZN7S9344C1C1Ev();
extern void _ZN7S9344C1D1Ev();
Name_Map name_map_S9344C1[] = {
  NSPAIR(_ZN7S9344C1C1Ev),
  NSPAIR(_ZN7S9344C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9344C2;
extern VTBL_ENTRY _ZTI7S9344C2[];
extern  VTBL_ENTRY _ZTV7S9344C2[];
static Base_Class bases_S9344C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9344C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9344C1[];
extern void _ZN7S9344C1D1Ev();
extern void _ZN7S9344C1D0Ev();
extern void _ZN7S9344C22v3Ev();
extern void _ZN7S9344C22v4Ev();
extern void _ZN7S9344C22v5Ev();
extern void _ZN7S9344C12v1Ev();
extern void _ZN7S9344C12v2Ev();
static  VTBL_ENTRY vtc_S9344C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9344C1[0]),
  (VTBL_ENTRY)&_ZN7S9344C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9344C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9344C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9344C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9344C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9344C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9344C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9344C1[];
extern  VTBL_ENTRY _ZTV7S9344C1[];
Class_Descriptor cd_S9344C1 = {  "S9344C1", // class name
  bases_S9344C1, 1,
  &(vtc_S9344C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,36), // object size
  NSPAIRA(_ZTI7S9344C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9344C1),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15804C4_nt  {
  ::S5266C13_nt s15804c4f0;
  void  mf15804c4(); // _ZN11S15804C4_nt9mf15804c4Ev
};
//SIG(-1 S15804C4_nt) C1{ m FC2{ m FL[2]}}


void  S15804C4_nt ::mf15804c4(){}

//skip512 S15804C4_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15804C1  {
  ::S5266C12_nt s15804c1f0;
  ::S5266C12_nt s15804c1f1;
  ::S5266C12_nt s15804c1f2;
  ::S15804C4_nt s15804c1f3;
  char s15804c1f4;
  int s15804c1f5;
  void  mf15804c1(); // _ZN8S15804C19mf15804c1Ev
};
//SIG(1 S15804C1) C1{ m FC2{ m FC3{ m FL[2]}} FC2 FC2 FC4{ m FC3} Fc Fi}


void  S15804C1 ::mf15804c1(){}

static void Test_S15804C1()
{
  {
    init_simple_test("S15804C1");
    S15804C1 lv;
    check2(sizeof(lv), 72, "sizeof(S15804C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15804C1)");
    check_field_offset(lv, s15804c1f0, 0, "S15804C1.s15804c1f0");
    check_field_offset(lv, s15804c1f1, 16, "S15804C1.s15804c1f1");
    check_field_offset(lv, s15804c1f2, 32, "S15804C1.s15804c1f2");
    check_field_offset(lv, s15804c1f3, 48, "S15804C1.s15804c1f3");
    check_field_offset(lv, s15804c1f4, 64, "S15804C1.s15804c1f4");
    check_field_offset(lv, s15804c1f5, 68, "S15804C1.s15804c1f5");
  }
}
static Arrange_To_Call_Me vS15804C1(Test_S15804C1, "S15804C1", 72);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17233C4  {
  void *s17233c4f0;
  int s17233c4f1;
  virtual  ~S17233C4(); // _ZN8S17233C4D1Ev
  virtual void  v2(); // _ZN8S17233C42v2Ev
  S17233C4(); // tgen
};
//SIG(-1 S17233C4) C1{ vd v1 Fp Fi}


 S17233C4 ::~S17233C4(){ note_dtor("S17233C4", this);}
void  S17233C4 ::v2(){vfunc_called(this, "_ZN8S17233C42v2Ev");}
S17233C4 ::S17233C4(){ note_ctor("S17233C4", this);} // tgen

static void Test_S17233C4()
{
  extern Class_Descriptor cd_S17233C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S17233C4, buf);
    S17233C4 *dp, &lv = *(dp=new (buf) S17233C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S17233C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17233C4)");
    check_field_offset(lv, s17233c4f0, ABISELECT(8,4), "S17233C4.s17233c4f0");
    check_field_offset(lv, s17233c4f1, ABISELECT(16,8), "S17233C4.s17233c4f1");
    test_class_info(&lv, &cd_S17233C4);
    dp->~S17233C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS17233C4(Test_S17233C4, "S17233C4", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S17233C4C1Ev();
extern void _ZN8S17233C4D1Ev();
Name_Map name_map_S17233C4[] = {
  NSPAIR(_ZN8S17233C4C1Ev),
  NSPAIR(_ZN8S17233C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S17233C4[];
extern void _ZN8S17233C4D1Ev();
extern void _ZN8S17233C4D0Ev();
extern void _ZN8S17233C42v2Ev();
static  VTBL_ENTRY vtc_S17233C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S17233C4[0]),
  (VTBL_ENTRY)&_ZN8S17233C4D1Ev,
  (VTBL_ENTRY)&_ZN8S17233C4D0Ev,
  (VTBL_ENTRY)&_ZN8S17233C42v2Ev,
};
extern VTBL_ENTRY _ZTI8S17233C4[];
extern  VTBL_ENTRY _ZTV8S17233C4[];
Class_Descriptor cd_S17233C4 = {  "S17233C4", // class name
  0,0,//no base classes
  &(vtc_S17233C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S17233C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S17233C4),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17233C3_nt  : S17233C4 {
  void *s17233c3f0;
  virtual void  v1(); // _ZN11S17233C3_nt2v1Ev
  ~S17233C3_nt(); // tgen
  S17233C3_nt(); // tgen
};
//SIG(-1 S17233C3_nt) C1{ BC2{ vd v2 Fp Fi} v1 Fp}


void  S17233C3_nt ::v1(){vfunc_called(this, "_ZN11S17233C3_nt2v1Ev");}
S17233C3_nt ::~S17233C3_nt(){ note_dtor("S17233C3_nt", this);} // tgen
S17233C3_nt ::S17233C3_nt(){ note_ctor("S17233C3_nt", this);} // tgen

//skip512 S17233C3_nt

#else // __cplusplus

extern void _ZN11S17233C3_ntC1Ev();
extern void _ZN11S17233C3_ntD1Ev();
Name_Map name_map_S17233C3_nt[] = {
  NSPAIR(_ZN11S17233C3_ntC1Ev),
  NSPAIR(_ZN11S17233C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S17233C4;
extern VTBL_ENTRY _ZTI8S17233C4[];
extern  VTBL_ENTRY _ZTV8S17233C4[];
static Base_Class bases_S17233C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S17233C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI11S17233C3_nt[];
extern void _ZN11S17233C3_ntD1Ev();
extern void _ZN11S17233C3_ntD0Ev();
extern void _ZN8S17233C42v2Ev();
extern void _ZN11S17233C3_nt2v1Ev();
static  VTBL_ENTRY vtc_S17233C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S17233C3_nt[0]),
  (VTBL_ENTRY)&_ZN11S17233C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S17233C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN8S17233C42v2Ev,
  (VTBL_ENTRY)&_ZN11S17233C3_nt2v1Ev,
};
extern VTBL_ENTRY _ZTI11S17233C3_nt[];
VTBL_ENTRY *P__ZTI11S17233C3_nt = _ZTI11S17233C3_nt; 
extern  VTBL_ENTRY _ZTV11S17233C3_nt[];
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17233C1  {
  int s17233c1f0[4];
  ::S17777C6_nt s17233c1f1;
  void *s17233c1f2;
  int s17233c1f3[2];
  ::S17233C3_nt s17233c1f4;
  void  mf17233c1(); // _ZN8S17233C19mf17233c1Ev
};
//SIG(1 S17233C1) C1{ m Fi[4] FC2{ m Fp} Fp Fi[2] FC3{ BC4{ vd v2 Fp Fi} v1 Fp}}


void  S17233C1 ::mf17233c1(){}

static void Test_S17233C1()
{
  {
    init_simple_test("S17233C1");
    S17233C1 lv;
    check2(sizeof(lv), ABISELECT(72,48), "sizeof(S17233C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17233C1)");
    check_field_offset(lv, s17233c1f0, 0, "S17233C1.s17233c1f0");
    check_field_offset(lv, s17233c1f1, 16, "S17233C1.s17233c1f1");
    check_field_offset(lv, s17233c1f2, ABISELECT(24,20), "S17233C1.s17233c1f2");
    check_field_offset(lv, s17233c1f3, ABISELECT(32,24), "S17233C1.s17233c1f3");
    check_field_offset(lv, s17233c1f4, ABISELECT(40,32), "S17233C1.s17233c1f4");
  }
}
static Arrange_To_Call_Me vS17233C1(Test_S17233C1, "S17233C1", ABISELECT(72,48));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16070C1  {
  ::S79C23_nt s16070c1f0;
  ::S79C44 s16070c1f1;
  ::S79C40 s16070c1f2;
  void  mf16070c1(); // _ZN8S16070C19mf16070c1Ev
};
//SIG(1 S16070C1) C1{ m FC2{ m Fi[4]} FC3{ BC4{ BC5{ m Fp Fi[2]}}} FC6{ BC7{ BC5}}}


void  S16070C1 ::mf16070c1(){}

static void Test_S16070C1()
{
  {
    init_simple_test("S16070C1");
    S16070C1 lv;
    check2(sizeof(lv), ABISELECT(48,40), "sizeof(S16070C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16070C1)");
    check_field_offset(lv, s16070c1f0, 0, "S16070C1.s16070c1f0");
    check_field_offset(lv, s16070c1f1, 16, "S16070C1.s16070c1f1");
    check_field_offset(lv, s16070c1f2, ABISELECT(32,28), "S16070C1.s16070c1f2");
  }
}
static Arrange_To_Call_Me vS16070C1(Test_S16070C1, "S16070C1", ABISELECT(48,40));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19019C3  : S5266C29 , S7719C4_nt {
};
//SIG(-1 S19019C3) C1{ BC2{ m} BC3{ m Fc}}



static void Test_S19019C3()
{
  extern Class_Descriptor cd_S19019C3;
  void *lvp;
  {
    char buf[1];
    init_test(&cd_S19019C3, buf);
    S19019C3 &lv = *(new (buf) S19019C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1, "sizeof(S19019C3)");
    check2(__alignof__(lv), 1, "__alignof__(S19019C3)");
    check_base_class_offset(lv, (S5266C29*), 0, "S19019C3");
    check_base_class_offset(lv, (S7719C4_nt*), 0, "S19019C3");
    test_class_info(&lv, &cd_S19019C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19019C3(Test_S19019C3, "S19019C3", 1);

#else // __cplusplus

extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
static Base_Class bases_S19019C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7719C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19019C3[];
Class_Descriptor cd_S19019C3 = {  "S19019C3", // class name
  bases_S19019C3, 2,
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI8S19019C3),ABISELECT(56,32), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19019C6  : S7719C4_nt , S5266C29 , virtual S5266C26 {
  ~S19019C6(); // tgen
  S19019C6(); // tgen
};
//SIG(-1 S19019C6) C1{ BC2{ m Fc} BC3{ m} VBC4{ m}}


S19019C6 ::~S19019C6(){ note_dtor("S19019C6", this);} // tgen
S19019C6 ::S19019C6(){ note_ctor("S19019C6", this);} // tgen

static void Test_S19019C6()
{
  extern Class_Descriptor cd_S19019C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19019C6, buf);
    S19019C6 *dp, &lv = *(dp=new (buf) S19019C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19019C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19019C6)");
    check_base_class_offset(lv, (S7719C4_nt*), ABISELECT(8,4), "S19019C6");
    check_base_class_offset(lv, (S5266C29*), 0, "S19019C6");
    check_base_class_offset(lv, (S5266C26*), 0, "S19019C6");
    test_class_info(&lv, &cd_S19019C6);
    dp->~S19019C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19019C6(Test_S19019C6, "S19019C6", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19019C6C1Ev();
extern void _ZN8S19019C6D1Ev();
Name_Map name_map_S19019C6[] = {
  NSPAIR(_ZN8S19019C6C1Ev),
  NSPAIR(_ZN8S19019C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
static Base_Class bases_S19019C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7719C4_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19019C6[];
static  VTBL_ENTRY vtc_S19019C6[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19019C6[0]),
};
extern VTBL_ENTRY _ZTV8S19019C6[];
static  VTT_ENTRY vtt_S19019C6[] = {
  {&(_ZTV8S19019C6[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19019C6[];
extern  VTBL_ENTRY _ZTV8S19019C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19019C6[];
Class_Descriptor cd_S19019C6 = {  "S19019C6", // class name
  bases_S19019C6, 3,
  &(vtc_S19019C6[0]), // expected_vtbl_contents
  &(vtt_S19019C6[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19019C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19019C6),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19019C6),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19019C2  : S19019C3 , S5266C29 , S19019C6 {
  __tsi64 s19019c2f0;
  ~S19019C2(); // tgen
  S19019C2(); // tgen
};
//SIG(-1 S19019C2) C1{ BC2{ BC3{ m} BC4{ m Fc}} BC3 BC5{ BC4 BC3 VBC6{ m}} FL}


S19019C2 ::~S19019C2(){ note_dtor("S19019C2", this);} // tgen
S19019C2 ::S19019C2(){ note_ctor("S19019C2", this);} // tgen

static void Test_S19019C2()
{
  extern Class_Descriptor cd_S19019C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S19019C2, buf);
    S19019C2 *dp, &lv = *(dp=new (buf) S19019C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S19019C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19019C2)");
    check_base_class_offset(lv, (S5266C29*)(S19019C3*), ABISELECT(9,5), "S19019C2");
    check_base_class_offset(lv, (S7719C4_nt*)(S19019C3*), ABISELECT(9,5), "S19019C2");
    check_base_class_offset(lv, (S19019C3*), ABISELECT(9,5), "S19019C2");
    /*is_ambiguous_... S19019C2::S5266C29 */ AMB_check_base_class_offset(lv, (S5266C29*), ABISELECT(10,6), "S19019C2");
    check_base_class_offset(lv, (S7719C4_nt*)(S19019C6*), ABISELECT(8,4), "S19019C2");
    check_base_class_offset(lv, (S5266C29*)(S19019C6*), 0, "S19019C2");
    check_base_class_offset(lv, (S5266C26*)(S19019C6*), 0, "S19019C2");
    check_base_class_offset(lv, (S19019C6*), 0, "S19019C2");
    check_field_offset(lv, s19019c2f0, ABISELECT(16,8), "S19019C2.s19019c2f0");
    test_class_info(&lv, &cd_S19019C2);
    dp->~S19019C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19019C2(Test_S19019C2, "S19019C2", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S19019C2C1Ev();
extern void _ZN8S19019C2D1Ev();
Name_Map name_map_S19019C2[] = {
  NSPAIR(_ZN8S19019C2C1Ev),
  NSPAIR(_ZN8S19019C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S19019C3;
extern VTBL_ENTRY _ZTI8S19019C3[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S19019C6;
extern VTBL_ENTRY _ZTI8S19019C6[];
extern  VTBL_ENTRY _ZTV8S19019C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19019C6[];
static Base_Class bases_S19019C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C29,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19019C3,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5266C29,    ABISELECT(10,6), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7719C4_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19019C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19019C2[];
static  VTBL_ENTRY vtc_S19019C2[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19019C2[0]),
};
extern VTBL_ENTRY _ZTV8S19019C2[];
static  VTBL_ENTRY _tg__ZTV8S19019C6__8S19019C2[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19019C6[0]),
};
static  VTT_ENTRY vtt_S19019C2[] = {
  {&(_ZTV8S19019C2[3]),  3,3},
  {&(_tg__ZTV8S19019C6__8S19019C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19019C2[];
extern  VTBL_ENTRY _ZTV8S19019C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19019C2[];
Class_Descriptor cd_S19019C2 = {  "S19019C2", // class name
  bases_S19019C2, 8,
  &(vtc_S19019C2[0]), // expected_vtbl_contents
  &(vtt_S19019C2[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S19019C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19019C2),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19019C2),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19019C1  : virtual S19019C2 {
  ~S19019C1(); // tgen
  S19019C1(); // tgen
};
//SIG(1 S19019C1) C1{ VBC2{ BC3{ BC4{ m} BC5{ m Fc}} BC4 BC6{ BC5 BC4 VBC7{ m}} FL}}


S19019C1 ::~S19019C1(){ note_dtor("S19019C1", this);} // tgen
S19019C1 ::S19019C1(){ note_ctor("S19019C1", this);} // tgen

static void Test_S19019C1()
{
  extern Class_Descriptor cd_S19019C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S19019C1, buf);
    S19019C1 *dp, &lv = *(dp=new (buf) S19019C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S19019C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19019C1)");
    check_base_class_offset(lv, (S5266C29*)(S19019C3*)(S19019C2*), ABISELECT(17,9), "S19019C1");
    check_base_class_offset(lv, (S7719C4_nt*)(S19019C3*)(S19019C2*), ABISELECT(17,9), "S19019C1");
    check_base_class_offset(lv, (S19019C3*)(S19019C2*), ABISELECT(17,9), "S19019C1");
    /*is_ambiguous_... S19019C2::S5266C29 */ AMB_check_base_class_offset(lv, (S5266C29*)(S19019C2*), ABISELECT(18,10), "S19019C1");
    check_base_class_offset(lv, (S7719C4_nt*)(S19019C6*)(S19019C2*), ABISELECT(16,8), "S19019C1");
    check_base_class_offset(lv, (S5266C29*)(S19019C6*)(S19019C2*), ABISELECT(8,4), "S19019C1");
    check_base_class_offset(lv, (S5266C26*)(S19019C6*)(S19019C2*), 0, "S19019C1");
    check_base_class_offset(lv, (S19019C6*)(S19019C2*), ABISELECT(8,4), "S19019C1");
    check_base_class_offset(lv, (S19019C2*), ABISELECT(8,4), "S19019C1");
    test_class_info(&lv, &cd_S19019C1);
    dp->~S19019C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19019C1(Test_S19019C1, "S19019C1", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S19019C1C1Ev();
extern void _ZN8S19019C1D1Ev();
Name_Map name_map_S19019C1[] = {
  NSPAIR(_ZN8S19019C1C1Ev),
  NSPAIR(_ZN8S19019C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S19019C3;
extern VTBL_ENTRY _ZTI8S19019C3[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S5266C26;
extern VTBL_ENTRY _ZTI8S5266C26[];
extern Class_Descriptor cd_S19019C6;
extern VTBL_ENTRY _ZTI8S19019C6[];
extern  VTBL_ENTRY _ZTV8S19019C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19019C6[];
extern Class_Descriptor cd_S19019C2;
extern VTBL_ENTRY _ZTI8S19019C2[];
extern  VTBL_ENTRY _ZTV8S19019C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19019C2[];
static Base_Class bases_S19019C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C29,    ABISELECT(17,9), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(17,9), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19019C3,    ABISELECT(17,9), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S5266C29,    ABISELECT(18,10), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S5266C29,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S5266C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19019C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19019C2,    ABISELECT(8,4), //bcp->offset
    4, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19019C1[];
static  VTBL_ENTRY vtc_S19019C1[] = {
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19019C1[0]),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19019C1[0]),
};
extern VTBL_ENTRY _ZTV8S19019C1[];
static  VTBL_ENTRY _tg__ZTV8S19019C2__8S19019C1[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19019C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19019C68S19019C2__8S19019C1[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19019C6[0]),
};
static  VTT_ENTRY vtt_S19019C1[] = {
  {&(_ZTV8S19019C1[4]),  4,7},
  {&(_ZTV8S19019C1[7]),  7,7},
  {&(_tg__ZTV8S19019C2__8S19019C1[3]),  3,3},
  {&(_tg__ZTV8S19019C68S19019C2__8S19019C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19019C1[];
extern  VTBL_ENTRY _ZTV8S19019C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19019C1[];
Class_Descriptor cd_S19019C1 = {  "S19019C1", // class name
  bases_S19019C1, 9,
  &(vtc_S19019C1[0]), // expected_vtbl_contents
  &(vtt_S19019C1[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S19019C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19019C1),7, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19019C1),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17449C1  {
  void *s17449c1f0;
  char s17449c1f1;
  int s17449c1f2[2];
  ::S5266C19_nt s17449c1f3;
  int s17449c1f4;
  ::S3765C5_nt s17449c1f5;
  int s17449c1f6;
  void  mf17449c1(); // _ZN8S17449C19mf17449c1Ev
};
//SIG(1 S17449C1) C1{ m Fp Fc Fi[2] FC2{ m Fp Fi FC3{ m}} Fi FC4{ m Fp[2]} Fi}


void  S17449C1 ::mf17449c1(){}

static void Test_S17449C1()
{
  {
    init_simple_test("S17449C1");
    S17449C1 lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S17449C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17449C1)");
    check_field_offset(lv, s17449c1f0, 0, "S17449C1.s17449c1f0");
    check_field_offset(lv, s17449c1f1, ABISELECT(8,4), "S17449C1.s17449c1f1");
    check_field_offset(lv, s17449c1f2, ABISELECT(12,8), "S17449C1.s17449c1f2");
    check_field_offset(lv, s17449c1f3, ABISELECT(24,16), "S17449C1.s17449c1f3");
    check_field_offset(lv, s17449c1f4, ABISELECT(40,28), "S17449C1.s17449c1f4");
    check_field_offset(lv, s17449c1f5, ABISELECT(48,32), "S17449C1.s17449c1f5");
    check_field_offset(lv, s17449c1f6, ABISELECT(64,40), "S17449C1.s17449c1f6");
  }
}
static Arrange_To_Call_Me vS17449C1(Test_S17449C1, "S17449C1", ABISELECT(72,44));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20325C2_nt  {
  int s20325c2f0;
  virtual  ~S20325C2_nt(); // _ZN11S20325C2_ntD1Ev
  virtual void  v6(); // _ZN11S20325C2_nt2v6Ev
  virtual void  v7(); // _ZN11S20325C2_nt2v7Ev
  S20325C2_nt(); // tgen
};
//SIG(-1 S20325C2_nt) C1{ vd v1 v2 Fi}


 S20325C2_nt ::~S20325C2_nt(){ note_dtor("S20325C2_nt", this);}
void  S20325C2_nt ::v6(){vfunc_called(this, "_ZN11S20325C2_nt2v6Ev");}
void  S20325C2_nt ::v7(){vfunc_called(this, "_ZN11S20325C2_nt2v7Ev");}
S20325C2_nt ::S20325C2_nt(){ note_ctor("S20325C2_nt", this);} // tgen

//skip512 S20325C2_nt

#else // __cplusplus

extern void _ZN11S20325C2_ntC1Ev();
extern void _ZN11S20325C2_ntD1Ev();
Name_Map name_map_S20325C2_nt[] = {
  NSPAIR(_ZN11S20325C2_ntC1Ev),
  NSPAIR(_ZN11S20325C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S20325C2_nt[];
extern void _ZN11S20325C2_ntD1Ev();
extern void _ZN11S20325C2_ntD0Ev();
extern void _ZN11S20325C2_nt2v6Ev();
extern void _ZN11S20325C2_nt2v7Ev();
static  VTBL_ENTRY vtc_S20325C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S20325C2_nt[0]),
  (VTBL_ENTRY)&_ZN11S20325C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S20325C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S20325C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20325C2_nt2v7Ev,
};
extern VTBL_ENTRY _ZTI11S20325C2_nt[];
VTBL_ENTRY *P__ZTI11S20325C2_nt = _ZTI11S20325C2_nt; 
extern  VTBL_ENTRY _ZTV11S20325C2_nt[];
Class_Descriptor cd_S20325C2_nt = {  "S20325C2_nt", // class name
  0,0,//no base classes
  &(vtc_S20325C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI11S20325C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S20325C2_nt),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

union  S20325C3  {
  long double s20325c3f0;
  void  mf20325c3(); // _ZN8S20325C39mf20325c3Ev
};
//SIG(1 S20325C3) U1{ m FD}

#endif // __cplusplus
#ifdef __cplusplus

struct  S20325C1  : virtual S20325C2_nt {
  int s20325c1f0;
  ::S20325C3 s20325c1f1;
  int s20325c1f2;
  virtual  ~S20325C1(); // _ZN8S20325C1D2Ev
  virtual void  v1(); // _ZN8S20325C12v1Ev
  virtual void  v2(); // _ZN8S20325C12v2Ev
  virtual void  v3(); // _ZN8S20325C12v3Ev
  virtual void  v4(); // _ZN8S20325C12v4Ev
  virtual void  v5(); // _ZN8S20325C12v5Ev
  S20325C1(); // tgen
};
//SIG(1 S20325C1) C1{ VBC2{ vd v6 v7 Fi} vd v1 v2 v3 v4 v5 Fi FU3{ m FD} Fi}


 S20325C1 ::~S20325C1(){ note_dtor("S20325C1", this);}
void  S20325C1 ::v1(){vfunc_called(this, "_ZN8S20325C12v1Ev");}
void  S20325C1 ::v2(){vfunc_called(this, "_ZN8S20325C12v2Ev");}
void  S20325C1 ::v3(){vfunc_called(this, "_ZN8S20325C12v3Ev");}
void  S20325C1 ::v4(){vfunc_called(this, "_ZN8S20325C12v4Ev");}
void  S20325C1 ::v5(){vfunc_called(this, "_ZN8S20325C12v5Ev");}
S20325C1 ::S20325C1(){ note_ctor("S20325C1", this);} // tgen

static void Test_S20325C1()
{
  extern Class_Descriptor cd_S20325C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,9)];
    init_test(&cd_S20325C1, buf);
    S20325C1 *dp, &lv = *(dp=new (buf) S20325C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S20325C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20325C1)");
    check_base_class_offset(lv, (S20325C2_nt*), ABISELECT(40,24), "S20325C1");
    check_field_offset(lv, s20325c1f0, ABISELECT(8,4), "S20325C1.s20325c1f0");
    check_field_offset(lv, s20325c1f1, ABISELECT(16,8), "S20325C1.s20325c1f1");
    check_field_offset(lv, s20325c1f2, ABISELECT(32,20), "S20325C1.s20325c1f2");
    test_class_info(&lv, &cd_S20325C1);
    dp->~S20325C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20325C1(Test_S20325C1, "S20325C1", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN8S20325C1C1Ev();
extern void _ZN8S20325C1D2Ev();
Name_Map name_map_S20325C1[] = {
  NSPAIR(_ZN8S20325C1C1Ev),
  NSPAIR(_ZN8S20325C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20325C2_nt;
extern VTBL_ENTRY _ZTI11S20325C2_nt[];
extern  VTBL_ENTRY _ZTV11S20325C2_nt[];
static Base_Class bases_S20325C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20325C2_nt,    ABISELECT(40,24), //bcp->offset
    10, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20325C1[];
extern void _ZN8S20325C1D1Ev();
extern void _ZN8S20325C1D0Ev();
extern void _ZN8S20325C12v1Ev();
extern void _ZN8S20325C12v2Ev();
extern void _ZN8S20325C12v3Ev();
extern void _ZN8S20325C12v4Ev();
extern void _ZN8S20325C12v5Ev();
extern void ABISELECT(_ZTv0_n24_N8S20325C1D1Ev,_ZTv0_n12_N8S20325C1D1Ev)();
extern void ABISELECT(_ZThn40_N8S20325C1D1Ev,_ZThn24_N8S20325C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20325C1D0Ev,_ZTv0_n12_N8S20325C1D0Ev)();
extern void ABISELECT(_ZThn40_N8S20325C1D0Ev,_ZThn24_N8S20325C1D0Ev)() __attribute__((weak));
extern void _ZN11S20325C2_nt2v6Ev();
extern void _ZN11S20325C2_nt2v7Ev();
static  VTBL_ENTRY vtc_S20325C1[] = {
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20325C1[0]),
  (VTBL_ENTRY)&_ZN8S20325C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20325C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20325C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20325C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20325C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20325C12v4Ev,
  (VTBL_ENTRY)&_ZN8S20325C12v5Ev,
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S20325C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20325C1D1Ev,_ZTv0_n12_N8S20325C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20325C1D0Ev,_ZTv0_n12_N8S20325C1D0Ev),
  (VTBL_ENTRY)&_ZN11S20325C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN11S20325C2_nt2v7Ev,
};
extern VTBL_ENTRY _ZTV8S20325C1[];
static  VTT_ENTRY vtt_S20325C1[] = {
  {&(_ZTV8S20325C1[3]),  3,19},
  {&(_ZTV8S20325C1[15]),  15,19},
};
extern VTBL_ENTRY _ZTI8S20325C1[];
extern  VTBL_ENTRY _ZTV8S20325C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20325C1[];
static VTBL_ENTRY alt_thunk_names131[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20325C1D0Ev,_ZTv0_n12_N8S20325C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20325C1D0Ev,_ZThn24_N8S20325C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20325C1D1Ev,_ZTv0_n12_N8S20325C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20325C1D1Ev,_ZThn24_N8S20325C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20325C1 = {  "S20325C1", // class name
  bases_S20325C1, 1,
  &(vtc_S20325C1[0]), // expected_vtbl_contents
  &(vtt_S20325C1[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI8S20325C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20325C1),19, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20325C1),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names131,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8892C2_nt  {
  void *s8892c2f0[2];
  virtual  ~S8892C2_nt(); // _ZN10S8892C2_ntD1Ev
  virtual void  v2(); // _ZN10S8892C2_nt2v2Ev
  virtual void  v3(); // _ZN10S8892C2_nt2v3Ev
  S8892C2_nt(); // tgen
};
//SIG(-1 S8892C2_nt) C1{ vd v1 v2 Fp[2]}


 S8892C2_nt ::~S8892C2_nt(){ note_dtor("S8892C2_nt", this);}
void  S8892C2_nt ::v2(){vfunc_called(this, "_ZN10S8892C2_nt2v2Ev");}
void  S8892C2_nt ::v3(){vfunc_called(this, "_ZN10S8892C2_nt2v3Ev");}
S8892C2_nt ::S8892C2_nt(){ note_ctor("S8892C2_nt", this);} // tgen

//skip512 S8892C2_nt

#else // __cplusplus

extern void _ZN10S8892C2_ntC1Ev();
extern void _ZN10S8892C2_ntD1Ev();
Name_Map name_map_S8892C2_nt[] = {
  NSPAIR(_ZN10S8892C2_ntC1Ev),
  NSPAIR(_ZN10S8892C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S8892C2_nt[];
extern void _ZN10S8892C2_ntD1Ev();
extern void _ZN10S8892C2_ntD0Ev();
extern void _ZN10S8892C2_nt2v2Ev();
extern void _ZN10S8892C2_nt2v3Ev();
static  VTBL_ENTRY vtc_S8892C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S8892C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S8892C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S8892C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S8892C2_nt2v2Ev,
  (VTBL_ENTRY)&_ZN10S8892C2_nt2v3Ev,
};
extern VTBL_ENTRY _ZTI10S8892C2_nt[];
VTBL_ENTRY *P__ZTI10S8892C2_nt = _ZTI10S8892C2_nt; 
extern  VTBL_ENTRY _ZTV10S8892C2_nt[];
Class_Descriptor cd_S8892C2_nt = {  "S8892C2_nt", // class name
  0,0,//no base classes
  &(vtc_S8892C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI10S8892C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S8892C2_nt),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8892C1  : S8892C2_nt {
  ::S17777C6_nt s8892c1f0;
  ::S9307C6 s8892c1f1;
  virtual  ~S8892C1(); // _ZN7S8892C1D1Ev
  virtual void  v1(); // _ZN7S8892C12v1Ev
  S8892C1(); // tgen
};
//SIG(1 S8892C1) C1{ BC2{ vd v2 v3 Fp[2]} vd v1 FC3{ m Fp} FC4{ Fc[961] FL}}


 S8892C1 ::~S8892C1(){ note_dtor("S8892C1", this);}
void  S8892C1 ::v1(){vfunc_called(this, "_ZN7S8892C12v1Ev");}
S8892C1 ::S8892C1(){ note_ctor("S8892C1", this);} // tgen

static void Test_S8892C1()
{
  extern Class_Descriptor cd_S8892C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(127,248)];
    init_test(&cd_S8892C1, buf);
    S8892C1 *dp, &lv = *(dp=new (buf) S8892C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1008,988), "sizeof(S8892C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8892C1)");
    check_base_class_offset(lv, (S8892C2_nt*), 0, "S8892C1");
    check_field_offset(lv, s8892c1f0, ABISELECT(24,12), "S8892C1.s8892c1f0");
    check_field_offset(lv, s8892c1f1, ABISELECT(32,16), "S8892C1.s8892c1f1");
    test_class_info(&lv, &cd_S8892C1);
    dp->~S8892C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8892C1(Test_S8892C1, "S8892C1", ABISELECT(1008,988));

#else // __cplusplus

extern void _ZN7S8892C1C1Ev();
extern void _ZN7S8892C1D1Ev();
Name_Map name_map_S8892C1[] = {
  NSPAIR(_ZN7S8892C1C1Ev),
  NSPAIR(_ZN7S8892C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8892C2_nt;
extern VTBL_ENTRY _ZTI10S8892C2_nt[];
extern  VTBL_ENTRY _ZTV10S8892C2_nt[];
static Base_Class bases_S8892C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8892C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8892C1[];
extern void _ZN7S8892C1D1Ev();
extern void _ZN7S8892C1D0Ev();
extern void _ZN10S8892C2_nt2v2Ev();
extern void _ZN10S8892C2_nt2v3Ev();
extern void _ZN7S8892C12v1Ev();
static  VTBL_ENTRY vtc_S8892C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8892C1[0]),
  (VTBL_ENTRY)&_ZN7S8892C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8892C1D0Ev,
  (VTBL_ENTRY)&_ZN10S8892C2_nt2v2Ev,
  (VTBL_ENTRY)&_ZN10S8892C2_nt2v3Ev,
  (VTBL_ENTRY)&_ZN7S8892C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S8892C1[];
extern  VTBL_ENTRY _ZTV7S8892C1[];
Class_Descriptor cd_S8892C1 = {  "S8892C1", // class name
  bases_S8892C1, 1,
  &(vtc_S8892C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1008,988), // object size
  NSPAIRA(_ZTI7S8892C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8892C1),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12388C1  {
  int s12388c1f0;
  ::S11199C4_nt s12388c1f1;
  ::S11199C6_nt s12388c1f2;
  int s12388c1f3;
  void *s12388c1f4;
  int s12388c1f5[3];
};
//SIG(1 S12388C1) C1{ Fi FC2{ FC3{ Fc[20]} Fc[16]} FC4{ Fc[12]} Fi Fp Fi[3]}



static void Test_S12388C1()
{
  {
    init_simple_test("S12388C1");
    S12388C1 lv;
    check2(sizeof(lv), ABISELECT(80,72), "sizeof(S12388C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12388C1)");
    check_field_offset(lv, s12388c1f0, 0, "S12388C1.s12388c1f0");
    check_field_offset(lv, s12388c1f1, 4, "S12388C1.s12388c1f1");
    check_field_offset(lv, s12388c1f2, 40, "S12388C1.s12388c1f2");
    check_field_offset(lv, s12388c1f3, 52, "S12388C1.s12388c1f3");
    check_field_offset(lv, s12388c1f4, 56, "S12388C1.s12388c1f4");
    check_field_offset(lv, s12388c1f5, ABISELECT(64,60), "S12388C1.s12388c1f5");
  }
}
static Arrange_To_Call_Me vS12388C1(Test_S12388C1, "S12388C1", ABISELECT(80,72));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15293C1  {
  ::S79C39_nt s15293c1f0;
  ::S79C44 s15293c1f1;
  int s15293c1f2;
  void  mf15293c1(); // _ZN8S15293C19mf15293c1Ev
};
//SIG(1 S15293C1) C1{ m FC2{ BC3{ BC4{ BC5{ m Fp Fi[2]}}}} FC6{ BC7{ BC5}} Fi}


void  S15293C1 ::mf15293c1(){}

static void Test_S15293C1()
{
  {
    init_simple_test("S15293C1");
    S15293C1 lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S15293C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15293C1)");
    check_field_offset(lv, s15293c1f0, 0, "S15293C1.s15293c1f0");
    check_field_offset(lv, s15293c1f1, ABISELECT(16,12), "S15293C1.s15293c1f1");
    check_field_offset(lv, s15293c1f2, ABISELECT(32,24), "S15293C1.s15293c1f2");
  }
}
static Arrange_To_Call_Me vS15293C1(Test_S15293C1, "S15293C1", ABISELECT(40,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8340C3_nt  {
  void *s8340c3f0[2];
};
//SIG(-1 S8340C3_nt) C1{ Fp[2]}



//skip512 S8340C3_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8340C1  : S19905C19 {
  int s8340c1f0[2];
  void *s8340c1f1[2];
  short s8340c1f2;
  int s8340c1f3;
  char s8340c1f4;
  int s8340c1f5;
  ::S8340C3_nt s8340c1f6;
  virtual  ~S8340C1(); // _ZN7S8340C1D1Ev
  S8340C1(); // tgen
};
//SIG(1 S8340C1) C1{ BC2{ vd m} vd Fi[2] Fp[2] Fs Fi Fc Fi FC3{ Fp[2]}}


 S8340C1 ::~S8340C1(){ note_dtor("S8340C1", this);}
S8340C1 ::S8340C1(){ note_ctor("S8340C1", this);} // tgen

static void Test_S8340C1()
{
  extern Class_Descriptor cd_S8340C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S8340C1, buf);
    S8340C1 *dp, &lv = *(dp=new (buf) S8340C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S8340C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8340C1)");
    check_base_class_offset(lv, (S19905C19*), 0, "S8340C1");
    check_field_offset(lv, s8340c1f0, ABISELECT(8,4), "S8340C1.s8340c1f0");
    check_field_offset(lv, s8340c1f1, ABISELECT(16,12), "S8340C1.s8340c1f1");
    check_field_offset(lv, s8340c1f2, ABISELECT(32,20), "S8340C1.s8340c1f2");
    check_field_offset(lv, s8340c1f3, ABISELECT(36,24), "S8340C1.s8340c1f3");
    check_field_offset(lv, s8340c1f4, ABISELECT(40,28), "S8340C1.s8340c1f4");
    check_field_offset(lv, s8340c1f5, ABISELECT(44,32), "S8340C1.s8340c1f5");
    check_field_offset(lv, s8340c1f6, ABISELECT(48,36), "S8340C1.s8340c1f6");
    test_class_info(&lv, &cd_S8340C1);
    dp->~S8340C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8340C1(Test_S8340C1, "S8340C1", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN7S8340C1C1Ev();
extern void _ZN7S8340C1D1Ev();
Name_Map name_map_S8340C1[] = {
  NSPAIR(_ZN7S8340C1C1Ev),
  NSPAIR(_ZN7S8340C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19905C19;
extern VTBL_ENTRY _ZTI9S19905C19[];
extern  VTBL_ENTRY _ZTV9S19905C19[];
static Base_Class bases_S8340C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19905C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8340C1[];
extern void _ZN7S8340C1D1Ev();
extern void _ZN7S8340C1D0Ev();
static  VTBL_ENTRY vtc_S8340C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8340C1[0]),
  (VTBL_ENTRY)&_ZN7S8340C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8340C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S8340C1[];
extern  VTBL_ENTRY _ZTV7S8340C1[];
Class_Descriptor cd_S8340C1 = {  "S8340C1", // class name
  bases_S8340C1, 1,
  &(vtc_S8340C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI7S8340C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8340C1),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21716C1  {
  void *s21716c1f0;
  ::S1672C15_nt s21716c1f1;
  int s21716c1f2;
  void *s21716c1f3;
  int s21716c1f4;
  void *s21716c1f5[4];
  char s21716c1f6;
  int s21716c1f7;
  void  mf21716c1(); // _ZN8S21716C19mf21716c1Ev
  virtual  ~S21716C1(); // _ZN8S21716C1D1Ev
  S21716C1(); // tgen
};
//SIG(1 S21716C1) C1{ vd m Fp FC2{ m FC3{ FL[4]}} Fi Fp Fi Fp[4] Fc Fi}


void  S21716C1 ::mf21716c1(){}
 S21716C1 ::~S21716C1(){ note_dtor("S21716C1", this);}
S21716C1 ::S21716C1(){ note_ctor("S21716C1", this);} // tgen

static void Test_S21716C1()
{
  extern Class_Descriptor cd_S21716C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,20)];
    init_test(&cd_S21716C1, buf);
    S21716C1 *dp, &lv = *(dp=new (buf) S21716C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,76), "sizeof(S21716C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21716C1)");
    check_field_offset(lv, s21716c1f0, ABISELECT(8,4), "S21716C1.s21716c1f0");
    check_field_offset(lv, s21716c1f1, ABISELECT(16,8), "S21716C1.s21716c1f1");
    check_field_offset(lv, s21716c1f2, ABISELECT(48,40), "S21716C1.s21716c1f2");
    check_field_offset(lv, s21716c1f3, ABISELECT(56,44), "S21716C1.s21716c1f3");
    check_field_offset(lv, s21716c1f4, ABISELECT(64,48), "S21716C1.s21716c1f4");
    check_field_offset(lv, s21716c1f5, ABISELECT(72,52), "S21716C1.s21716c1f5");
    check_field_offset(lv, s21716c1f6, ABISELECT(104,68), "S21716C1.s21716c1f6");
    check_field_offset(lv, s21716c1f7, ABISELECT(108,72), "S21716C1.s21716c1f7");
    test_class_info(&lv, &cd_S21716C1);
    dp->~S21716C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21716C1(Test_S21716C1, "S21716C1", ABISELECT(112,76));

#else // __cplusplus

extern void _ZN8S21716C1C1Ev();
extern void _ZN8S21716C1D1Ev();
Name_Map name_map_S21716C1[] = {
  NSPAIR(_ZN8S21716C1C1Ev),
  NSPAIR(_ZN8S21716C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21716C1[];
extern void _ZN8S21716C1D1Ev();
extern void _ZN8S21716C1D0Ev();
static  VTBL_ENTRY vtc_S21716C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21716C1[0]),
  (VTBL_ENTRY)&_ZN8S21716C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21716C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21716C1[];
extern  VTBL_ENTRY _ZTV8S21716C1[];
Class_Descriptor cd_S21716C1 = {  "S21716C1", // class name
  0,0,//no base classes
  &(vtc_S21716C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,76), // object size
  NSPAIRA(_ZTI8S21716C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21716C1),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16894C2  {
  ::S6961C7 s16894c2f0;
  ::S6961C7 s16894c2f1;
  int s16894c2f2[2];
  void  mf16894c2(); // _ZN8S16894C29mf16894c2Ev
};
//SIG(-1 S16894C2) C1{ m FC2{ BC3{ m Fp Fi[2]}} FC2 Fi[2]}


void  S16894C2 ::mf16894c2(){}

static void Test_S16894C2()
{
  {
    init_simple_test("S16894C2");
    S16894C2 lv;
    check2(sizeof(lv), ABISELECT(40,32), "sizeof(S16894C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16894C2)");
    check_field_offset(lv, s16894c2f0, 0, "S16894C2.s16894c2f0");
    check_field_offset(lv, s16894c2f1, ABISELECT(16,12), "S16894C2.s16894c2f1");
    check_field_offset(lv, s16894c2f2, ABISELECT(32,24), "S16894C2.s16894c2f2");
  }
}
static Arrange_To_Call_Me vS16894C2(Test_S16894C2, "S16894C2", ABISELECT(40,32));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16894C1  {
  int s16894c1f0;
  void *s16894c1f1;
  ::S16894C2 s16894c1f2;
  void  mf16894c1(); // _ZN8S16894C19mf16894c1Ev
};
//SIG(1 S16894C1) C1{ m Fi Fp FC2{ m FC3{ BC4{ m Fp Fi[2]}} FC3 Fi[2]}}


void  S16894C1 ::mf16894c1(){}

static void Test_S16894C1()
{
  {
    init_simple_test("S16894C1");
    S16894C1 lv;
    check2(sizeof(lv), ABISELECT(56,40), "sizeof(S16894C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16894C1)");
    check_field_offset(lv, s16894c1f0, 0, "S16894C1.s16894c1f0");
    check_field_offset(lv, s16894c1f1, ABISELECT(8,4), "S16894C1.s16894c1f1");
    check_field_offset(lv, s16894c1f2, ABISELECT(16,8), "S16894C1.s16894c1f2");
  }
}
static Arrange_To_Call_Me vS16894C1(Test_S16894C1, "S16894C1", ABISELECT(56,40));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10525C1  {
  unsigned char s10525c1f0:1;
  char s10525c1f1:3;
  char s10525c1f2:4;
  char s10525c1f3:8;
  unsigned char s10525c1f4:1;
  char s10525c1f5:7;
  char s10525c1f6:8;
  unsigned char s10525c1f7:1;
  char s10525c1f8:7;
};
//SIG(1 S10525C1) C1{ Fc:1 Fc:3 Fc:4 Fc:8 Fc:1 Fc:7 Fc:8 Fc:1 Fc:7}



static void Test_S10525C1()
{
  {
    init_simple_test("S10525C1");
    static S10525C1 lv;
    check2(sizeof(lv), 5, "sizeof(S10525C1)");
    check2(__alignof__(lv), 1, "__alignof__(S10525C1)");
    set_bf_and_test(lv, s10525c1f0, 0, 0, 1, 1, "S10525C1");
    set_bf_and_test(lv, s10525c1f1, 0, 1, 3, 1, "S10525C1");
    set_bf_and_test(lv, s10525c1f1, 0, 1, 3, hide_sll(1LL<<2), "S10525C1");
    set_bf_and_test(lv, s10525c1f2, 0, 4, 4, 1, "S10525C1");
    set_bf_and_test(lv, s10525c1f2, 0, 4, 4, hide_sll(1LL<<3), "S10525C1");
    set_bf_and_test(lv, s10525c1f3, 1, 0, 8, 1, "S10525C1");
    set_bf_and_test(lv, s10525c1f3, 1, 0, 8, hide_sll(1LL<<7), "S10525C1");
    set_bf_and_test(lv, s10525c1f4, 2, 0, 1, 1, "S10525C1");
    set_bf_and_test(lv, s10525c1f5, 2, 1, 7, 1, "S10525C1");
    set_bf_and_test(lv, s10525c1f5, 2, 1, 7, hide_sll(1LL<<6), "S10525C1");
    set_bf_and_test(lv, s10525c1f6, 3, 0, 8, 1, "S10525C1");
    set_bf_and_test(lv, s10525c1f6, 3, 0, 8, hide_sll(1LL<<7), "S10525C1");
    set_bf_and_test(lv, s10525c1f7, 4, 0, 1, 1, "S10525C1");
    set_bf_and_test(lv, s10525c1f8, 4, 1, 7, 1, "S10525C1");
    set_bf_and_test(lv, s10525c1f8, 4, 1, 7, hide_sll(1LL<<6), "S10525C1");
  }
}
static Arrange_To_Call_Me vS10525C1(Test_S10525C1, "S10525C1", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16236C1  {
  ::S5266C19_nt s16236c1f0;
  ::S5266C19_nt s16236c1f1;
  short s16236c1f2;
  ::S17777C6_nt s16236c1f3[3];
  int s16236c1f4;
  void  mf16236c1(); // _ZN8S16236C19mf16236c1Ev
};
//SIG(1 S16236C1) C1{ m FC2{ m Fp Fi FC3{ m}} FC2 Fs FC4{ m Fp}[3] Fi}


void  S16236C1 ::mf16236c1(){}

static void Test_S16236C1()
{
  {
    init_simple_test("S16236C1");
    S16236C1 lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S16236C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16236C1)");
    check_field_offset(lv, s16236c1f0, 0, "S16236C1.s16236c1f0");
    check_field_offset(lv, s16236c1f1, ABISELECT(16,12), "S16236C1.s16236c1f1");
    check_field_offset(lv, s16236c1f2, ABISELECT(32,24), "S16236C1.s16236c1f2");
    check_field_offset(lv, s16236c1f3, ABISELECT(40,28), "S16236C1.s16236c1f3");
    check_field_offset(lv, s16236c1f4, ABISELECT(64,40), "S16236C1.s16236c1f4");
  }
}
static Arrange_To_Call_Me vS16236C1(Test_S16236C1, "S16236C1", ABISELECT(72,44));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2591C2  : S7719C17_nt {
  int s2591c2f0;
  virtual  ~S2591C2(); // _ZN7S2591C2D1Ev
  virtual void  v5(); // _ZN7S2591C22v5Ev
  virtual void  v6(); // _ZN7S2591C22v6Ev
  virtual void  v7(); // _ZN7S2591C22v7Ev
  virtual void  v8(); // _ZN7S2591C22v8Ev
  S2591C2(); // tgen
};
//SIG(-1 S2591C2) C1{ BC2{ m Fi} vd v1 v2 v3 v4 Fi}


 S2591C2 ::~S2591C2(){ note_dtor("S2591C2", this);}
void  S2591C2 ::v5(){vfunc_called(this, "_ZN7S2591C22v5Ev");}
void  S2591C2 ::v6(){vfunc_called(this, "_ZN7S2591C22v6Ev");}
void  S2591C2 ::v7(){vfunc_called(this, "_ZN7S2591C22v7Ev");}
void  S2591C2 ::v8(){vfunc_called(this, "_ZN7S2591C22v8Ev");}
S2591C2 ::S2591C2(){ note_ctor("S2591C2", this);} // tgen

static void Test_S2591C2()
{
  extern Class_Descriptor cd_S2591C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S2591C2, buf);
    S2591C2 *dp, &lv = *(dp=new (buf) S2591C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S2591C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2591C2)");
    check_base_class_offset(lv, (S7719C17_nt*), ABISELECT(8,4), "S2591C2");
    check_field_offset(lv, s2591c2f0, ABISELECT(12,8), "S2591C2.s2591c2f0");
    test_class_info(&lv, &cd_S2591C2);
    dp->~S2591C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2591C2(Test_S2591C2, "S2591C2", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S2591C2C1Ev();
extern void _ZN7S2591C2D1Ev();
Name_Map name_map_S2591C2[] = {
  NSPAIR(_ZN7S2591C2C1Ev),
  NSPAIR(_ZN7S2591C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7719C17_nt;
extern VTBL_ENTRY _ZTI11S7719C17_nt[];
static Base_Class bases_S2591C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7719C17_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2591C2[];
extern void _ZN7S2591C2D1Ev();
extern void _ZN7S2591C2D0Ev();
extern void _ZN7S2591C22v5Ev();
extern void _ZN7S2591C22v6Ev();
extern void _ZN7S2591C22v7Ev();
extern void _ZN7S2591C22v8Ev();
static  VTBL_ENTRY vtc_S2591C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2591C2[0]),
  (VTBL_ENTRY)&_ZN7S2591C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2591C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2591C22v5Ev,
  (VTBL_ENTRY)&_ZN7S2591C22v6Ev,
  (VTBL_ENTRY)&_ZN7S2591C22v7Ev,
  (VTBL_ENTRY)&_ZN7S2591C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S2591C2[];
extern  VTBL_ENTRY _ZTV7S2591C2[];
Class_Descriptor cd_S2591C2 = {  "S2591C2", // class name
  bases_S2591C2, 1,
  &(vtc_S2591C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S2591C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S2591C2),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2591C1  : S2591C2 {
  virtual void  v1(); // _ZN7S2591C12v1Ev
  virtual void  v2(); // _ZN7S2591C12v2Ev
  virtual void  v3(); // _ZN7S2591C12v3Ev
  virtual void  v4(); // _ZN7S2591C12v4Ev
  ~S2591C1(); // tgen
  S2591C1(); // tgen
};
//SIG(1 S2591C1) C1{ BC2{ BC3{ m Fi} vd v5 v6 v7 v8 Fi} v1 v2 v3 v4}


void  S2591C1 ::v1(){vfunc_called(this, "_ZN7S2591C12v1Ev");}
void  S2591C1 ::v2(){vfunc_called(this, "_ZN7S2591C12v2Ev");}
void  S2591C1 ::v3(){vfunc_called(this, "_ZN7S2591C12v3Ev");}
void  S2591C1 ::v4(){vfunc_called(this, "_ZN7S2591C12v4Ev");}
S2591C1 ::~S2591C1(){ note_dtor("S2591C1", this);} // tgen
S2591C1 ::S2591C1(){ note_ctor("S2591C1", this);} // tgen

static void Test_S2591C1()
{
  extern Class_Descriptor cd_S2591C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S2591C1, buf);
    S2591C1 *dp, &lv = *(dp=new (buf) S2591C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S2591C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2591C1)");
    check_base_class_offset(lv, (S7719C17_nt*)(S2591C2*), ABISELECT(8,4), "S2591C1");
    check_base_class_offset(lv, (S2591C2*), 0, "S2591C1");
    test_class_info(&lv, &cd_S2591C1);
    dp->~S2591C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2591C1(Test_S2591C1, "S2591C1", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S2591C1C1Ev();
extern void _ZN7S2591C1D1Ev();
Name_Map name_map_S2591C1[] = {
  NSPAIR(_ZN7S2591C1C1Ev),
  NSPAIR(_ZN7S2591C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7719C17_nt;
extern VTBL_ENTRY _ZTI11S7719C17_nt[];
extern Class_Descriptor cd_S2591C2;
extern VTBL_ENTRY _ZTI7S2591C2[];
extern  VTBL_ENTRY _ZTV7S2591C2[];
static Base_Class bases_S2591C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7719C17_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2591C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2591C1[];
extern void _ZN7S2591C1D1Ev();
extern void _ZN7S2591C1D0Ev();
extern void _ZN7S2591C22v5Ev();
extern void _ZN7S2591C22v6Ev();
extern void _ZN7S2591C22v7Ev();
extern void _ZN7S2591C22v8Ev();
extern void _ZN7S2591C12v1Ev();
extern void _ZN7S2591C12v2Ev();
extern void _ZN7S2591C12v3Ev();
extern void _ZN7S2591C12v4Ev();
static  VTBL_ENTRY vtc_S2591C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2591C1[0]),
  (VTBL_ENTRY)&_ZN7S2591C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2591C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2591C22v5Ev,
  (VTBL_ENTRY)&_ZN7S2591C22v6Ev,
  (VTBL_ENTRY)&_ZN7S2591C22v7Ev,
  (VTBL_ENTRY)&_ZN7S2591C22v8Ev,
  (VTBL_ENTRY)&_ZN7S2591C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2591C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2591C12v3Ev,
  (VTBL_ENTRY)&_ZN7S2591C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S2591C1[];
extern  VTBL_ENTRY _ZTV7S2591C1[];
Class_Descriptor cd_S2591C1 = {  "S2591C1", // class name
  bases_S2591C1, 2,
  &(vtc_S2591C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S2591C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2591C1),12, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16627C1  {
  int s16627c1f0;
  ::S79C44 s16627c1f1;
  ::S15924C4_nt s16627c1f2;
  void  mf16627c1(); // _ZN8S16627C19mf16627c1Ev
};
//SIG(1 S16627C1) C1{ m Fi FC2{ BC3{ BC4{ m Fp Fi[2]}}} FC5{ m Fp Fi}}


void  S16627C1 ::mf16627c1(){}

static void Test_S16627C1()
{
  {
    init_simple_test("S16627C1");
    S16627C1 lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S16627C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16627C1)");
    check_field_offset(lv, s16627c1f0, 0, "S16627C1.s16627c1f0");
    check_field_offset(lv, s16627c1f1, ABISELECT(8,4), "S16627C1.s16627c1f1");
    check_field_offset(lv, s16627c1f2, ABISELECT(24,16), "S16627C1.s16627c1f2");
  }
}
static Arrange_To_Call_Me vS16627C1(Test_S16627C1, "S16627C1", ABISELECT(40,24));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11615C2_nt  {
  int s11615c2f0[3];
};
//SIG(-1 S11615C2_nt) C1{ Fi[3]}



//skip512 S11615C2_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11615C1  {
  ::S11615C2_nt s11615c1f0;
  ::S11615C2_nt s11615c1f1;
  char s11615c1f2[12];
  int s11615c1f3[2];
  char s11615c1f4[4];
  long s11615c1f5;
  char s11615c1f6[8];
};
//SIG(1 S11615C1) C1{ FC2{ Fi[3]} FC2 Fc[12] Fi[2] Fc[4] Fl Fc[8]}



static void Test_S11615C1()
{
  {
    init_simple_test("S11615C1");
    S11615C1 lv;
    check2(sizeof(lv), ABISELECT(64,60), "sizeof(S11615C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11615C1)");
    check_field_offset(lv, s11615c1f0, 0, "S11615C1.s11615c1f0");
    check_field_offset(lv, s11615c1f1, 12, "S11615C1.s11615c1f1");
    check_field_offset(lv, s11615c1f2, 24, "S11615C1.s11615c1f2");
    check_field_offset(lv, s11615c1f3, 36, "S11615C1.s11615c1f3");
    check_field_offset(lv, s11615c1f4, 44, "S11615C1.s11615c1f4");
    check_field_offset(lv, s11615c1f5, 48, "S11615C1.s11615c1f5");
    check_field_offset(lv, s11615c1f6, ABISELECT(56,52), "S11615C1.s11615c1f6");
  }
}
static Arrange_To_Call_Me vS11615C1(Test_S11615C1, "S11615C1", ABISELECT(64,60));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17058C1  {
  int s17058c1f0[2];
  char s17058c1f1;
  long s17058c1f2;
  ::S1671C15_nt s17058c1f3;
  ::S7719C17_nt s17058c1f4;
  void  mf17058c1(); // _ZN8S17058C19mf17058c1Ev
};
//SIG(1 S17058C1) C1{ m Fi[2] Fc Fl FC2{ m FC3{ Fl[4]}} FC4{ m Fi}}


void  S17058C1 ::mf17058c1(){}

static void Test_S17058C1()
{
  {
    init_simple_test("S17058C1");
    S17058C1 lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S17058C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17058C1)");
    check_field_offset(lv, s17058c1f0, 0, "S17058C1.s17058c1f0");
    check_field_offset(lv, s17058c1f1, 8, "S17058C1.s17058c1f1");
    check_field_offset(lv, s17058c1f2, ABISELECT(16,12), "S17058C1.s17058c1f2");
    check_field_offset(lv, s17058c1f3, ABISELECT(24,16), "S17058C1.s17058c1f3");
    check_field_offset(lv, s17058c1f4, ABISELECT(56,32), "S17058C1.s17058c1f4");
  }
}
static Arrange_To_Call_Me vS17058C1(Test_S17058C1, "S17058C1", ABISELECT(64,36));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8116C1  : S1679C4_nt {
  ::S5266C19_nt s8116c1f0;
  int s8116c1f1;
  void *s8116c1f2;
  virtual  ~S8116C1(); // _ZN7S8116C1D1Ev
  S8116C1(); // tgen
};
//SIG(1 S8116C1) C1{ BC2{ vd m Fi} vd FC3{ m Fp Fi FC4{ m}} Fi Fp}


 S8116C1 ::~S8116C1(){ note_dtor("S8116C1", this);}
S8116C1 ::S8116C1(){ note_ctor("S8116C1", this);} // tgen

static void Test_S8116C1()
{
  extern Class_Descriptor cd_S8116C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S8116C1, buf);
    S8116C1 *dp, &lv = *(dp=new (buf) S8116C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S8116C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8116C1)");
    check_base_class_offset(lv, (S1679C4_nt*), 0, "S8116C1");
    check_field_offset(lv, s8116c1f0, ABISELECT(16,8), "S8116C1.s8116c1f0");
    check_field_offset(lv, s8116c1f1, ABISELECT(32,20), "S8116C1.s8116c1f1");
    check_field_offset(lv, s8116c1f2, ABISELECT(40,24), "S8116C1.s8116c1f2");
    test_class_info(&lv, &cd_S8116C1);
    dp->~S8116C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8116C1(Test_S8116C1, "S8116C1", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN7S8116C1C1Ev();
extern void _ZN7S8116C1D1Ev();
Name_Map name_map_S8116C1[] = {
  NSPAIR(_ZN7S8116C1C1Ev),
  NSPAIR(_ZN7S8116C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1679C4_nt;
extern VTBL_ENTRY _ZTI10S1679C4_nt[];
extern  VTBL_ENTRY _ZTV10S1679C4_nt[];
static Base_Class bases_S8116C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1679C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8116C1[];
extern void _ZN7S8116C1D1Ev();
extern void _ZN7S8116C1D0Ev();
static  VTBL_ENTRY vtc_S8116C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8116C1[0]),
  (VTBL_ENTRY)&_ZN7S8116C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8116C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S8116C1[];
extern  VTBL_ENTRY _ZTV7S8116C1[];
Class_Descriptor cd_S8116C1 = {  "S8116C1", // class name
  bases_S8116C1, 1,
  &(vtc_S8116C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI7S8116C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8116C1),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14135C1  {
  void *s14135c1f0;
  ::S16894C2 s14135c1f1;
};
//SIG(1 S14135C1) C1{ Fp FC2{ m FC3{ BC4{ m Fp Fi[2]}} FC3 Fi[2]}}



static void Test_S14135C1()
{
  {
    init_simple_test("S14135C1");
    S14135C1 lv;
    check2(sizeof(lv), ABISELECT(48,36), "sizeof(S14135C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14135C1)");
    check_field_offset(lv, s14135c1f0, 0, "S14135C1.s14135c1f0");
    check_field_offset(lv, s14135c1f1, ABISELECT(8,4), "S14135C1.s14135c1f1");
  }
}
static Arrange_To_Call_Me vS14135C1(Test_S14135C1, "S14135C1", ABISELECT(48,36));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21749C1  {
  void *s21749c1f0;
  int s21749c1f1;
  ::S5266C19_nt s21749c1f2;
  void *s21749c1f3;
  int s21749c1f4[5];
  void  mf21749c1(); // _ZN8S21749C19mf21749c1Ev
  virtual  ~S21749C1(); // _ZN8S21749C1D1Ev
  S21749C1(); // tgen
};
//SIG(1 S21749C1) C1{ vd m Fp Fi FC2{ m Fp Fi FC3{ m}} Fp Fi[5]}


void  S21749C1 ::mf21749c1(){}
 S21749C1 ::~S21749C1(){ note_dtor("S21749C1", this);}
S21749C1 ::S21749C1(){ note_ctor("S21749C1", this);} // tgen

static void Test_S21749C1()
{
  extern Class_Descriptor cd_S21749C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,13)];
    init_test(&cd_S21749C1, buf);
    S21749C1 *dp, &lv = *(dp=new (buf) S21749C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,48), "sizeof(S21749C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21749C1)");
    check_field_offset(lv, s21749c1f0, ABISELECT(8,4), "S21749C1.s21749c1f0");
    check_field_offset(lv, s21749c1f1, ABISELECT(16,8), "S21749C1.s21749c1f1");
    check_field_offset(lv, s21749c1f2, ABISELECT(24,12), "S21749C1.s21749c1f2");
    check_field_offset(lv, s21749c1f3, ABISELECT(40,24), "S21749C1.s21749c1f3");
    check_field_offset(lv, s21749c1f4, ABISELECT(48,28), "S21749C1.s21749c1f4");
    test_class_info(&lv, &cd_S21749C1);
    dp->~S21749C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21749C1(Test_S21749C1, "S21749C1", ABISELECT(72,48));

#else // __cplusplus

extern void _ZN8S21749C1C1Ev();
extern void _ZN8S21749C1D1Ev();
Name_Map name_map_S21749C1[] = {
  NSPAIR(_ZN8S21749C1C1Ev),
  NSPAIR(_ZN8S21749C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21749C1[];
extern void _ZN8S21749C1D1Ev();
extern void _ZN8S21749C1D0Ev();
static  VTBL_ENTRY vtc_S21749C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21749C1[0]),
  (VTBL_ENTRY)&_ZN8S21749C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21749C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21749C1[];
extern  VTBL_ENTRY _ZTV8S21749C1[];
Class_Descriptor cd_S21749C1 = {  "S21749C1", // class name
  0,0,//no base classes
  &(vtc_S21749C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,48), // object size
  NSPAIRA(_ZTI8S21749C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21749C1),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12776C1  {
  int s12776c1f0;
  void *s12776c1f1[3];
  int s12776c1f2[2];
  void *s12776c1f3[2];
  int s12776c1f4[5];
  ::S3041C4_nt s12776c1f5;
};
//SIG(1 S12776C1) C1{ Fi Fp[3] Fi[2] Fp[2] Fi[5] FC2{ Fl[4]}}



static void Test_S12776C1()
{
  {
    init_simple_test("S12776C1");
    S12776C1 lv;
    check2(sizeof(lv), ABISELECT(112,68), "sizeof(S12776C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12776C1)");
    check_field_offset(lv, s12776c1f0, 0, "S12776C1.s12776c1f0");
    check_field_offset(lv, s12776c1f1, ABISELECT(8,4), "S12776C1.s12776c1f1");
    check_field_offset(lv, s12776c1f2, ABISELECT(32,16), "S12776C1.s12776c1f2");
    check_field_offset(lv, s12776c1f3, ABISELECT(40,24), "S12776C1.s12776c1f3");
    check_field_offset(lv, s12776c1f4, ABISELECT(56,32), "S12776C1.s12776c1f4");
    check_field_offset(lv, s12776c1f5, ABISELECT(80,52), "S12776C1.s12776c1f5");
  }
}
static Arrange_To_Call_Me vS12776C1(Test_S12776C1, "S12776C1", ABISELECT(112,68));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20326C2  {
  __tsi64 s20326c2f0;
  int s20326c2f1;
  virtual  ~S20326C2(); // _ZN8S20326C2D1Ev
  virtual void  v6(); // _ZN8S20326C22v6Ev
  virtual void  v7(); // _ZN8S20326C22v7Ev
  S20326C2(); // tgen
};
//SIG(-1 S20326C2) C1{ vd v1 v2 FL Fi}


 S20326C2 ::~S20326C2(){ note_dtor("S20326C2", this);}
void  S20326C2 ::v6(){vfunc_called(this, "_ZN8S20326C22v6Ev");}
void  S20326C2 ::v7(){vfunc_called(this, "_ZN8S20326C22v7Ev");}
S20326C2 ::S20326C2(){ note_ctor("S20326C2", this);} // tgen

static void Test_S20326C2()
{
  extern Class_Descriptor cd_S20326C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S20326C2, buf);
    S20326C2 *dp, &lv = *(dp=new (buf) S20326C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S20326C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20326C2)");
    check_field_offset(lv, s20326c2f0, ABISELECT(8,4), "S20326C2.s20326c2f0");
    check_field_offset(lv, s20326c2f1, ABISELECT(16,12), "S20326C2.s20326c2f1");
    test_class_info(&lv, &cd_S20326C2);
    dp->~S20326C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20326C2(Test_S20326C2, "S20326C2", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S20326C2C1Ev();
extern void _ZN8S20326C2D1Ev();
Name_Map name_map_S20326C2[] = {
  NSPAIR(_ZN8S20326C2C1Ev),
  NSPAIR(_ZN8S20326C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20326C2[];
extern void _ZN8S20326C2D1Ev();
extern void _ZN8S20326C2D0Ev();
extern void _ZN8S20326C22v6Ev();
extern void _ZN8S20326C22v7Ev();
static  VTBL_ENTRY vtc_S20326C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20326C2[0]),
  (VTBL_ENTRY)&_ZN8S20326C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20326C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20326C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20326C22v7Ev,
};
extern VTBL_ENTRY _ZTI8S20326C2[];
extern  VTBL_ENTRY _ZTV8S20326C2[];
Class_Descriptor cd_S20326C2 = {  "S20326C2", // class name
  0,0,//no base classes
  &(vtc_S20326C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S20326C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20326C2),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20326C1  : virtual S20326C2 {
  long double s20326c1f0;
  virtual void  v1(); // _ZN8S20326C12v1Ev
  virtual void  v2(); // _ZN8S20326C12v2Ev
  virtual void  v3(); // _ZN8S20326C12v3Ev
  virtual void  v4(); // _ZN8S20326C12v4Ev
  virtual void  v5(); // _ZN8S20326C12v5Ev
  ~S20326C1(); // tgen
  S20326C1(); // tgen
};
//SIG(1 S20326C1) C1{ VBC2{ vd v6 v7 FL Fi} v1 v2 v3 v4 v5 FD}


void  S20326C1 ::v1(){vfunc_called(this, "_ZN8S20326C12v1Ev");}
void  S20326C1 ::v2(){vfunc_called(this, "_ZN8S20326C12v2Ev");}
void  S20326C1 ::v3(){vfunc_called(this, "_ZN8S20326C12v3Ev");}
void  S20326C1 ::v4(){vfunc_called(this, "_ZN8S20326C12v4Ev");}
void  S20326C1 ::v5(){vfunc_called(this, "_ZN8S20326C12v5Ev");}
S20326C1 ::~S20326C1(){ note_dtor("S20326C1", this);} // tgen
S20326C1 ::S20326C1(){ note_ctor("S20326C1", this);} // tgen

static void Test_S20326C1()
{
  extern Class_Descriptor cd_S20326C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,9)];
    init_test(&cd_S20326C1, buf);
    S20326C1 *dp, &lv = *(dp=new (buf) S20326C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S20326C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20326C1)");
    check_base_class_offset(lv, (S20326C2*), ABISELECT(32,16), "S20326C1");
    check_field_offset(lv, s20326c1f0, ABISELECT(16,4), "S20326C1.s20326c1f0");
    test_class_info(&lv, &cd_S20326C1);
    dp->~S20326C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20326C1(Test_S20326C1, "S20326C1", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN8S20326C1C1Ev();
extern void _ZN8S20326C1D1Ev();
Name_Map name_map_S20326C1[] = {
  NSPAIR(_ZN8S20326C1C1Ev),
  NSPAIR(_ZN8S20326C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20326C2;
extern VTBL_ENTRY _ZTI8S20326C2[];
extern  VTBL_ENTRY _ZTV8S20326C2[];
static Base_Class bases_S20326C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20326C2,    ABISELECT(32,16), //bcp->offset
    10, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20326C1[];
extern void _ZN8S20326C12v1Ev();
extern void _ZN8S20326C12v2Ev();
extern void _ZN8S20326C12v3Ev();
extern void _ZN8S20326C12v4Ev();
extern void _ZN8S20326C12v5Ev();
extern void _ZN8S20326C1D1Ev();
extern void _ZN8S20326C1D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S20326C1D1Ev,_ZTv0_n12_N8S20326C1D1Ev)();
extern void ABISELECT(_ZThn32_N8S20326C1D1Ev,_ZThn16_N8S20326C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20326C1D0Ev,_ZTv0_n12_N8S20326C1D0Ev)();
extern void ABISELECT(_ZThn32_N8S20326C1D0Ev,_ZThn16_N8S20326C1D0Ev)() __attribute__((weak));
extern void _ZN8S20326C22v6Ev();
extern void _ZN8S20326C22v7Ev();
static  VTBL_ENTRY vtc_S20326C1[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20326C1[0]),
  (VTBL_ENTRY)&_ZN8S20326C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20326C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20326C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20326C12v4Ev,
  (VTBL_ENTRY)&_ZN8S20326C12v5Ev,
  (VTBL_ENTRY)&_ZN8S20326C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20326C1D0Ev,
  0,
  0,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20326C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20326C1D1Ev,_ZTv0_n12_N8S20326C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20326C1D0Ev,_ZTv0_n12_N8S20326C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20326C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20326C22v7Ev,
};
extern VTBL_ENTRY _ZTV8S20326C1[];
static  VTT_ENTRY vtt_S20326C1[] = {
  {&(_ZTV8S20326C1[3]),  3,19},
  {&(_ZTV8S20326C1[15]),  15,19},
};
extern VTBL_ENTRY _ZTI8S20326C1[];
extern  VTBL_ENTRY _ZTV8S20326C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20326C1[];
static VTBL_ENTRY alt_thunk_names132[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20326C1D0Ev,_ZTv0_n12_N8S20326C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20326C1D0Ev,_ZThn16_N8S20326C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20326C1D1Ev,_ZTv0_n12_N8S20326C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20326C1D1Ev,_ZThn16_N8S20326C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20326C1 = {  "S20326C1", // class name
  bases_S20326C1, 1,
  &(vtc_S20326C1[0]), // expected_vtbl_contents
  &(vtt_S20326C1[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI8S20326C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20326C1),19, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20326C1),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names132,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6565C2  {
  virtual void  v2(); // _ZN7S6565C22v2Ev
  virtual void  v3(); // _ZN7S6565C22v3Ev
  virtual void  v4(); // _ZN7S6565C22v4Ev
  virtual void  v5(); // _ZN7S6565C22v5Ev
  virtual void  v6(); // _ZN7S6565C22v6Ev
  virtual void  v7(); // _ZN7S6565C22v7Ev
  virtual void  v8(); // _ZN7S6565C22v8Ev
  virtual void  v9(); // _ZN7S6565C22v9Ev
  virtual void  v10(); // _ZN7S6565C23v10Ev
  ~S6565C2(); // tgen
  S6565C2(); // tgen
};
//SIG(-1 S6565C2) C1{ v1 v2 v3 v4 v5 v6 v7 v8 v9}


void  S6565C2 ::v2(){vfunc_called(this, "_ZN7S6565C22v2Ev");}
void  S6565C2 ::v3(){vfunc_called(this, "_ZN7S6565C22v3Ev");}
void  S6565C2 ::v4(){vfunc_called(this, "_ZN7S6565C22v4Ev");}
void  S6565C2 ::v5(){vfunc_called(this, "_ZN7S6565C22v5Ev");}
void  S6565C2 ::v6(){vfunc_called(this, "_ZN7S6565C22v6Ev");}
void  S6565C2 ::v7(){vfunc_called(this, "_ZN7S6565C22v7Ev");}
void  S6565C2 ::v8(){vfunc_called(this, "_ZN7S6565C22v8Ev");}
void  S6565C2 ::v9(){vfunc_called(this, "_ZN7S6565C22v9Ev");}
void  S6565C2 ::v10(){vfunc_called(this, "_ZN7S6565C23v10Ev");}
S6565C2 ::~S6565C2(){ note_dtor("S6565C2", this);} // tgen
S6565C2 ::S6565C2(){ note_ctor("S6565C2", this);} // tgen

static void Test_S6565C2()
{
  extern Class_Descriptor cd_S6565C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S6565C2, buf);
    S6565C2 *dp, &lv = *(dp=new (buf) S6565C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S6565C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6565C2)");
    test_class_info(&lv, &cd_S6565C2);
    dp->~S6565C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6565C2(Test_S6565C2, "S6565C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S6565C2C1Ev();
extern void _ZN7S6565C2D1Ev();
Name_Map name_map_S6565C2[] = {
  NSPAIR(_ZN7S6565C2C1Ev),
  NSPAIR(_ZN7S6565C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6565C2[];
extern void _ZN7S6565C22v2Ev();
extern void _ZN7S6565C22v3Ev();
extern void _ZN7S6565C22v4Ev();
extern void _ZN7S6565C22v5Ev();
extern void _ZN7S6565C22v6Ev();
extern void _ZN7S6565C22v7Ev();
extern void _ZN7S6565C22v8Ev();
extern void _ZN7S6565C22v9Ev();
extern void _ZN7S6565C23v10Ev();
static  VTBL_ENTRY vtc_S6565C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6565C2[0]),
  (VTBL_ENTRY)&_ZN7S6565C22v2Ev,
  (VTBL_ENTRY)&_ZN7S6565C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6565C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6565C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6565C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6565C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6565C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6565C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6565C23v10Ev,
};
extern VTBL_ENTRY _ZTI7S6565C2[];
extern  VTBL_ENTRY _ZTV7S6565C2[];
Class_Descriptor cd_S6565C2 = {  "S6565C2", // class name
  0,0,//no base classes
  &(vtc_S6565C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6565C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6565C2),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6565C1  : S6565C2 {
  virtual  ~S6565C1(); // _ZN7S6565C1D1Ev
  virtual void  v1(); // _ZN7S6565C12v1Ev
  S6565C1(); // tgen
};
//SIG(1 S6565C1) C1{ BC2{ v2 v3 v4 v5 v6 v7 v8 v9 v10} vd v1}


 S6565C1 ::~S6565C1(){ note_dtor("S6565C1", this);}
void  S6565C1 ::v1(){vfunc_called(this, "_ZN7S6565C12v1Ev");}
S6565C1 ::S6565C1(){ note_ctor("S6565C1", this);} // tgen

static void Test_S6565C1()
{
  extern Class_Descriptor cd_S6565C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S6565C1, buf);
    S6565C1 *dp, &lv = *(dp=new (buf) S6565C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S6565C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6565C1)");
    check_base_class_offset(lv, (S6565C2*), 0, "S6565C1");
    test_class_info(&lv, &cd_S6565C1);
    dp->~S6565C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6565C1(Test_S6565C1, "S6565C1", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S6565C1C1Ev();
extern void _ZN7S6565C1D1Ev();
Name_Map name_map_S6565C1[] = {
  NSPAIR(_ZN7S6565C1C1Ev),
  NSPAIR(_ZN7S6565C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6565C2;
extern VTBL_ENTRY _ZTI7S6565C2[];
extern  VTBL_ENTRY _ZTV7S6565C2[];
static Base_Class bases_S6565C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6565C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6565C1[];
extern void _ZN7S6565C22v2Ev();
extern void _ZN7S6565C22v3Ev();
extern void _ZN7S6565C22v4Ev();
extern void _ZN7S6565C22v5Ev();
extern void _ZN7S6565C22v6Ev();
extern void _ZN7S6565C22v7Ev();
extern void _ZN7S6565C22v8Ev();
extern void _ZN7S6565C22v9Ev();
extern void _ZN7S6565C23v10Ev();
extern void _ZN7S6565C1D1Ev();
extern void _ZN7S6565C1D0Ev();
extern void _ZN7S6565C12v1Ev();
static  VTBL_ENTRY vtc_S6565C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6565C1[0]),
  (VTBL_ENTRY)&_ZN7S6565C22v2Ev,
  (VTBL_ENTRY)&_ZN7S6565C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6565C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6565C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6565C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6565C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6565C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6565C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6565C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6565C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6565C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6565C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S6565C1[];
extern  VTBL_ENTRY _ZTV7S6565C1[];
Class_Descriptor cd_S6565C1 = {  "S6565C1", // class name
  bases_S6565C1, 1,
  &(vtc_S6565C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6565C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6565C1),14, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20088C2_nt  {
  virtual void  v2(); // _ZN11S20088C2_nt2v2Ev
  virtual void  v3(); // _ZN11S20088C2_nt2v3Ev
  ~S20088C2_nt(); // tgen
  S20088C2_nt(); // tgen
};
//SIG(-1 S20088C2_nt) C1{ v1 v2}


void  S20088C2_nt ::v2(){vfunc_called(this, "_ZN11S20088C2_nt2v2Ev");}
void  S20088C2_nt ::v3(){vfunc_called(this, "_ZN11S20088C2_nt2v3Ev");}
S20088C2_nt ::~S20088C2_nt(){ note_dtor("S20088C2_nt", this);} // tgen
S20088C2_nt ::S20088C2_nt(){ note_ctor("S20088C2_nt", this);} // tgen

//skip512 S20088C2_nt

#else // __cplusplus

extern void _ZN11S20088C2_ntC1Ev();
extern void _ZN11S20088C2_ntD1Ev();
Name_Map name_map_S20088C2_nt[] = {
  NSPAIR(_ZN11S20088C2_ntC1Ev),
  NSPAIR(_ZN11S20088C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S20088C2_nt[];
extern void _ZN11S20088C2_nt2v2Ev();
extern void _ZN11S20088C2_nt2v3Ev();
static  VTBL_ENTRY vtc_S20088C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S20088C2_nt[0]),
  (VTBL_ENTRY)&_ZN11S20088C2_nt2v2Ev,
  (VTBL_ENTRY)&_ZN11S20088C2_nt2v3Ev,
};
extern VTBL_ENTRY _ZTI11S20088C2_nt[];
VTBL_ENTRY *P__ZTI11S20088C2_nt = _ZTI11S20088C2_nt; 
extern  VTBL_ENTRY _ZTV11S20088C2_nt[];
Class_Descriptor cd_S20088C2_nt = {  "S20088C2_nt", // class name
  0,0,//no base classes
  &(vtc_S20088C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S20088C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S20088C2_nt),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20088C3  {
  __tsi64 s20088c3f0;
  int s20088c3f1;
  virtual  ~S20088C3(); // _ZN8S20088C3D1Ev
  virtual void  v4(); // _ZN8S20088C32v4Ev
  virtual void  v5(); // _ZN8S20088C32v5Ev
  S20088C3(); // tgen
};
//SIG(-1 S20088C3) C1{ vd v1 v2 FL Fi}


 S20088C3 ::~S20088C3(){ note_dtor("S20088C3", this);}
void  S20088C3 ::v4(){vfunc_called(this, "_ZN8S20088C32v4Ev");}
void  S20088C3 ::v5(){vfunc_called(this, "_ZN8S20088C32v5Ev");}
S20088C3 ::S20088C3(){ note_ctor("S20088C3", this);} // tgen

static void Test_S20088C3()
{
  extern Class_Descriptor cd_S20088C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S20088C3, buf);
    S20088C3 *dp, &lv = *(dp=new (buf) S20088C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S20088C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20088C3)");
    check_field_offset(lv, s20088c3f0, ABISELECT(8,4), "S20088C3.s20088c3f0");
    check_field_offset(lv, s20088c3f1, ABISELECT(16,12), "S20088C3.s20088c3f1");
    test_class_info(&lv, &cd_S20088C3);
    dp->~S20088C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20088C3(Test_S20088C3, "S20088C3", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S20088C3C1Ev();
extern void _ZN8S20088C3D1Ev();
Name_Map name_map_S20088C3[] = {
  NSPAIR(_ZN8S20088C3C1Ev),
  NSPAIR(_ZN8S20088C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20088C3[];
extern void _ZN8S20088C3D1Ev();
extern void _ZN8S20088C3D0Ev();
extern void _ZN8S20088C32v4Ev();
extern void _ZN8S20088C32v5Ev();
static  VTBL_ENTRY vtc_S20088C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20088C3[0]),
  (VTBL_ENTRY)&_ZN8S20088C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20088C3D0Ev,
  (VTBL_ENTRY)&_ZN8S20088C32v4Ev,
  (VTBL_ENTRY)&_ZN8S20088C32v5Ev,
};
extern VTBL_ENTRY _ZTI8S20088C3[];
extern  VTBL_ENTRY _ZTV8S20088C3[];
Class_Descriptor cd_S20088C3 = {  "S20088C3", // class name
  0,0,//no base classes
  &(vtc_S20088C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S20088C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20088C3),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20088C1  : virtual S20088C2_nt , virtual S20088C3 {
  virtual  ~S20088C1(); // _ZN8S20088C1D2Ev
  virtual void  v1(); // _ZN8S20088C12v1Ev
  S20088C1(); // tgen
};
//SIG(1 S20088C1) C1{ VBC2{ v2 v3} VBC3{ vd v4 v5 FL Fi} vd v1}


 S20088C1 ::~S20088C1(){ note_dtor("S20088C1", this);}
void  S20088C1 ::v1(){vfunc_called(this, "_ZN8S20088C12v1Ev");}
S20088C1 ::S20088C1(){ note_ctor("S20088C1", this);} // tgen

static void Test_S20088C1()
{
  extern Class_Descriptor cd_S20088C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S20088C1, buf);
    S20088C1 *dp, &lv = *(dp=new (buf) S20088C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S20088C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20088C1)");
    check_base_class_offset(lv, (S20088C2_nt*), 0, "S20088C1");
    check_base_class_offset(lv, (S20088C3*), ABISELECT(8,4), "S20088C1");
    test_class_info(&lv, &cd_S20088C1);
    dp->~S20088C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20088C1(Test_S20088C1, "S20088C1", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S20088C1C1Ev();
extern void _ZN8S20088C1D2Ev();
Name_Map name_map_S20088C1[] = {
  NSPAIR(_ZN8S20088C1C1Ev),
  NSPAIR(_ZN8S20088C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20088C2_nt;
extern VTBL_ENTRY _ZTI11S20088C2_nt[];
extern  VTBL_ENTRY _ZTV11S20088C2_nt[];
extern Class_Descriptor cd_S20088C3;
extern VTBL_ENTRY _ZTI8S20088C3[];
extern  VTBL_ENTRY _ZTV8S20088C3[];
static Base_Class bases_S20088C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20088C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20088C3,    ABISELECT(8,4), //bcp->offset
    11, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20088C1[];
extern void _ZN11S20088C2_nt2v2Ev();
extern void _ZN11S20088C2_nt2v3Ev();
extern void _ZN8S20088C1D1Ev();
extern void _ZN8S20088C1D0Ev();
extern void _ZN8S20088C12v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S20088C1D1Ev,_ZTv0_n12_N8S20088C1D1Ev)();
extern void ABISELECT(_ZThn8_N8S20088C1D1Ev,_ZThn4_N8S20088C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20088C1D0Ev,_ZTv0_n12_N8S20088C1D0Ev)();
extern void ABISELECT(_ZThn8_N8S20088C1D0Ev,_ZThn4_N8S20088C1D0Ev)() __attribute__((weak));
extern void _ZN8S20088C32v4Ev();
extern void _ZN8S20088C32v5Ev();
static  VTBL_ENTRY vtc_S20088C1[] = {
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20088C1[0]),
  (VTBL_ENTRY)&_ZN11S20088C2_nt2v2Ev,
  (VTBL_ENTRY)&_ZN11S20088C2_nt2v3Ev,
  (VTBL_ENTRY)&_ZN8S20088C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20088C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20088C12v1Ev,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20088C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20088C1D1Ev,_ZTv0_n12_N8S20088C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20088C1D0Ev,_ZTv0_n12_N8S20088C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20088C32v4Ev,
  (VTBL_ENTRY)&_ZN8S20088C32v5Ev,
};
extern VTBL_ENTRY _ZTV8S20088C1[];
static  VTT_ENTRY vtt_S20088C1[] = {
  {&(_ZTV8S20088C1[6]),  6,20},
  {&(_ZTV8S20088C1[6]),  6,20},
  {&(_ZTV8S20088C1[16]),  16,20},
};
extern VTBL_ENTRY _ZTI8S20088C1[];
extern  VTBL_ENTRY _ZTV8S20088C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20088C1[];
static VTBL_ENTRY alt_thunk_names133[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20088C1D0Ev,_ZTv0_n12_N8S20088C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20088C1D0Ev,_ZThn4_N8S20088C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20088C1D1Ev,_ZTv0_n12_N8S20088C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20088C1D1Ev,_ZThn4_N8S20088C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20088C1 = {  "S20088C1", // class name
  bases_S20088C1, 2,
  &(vtc_S20088C1[0]), // expected_vtbl_contents
  &(vtt_S20088C1[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S20088C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20088C1),20, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20088C1),3, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names133,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9093C2_nt  {
  virtual  ~S9093C2_nt(); // _ZN10S9093C2_ntD1Ev
  virtual void  v2(); // _ZN10S9093C2_nt2v2Ev
  S9093C2_nt(); // tgen
};
//SIG(-1 S9093C2_nt) C1{ vd v1}


 S9093C2_nt ::~S9093C2_nt(){ note_dtor("S9093C2_nt", this);}
void  S9093C2_nt ::v2(){vfunc_called(this, "_ZN10S9093C2_nt2v2Ev");}
S9093C2_nt ::S9093C2_nt(){ note_ctor("S9093C2_nt", this);} // tgen

//skip512 S9093C2_nt

#else // __cplusplus

extern void _ZN10S9093C2_ntC1Ev();
extern void _ZN10S9093C2_ntD1Ev();
Name_Map name_map_S9093C2_nt[] = {
  NSPAIR(_ZN10S9093C2_ntC1Ev),
  NSPAIR(_ZN10S9093C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S9093C2_nt[];
extern void _ZN10S9093C2_ntD1Ev();
extern void _ZN10S9093C2_ntD0Ev();
extern void _ZN10S9093C2_nt2v2Ev();
static  VTBL_ENTRY vtc_S9093C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S9093C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S9093C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S9093C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S9093C2_nt2v2Ev,
};
extern VTBL_ENTRY _ZTI10S9093C2_nt[];
VTBL_ENTRY *P__ZTI10S9093C2_nt = _ZTI10S9093C2_nt; 
extern  VTBL_ENTRY _ZTV10S9093C2_nt[];
Class_Descriptor cd_S9093C2_nt = {  "S9093C2_nt", // class name
  0,0,//no base classes
  &(vtc_S9093C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S9093C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S9093C2_nt),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9093C1  : S9093C2_nt {
  void *s9093c1f0;
  ::S5266C38_nt s9093c1f1;
  virtual  ~S9093C1(); // _ZN7S9093C1D1Ev
  virtual void  v1(); // _ZN7S9093C12v1Ev
  S9093C1(); // tgen
};
//SIG(1 S9093C1) C1{ BC2{ vd v2} vd v1 Fp FC3{ m FC4{ m FL}}}


 S9093C1 ::~S9093C1(){ note_dtor("S9093C1", this);}
void  S9093C1 ::v1(){vfunc_called(this, "_ZN7S9093C12v1Ev");}
S9093C1 ::S9093C1(){ note_ctor("S9093C1", this);} // tgen

static void Test_S9093C1()
{
  extern Class_Descriptor cd_S9093C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S9093C1, buf);
    S9093C1 *dp, &lv = *(dp=new (buf) S9093C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S9093C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9093C1)");
    check_base_class_offset(lv, (S9093C2_nt*), 0, "S9093C1");
    check_field_offset(lv, s9093c1f0, ABISELECT(8,4), "S9093C1.s9093c1f0");
    check_field_offset(lv, s9093c1f1, ABISELECT(16,8), "S9093C1.s9093c1f1");
    test_class_info(&lv, &cd_S9093C1);
    dp->~S9093C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9093C1(Test_S9093C1, "S9093C1", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S9093C1C1Ev();
extern void _ZN7S9093C1D1Ev();
Name_Map name_map_S9093C1[] = {
  NSPAIR(_ZN7S9093C1C1Ev),
  NSPAIR(_ZN7S9093C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9093C2_nt;
extern VTBL_ENTRY _ZTI10S9093C2_nt[];
extern  VTBL_ENTRY _ZTV10S9093C2_nt[];
static Base_Class bases_S9093C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9093C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9093C1[];
extern void _ZN7S9093C1D1Ev();
extern void _ZN7S9093C1D0Ev();
extern void _ZN10S9093C2_nt2v2Ev();
extern void _ZN7S9093C12v1Ev();
static  VTBL_ENTRY vtc_S9093C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9093C1[0]),
  (VTBL_ENTRY)&_ZN7S9093C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9093C1D0Ev,
  (VTBL_ENTRY)&_ZN10S9093C2_nt2v2Ev,
  (VTBL_ENTRY)&_ZN7S9093C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S9093C1[];
extern  VTBL_ENTRY _ZTV7S9093C1[];
Class_Descriptor cd_S9093C1 = {  "S9093C1", // class name
  bases_S9093C1, 1,
  &(vtc_S9093C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S9093C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9093C1),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4346C3_nt  {
  void *s4346c3f0;
  virtual  ~S4346C3_nt(); // _ZN10S4346C3_ntD1Ev
  virtual void  v2(); // _ZN10S4346C3_nt2v2Ev
  virtual void  v3(); // _ZN10S4346C3_nt2v3Ev
  S4346C3_nt(); // tgen
};
//SIG(-1 S4346C3_nt) C1{ vd v1 v2 Fp}


 S4346C3_nt ::~S4346C3_nt(){ note_dtor("S4346C3_nt", this);}
void  S4346C3_nt ::v2(){vfunc_called(this, "_ZN10S4346C3_nt2v2Ev");}
void  S4346C3_nt ::v3(){vfunc_called(this, "_ZN10S4346C3_nt2v3Ev");}
S4346C3_nt ::S4346C3_nt(){ note_ctor("S4346C3_nt", this);} // tgen

//skip512 S4346C3_nt

#else // __cplusplus

extern void _ZN10S4346C3_ntC1Ev();
extern void _ZN10S4346C3_ntD1Ev();
Name_Map name_map_S4346C3_nt[] = {
  NSPAIR(_ZN10S4346C3_ntC1Ev),
  NSPAIR(_ZN10S4346C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S4346C3_nt[];
extern void _ZN10S4346C3_ntD1Ev();
extern void _ZN10S4346C3_ntD0Ev();
extern void _ZN10S4346C3_nt2v2Ev();
extern void _ZN10S4346C3_nt2v3Ev();
static  VTBL_ENTRY vtc_S4346C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4346C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S4346C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4346C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S4346C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN10S4346C3_nt2v3Ev,
};
extern VTBL_ENTRY _ZTI10S4346C3_nt[];
VTBL_ENTRY *P__ZTI10S4346C3_nt = _ZTI10S4346C3_nt; 
extern  VTBL_ENTRY _ZTV10S4346C3_nt[];
Class_Descriptor cd_S4346C3_nt = {  "S4346C3_nt", // class name
  0,0,//no base classes
  &(vtc_S4346C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S4346C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S4346C3_nt),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4346C2  : S4346C3_nt {
  void *s4346c2f0;
  virtual  ~S4346C2(); // _ZN7S4346C2D1Ev
  virtual void  v4(); // _ZN7S4346C22v4Ev
  S4346C2(); // tgen
};
//SIG(-1 S4346C2) C1{ BC2{ vd v2 v3 Fp} vd v1 Fp}


 S4346C2 ::~S4346C2(){ note_dtor("S4346C2", this);}
void  S4346C2 ::v4(){vfunc_called(this, "_ZN7S4346C22v4Ev");}
S4346C2 ::S4346C2(){ note_ctor("S4346C2", this);} // tgen

static void Test_S4346C2()
{
  extern Class_Descriptor cd_S4346C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S4346C2, buf);
    S4346C2 *dp, &lv = *(dp=new (buf) S4346C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S4346C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4346C2)");
    check_base_class_offset(lv, (S4346C3_nt*), 0, "S4346C2");
    check_field_offset(lv, s4346c2f0, ABISELECT(16,8), "S4346C2.s4346c2f0");
    test_class_info(&lv, &cd_S4346C2);
    dp->~S4346C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4346C2(Test_S4346C2, "S4346C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S4346C2C1Ev();
extern void _ZN7S4346C2D1Ev();
Name_Map name_map_S4346C2[] = {
  NSPAIR(_ZN7S4346C2C1Ev),
  NSPAIR(_ZN7S4346C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4346C3_nt;
extern VTBL_ENTRY _ZTI10S4346C3_nt[];
extern  VTBL_ENTRY _ZTV10S4346C3_nt[];
static Base_Class bases_S4346C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4346C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4346C2[];
extern void _ZN7S4346C2D1Ev();
extern void _ZN7S4346C2D0Ev();
extern void _ZN10S4346C3_nt2v2Ev();
extern void _ZN10S4346C3_nt2v3Ev();
extern void _ZN7S4346C22v4Ev();
static  VTBL_ENTRY vtc_S4346C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4346C2[0]),
  (VTBL_ENTRY)&_ZN7S4346C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4346C2D0Ev,
  (VTBL_ENTRY)&_ZN10S4346C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN10S4346C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN7S4346C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S4346C2[];
extern  VTBL_ENTRY _ZTV7S4346C2[];
Class_Descriptor cd_S4346C2 = {  "S4346C2", // class name
  bases_S4346C2, 1,
  &(vtc_S4346C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S4346C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4346C2),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4346C1  : S4346C2 {
  int s4346c1f0;
  virtual void  v1(); // _ZN7S4346C12v1Ev
  ~S4346C1(); // tgen
  S4346C1(); // tgen
};
//SIG(1 S4346C1) C1{ BC2{ BC3{ vd v2 v3 Fp} vd v4 Fp} v1 Fi}


void  S4346C1 ::v1(){vfunc_called(this, "_ZN7S4346C12v1Ev");}
S4346C1 ::~S4346C1(){ note_dtor("S4346C1", this);} // tgen
S4346C1 ::S4346C1(){ note_ctor("S4346C1", this);} // tgen

static void Test_S4346C1()
{
  extern Class_Descriptor cd_S4346C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S4346C1, buf);
    S4346C1 *dp, &lv = *(dp=new (buf) S4346C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S4346C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4346C1)");
    check_base_class_offset(lv, (S4346C3_nt*)(S4346C2*), 0, "S4346C1");
    check_base_class_offset(lv, (S4346C2*), 0, "S4346C1");
    check_field_offset(lv, s4346c1f0, ABISELECT(24,12), "S4346C1.s4346c1f0");
    test_class_info(&lv, &cd_S4346C1);
    dp->~S4346C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4346C1(Test_S4346C1, "S4346C1", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S4346C1C1Ev();
extern void _ZN7S4346C1D1Ev();
Name_Map name_map_S4346C1[] = {
  NSPAIR(_ZN7S4346C1C1Ev),
  NSPAIR(_ZN7S4346C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4346C3_nt;
extern VTBL_ENTRY _ZTI10S4346C3_nt[];
extern  VTBL_ENTRY _ZTV10S4346C3_nt[];
extern Class_Descriptor cd_S4346C2;
extern VTBL_ENTRY _ZTI7S4346C2[];
extern  VTBL_ENTRY _ZTV7S4346C2[];
static Base_Class bases_S4346C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4346C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4346C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4346C1[];
extern void _ZN7S4346C1D1Ev();
extern void _ZN7S4346C1D0Ev();
extern void _ZN10S4346C3_nt2v2Ev();
extern void _ZN10S4346C3_nt2v3Ev();
extern void _ZN7S4346C22v4Ev();
extern void _ZN7S4346C12v1Ev();
static  VTBL_ENTRY vtc_S4346C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4346C1[0]),
  (VTBL_ENTRY)&_ZN7S4346C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4346C1D0Ev,
  (VTBL_ENTRY)&_ZN10S4346C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN10S4346C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN7S4346C22v4Ev,
  (VTBL_ENTRY)&_ZN7S4346C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4346C1[];
extern  VTBL_ENTRY _ZTV7S4346C1[];
Class_Descriptor cd_S4346C1 = {  "S4346C1", // class name
  bases_S4346C1, 2,
  &(vtc_S4346C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S4346C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4346C1),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17737C1  {
  void *s17737c1f0;
  int s17737c1f1;
  void *s17737c1f2;
  int s17737c1f3;
  void *s17737c1f4;
  int s17737c1f5;
  void *s17737c1f6;
  int s17737c1f7;
  void *s17737c1f8;
  int s17737c1f9[2];
  void  mf17737c1(); // _ZN8S17737C19mf17737c1Ev
};
//SIG(1 S17737C1) C1{ m Fp Fi Fp Fi Fp Fi Fp Fi Fp Fi[2]}


void  S17737C1 ::mf17737c1(){}

static void Test_S17737C1()
{
  {
    init_simple_test("S17737C1");
    S17737C1 lv;
    check2(sizeof(lv), ABISELECT(80,44), "sizeof(S17737C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17737C1)");
    check_field_offset(lv, s17737c1f0, 0, "S17737C1.s17737c1f0");
    check_field_offset(lv, s17737c1f1, ABISELECT(8,4), "S17737C1.s17737c1f1");
    check_field_offset(lv, s17737c1f2, ABISELECT(16,8), "S17737C1.s17737c1f2");
    check_field_offset(lv, s17737c1f3, ABISELECT(24,12), "S17737C1.s17737c1f3");
    check_field_offset(lv, s17737c1f4, ABISELECT(32,16), "S17737C1.s17737c1f4");
    check_field_offset(lv, s17737c1f5, ABISELECT(40,20), "S17737C1.s17737c1f5");
    check_field_offset(lv, s17737c1f6, ABISELECT(48,24), "S17737C1.s17737c1f6");
    check_field_offset(lv, s17737c1f7, ABISELECT(56,28), "S17737C1.s17737c1f7");
    check_field_offset(lv, s17737c1f8, ABISELECT(64,32), "S17737C1.s17737c1f8");
    check_field_offset(lv, s17737c1f9, ABISELECT(72,36), "S17737C1.s17737c1f9");
  }
}
static Arrange_To_Call_Me vS17737C1(Test_S17737C1, "S17737C1", ABISELECT(80,44));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6331C1  : S5266C29 {
  char s6331c1f0[192];
  int s6331c1f1[146];
  void *s6331c1f2;
  int s6331c1f3;
  virtual  ~S6331C1(); // _ZN7S6331C1D1Ev
  virtual void  v1(); // _ZN7S6331C12v1Ev
  S6331C1(); // tgen
};
//SIG(1 S6331C1) C1{ BC2{ m} vd v1 Fc[192] Fi[146] Fp Fi}


 S6331C1 ::~S6331C1(){ note_dtor("S6331C1", this);}
void  S6331C1 ::v1(){vfunc_called(this, "_ZN7S6331C12v1Ev");}
S6331C1 ::S6331C1(){ note_ctor("S6331C1", this);} // tgen

static void Test_S6331C1()
{
  extern Class_Descriptor cd_S6331C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(101,198)];
    init_test(&cd_S6331C1, buf);
    S6331C1 *dp, &lv = *(dp=new (buf) S6331C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(800,788), "sizeof(S6331C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6331C1)");
    check_base_class_offset(lv, (S5266C29*), 0, "S6331C1");
    check_field_offset(lv, s6331c1f0, ABISELECT(8,4), "S6331C1.s6331c1f0");
    check_field_offset(lv, s6331c1f1, ABISELECT(200,196), "S6331C1.s6331c1f1");
    check_field_offset(lv, s6331c1f2, ABISELECT(784,780), "S6331C1.s6331c1f2");
    check_field_offset(lv, s6331c1f3, ABISELECT(792,784), "S6331C1.s6331c1f3");
    test_class_info(&lv, &cd_S6331C1);
    dp->~S6331C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6331C1(Test_S6331C1, "S6331C1", ABISELECT(800,788));

#else // __cplusplus

extern void _ZN7S6331C1C1Ev();
extern void _ZN7S6331C1D1Ev();
Name_Map name_map_S6331C1[] = {
  NSPAIR(_ZN7S6331C1C1Ev),
  NSPAIR(_ZN7S6331C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
static Base_Class bases_S6331C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6331C1[];
extern void _ZN7S6331C1D1Ev();
extern void _ZN7S6331C1D0Ev();
extern void _ZN7S6331C12v1Ev();
static  VTBL_ENTRY vtc_S6331C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6331C1[0]),
  (VTBL_ENTRY)&_ZN7S6331C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6331C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6331C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S6331C1[];
extern  VTBL_ENTRY _ZTV7S6331C1[];
Class_Descriptor cd_S6331C1 = {  "S6331C1", // class name
  bases_S6331C1, 1,
  &(vtc_S6331C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(800,788), // object size
  NSPAIRA(_ZTI7S6331C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6331C1),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11237C1  {
  ::S11199C4_nt s11237c1f0;
  int s11237c1f1;
  char s11237c1f2[128];
};
//SIG(1 S11237C1) C1{ FC2{ FC3{ Fc[20]} Fc[16]} Fi Fc[128]}



static void Test_S11237C1()
{
  {
    init_simple_test("S11237C1");
    S11237C1 lv;
    check2(sizeof(lv), 168, "sizeof(S11237C1)");
    check2(__alignof__(lv), 4, "__alignof__(S11237C1)");
    check_field_offset(lv, s11237c1f0, 0, "S11237C1.s11237c1f0");
    check_field_offset(lv, s11237c1f1, 36, "S11237C1.s11237c1f1");
    check_field_offset(lv, s11237c1f2, 40, "S11237C1.s11237c1f2");
  }
}
static Arrange_To_Call_Me vS11237C1(Test_S11237C1, "S11237C1", 168);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18848C1  {
  int s18848c1f0;
  short s18848c1f1;
  virtual  ~S18848C1(); // _ZN8S18848C1D1Ev
  virtual void  v1(); // _ZN8S18848C12v1Ev
  virtual void  v2(); // _ZN8S18848C12v2Ev
  virtual void  v3(); // _ZN8S18848C12v3Ev
  virtual void  v4(); // _ZN8S18848C12v4Ev
  virtual void  v5(); // _ZN8S18848C12v5Ev
  virtual void  v6(); // _ZN8S18848C12v6Ev
  virtual void  v7(); // _ZN8S18848C12v7Ev
  virtual void  v8(); // _ZN8S18848C12v8Ev
  S18848C1(); // tgen
};
//SIG(1 S18848C1) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 Fi Fs}


 S18848C1 ::~S18848C1(){ note_dtor("S18848C1", this);}
void  S18848C1 ::v1(){vfunc_called(this, "_ZN8S18848C12v1Ev");}
void  S18848C1 ::v2(){vfunc_called(this, "_ZN8S18848C12v2Ev");}
void  S18848C1 ::v3(){vfunc_called(this, "_ZN8S18848C12v3Ev");}
void  S18848C1 ::v4(){vfunc_called(this, "_ZN8S18848C12v4Ev");}
void  S18848C1 ::v5(){vfunc_called(this, "_ZN8S18848C12v5Ev");}
void  S18848C1 ::v6(){vfunc_called(this, "_ZN8S18848C12v6Ev");}
void  S18848C1 ::v7(){vfunc_called(this, "_ZN8S18848C12v7Ev");}
void  S18848C1 ::v8(){vfunc_called(this, "_ZN8S18848C12v8Ev");}
S18848C1 ::S18848C1(){ note_ctor("S18848C1", this);} // tgen

static void Test_S18848C1()
{
  extern Class_Descriptor cd_S18848C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S18848C1, buf);
    S18848C1 *dp, &lv = *(dp=new (buf) S18848C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S18848C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18848C1)");
    check_field_offset(lv, s18848c1f0, ABISELECT(8,4), "S18848C1.s18848c1f0");
    check_field_offset(lv, s18848c1f1, ABISELECT(12,8), "S18848C1.s18848c1f1");
    test_class_info(&lv, &cd_S18848C1);
    dp->~S18848C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18848C1(Test_S18848C1, "S18848C1", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S18848C1C1Ev();
extern void _ZN8S18848C1D1Ev();
Name_Map name_map_S18848C1[] = {
  NSPAIR(_ZN8S18848C1C1Ev),
  NSPAIR(_ZN8S18848C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18848C1[];
extern void _ZN8S18848C1D1Ev();
extern void _ZN8S18848C1D0Ev();
extern void _ZN8S18848C12v1Ev();
extern void _ZN8S18848C12v2Ev();
extern void _ZN8S18848C12v3Ev();
extern void _ZN8S18848C12v4Ev();
extern void _ZN8S18848C12v5Ev();
extern void _ZN8S18848C12v6Ev();
extern void _ZN8S18848C12v7Ev();
extern void _ZN8S18848C12v8Ev();
static  VTBL_ENTRY vtc_S18848C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18848C1[0]),
  (VTBL_ENTRY)&_ZN8S18848C1D1Ev,
  (VTBL_ENTRY)&_ZN8S18848C1D0Ev,
  (VTBL_ENTRY)&_ZN8S18848C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18848C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18848C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18848C12v4Ev,
  (VTBL_ENTRY)&_ZN8S18848C12v5Ev,
  (VTBL_ENTRY)&_ZN8S18848C12v6Ev,
  (VTBL_ENTRY)&_ZN8S18848C12v7Ev,
  (VTBL_ENTRY)&_ZN8S18848C12v8Ev,
};
extern VTBL_ENTRY _ZTI8S18848C1[];
extern  VTBL_ENTRY _ZTV8S18848C1[];
Class_Descriptor cd_S18848C1 = {  "S18848C1", // class name
  0,0,//no base classes
  &(vtc_S18848C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S18848C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18848C1),12, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8209C1  : S6795C8_nt {
  ::S3765C5_nt s8209c1f0[64];
  virtual  ~S8209C1(); // _ZN7S8209C1D1Ev
  S8209C1(); // tgen
};
//SIG(1 S8209C1) C1{ BC2{ vd m Fp} vd FC3{ m Fp[2]}[64]}


 S8209C1 ::~S8209C1(){ note_dtor("S8209C1", this);}
S8209C1 ::S8209C1(){ note_ctor("S8209C1", this);} // tgen

static void Test_S8209C1()
{
  extern Class_Descriptor cd_S8209C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[131];
    init_test(&cd_S8209C1, buf);
    S8209C1 *dp, &lv = *(dp=new (buf) S8209C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1040,520), "sizeof(S8209C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8209C1)");
    check_base_class_offset(lv, (S6795C8_nt*), 0, "S8209C1");
    check_field_offset(lv, s8209c1f0, ABISELECT(16,8), "S8209C1.s8209c1f0");
    test_class_info(&lv, &cd_S8209C1);
    dp->~S8209C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8209C1(Test_S8209C1, "S8209C1", ABISELECT(1040,520));

#else // __cplusplus

extern void _ZN7S8209C1C1Ev();
extern void _ZN7S8209C1D1Ev();
Name_Map name_map_S8209C1[] = {
  NSPAIR(_ZN7S8209C1C1Ev),
  NSPAIR(_ZN7S8209C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6795C8_nt;
extern VTBL_ENTRY _ZTI10S6795C8_nt[];
extern  VTBL_ENTRY _ZTV10S6795C8_nt[];
static Base_Class bases_S8209C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6795C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8209C1[];
extern void _ZN7S8209C1D1Ev();
extern void _ZN7S8209C1D0Ev();
static  VTBL_ENTRY vtc_S8209C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8209C1[0]),
  (VTBL_ENTRY)&_ZN7S8209C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8209C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S8209C1[];
extern  VTBL_ENTRY _ZTV7S8209C1[];
Class_Descriptor cd_S8209C1 = {  "S8209C1", // class name
  bases_S8209C1, 1,
  &(vtc_S8209C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1040,520), // object size
  NSPAIRA(_ZTI7S8209C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8209C1),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4347C3  {
  void *s4347c3f0;
  virtual  ~S4347C3(); // _ZN7S4347C3D1Ev
  virtual void  v2(); // _ZN7S4347C32v2Ev
  virtual void  v3(); // _ZN7S4347C32v3Ev
  S4347C3(); // tgen
};
//SIG(-1 S4347C3) C1{ vd v1 v2 Fp}


 S4347C3 ::~S4347C3(){ note_dtor("S4347C3", this);}
void  S4347C3 ::v2(){vfunc_called(this, "_ZN7S4347C32v2Ev");}
void  S4347C3 ::v3(){vfunc_called(this, "_ZN7S4347C32v3Ev");}
S4347C3 ::S4347C3(){ note_ctor("S4347C3", this);} // tgen

static void Test_S4347C3()
{
  extern Class_Descriptor cd_S4347C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S4347C3, buf);
    S4347C3 *dp, &lv = *(dp=new (buf) S4347C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S4347C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4347C3)");
    check_field_offset(lv, s4347c3f0, ABISELECT(8,4), "S4347C3.s4347c3f0");
    test_class_info(&lv, &cd_S4347C3);
    dp->~S4347C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4347C3(Test_S4347C3, "S4347C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S4347C3C1Ev();
extern void _ZN7S4347C3D1Ev();
Name_Map name_map_S4347C3[] = {
  NSPAIR(_ZN7S4347C3C1Ev),
  NSPAIR(_ZN7S4347C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4347C3[];
extern void _ZN7S4347C3D1Ev();
extern void _ZN7S4347C3D0Ev();
extern void _ZN7S4347C32v2Ev();
extern void _ZN7S4347C32v3Ev();
static  VTBL_ENTRY vtc_S4347C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4347C3[0]),
  (VTBL_ENTRY)&_ZN7S4347C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4347C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4347C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4347C32v3Ev,
};
extern VTBL_ENTRY _ZTI7S4347C3[];
extern  VTBL_ENTRY _ZTV7S4347C3[];
Class_Descriptor cd_S4347C3 = {  "S4347C3", // class name
  0,0,//no base classes
  &(vtc_S4347C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S4347C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4347C3),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4347C2  : S4347C3 {
  void *s4347c2f0;
  virtual  ~S4347C2(); // _ZN7S4347C2D1Ev
  virtual void  v4(); // _ZN7S4347C22v4Ev
  S4347C2(); // tgen
};
//SIG(-1 S4347C2) C1{ BC2{ vd v2 v3 Fp} vd v1 Fp}


 S4347C2 ::~S4347C2(){ note_dtor("S4347C2", this);}
void  S4347C2 ::v4(){vfunc_called(this, "_ZN7S4347C22v4Ev");}
S4347C2 ::S4347C2(){ note_ctor("S4347C2", this);} // tgen

static void Test_S4347C2()
{
  extern Class_Descriptor cd_S4347C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S4347C2, buf);
    S4347C2 *dp, &lv = *(dp=new (buf) S4347C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S4347C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4347C2)");
    check_base_class_offset(lv, (S4347C3*), 0, "S4347C2");
    check_field_offset(lv, s4347c2f0, ABISELECT(16,8), "S4347C2.s4347c2f0");
    test_class_info(&lv, &cd_S4347C2);
    dp->~S4347C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4347C2(Test_S4347C2, "S4347C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S4347C2C1Ev();
extern void _ZN7S4347C2D1Ev();
Name_Map name_map_S4347C2[] = {
  NSPAIR(_ZN7S4347C2C1Ev),
  NSPAIR(_ZN7S4347C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4347C3;
extern VTBL_ENTRY _ZTI7S4347C3[];
extern  VTBL_ENTRY _ZTV7S4347C3[];
static Base_Class bases_S4347C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4347C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4347C2[];
extern void _ZN7S4347C2D1Ev();
extern void _ZN7S4347C2D0Ev();
extern void _ZN7S4347C32v2Ev();
extern void _ZN7S4347C32v3Ev();
extern void _ZN7S4347C22v4Ev();
static  VTBL_ENTRY vtc_S4347C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4347C2[0]),
  (VTBL_ENTRY)&_ZN7S4347C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4347C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4347C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4347C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4347C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S4347C2[];
extern  VTBL_ENTRY _ZTV7S4347C2[];
Class_Descriptor cd_S4347C2 = {  "S4347C2", // class name
  bases_S4347C2, 1,
  &(vtc_S4347C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S4347C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4347C2),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4347C1  : S4347C2 {
  virtual void  v1(); // _ZN7S4347C12v1Ev
  ~S4347C1(); // tgen
  S4347C1(); // tgen
};
//SIG(1 S4347C1) C1{ BC2{ BC3{ vd v2 v3 Fp} vd v4 Fp} v1}


void  S4347C1 ::v1(){vfunc_called(this, "_ZN7S4347C12v1Ev");}
S4347C1 ::~S4347C1(){ note_dtor("S4347C1", this);} // tgen
S4347C1 ::S4347C1(){ note_ctor("S4347C1", this);} // tgen

static void Test_S4347C1()
{
  extern Class_Descriptor cd_S4347C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S4347C1, buf);
    S4347C1 *dp, &lv = *(dp=new (buf) S4347C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S4347C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4347C1)");
    check_base_class_offset(lv, (S4347C3*)(S4347C2*), 0, "S4347C1");
    check_base_class_offset(lv, (S4347C2*), 0, "S4347C1");
    test_class_info(&lv, &cd_S4347C1);
    dp->~S4347C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4347C1(Test_S4347C1, "S4347C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S4347C1C1Ev();
extern void _ZN7S4347C1D1Ev();
Name_Map name_map_S4347C1[] = {
  NSPAIR(_ZN7S4347C1C1Ev),
  NSPAIR(_ZN7S4347C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4347C3;
extern VTBL_ENTRY _ZTI7S4347C3[];
extern  VTBL_ENTRY _ZTV7S4347C3[];
extern Class_Descriptor cd_S4347C2;
extern VTBL_ENTRY _ZTI7S4347C2[];
extern  VTBL_ENTRY _ZTV7S4347C2[];
static Base_Class bases_S4347C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4347C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4347C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4347C1[];
extern void _ZN7S4347C1D1Ev();
extern void _ZN7S4347C1D0Ev();
extern void _ZN7S4347C32v2Ev();
extern void _ZN7S4347C32v3Ev();
extern void _ZN7S4347C22v4Ev();
extern void _ZN7S4347C12v1Ev();
static  VTBL_ENTRY vtc_S4347C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4347C1[0]),
  (VTBL_ENTRY)&_ZN7S4347C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4347C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4347C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4347C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4347C22v4Ev,
  (VTBL_ENTRY)&_ZN7S4347C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4347C1[];
extern  VTBL_ENTRY _ZTV7S4347C1[];
Class_Descriptor cd_S4347C1 = {  "S4347C1", // class name
  bases_S4347C1, 2,
  &(vtc_S4347C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S4347C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4347C1),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17918C2  {
  int s17918c2f0[2];
  char s17918c2f1[1420];
  int s17918c2f2;
};
//SIG(-1 S17918C2) C1{ Fi[2] Fc[1420] Fi}



static void Test_S17918C2()
{
  {
    init_simple_test("S17918C2");
    S17918C2 lv;
    check2(sizeof(lv), 1432, "sizeof(S17918C2)");
    check2(__alignof__(lv), 4, "__alignof__(S17918C2)");
    check_field_offset(lv, s17918c2f0, 0, "S17918C2.s17918c2f0");
    check_field_offset(lv, s17918c2f1, 8, "S17918C2.s17918c2f1");
    check_field_offset(lv, s17918c2f2, 1428, "S17918C2.s17918c2f2");
  }
}
static Arrange_To_Call_Me vS17918C2(Test_S17918C2, "S17918C2", 1432);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17918C1  {
  void *s17918c1f0[2];
  ::S17918C2 s17918c1f1;
  void  mf17918c1(); // _ZN8S17918C19mf17918c1Ev
};
//SIG(1 S17918C1) C1{ m Fp[2] FC2{ Fi[2] Fc[1420] Fi}}


void  S17918C1 ::mf17918c1(){}

static void Test_S17918C1()
{
  {
    init_simple_test("S17918C1");
    S17918C1 lv;
    check2(sizeof(lv), ABISELECT(1448,1440), "sizeof(S17918C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17918C1)");
    check_field_offset(lv, s17918c1f0, 0, "S17918C1.s17918c1f0");
    check_field_offset(lv, s17918c1f1, ABISELECT(16,8), "S17918C1.s17918c1f1");
  }
}
static Arrange_To_Call_Me vS17918C1(Test_S17918C1, "S17918C1", ABISELECT(1448,1440));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6775C2  {
  virtual  ~S6775C2(); // _ZN7S6775C2D1Ev
  virtual void  v3(); // _ZN7S6775C22v3Ev
  virtual void  v4(); // _ZN7S6775C22v4Ev
  S6775C2(); // tgen
};
//SIG(-1 S6775C2) C1{ vd v1 v2}


 S6775C2 ::~S6775C2(){ note_dtor("S6775C2", this);}
void  S6775C2 ::v3(){vfunc_called(this, "_ZN7S6775C22v3Ev");}
void  S6775C2 ::v4(){vfunc_called(this, "_ZN7S6775C22v4Ev");}
S6775C2 ::S6775C2(){ note_ctor("S6775C2", this);} // tgen

static void Test_S6775C2()
{
  extern Class_Descriptor cd_S6775C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S6775C2, buf);
    S6775C2 *dp, &lv = *(dp=new (buf) S6775C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S6775C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6775C2)");
    test_class_info(&lv, &cd_S6775C2);
    dp->~S6775C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6775C2(Test_S6775C2, "S6775C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S6775C2C1Ev();
extern void _ZN7S6775C2D1Ev();
Name_Map name_map_S6775C2[] = {
  NSPAIR(_ZN7S6775C2C1Ev),
  NSPAIR(_ZN7S6775C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6775C2[];
extern void _ZN7S6775C2D1Ev();
extern void _ZN7S6775C2D0Ev();
extern void _ZN7S6775C22v3Ev();
extern void _ZN7S6775C22v4Ev();
static  VTBL_ENTRY vtc_S6775C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6775C2[0]),
  (VTBL_ENTRY)&_ZN7S6775C2D1Ev,
  (VTBL_ENTRY)&_ZN7S6775C2D0Ev,
  (VTBL_ENTRY)&_ZN7S6775C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6775C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S6775C2[];
extern  VTBL_ENTRY _ZTV7S6775C2[];
Class_Descriptor cd_S6775C2 = {  "S6775C2", // class name
  0,0,//no base classes
  &(vtc_S6775C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6775C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6775C2),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6775C1  : S6775C2 {
  void *s6775c1f0[8];
  int s6775c1f1;
  virtual  ~S6775C1(); // _ZN7S6775C1D1Ev
  virtual void  v1(); // _ZN7S6775C12v1Ev
  virtual void  v2(); // _ZN7S6775C12v2Ev
  S6775C1(); // tgen
};
//SIG(1 S6775C1) C1{ BC2{ vd v3 v4} vd v1 v2 Fp[8] Fi}


 S6775C1 ::~S6775C1(){ note_dtor("S6775C1", this);}
void  S6775C1 ::v1(){vfunc_called(this, "_ZN7S6775C12v1Ev");}
void  S6775C1 ::v2(){vfunc_called(this, "_ZN7S6775C12v2Ev");}
S6775C1 ::S6775C1(){ note_ctor("S6775C1", this);} // tgen

static void Test_S6775C1()
{
  extern Class_Descriptor cd_S6775C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[11];
    init_test(&cd_S6775C1, buf);
    S6775C1 *dp, &lv = *(dp=new (buf) S6775C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S6775C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6775C1)");
    check_base_class_offset(lv, (S6775C2*), 0, "S6775C1");
    check_field_offset(lv, s6775c1f0, ABISELECT(8,4), "S6775C1.s6775c1f0");
    check_field_offset(lv, s6775c1f1, ABISELECT(72,36), "S6775C1.s6775c1f1");
    test_class_info(&lv, &cd_S6775C1);
    dp->~S6775C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6775C1(Test_S6775C1, "S6775C1", ABISELECT(80,40));

#else // __cplusplus

extern void _ZN7S6775C1C1Ev();
extern void _ZN7S6775C1D1Ev();
Name_Map name_map_S6775C1[] = {
  NSPAIR(_ZN7S6775C1C1Ev),
  NSPAIR(_ZN7S6775C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6775C2;
extern VTBL_ENTRY _ZTI7S6775C2[];
extern  VTBL_ENTRY _ZTV7S6775C2[];
static Base_Class bases_S6775C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6775C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6775C1[];
extern void _ZN7S6775C1D1Ev();
extern void _ZN7S6775C1D0Ev();
extern void _ZN7S6775C22v3Ev();
extern void _ZN7S6775C22v4Ev();
extern void _ZN7S6775C12v1Ev();
extern void _ZN7S6775C12v2Ev();
static  VTBL_ENTRY vtc_S6775C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6775C1[0]),
  (VTBL_ENTRY)&_ZN7S6775C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6775C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6775C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6775C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6775C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6775C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S6775C1[];
extern  VTBL_ENTRY _ZTV7S6775C1[];
Class_Descriptor cd_S6775C1 = {  "S6775C1", // class name
  bases_S6775C1, 1,
  &(vtc_S6775C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI7S6775C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6775C1),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18867C1  {
  int s18867c1f0;
  void *s18867c1f1[7];
  virtual  ~S18867C1(); // _ZN8S18867C1D1Ev
  virtual void  v1(); // _ZN8S18867C12v1Ev
  virtual void  v2(); // _ZN8S18867C12v2Ev
  virtual void  v3(); // _ZN8S18867C12v3Ev
  virtual void  v4(); // _ZN8S18867C12v4Ev
  virtual void  v5(); // _ZN8S18867C12v5Ev
  virtual void  v6(); // _ZN8S18867C12v6Ev
  S18867C1(); // tgen
};
//SIG(1 S18867C1) C1{ vd v1 v2 v3 v4 v5 v6 Fi Fp[7]}


 S18867C1 ::~S18867C1(){ note_dtor("S18867C1", this);}
void  S18867C1 ::v1(){vfunc_called(this, "_ZN8S18867C12v1Ev");}
void  S18867C1 ::v2(){vfunc_called(this, "_ZN8S18867C12v2Ev");}
void  S18867C1 ::v3(){vfunc_called(this, "_ZN8S18867C12v3Ev");}
void  S18867C1 ::v4(){vfunc_called(this, "_ZN8S18867C12v4Ev");}
void  S18867C1 ::v5(){vfunc_called(this, "_ZN8S18867C12v5Ev");}
void  S18867C1 ::v6(){vfunc_called(this, "_ZN8S18867C12v6Ev");}
S18867C1 ::S18867C1(){ note_ctor("S18867C1", this);} // tgen

static void Test_S18867C1()
{
  extern Class_Descriptor cd_S18867C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[10];
    init_test(&cd_S18867C1, buf);
    S18867C1 *dp, &lv = *(dp=new (buf) S18867C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,36), "sizeof(S18867C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18867C1)");
    check_field_offset(lv, s18867c1f0, ABISELECT(8,4), "S18867C1.s18867c1f0");
    check_field_offset(lv, s18867c1f1, ABISELECT(16,8), "S18867C1.s18867c1f1");
    test_class_info(&lv, &cd_S18867C1);
    dp->~S18867C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18867C1(Test_S18867C1, "S18867C1", ABISELECT(72,36));

#else // __cplusplus

extern void _ZN8S18867C1C1Ev();
extern void _ZN8S18867C1D1Ev();
Name_Map name_map_S18867C1[] = {
  NSPAIR(_ZN8S18867C1C1Ev),
  NSPAIR(_ZN8S18867C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18867C1[];
extern void _ZN8S18867C1D1Ev();
extern void _ZN8S18867C1D0Ev();
extern void _ZN8S18867C12v1Ev();
extern void _ZN8S18867C12v2Ev();
extern void _ZN8S18867C12v3Ev();
extern void _ZN8S18867C12v4Ev();
extern void _ZN8S18867C12v5Ev();
extern void _ZN8S18867C12v6Ev();
static  VTBL_ENTRY vtc_S18867C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18867C1[0]),
  (VTBL_ENTRY)&_ZN8S18867C1D1Ev,
  (VTBL_ENTRY)&_ZN8S18867C1D0Ev,
  (VTBL_ENTRY)&_ZN8S18867C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18867C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18867C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18867C12v4Ev,
  (VTBL_ENTRY)&_ZN8S18867C12v5Ev,
  (VTBL_ENTRY)&_ZN8S18867C12v6Ev,
};
extern VTBL_ENTRY _ZTI8S18867C1[];
extern  VTBL_ENTRY _ZTV8S18867C1[];
Class_Descriptor cd_S18867C1 = {  "S18867C1", // class name
  0,0,//no base classes
  &(vtc_S18867C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,36), // object size
  NSPAIRA(_ZTI8S18867C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18867C1),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18056C2  {
  int s18056c2f0[2];
  void *s18056c2f1;
  int s18056c2f2;
  void  mf18056c2(); // _ZN8S18056C29mf18056c2Ev
  virtual  ~S18056C2(); // _ZN8S18056C2D1Ev
  S18056C2(); // tgen
};
//SIG(-1 S18056C2) C1{ vd m Fi[2] Fp Fi}


void  S18056C2 ::mf18056c2(){}
 S18056C2 ::~S18056C2(){ note_dtor("S18056C2", this);}
S18056C2 ::S18056C2(){ note_ctor("S18056C2", this);} // tgen

static void Test_S18056C2()
{
  extern Class_Descriptor cd_S18056C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S18056C2, buf);
    S18056C2 *dp, &lv = *(dp=new (buf) S18056C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S18056C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18056C2)");
    check_field_offset(lv, s18056c2f0, ABISELECT(8,4), "S18056C2.s18056c2f0");
    check_field_offset(lv, s18056c2f1, ABISELECT(16,12), "S18056C2.s18056c2f1");
    check_field_offset(lv, s18056c2f2, ABISELECT(24,16), "S18056C2.s18056c2f2");
    test_class_info(&lv, &cd_S18056C2);
    dp->~S18056C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18056C2(Test_S18056C2, "S18056C2", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S18056C2C1Ev();
extern void _ZN8S18056C2D1Ev();
Name_Map name_map_S18056C2[] = {
  NSPAIR(_ZN8S18056C2C1Ev),
  NSPAIR(_ZN8S18056C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18056C2[];
extern void _ZN8S18056C2D1Ev();
extern void _ZN8S18056C2D0Ev();
static  VTBL_ENTRY vtc_S18056C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18056C2[0]),
  (VTBL_ENTRY)&_ZN8S18056C2D1Ev,
  (VTBL_ENTRY)&_ZN8S18056C2D0Ev,
};
extern VTBL_ENTRY _ZTI8S18056C2[];
extern  VTBL_ENTRY _ZTV8S18056C2[];
Class_Descriptor cd_S18056C2 = {  "S18056C2", // class name
  0,0,//no base classes
  &(vtc_S18056C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S18056C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18056C2),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18056C1  {
  void *s18056c1f0[2];
  ::S18056C2 s18056c1f1;
  void  mf18056c1(); // _ZN8S18056C19mf18056c1Ev
};
//SIG(1 S18056C1) C1{ m Fp[2] FC2{ vd m Fi[2] Fp Fi}}


void  S18056C1 ::mf18056c1(){}

static void Test_S18056C1()
{
  {
    init_simple_test("S18056C1");
    S18056C1 lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S18056C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18056C1)");
    check_field_offset(lv, s18056c1f0, 0, "S18056C1.s18056c1f0");
    check_field_offset(lv, s18056c1f1, ABISELECT(16,8), "S18056C1.s18056c1f1");
  }
}
static Arrange_To_Call_Me vS18056C1(Test_S18056C1, "S18056C1", ABISELECT(48,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10909C1  {
  char s10909c1f0[4];
  int s10909c1f1[3];
  char s10909c1f2[16];
  __tsi64 s10909c1f3;
  char s10909c1f4[16];
};
//SIG(1 S10909C1) C1{ Fc[4] Fi[3] Fc[16] FL Fc[16]}



static void Test_S10909C1()
{
  {
    init_simple_test("S10909C1");
    S10909C1 lv;
    check2(sizeof(lv), 56, "sizeof(S10909C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10909C1)");
    check_field_offset(lv, s10909c1f0, 0, "S10909C1.s10909c1f0");
    check_field_offset(lv, s10909c1f1, 4, "S10909C1.s10909c1f1");
    check_field_offset(lv, s10909c1f2, 16, "S10909C1.s10909c1f2");
    check_field_offset(lv, s10909c1f3, 32, "S10909C1.s10909c1f3");
    check_field_offset(lv, s10909c1f4, 40, "S10909C1.s10909c1f4");
  }
}
static Arrange_To_Call_Me vS10909C1(Test_S10909C1, "S10909C1", 56);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17192C1  {
  int s17192c1f0[3];
  ::S5266C19_nt s17192c1f1;
  void  mf17192c1(); // _ZN8S17192C19mf17192c1Ev
};
//SIG(1 S17192C1) C1{ m Fi[3] FC2{ m Fp Fi FC3{ m}}}


void  S17192C1 ::mf17192c1(){}

static void Test_S17192C1()
{
  {
    init_simple_test("S17192C1");
    S17192C1 lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S17192C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17192C1)");
    check_field_offset(lv, s17192c1f0, 0, "S17192C1.s17192c1f0");
    check_field_offset(lv, s17192c1f1, ABISELECT(16,12), "S17192C1.s17192c1f1");
  }
}
static Arrange_To_Call_Me vS17192C1(Test_S17192C1, "S17192C1", ABISELECT(32,24));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6023C2  {
  void *s6023c2f0[2];
  int s6023c2f1[3];
  char s6023c2f2[16];
  void  mf6023c2(); // _ZN7S6023C28mf6023c2Ev
};
//SIG(-1 S6023C2) C1{ m Fp[2] Fi[3] Fc[16]}


void  S6023C2 ::mf6023c2(){}

static void Test_S6023C2()
{
  {
    init_simple_test("S6023C2");
    S6023C2 lv;
    check2(sizeof(lv), ABISELECT(48,36), "sizeof(S6023C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6023C2)");
    check_field_offset(lv, s6023c2f0, 0, "S6023C2.s6023c2f0");
    check_field_offset(lv, s6023c2f1, ABISELECT(16,8), "S6023C2.s6023c2f1");
    check_field_offset(lv, s6023c2f2, ABISELECT(28,20), "S6023C2.s6023c2f2");
  }
}
static Arrange_To_Call_Me vS6023C2(Test_S6023C2, "S6023C2", ABISELECT(48,36));

#else // __cplusplus

Class_Descriptor cd_S6023C2 = {  "S6023C2", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(48,36), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6023C1  : S6023C2 {
  int s6023c1f0;
};
//SIG(1 S6023C1) C1{ BC2{ m Fp[2] Fi[3] Fc[16]} Fi}



static void Test_S6023C1()
{
  extern Class_Descriptor cd_S6023C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,11)];
    init_test(&cd_S6023C1, buf);
    S6023C1 &lv = *(new (buf) S6023C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,40), "sizeof(S6023C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6023C1)");
    check_base_class_offset(lv, (S6023C2*), 0, "S6023C1");
    check_field_offset(lv, s6023c1f0, ABISELECT(48,36), "S6023C1.s6023c1f0");
    test_class_info(&lv, &cd_S6023C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6023C1(Test_S6023C1, "S6023C1", ABISELECT(56,40));

#else // __cplusplus

extern Class_Descriptor cd_S6023C2;
static Base_Class bases_S6023C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6023C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S6023C1 = {  "S6023C1", // class name
  bases_S6023C1, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(56,40), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9197C2  {
  void *s9197c2f0;
  virtual  ~S9197C2(); // _ZN7S9197C2D1Ev
  virtual void  v3(); // _ZN7S9197C22v3Ev
  virtual void  v4(); // _ZN7S9197C22v4Ev
  S9197C2(); // tgen
};
//SIG(-1 S9197C2) C1{ vd v1 v2 Fp}


 S9197C2 ::~S9197C2(){ note_dtor("S9197C2", this);}
void  S9197C2 ::v3(){vfunc_called(this, "_ZN7S9197C22v3Ev");}
void  S9197C2 ::v4(){vfunc_called(this, "_ZN7S9197C22v4Ev");}
S9197C2 ::S9197C2(){ note_ctor("S9197C2", this);} // tgen

static void Test_S9197C2()
{
  extern Class_Descriptor cd_S9197C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S9197C2, buf);
    S9197C2 *dp, &lv = *(dp=new (buf) S9197C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S9197C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9197C2)");
    check_field_offset(lv, s9197c2f0, ABISELECT(8,4), "S9197C2.s9197c2f0");
    test_class_info(&lv, &cd_S9197C2);
    dp->~S9197C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9197C2(Test_S9197C2, "S9197C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S9197C2C1Ev();
extern void _ZN7S9197C2D1Ev();
Name_Map name_map_S9197C2[] = {
  NSPAIR(_ZN7S9197C2C1Ev),
  NSPAIR(_ZN7S9197C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9197C2[];
extern void _ZN7S9197C2D1Ev();
extern void _ZN7S9197C2D0Ev();
extern void _ZN7S9197C22v3Ev();
extern void _ZN7S9197C22v4Ev();
static  VTBL_ENTRY vtc_S9197C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9197C2[0]),
  (VTBL_ENTRY)&_ZN7S9197C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9197C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9197C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9197C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S9197C2[];
extern  VTBL_ENTRY _ZTV7S9197C2[];
Class_Descriptor cd_S9197C2 = {  "S9197C2", // class name
  0,0,//no base classes
  &(vtc_S9197C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S9197C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9197C2),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9197C1  : S9197C2 {
  void *s9197c1f0;
  virtual  ~S9197C1(); // _ZN7S9197C1D1Ev
  virtual void  v1(); // _ZN7S9197C12v1Ev
  virtual void  v2(); // _ZN7S9197C12v2Ev
  S9197C1(); // tgen
};
//SIG(1 S9197C1) C1{ BC2{ vd v3 v4 Fp} vd v1 v2 Fp}


 S9197C1 ::~S9197C1(){ note_dtor("S9197C1", this);}
void  S9197C1 ::v1(){vfunc_called(this, "_ZN7S9197C12v1Ev");}
void  S9197C1 ::v2(){vfunc_called(this, "_ZN7S9197C12v2Ev");}
S9197C1 ::S9197C1(){ note_ctor("S9197C1", this);} // tgen

static void Test_S9197C1()
{
  extern Class_Descriptor cd_S9197C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S9197C1, buf);
    S9197C1 *dp, &lv = *(dp=new (buf) S9197C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S9197C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9197C1)");
    check_base_class_offset(lv, (S9197C2*), 0, "S9197C1");
    check_field_offset(lv, s9197c1f0, ABISELECT(16,8), "S9197C1.s9197c1f0");
    test_class_info(&lv, &cd_S9197C1);
    dp->~S9197C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9197C1(Test_S9197C1, "S9197C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S9197C1C1Ev();
extern void _ZN7S9197C1D1Ev();
Name_Map name_map_S9197C1[] = {
  NSPAIR(_ZN7S9197C1C1Ev),
  NSPAIR(_ZN7S9197C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9197C2;
extern VTBL_ENTRY _ZTI7S9197C2[];
extern  VTBL_ENTRY _ZTV7S9197C2[];
static Base_Class bases_S9197C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9197C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9197C1[];
extern void _ZN7S9197C1D1Ev();
extern void _ZN7S9197C1D0Ev();
extern void _ZN7S9197C22v3Ev();
extern void _ZN7S9197C22v4Ev();
extern void _ZN7S9197C12v1Ev();
extern void _ZN7S9197C12v2Ev();
static  VTBL_ENTRY vtc_S9197C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9197C1[0]),
  (VTBL_ENTRY)&_ZN7S9197C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9197C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9197C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9197C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9197C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9197C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9197C1[];
extern  VTBL_ENTRY _ZTV7S9197C1[];
Class_Descriptor cd_S9197C1 = {  "S9197C1", // class name
  bases_S9197C1, 1,
  &(vtc_S9197C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S9197C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9197C1),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14546C1  {
  void *s14546c1f0[2];
  int s14546c1f1[3];
  void *s14546c1f2[2];
  int s14546c1f3[4];
  void *s14546c1f4;
};
//SIG(1 S14546C1) C1{ Fp[2] Fi[3] Fp[2] Fi[4] Fp}



static void Test_S14546C1()
{
  {
    init_simple_test("S14546C1");
    S14546C1 lv;
    check2(sizeof(lv), ABISELECT(72,48), "sizeof(S14546C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14546C1)");
    check_field_offset(lv, s14546c1f0, 0, "S14546C1.s14546c1f0");
    check_field_offset(lv, s14546c1f1, ABISELECT(16,8), "S14546C1.s14546c1f1");
    check_field_offset(lv, s14546c1f2, ABISELECT(32,20), "S14546C1.s14546c1f2");
    check_field_offset(lv, s14546c1f3, ABISELECT(48,28), "S14546C1.s14546c1f3");
    check_field_offset(lv, s14546c1f4, ABISELECT(64,44), "S14546C1.s14546c1f4");
  }
}
static Arrange_To_Call_Me vS14546C1(Test_S14546C1, "S14546C1", ABISELECT(72,48));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17887C2  {
  char s17887c2f0[162];
  int s17887c2f1;
  char s17887c2f2;
};
//SIG(-1 S17887C2) C1{ Fc[162] Fi Fc}



static void Test_S17887C2()
{
  {
    init_simple_test("S17887C2");
    S17887C2 lv;
    check2(sizeof(lv), 172, "sizeof(S17887C2)");
    check2(__alignof__(lv), 4, "__alignof__(S17887C2)");
    check_field_offset(lv, s17887c2f0, 0, "S17887C2.s17887c2f0");
    check_field_offset(lv, s17887c2f1, 164, "S17887C2.s17887c2f1");
    check_field_offset(lv, s17887c2f2, 168, "S17887C2.s17887c2f2");
  }
}
static Arrange_To_Call_Me vS17887C2(Test_S17887C2, "S17887C2", 172);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17887C1  {
  void *s17887c1f0[2];
  ::S17887C2 s17887c1f1;
  void  mf17887c1(); // _ZN8S17887C19mf17887c1Ev
};
//SIG(1 S17887C1) C1{ m Fp[2] FC2{ Fc[162] Fi Fc}}


void  S17887C1 ::mf17887c1(){}

static void Test_S17887C1()
{
  {
    init_simple_test("S17887C1");
    S17887C1 lv;
    check2(sizeof(lv), ABISELECT(192,180), "sizeof(S17887C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17887C1)");
    check_field_offset(lv, s17887c1f0, 0, "S17887C1.s17887c1f0");
    check_field_offset(lv, s17887c1f1, ABISELECT(16,8), "S17887C1.s17887c1f1");
  }
}
static Arrange_To_Call_Me vS17887C1(Test_S17887C1, "S17887C1", ABISELECT(192,180));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

union  S12890C2  {
  void *s12890c2f0;
  void *s12890c2f1;
  void *s12890c2f2;
  void *s12890c2f3;
  int s12890c2f4;
  void *s12890c2f5;
};
//SIG(1 S12890C2) U1{ Fp Fp Fp Fp Fi Fp}

#endif // __cplusplus
#ifdef __cplusplus

struct  S12890C1  {
  int s12890c1f0;
  ::S12890C2 s12890c1f1;
};
//SIG(1 S12890C1) C1{ Fi FU2{ Fp Fp Fp Fp Fi Fp}}



static void Test_S12890C1()
{
  {
    init_simple_test("S12890C1");
    S12890C1 lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S12890C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12890C1)");
    check_field_offset(lv, s12890c1f0, 0, "S12890C1.s12890c1f0");
    check_field_offset(lv, s12890c1f1, ABISELECT(8,4), "S12890C1.s12890c1f1");
  }
}
static Arrange_To_Call_Me vS12890C1(Test_S12890C1, "S12890C1", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6024C1  : S6023C2 {
};
//SIG(1 S6024C1) C1{ BC2{ m Fp[2] Fi[3] Fc[16]}}



static void Test_S6024C1()
{
  extern Class_Descriptor cd_S6024C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,10)];
    init_test(&cd_S6024C1, buf);
    S6024C1 &lv = *(new (buf) S6024C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,36), "sizeof(S6024C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6024C1)");
    check_base_class_offset(lv, (S6023C2*), 0, "S6024C1");
    test_class_info(&lv, &cd_S6024C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6024C1(Test_S6024C1, "S6024C1", ABISELECT(48,36));

#else // __cplusplus

extern Class_Descriptor cd_S6023C2;
static Base_Class bases_S6024C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6023C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
Class_Descriptor cd_S6024C1 = {  "S6024C1", // class name
  bases_S6024C1, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(48,36), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17414C1  {
  __tsi64 s17414c1f0[3];
  void *s17414c1f1[2];
  __tsi64 s17414c1f2;
  ::S11199C7_nt s17414c1f3;
  void  mf17414c1(); // _ZN8S17414C19mf17414c1Ev
};
//SIG(1 S17414C1) C1{ m FL[3] Fp[2] FL FC2{ Fl}}


void  S17414C1 ::mf17414c1(){}

static void Test_S17414C1()
{
  {
    init_simple_test("S17414C1");
    S17414C1 lv;
    check2(sizeof(lv), ABISELECT(56,44), "sizeof(S17414C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17414C1)");
    check_field_offset(lv, s17414c1f0, 0, "S17414C1.s17414c1f0");
    check_field_offset(lv, s17414c1f1, 24, "S17414C1.s17414c1f1");
    check_field_offset(lv, s17414c1f2, ABISELECT(40,32), "S17414C1.s17414c1f2");
    check_field_offset(lv, s17414c1f3, ABISELECT(48,40), "S17414C1.s17414c1f3");
  }
}
static Arrange_To_Call_Me vS17414C1(Test_S17414C1, "S17414C1", ABISELECT(56,44));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12928C1  {
  int s12928c1f0:4;
  int s12928c1f1:2;
  int s12928c1f2:2;
  int s12928c1f3:3;
  short s12928c1f4:3;
};
//SIG(1 S12928C1) C1{ Fi:4 Fi:2 Fi:2 Fi:3 Fs:3}



static void Test_S12928C1()
{
  {
    init_simple_test("S12928C1");
    static S12928C1 lv;
    check2(sizeof(lv), 4, "sizeof(S12928C1)");
    check2(__alignof__(lv), 4, "__alignof__(S12928C1)");
    set_bf_and_test(lv, s12928c1f0, 0, 0, 4, 1, "S12928C1");
    set_bf_and_test(lv, s12928c1f0, 0, 0, 4, hide_sll(1LL<<3), "S12928C1");
    set_bf_and_test(lv, s12928c1f1, 0, 4, 2, 1, "S12928C1");
    set_bf_and_test(lv, s12928c1f1, 0, 4, 2, hide_sll(1LL<<1), "S12928C1");
    set_bf_and_test(lv, s12928c1f2, 0, 6, 2, 1, "S12928C1");
    set_bf_and_test(lv, s12928c1f2, 0, 6, 2, hide_sll(1LL<<1), "S12928C1");
    set_bf_and_test(lv, s12928c1f3, 1, 0, 3, 1, "S12928C1");
    set_bf_and_test(lv, s12928c1f3, 1, 0, 3, hide_sll(1LL<<2), "S12928C1");
    set_bf_and_test(lv, s12928c1f4, 1, 3, 3, 1, "S12928C1");
    set_bf_and_test(lv, s12928c1f4, 1, 3, 3, hide_sll(1LL<<2), "S12928C1");
  }
}
static Arrange_To_Call_Me vS12928C1(Test_S12928C1, "S12928C1", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18786C1  {
  void *s18786c1f0[3];
  virtual void  v1(); // _ZN8S18786C12v1Ev
  virtual void  v2(); // _ZN8S18786C12v2Ev
  virtual void  v3(); // _ZN8S18786C12v3Ev
  virtual void  v4(); // _ZN8S18786C12v4Ev
  virtual void  v5(); // _ZN8S18786C12v5Ev
  virtual void  v6(); // _ZN8S18786C12v6Ev
  ~S18786C1(); // tgen
  S18786C1(); // tgen
};
//SIG(1 S18786C1) C1{ v1 v2 v3 v4 v5 v6 Fp[3]}


void  S18786C1 ::v1(){vfunc_called(this, "_ZN8S18786C12v1Ev");}
void  S18786C1 ::v2(){vfunc_called(this, "_ZN8S18786C12v2Ev");}
void  S18786C1 ::v3(){vfunc_called(this, "_ZN8S18786C12v3Ev");}
void  S18786C1 ::v4(){vfunc_called(this, "_ZN8S18786C12v4Ev");}
void  S18786C1 ::v5(){vfunc_called(this, "_ZN8S18786C12v5Ev");}
void  S18786C1 ::v6(){vfunc_called(this, "_ZN8S18786C12v6Ev");}
S18786C1 ::~S18786C1(){ note_dtor("S18786C1", this);} // tgen
S18786C1 ::S18786C1(){ note_ctor("S18786C1", this);} // tgen

static void Test_S18786C1()
{
  extern Class_Descriptor cd_S18786C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S18786C1, buf);
    S18786C1 *dp, &lv = *(dp=new (buf) S18786C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S18786C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18786C1)");
    check_field_offset(lv, s18786c1f0, ABISELECT(8,4), "S18786C1.s18786c1f0");
    test_class_info(&lv, &cd_S18786C1);
    dp->~S18786C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18786C1(Test_S18786C1, "S18786C1", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S18786C1C1Ev();
extern void _ZN8S18786C1D1Ev();
Name_Map name_map_S18786C1[] = {
  NSPAIR(_ZN8S18786C1C1Ev),
  NSPAIR(_ZN8S18786C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18786C1[];
extern void _ZN8S18786C12v1Ev();
extern void _ZN8S18786C12v2Ev();
extern void _ZN8S18786C12v3Ev();
extern void _ZN8S18786C12v4Ev();
extern void _ZN8S18786C12v5Ev();
extern void _ZN8S18786C12v6Ev();
static  VTBL_ENTRY vtc_S18786C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18786C1[0]),
  (VTBL_ENTRY)&_ZN8S18786C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18786C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18786C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18786C12v4Ev,
  (VTBL_ENTRY)&_ZN8S18786C12v5Ev,
  (VTBL_ENTRY)&_ZN8S18786C12v6Ev,
};
extern VTBL_ENTRY _ZTI8S18786C1[];
extern  VTBL_ENTRY _ZTV8S18786C1[];
Class_Descriptor cd_S18786C1 = {  "S18786C1", // class name
  0,0,//no base classes
  &(vtc_S18786C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S18786C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18786C1),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10666C1  {
  char s10666c1f0[2];
  int s10666c1f1[2];
  char s10666c1f2[5];
  int s10666c1f3[2];
};
//SIG(1 S10666C1) C1{ Fc[2] Fi[2] Fc[5] Fi[2]}



static void Test_S10666C1()
{
  {
    init_simple_test("S10666C1");
    S10666C1 lv;
    check2(sizeof(lv), 28, "sizeof(S10666C1)");
    check2(__alignof__(lv), 4, "__alignof__(S10666C1)");
    check_field_offset(lv, s10666c1f0, 0, "S10666C1.s10666c1f0");
    check_field_offset(lv, s10666c1f1, 4, "S10666C1.s10666c1f1");
    check_field_offset(lv, s10666c1f2, 12, "S10666C1.s10666c1f2");
    check_field_offset(lv, s10666c1f3, 20, "S10666C1.s10666c1f3");
  }
}
static Arrange_To_Call_Me vS10666C1(Test_S10666C1, "S10666C1", 28);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18774C1  {
  __tsi64 s18774c1f0[5];
  virtual void  v1(); // _ZN8S18774C12v1Ev
  virtual void  v2(); // _ZN8S18774C12v2Ev
  virtual void  v3(); // _ZN8S18774C12v3Ev
  virtual void  v4(); // _ZN8S18774C12v4Ev
  virtual void  v5(); // _ZN8S18774C12v5Ev
  virtual void  v6(); // _ZN8S18774C12v6Ev
  ~S18774C1(); // tgen
  S18774C1(); // tgen
};
//SIG(1 S18774C1) C1{ v1 v2 v3 v4 v5 v6 FL[5]}


void  S18774C1 ::v1(){vfunc_called(this, "_ZN8S18774C12v1Ev");}
void  S18774C1 ::v2(){vfunc_called(this, "_ZN8S18774C12v2Ev");}
void  S18774C1 ::v3(){vfunc_called(this, "_ZN8S18774C12v3Ev");}
void  S18774C1 ::v4(){vfunc_called(this, "_ZN8S18774C12v4Ev");}
void  S18774C1 ::v5(){vfunc_called(this, "_ZN8S18774C12v5Ev");}
void  S18774C1 ::v6(){vfunc_called(this, "_ZN8S18774C12v6Ev");}
S18774C1 ::~S18774C1(){ note_dtor("S18774C1", this);} // tgen
S18774C1 ::S18774C1(){ note_ctor("S18774C1", this);} // tgen

static void Test_S18774C1()
{
  extern Class_Descriptor cd_S18774C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S18774C1, buf);
    S18774C1 *dp, &lv = *(dp=new (buf) S18774C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S18774C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18774C1)");
    check_field_offset(lv, s18774c1f0, ABISELECT(8,4), "S18774C1.s18774c1f0");
    test_class_info(&lv, &cd_S18774C1);
    dp->~S18774C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18774C1(Test_S18774C1, "S18774C1", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN8S18774C1C1Ev();
extern void _ZN8S18774C1D1Ev();
Name_Map name_map_S18774C1[] = {
  NSPAIR(_ZN8S18774C1C1Ev),
  NSPAIR(_ZN8S18774C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18774C1[];
extern void _ZN8S18774C12v1Ev();
extern void _ZN8S18774C12v2Ev();
extern void _ZN8S18774C12v3Ev();
extern void _ZN8S18774C12v4Ev();
extern void _ZN8S18774C12v5Ev();
extern void _ZN8S18774C12v6Ev();
static  VTBL_ENTRY vtc_S18774C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18774C1[0]),
  (VTBL_ENTRY)&_ZN8S18774C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18774C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18774C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18774C12v4Ev,
  (VTBL_ENTRY)&_ZN8S18774C12v5Ev,
  (VTBL_ENTRY)&_ZN8S18774C12v6Ev,
};
extern VTBL_ENTRY _ZTI8S18774C1[];
extern  VTBL_ENTRY _ZTV8S18774C1[];
Class_Descriptor cd_S18774C1 = {  "S18774C1", // class name
  0,0,//no base classes
  &(vtc_S18774C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI8S18774C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18774C1),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16009C1  {
  ::S79C8_nt s16009c1f0;
  int s16009c1f1;
  void *s16009c1f2;
  int s16009c1f3;
  void  mf16009c1(); // _ZN8S16009C19mf16009c1Ev
};
//SIG(1 S16009C1) C1{ m FC2{ m Fi[2]} Fi Fp Fi}


void  S16009C1 ::mf16009c1(){}

static void Test_S16009C1()
{
  {
    init_simple_test("S16009C1");
    S16009C1 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S16009C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16009C1)");
    check_field_offset(lv, s16009c1f0, 0, "S16009C1.s16009c1f0");
    check_field_offset(lv, s16009c1f1, 8, "S16009C1.s16009c1f1");
    check_field_offset(lv, s16009c1f2, ABISELECT(16,12), "S16009C1.s16009c1f2");
    check_field_offset(lv, s16009c1f3, ABISELECT(24,16), "S16009C1.s16009c1f3");
  }
}
static Arrange_To_Call_Me vS16009C1(Test_S16009C1, "S16009C1", ABISELECT(32,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21643C1  {
  int s21643c1f0[2];
  char s21643c1f1[256];
  int s21643c1f2;
  void  mf21643c1(); // _ZN8S21643C19mf21643c1Ev
  virtual  ~S21643C1(); // _ZN8S21643C1D1Ev
  S21643C1(); // tgen
};
//SIG(1 S21643C1) C1{ vd m Fi[2] Fc[256] Fi}


void  S21643C1 ::mf21643c1(){}
 S21643C1 ::~S21643C1(){ note_dtor("S21643C1", this);}
S21643C1 ::S21643C1(){ note_ctor("S21643C1", this);} // tgen

static void Test_S21643C1()
{
  extern Class_Descriptor cd_S21643C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,69)];
    init_test(&cd_S21643C1, buf);
    S21643C1 *dp, &lv = *(dp=new (buf) S21643C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,272), "sizeof(S21643C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21643C1)");
    check_field_offset(lv, s21643c1f0, ABISELECT(8,4), "S21643C1.s21643c1f0");
    check_field_offset(lv, s21643c1f1, ABISELECT(16,12), "S21643C1.s21643c1f1");
    check_field_offset(lv, s21643c1f2, ABISELECT(272,268), "S21643C1.s21643c1f2");
    test_class_info(&lv, &cd_S21643C1);
    dp->~S21643C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21643C1(Test_S21643C1, "S21643C1", ABISELECT(280,272));

#else // __cplusplus

extern void _ZN8S21643C1C1Ev();
extern void _ZN8S21643C1D1Ev();
Name_Map name_map_S21643C1[] = {
  NSPAIR(_ZN8S21643C1C1Ev),
  NSPAIR(_ZN8S21643C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21643C1[];
extern void _ZN8S21643C1D1Ev();
extern void _ZN8S21643C1D0Ev();
static  VTBL_ENTRY vtc_S21643C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21643C1[0]),
  (VTBL_ENTRY)&_ZN8S21643C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21643C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21643C1[];
extern  VTBL_ENTRY _ZTV8S21643C1[];
Class_Descriptor cd_S21643C1 = {  "S21643C1", // class name
  0,0,//no base classes
  &(vtc_S21643C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(280,272), // object size
  NSPAIRA(_ZTI8S21643C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21643C1),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19201C2  : S5266C29 , S7719C4_nt {
};
//SIG(-1 S19201C2) C1{ BC2{ m} BC3{ m Fc}}



static void Test_S19201C2()
{
  extern Class_Descriptor cd_S19201C2;
  void *lvp;
  {
    char buf[1];
    init_test(&cd_S19201C2, buf);
    S19201C2 &lv = *(new (buf) S19201C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1, "sizeof(S19201C2)");
    check2(__alignof__(lv), 1, "__alignof__(S19201C2)");
    check_base_class_offset(lv, (S5266C29*), 0, "S19201C2");
    check_base_class_offset(lv, (S7719C4_nt*), 0, "S19201C2");
    test_class_info(&lv, &cd_S19201C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19201C2(Test_S19201C2, "S19201C2", 1);

#else // __cplusplus

extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
static Base_Class bases_S19201C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7719C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19201C2[];
Class_Descriptor cd_S19201C2 = {  "S19201C2", // class name
  bases_S19201C2, 2,
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI8S19201C2),ABISELECT(56,32), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19201C1  : virtual S19201C2 {
  ~S19201C1(); // tgen
  S19201C1(); // tgen
};
//SIG(1 S19201C1) C1{ VBC2{ BC3{ m} BC4{ m Fc}}}


S19201C1 ::~S19201C1(){ note_dtor("S19201C1", this);} // tgen
S19201C1 ::S19201C1(){ note_ctor("S19201C1", this);} // tgen

static void Test_S19201C1()
{
  extern Class_Descriptor cd_S19201C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19201C1, buf);
    S19201C1 *dp, &lv = *(dp=new (buf) S19201C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19201C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19201C1)");
    check_base_class_offset(lv, (S5266C29*)(S19201C2*), ABISELECT(8,4), "S19201C1");
    check_base_class_offset(lv, (S7719C4_nt*)(S19201C2*), ABISELECT(8,4), "S19201C1");
    check_base_class_offset(lv, (S19201C2*), ABISELECT(8,4), "S19201C1");
    test_class_info(&lv, &cd_S19201C1);
    dp->~S19201C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19201C1(Test_S19201C1, "S19201C1", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19201C1C1Ev();
extern void _ZN8S19201C1D1Ev();
Name_Map name_map_S19201C1[] = {
  NSPAIR(_ZN8S19201C1C1Ev),
  NSPAIR(_ZN8S19201C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
extern Class_Descriptor cd_S19201C2;
extern VTBL_ENTRY _ZTI8S19201C2[];
static Base_Class bases_S19201C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C29,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7719C4_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19201C2,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19201C1[];
static  VTBL_ENTRY vtc_S19201C1[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19201C1[0]),
};
extern VTBL_ENTRY _ZTV8S19201C1[];
static  VTT_ENTRY vtt_S19201C1[] = {
  {&(_ZTV8S19201C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19201C1[];
extern  VTBL_ENTRY _ZTV8S19201C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19201C1[];
Class_Descriptor cd_S19201C1 = {  "S19201C1", // class name
  bases_S19201C1, 3,
  &(vtc_S19201C1[0]), // expected_vtbl_contents
  &(vtt_S19201C1[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19201C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19201C1),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19201C1),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17605C1  {
  void *s17605c1f0;
  ::S7719C17_nt s17605c1f1;
  int s17605c1f2[10];
  void  mf17605c1(); // _ZN8S17605C19mf17605c1Ev
};
//SIG(1 S17605C1) C1{ m Fp FC2{ m Fi} Fi[10]}


void  S17605C1 ::mf17605c1(){}

static void Test_S17605C1()
{
  {
    init_simple_test("S17605C1");
    S17605C1 lv;
    check2(sizeof(lv), ABISELECT(56,48), "sizeof(S17605C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17605C1)");
    check_field_offset(lv, s17605c1f0, 0, "S17605C1.s17605c1f0");
    check_field_offset(lv, s17605c1f1, ABISELECT(8,4), "S17605C1.s17605c1f1");
    check_field_offset(lv, s17605c1f2, ABISELECT(12,8), "S17605C1.s17605c1f2");
  }
}
static Arrange_To_Call_Me vS17605C1(Test_S17605C1, "S17605C1", ABISELECT(56,48));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18879C1  {
  __tsi64 s18879c1f0;
  virtual  ~S18879C1(); // _ZN8S18879C1D1Ev
  virtual void  v1(); // _ZN8S18879C12v1Ev
  virtual void  v2(); // _ZN8S18879C12v2Ev
  virtual void  v3(); // _ZN8S18879C12v3Ev
  virtual void  v4(); // _ZN8S18879C12v4Ev
  virtual void  v5(); // _ZN8S18879C12v5Ev
  S18879C1(); // tgen
};
//SIG(1 S18879C1) C1{ vd v1 v2 v3 v4 v5 FL}


 S18879C1 ::~S18879C1(){ note_dtor("S18879C1", this);}
void  S18879C1 ::v1(){vfunc_called(this, "_ZN8S18879C12v1Ev");}
void  S18879C1 ::v2(){vfunc_called(this, "_ZN8S18879C12v2Ev");}
void  S18879C1 ::v3(){vfunc_called(this, "_ZN8S18879C12v3Ev");}
void  S18879C1 ::v4(){vfunc_called(this, "_ZN8S18879C12v4Ev");}
void  S18879C1 ::v5(){vfunc_called(this, "_ZN8S18879C12v5Ev");}
S18879C1 ::S18879C1(){ note_ctor("S18879C1", this);} // tgen

static void Test_S18879C1()
{
  extern Class_Descriptor cd_S18879C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S18879C1, buf);
    S18879C1 *dp, &lv = *(dp=new (buf) S18879C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S18879C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18879C1)");
    check_field_offset(lv, s18879c1f0, ABISELECT(8,4), "S18879C1.s18879c1f0");
    test_class_info(&lv, &cd_S18879C1);
    dp->~S18879C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18879C1(Test_S18879C1, "S18879C1", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S18879C1C1Ev();
extern void _ZN8S18879C1D1Ev();
Name_Map name_map_S18879C1[] = {
  NSPAIR(_ZN8S18879C1C1Ev),
  NSPAIR(_ZN8S18879C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18879C1[];
extern void _ZN8S18879C1D1Ev();
extern void _ZN8S18879C1D0Ev();
extern void _ZN8S18879C12v1Ev();
extern void _ZN8S18879C12v2Ev();
extern void _ZN8S18879C12v3Ev();
extern void _ZN8S18879C12v4Ev();
extern void _ZN8S18879C12v5Ev();
static  VTBL_ENTRY vtc_S18879C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18879C1[0]),
  (VTBL_ENTRY)&_ZN8S18879C1D1Ev,
  (VTBL_ENTRY)&_ZN8S18879C1D0Ev,
  (VTBL_ENTRY)&_ZN8S18879C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18879C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18879C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18879C12v4Ev,
  (VTBL_ENTRY)&_ZN8S18879C12v5Ev,
};
extern VTBL_ENTRY _ZTI8S18879C1[];
extern  VTBL_ENTRY _ZTV8S18879C1[];
Class_Descriptor cd_S18879C1 = {  "S18879C1", // class name
  0,0,//no base classes
  &(vtc_S18879C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S18879C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18879C1),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18679C1  {
  __tsi64 s18679c1f0;
  void *s18679c1f1;
  int s18679c1f2;
  virtual void  v1(); // _ZN8S18679C12v1Ev
  virtual void  v2(); // _ZN8S18679C12v2Ev
  virtual void  v3(); // _ZN8S18679C12v3Ev
  virtual void  v4(); // _ZN8S18679C12v4Ev
  ~S18679C1(); // tgen
  S18679C1(); // tgen
};
//SIG(1 S18679C1) C1{ v1 v2 v3 v4 FL Fp Fi}


void  S18679C1 ::v1(){vfunc_called(this, "_ZN8S18679C12v1Ev");}
void  S18679C1 ::v2(){vfunc_called(this, "_ZN8S18679C12v2Ev");}
void  S18679C1 ::v3(){vfunc_called(this, "_ZN8S18679C12v3Ev");}
void  S18679C1 ::v4(){vfunc_called(this, "_ZN8S18679C12v4Ev");}
S18679C1 ::~S18679C1(){ note_dtor("S18679C1", this);} // tgen
S18679C1 ::S18679C1(){ note_ctor("S18679C1", this);} // tgen

static void Test_S18679C1()
{
  extern Class_Descriptor cd_S18679C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S18679C1, buf);
    S18679C1 *dp, &lv = *(dp=new (buf) S18679C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S18679C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18679C1)");
    check_field_offset(lv, s18679c1f0, ABISELECT(8,4), "S18679C1.s18679c1f0");
    check_field_offset(lv, s18679c1f1, ABISELECT(16,12), "S18679C1.s18679c1f1");
    check_field_offset(lv, s18679c1f2, ABISELECT(24,16), "S18679C1.s18679c1f2");
    test_class_info(&lv, &cd_S18679C1);
    dp->~S18679C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18679C1(Test_S18679C1, "S18679C1", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S18679C1C1Ev();
extern void _ZN8S18679C1D1Ev();
Name_Map name_map_S18679C1[] = {
  NSPAIR(_ZN8S18679C1C1Ev),
  NSPAIR(_ZN8S18679C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18679C1[];
extern void _ZN8S18679C12v1Ev();
extern void _ZN8S18679C12v2Ev();
extern void _ZN8S18679C12v3Ev();
extern void _ZN8S18679C12v4Ev();
static  VTBL_ENTRY vtc_S18679C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18679C1[0]),
  (VTBL_ENTRY)&_ZN8S18679C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18679C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18679C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18679C12v4Ev,
};
extern VTBL_ENTRY _ZTI8S18679C1[];
extern  VTBL_ENTRY _ZTV8S18679C1[];
Class_Descriptor cd_S18679C1 = {  "S18679C1", // class name
  0,0,//no base classes
  &(vtc_S18679C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S18679C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18679C1),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10749C1  {
  char s10749c1f0[21];
  int s10749c1f1[2];
  char s10749c1f2[33];
};
//SIG(1 S10749C1) C1{ Fc[21] Fi[2] Fc[33]}



static void Test_S10749C1()
{
  {
    init_simple_test("S10749C1");
    S10749C1 lv;
    check2(sizeof(lv), 68, "sizeof(S10749C1)");
    check2(__alignof__(lv), 4, "__alignof__(S10749C1)");
    check_field_offset(lv, s10749c1f0, 0, "S10749C1.s10749c1f0");
    check_field_offset(lv, s10749c1f1, 24, "S10749C1.s10749c1f1");
    check_field_offset(lv, s10749c1f2, 32, "S10749C1.s10749c1f2");
  }
}
static Arrange_To_Call_Me vS10749C1(Test_S10749C1, "S10749C1", 68);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19653C1  : virtual S7719C4_nt {
  ::S7719C4_nt s19653c1f0;
  void *s19653c1f1;
  int s19653c1f2;
  ~S19653C1(); // tgen
  S19653C1(); // tgen
};
//SIG(1 S19653C1) C1{ VBC2{ m Fc} FC2 Fp Fi}


S19653C1 ::~S19653C1(){ note_dtor("S19653C1", this);} // tgen
S19653C1 ::S19653C1(){ note_ctor("S19653C1", this);} // tgen

static void Test_S19653C1()
{
  extern Class_Descriptor cd_S19653C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S19653C1, buf);
    S19653C1 *dp, &lv = *(dp=new (buf) S19653C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S19653C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19653C1)");
    check_base_class_offset(lv, (S7719C4_nt*), ABISELECT(28,16), "S19653C1");
    check_field_offset(lv, s19653c1f0, ABISELECT(8,4), "S19653C1.s19653c1f0");
    check_field_offset(lv, s19653c1f1, ABISELECT(16,8), "S19653C1.s19653c1f1");
    check_field_offset(lv, s19653c1f2, ABISELECT(24,12), "S19653C1.s19653c1f2");
    test_class_info(&lv, &cd_S19653C1);
    dp->~S19653C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19653C1(Test_S19653C1, "S19653C1", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S19653C1C1Ev();
extern void _ZN8S19653C1D1Ev();
Name_Map name_map_S19653C1[] = {
  NSPAIR(_ZN8S19653C1C1Ev),
  NSPAIR(_ZN8S19653C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7719C4_nt;
extern VTBL_ENTRY _ZTI10S7719C4_nt[];
static Base_Class bases_S19653C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7719C4_nt,    ABISELECT(28,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19653C1[];
static  VTBL_ENTRY vtc_S19653C1[] = {
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19653C1[0]),
};
extern VTBL_ENTRY _ZTV8S19653C1[];
static  VTT_ENTRY vtt_S19653C1[] = {
  {&(_ZTV8S19653C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19653C1[];
extern  VTBL_ENTRY _ZTV8S19653C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19653C1[];
Class_Descriptor cd_S19653C1 = {  "S19653C1", // class name
  bases_S19653C1, 1,
  &(vtc_S19653C1[0]), // expected_vtbl_contents
  &(vtt_S19653C1[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S19653C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19653C1),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19653C1),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11933C2  {
  short s11933c2f0[3];
  long s11933c2f1;
};
//SIG(-1 S11933C2) C1{ Fs[3] Fl}



static void Test_S11933C2()
{
  {
    init_simple_test("S11933C2");
    S11933C2 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S11933C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11933C2)");
    check_field_offset(lv, s11933c2f0, 0, "S11933C2.s11933c2f0");
    check_field_offset(lv, s11933c2f1, 8, "S11933C2.s11933c2f1");
  }
}
static Arrange_To_Call_Me vS11933C2(Test_S11933C2, "S11933C2", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11933C1  {
  ::S11933C2 s11933c1f0;
  void *s11933c1f1[6];
};
//SIG(1 S11933C1) C1{ FC2{ Fs[3] Fl} Fp[6]}



static void Test_S11933C1()
{
  {
    init_simple_test("S11933C1");
    S11933C1 lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S11933C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11933C1)");
    check_field_offset(lv, s11933c1f0, 0, "S11933C1.s11933c1f0");
    check_field_offset(lv, s11933c1f1, ABISELECT(16,12), "S11933C1.s11933c1f1");
  }
}
static Arrange_To_Call_Me vS11933C1(Test_S11933C1, "S11933C1", ABISELECT(64,36));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14727C1  {
  void *s14727c1f0[7];
  char s14727c1f1[14];
  void *s14727c1f2[9];
};
//SIG(1 S14727C1) C1{ Fp[7] Fc[14] Fp[9]}



static void Test_S14727C1()
{
  {
    init_simple_test("S14727C1");
    S14727C1 lv;
    check2(sizeof(lv), ABISELECT(144,80), "sizeof(S14727C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14727C1)");
    check_field_offset(lv, s14727c1f0, 0, "S14727C1.s14727c1f0");
    check_field_offset(lv, s14727c1f1, ABISELECT(56,28), "S14727C1.s14727c1f1");
    check_field_offset(lv, s14727c1f2, ABISELECT(72,44), "S14727C1.s14727c1f2");
  }
}
static Arrange_To_Call_Me vS14727C1(Test_S14727C1, "S14727C1", ABISELECT(144,80));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6081C1  : S17777C6_nt {
  __tsi64 s6081c1f0;
  virtual void  v1(); // _ZN7S6081C12v1Ev
  virtual void  v2(); // _ZN7S6081C12v2Ev
  ~S6081C1(); // tgen
  S6081C1(); // tgen
};
//SIG(1 S6081C1) C1{ BC2{ m Fp} v1 v2 FL}


void  S6081C1 ::v1(){vfunc_called(this, "_ZN7S6081C12v1Ev");}
void  S6081C1 ::v2(){vfunc_called(this, "_ZN7S6081C12v2Ev");}
S6081C1 ::~S6081C1(){ note_dtor("S6081C1", this);} // tgen
S6081C1 ::S6081C1(){ note_ctor("S6081C1", this);} // tgen

static void Test_S6081C1()
{
  extern Class_Descriptor cd_S6081C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S6081C1, buf);
    S6081C1 *dp, &lv = *(dp=new (buf) S6081C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S6081C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6081C1)");
    check_base_class_offset(lv, (S17777C6_nt*), ABISELECT(8,4), "S6081C1");
    check_field_offset(lv, s6081c1f0, ABISELECT(16,8), "S6081C1.s6081c1f0");
    test_class_info(&lv, &cd_S6081C1);
    dp->~S6081C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6081C1(Test_S6081C1, "S6081C1", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S6081C1C1Ev();
extern void _ZN7S6081C1D1Ev();
Name_Map name_map_S6081C1[] = {
  NSPAIR(_ZN7S6081C1C1Ev),
  NSPAIR(_ZN7S6081C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S17777C6_nt;
extern VTBL_ENTRY _ZTI11S17777C6_nt[];
static Base_Class bases_S6081C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S17777C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6081C1[];
extern void _ZN7S6081C12v1Ev();
extern void _ZN7S6081C12v2Ev();
static  VTBL_ENTRY vtc_S6081C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6081C1[0]),
  (VTBL_ENTRY)&_ZN7S6081C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6081C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S6081C1[];
extern  VTBL_ENTRY _ZTV7S6081C1[];
Class_Descriptor cd_S6081C1 = {  "S6081C1", // class name
  bases_S6081C1, 1,
  &(vtc_S6081C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S6081C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S6081C1),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13868C1  {
  long s13868c1f0;
  short s13868c1f1;
  char s13868c1f2[6];
  void *s13868c1f3;
  int s13868c1f4;
};
//SIG(1 S13868C1) C1{ Fl Fs Fc[6] Fp Fi}



static void Test_S13868C1()
{
  {
    init_simple_test("S13868C1");
    S13868C1 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S13868C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13868C1)");
    check_field_offset(lv, s13868c1f0, 0, "S13868C1.s13868c1f0");
    check_field_offset(lv, s13868c1f1, ABISELECT(8,4), "S13868C1.s13868c1f1");
    check_field_offset(lv, s13868c1f2, ABISELECT(10,6), "S13868C1.s13868c1f2");
    check_field_offset(lv, s13868c1f3, ABISELECT(16,12), "S13868C1.s13868c1f3");
    check_field_offset(lv, s13868c1f4, ABISELECT(24,16), "S13868C1.s13868c1f4");
  }
}
static Arrange_To_Call_Me vS13868C1(Test_S13868C1, "S13868C1", ABISELECT(32,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14540C1  {
  void *s14540c1f0[2];
  int s14540c1f1[2];
  void *s14540c1f2[2];
};
//SIG(1 S14540C1) C1{ Fp[2] Fi[2] Fp[2]}



static void Test_S14540C1()
{
  {
    init_simple_test("S14540C1");
    S14540C1 lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S14540C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14540C1)");
    check_field_offset(lv, s14540c1f0, 0, "S14540C1.s14540c1f0");
    check_field_offset(lv, s14540c1f1, ABISELECT(16,8), "S14540C1.s14540c1f1");
    check_field_offset(lv, s14540c1f2, ABISELECT(24,16), "S14540C1.s14540c1f2");
  }
}
static Arrange_To_Call_Me vS14540C1(Test_S14540C1, "S14540C1", ABISELECT(40,24));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17119C1  {
  int s17119c1f0[2];
  __tsi64 s17119c1f1;
  int s17119c1f2[7];
  void  mf17119c1(); // _ZN8S17119C19mf17119c1Ev
};
//SIG(1 S17119C1) C1{ m Fi[2] FL Fi[7]}


void  S17119C1 ::mf17119c1(){}

static void Test_S17119C1()
{
  {
    init_simple_test("S17119C1");
    S17119C1 lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S17119C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17119C1)");
    check_field_offset(lv, s17119c1f0, 0, "S17119C1.s17119c1f0");
    check_field_offset(lv, s17119c1f1, 8, "S17119C1.s17119c1f1");
    check_field_offset(lv, s17119c1f2, 16, "S17119C1.s17119c1f2");
  }
}
static Arrange_To_Call_Me vS17119C1(Test_S17119C1, "S17119C1", ABISELECT(48,44));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21682C1  {
  int s21682c1f0[4];
  char s21682c1f1[3];
  void  mf21682c1(); // _ZN8S21682C19mf21682c1Ev
  virtual  ~S21682C1(); // _ZN8S21682C1D1Ev
  S21682C1(); // tgen
};
//SIG(1 S21682C1) C1{ vd m Fi[4] Fc[3]}


void  S21682C1 ::mf21682c1(){}
 S21682C1 ::~S21682C1(){ note_dtor("S21682C1", this);}
S21682C1 ::S21682C1(){ note_ctor("S21682C1", this);} // tgen

static void Test_S21682C1()
{
  extern Class_Descriptor cd_S21682C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S21682C1, buf);
    S21682C1 *dp, &lv = *(dp=new (buf) S21682C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S21682C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21682C1)");
    check_field_offset(lv, s21682c1f0, ABISELECT(8,4), "S21682C1.s21682c1f0");
    check_field_offset(lv, s21682c1f1, ABISELECT(24,20), "S21682C1.s21682c1f1");
    test_class_info(&lv, &cd_S21682C1);
    dp->~S21682C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21682C1(Test_S21682C1, "S21682C1", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN8S21682C1C1Ev();
extern void _ZN8S21682C1D1Ev();
Name_Map name_map_S21682C1[] = {
  NSPAIR(_ZN8S21682C1C1Ev),
  NSPAIR(_ZN8S21682C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21682C1[];
extern void _ZN8S21682C1D1Ev();
extern void _ZN8S21682C1D0Ev();
static  VTBL_ENTRY vtc_S21682C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21682C1[0]),
  (VTBL_ENTRY)&_ZN8S21682C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21682C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21682C1[];
extern  VTBL_ENTRY _ZTV8S21682C1[];
Class_Descriptor cd_S21682C1 = {  "S21682C1", // class name
  0,0,//no base classes
  &(vtc_S21682C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI8S21682C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21682C1),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17003C1  {
  unsigned int s17003c1f0:1;
  unsigned int s17003c1f1:1;
  unsigned int s17003c1f2:1;
  void  mf17003c1(); // _ZN8S17003C19mf17003c1Ev
};
//SIG(1 S17003C1) C1{ m Fi:1 Fi:1 Fi:1}


void  S17003C1 ::mf17003c1(){}

static void Test_S17003C1()
{
  {
    init_simple_test("S17003C1");
    static S17003C1 lv;
    check2(sizeof(lv), 4, "sizeof(S17003C1)");
    check2(__alignof__(lv), 4, "__alignof__(S17003C1)");
    set_bf_and_test(lv, s17003c1f0, 0, 0, 1, 1, "S17003C1");
    set_bf_and_test(lv, s17003c1f1, 0, 1, 1, 1, "S17003C1");
    set_bf_and_test(lv, s17003c1f2, 0, 2, 1, 1, "S17003C1");
  }
}
static Arrange_To_Call_Me vS17003C1(Test_S17003C1, "S17003C1", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12082C1  {
  ::S79C31_nt s12082c1f0;
  ::S79C31_nt s12082c1f1;
};
//SIG(1 S12082C1) C1{ FC2{ m Fi[3]} FC2}



static void Test_S12082C1()
{
  {
    init_simple_test("S12082C1");
    S12082C1 lv;
    check2(sizeof(lv), 24, "sizeof(S12082C1)");
    check2(__alignof__(lv), 4, "__alignof__(S12082C1)");
    check_field_offset(lv, s12082c1f0, 0, "S12082C1.s12082c1f0");
    check_field_offset(lv, s12082c1f1, 12, "S12082C1.s12082c1f1");
  }
}
static Arrange_To_Call_Me vS12082C1(Test_S12082C1, "S12082C1", 24);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6312C1  : S5266C29 {
  int s6312c1f0;
  char s6312c1f1;
  virtual  ~S6312C1(); // _ZN7S6312C1D1Ev
  S6312C1(); // tgen
};
//SIG(1 S6312C1) C1{ BC2{ m} vd Fi Fc}


 S6312C1 ::~S6312C1(){ note_dtor("S6312C1", this);}
S6312C1 ::S6312C1(){ note_ctor("S6312C1", this);} // tgen

static void Test_S6312C1()
{
  extern Class_Descriptor cd_S6312C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S6312C1, buf);
    S6312C1 *dp, &lv = *(dp=new (buf) S6312C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S6312C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6312C1)");
    check_base_class_offset(lv, (S5266C29*), 0, "S6312C1");
    check_field_offset(lv, s6312c1f0, ABISELECT(8,4), "S6312C1.s6312c1f0");
    check_field_offset(lv, s6312c1f1, ABISELECT(12,8), "S6312C1.s6312c1f1");
    test_class_info(&lv, &cd_S6312C1);
    dp->~S6312C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6312C1(Test_S6312C1, "S6312C1", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S6312C1C1Ev();
extern void _ZN7S6312C1D1Ev();
Name_Map name_map_S6312C1[] = {
  NSPAIR(_ZN7S6312C1C1Ev),
  NSPAIR(_ZN7S6312C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
static Base_Class bases_S6312C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6312C1[];
extern void _ZN7S6312C1D1Ev();
extern void _ZN7S6312C1D0Ev();
static  VTBL_ENTRY vtc_S6312C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6312C1[0]),
  (VTBL_ENTRY)&_ZN7S6312C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6312C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S6312C1[];
extern  VTBL_ENTRY _ZTV7S6312C1[];
Class_Descriptor cd_S6312C1 = {  "S6312C1", // class name
  bases_S6312C1, 1,
  &(vtc_S6312C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S6312C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6312C1),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14312C1  {
  void *s14312c1f0;
  int s14312c1f1[2];
  short s14312c1f2[8];
};
//SIG(1 S14312C1) C1{ Fp Fi[2] Fs[8]}



static void Test_S14312C1()
{
  {
    init_simple_test("S14312C1");
    S14312C1 lv;
    check2(sizeof(lv), ABISELECT(32,28), "sizeof(S14312C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14312C1)");
    check_field_offset(lv, s14312c1f0, 0, "S14312C1.s14312c1f0");
    check_field_offset(lv, s14312c1f1, ABISELECT(8,4), "S14312C1.s14312c1f1");
    check_field_offset(lv, s14312c1f2, ABISELECT(16,12), "S14312C1.s14312c1f2");
  }
}
static Arrange_To_Call_Me vS14312C1(Test_S14312C1, "S14312C1", ABISELECT(32,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5812C1  : S79C8_nt {
  virtual void  v1(); // _ZN7S5812C12v1Ev
  ~S5812C1(); // tgen
  S5812C1(); // tgen
};
//SIG(1 S5812C1) C1{ BC2{ m Fi[2]} v1}


void  S5812C1 ::v1(){vfunc_called(this, "_ZN7S5812C12v1Ev");}
S5812C1 ::~S5812C1(){ note_dtor("S5812C1", this);} // tgen
S5812C1 ::S5812C1(){ note_ctor("S5812C1", this);} // tgen

static void Test_S5812C1()
{
  extern Class_Descriptor cd_S5812C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S5812C1, buf);
    S5812C1 *dp, &lv = *(dp=new (buf) S5812C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S5812C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5812C1)");
    check_base_class_offset(lv, (S79C8_nt*), ABISELECT(8,4), "S5812C1");
    test_class_info(&lv, &cd_S5812C1);
    dp->~S5812C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5812C1(Test_S5812C1, "S5812C1", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S5812C1C1Ev();
extern void _ZN7S5812C1D1Ev();
Name_Map name_map_S5812C1[] = {
  NSPAIR(_ZN7S5812C1C1Ev),
  NSPAIR(_ZN7S5812C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S79C8_nt;
extern VTBL_ENTRY _ZTI8S79C8_nt[];
static Base_Class bases_S5812C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S79C8_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5812C1[];
extern void _ZN7S5812C12v1Ev();
static  VTBL_ENTRY vtc_S5812C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5812C1[0]),
  (VTBL_ENTRY)&_ZN7S5812C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S5812C1[];
extern  VTBL_ENTRY _ZTV7S5812C1[];
Class_Descriptor cd_S5812C1 = {  "S5812C1", // class name
  bases_S5812C1, 1,
  &(vtc_S5812C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S5812C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S5812C1),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17206C1  {
  int s17206c1f0[3];
  void *s17206c1f1;
  __tsi64 s17206c1f2;
  void  mf17206c1(); // _ZN8S17206C19mf17206c1Ev
};
//SIG(1 S17206C1) C1{ m Fi[3] Fp FL}


void  S17206C1 ::mf17206c1(){}

static void Test_S17206C1()
{
  {
    init_simple_test("S17206C1");
    S17206C1 lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S17206C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17206C1)");
    check_field_offset(lv, s17206c1f0, 0, "S17206C1.s17206c1f0");
    check_field_offset(lv, s17206c1f1, ABISELECT(16,12), "S17206C1.s17206c1f1");
    check_field_offset(lv, s17206c1f2, ABISELECT(24,16), "S17206C1.s17206c1f2");
  }
}
static Arrange_To_Call_Me vS17206C1(Test_S17206C1, "S17206C1", ABISELECT(32,24));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16928C1  {
  int s16928c1f0;
  void *s16928c1f1;
  int s16928c1f2;
  void *s16928c1f3;
  void  mf16928c1(); // _ZN8S16928C19mf16928c1Ev
};
//SIG(1 S16928C1) C1{ m Fi Fp Fi Fp}


void  S16928C1 ::mf16928c1(){}

static void Test_S16928C1()
{
  {
    init_simple_test("S16928C1");
    S16928C1 lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S16928C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16928C1)");
    check_field_offset(lv, s16928c1f0, 0, "S16928C1.s16928c1f0");
    check_field_offset(lv, s16928c1f1, ABISELECT(8,4), "S16928C1.s16928c1f1");
    check_field_offset(lv, s16928c1f2, ABISELECT(16,8), "S16928C1.s16928c1f2");
    check_field_offset(lv, s16928c1f3, ABISELECT(24,12), "S16928C1.s16928c1f3");
  }
}
static Arrange_To_Call_Me vS16928C1(Test_S16928C1, "S16928C1", ABISELECT(32,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10816C1  {
  char s10816c1f0[32];
  int s10816c1f1;
  void *s10816c1f2;
};
//SIG(1 S10816C1) C1{ Fc[32] Fi Fp}



static void Test_S10816C1()
{
  {
    init_simple_test("S10816C1");
    S10816C1 lv;
    check2(sizeof(lv), ABISELECT(48,40), "sizeof(S10816C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10816C1)");
    check_field_offset(lv, s10816c1f0, 0, "S10816C1.s10816c1f0");
    check_field_offset(lv, s10816c1f1, 32, "S10816C1.s10816c1f1");
    check_field_offset(lv, s10816c1f2, ABISELECT(40,36), "S10816C1.s10816c1f2");
  }
}
static Arrange_To_Call_Me vS10816C1(Test_S10816C1, "S10816C1", ABISELECT(48,40));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13528C1  {
  int s13528c1f0[5];
  char s13528c1f1[12];
};
//SIG(1 S13528C1) C1{ Fi[5] Fc[12]}



static void Test_S13528C1()
{
  {
    init_simple_test("S13528C1");
    S13528C1 lv;
    check2(sizeof(lv), 32, "sizeof(S13528C1)");
    check2(__alignof__(lv), 4, "__alignof__(S13528C1)");
    check_field_offset(lv, s13528c1f0, 0, "S13528C1.s13528c1f0");
    check_field_offset(lv, s13528c1f1, 20, "S13528C1.s13528c1f1");
  }
}
static Arrange_To_Call_Me vS13528C1(Test_S13528C1, "S13528C1", 32);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10664C1  {
  char s10664c1f0[2];
  int s10664c1f1;
  __tsi64 s10664c1f2;
};
//SIG(1 S10664C1) C1{ Fc[2] Fi FL}



static void Test_S10664C1()
{
  {
    init_simple_test("S10664C1");
    S10664C1 lv;
    check2(sizeof(lv), 16, "sizeof(S10664C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10664C1)");
    check_field_offset(lv, s10664c1f0, 0, "S10664C1.s10664c1f0");
    check_field_offset(lv, s10664c1f1, 4, "S10664C1.s10664c1f1");
    check_field_offset(lv, s10664c1f2, 8, "S10664C1.s10664c1f2");
  }
}
static Arrange_To_Call_Me vS10664C1(Test_S10664C1, "S10664C1", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17031C1  {
  int s17031c1f0[11];
  char s17031c1f1;
  void  mf17031c1(); // _ZN8S17031C19mf17031c1Ev
};
//SIG(1 S17031C1) C1{ m Fi[11] Fc}


void  S17031C1 ::mf17031c1(){}

static void Test_S17031C1()
{
  {
    init_simple_test("S17031C1");
    S17031C1 lv;
    check2(sizeof(lv), 48, "sizeof(S17031C1)");
    check2(__alignof__(lv), 4, "__alignof__(S17031C1)");
    check_field_offset(lv, s17031c1f0, 0, "S17031C1.s17031c1f0");
    check_field_offset(lv, s17031c1f1, 44, "S17031C1.s17031c1f1");
  }
}
static Arrange_To_Call_Me vS17031C1(Test_S17031C1, "S17031C1", 48);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6316C1  : S5266C29 {
  int s6316c1f0;
  virtual  ~S6316C1(); // _ZN7S6316C1D1Ev
  S6316C1(); // tgen
};
//SIG(1 S6316C1) C1{ BC2{ m} vd Fi}


 S6316C1 ::~S6316C1(){ note_dtor("S6316C1", this);}
S6316C1 ::S6316C1(){ note_ctor("S6316C1", this);} // tgen

static void Test_S6316C1()
{
  extern Class_Descriptor cd_S6316C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S6316C1, buf);
    S6316C1 *dp, &lv = *(dp=new (buf) S6316C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S6316C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6316C1)");
    check_base_class_offset(lv, (S5266C29*), 0, "S6316C1");
    check_field_offset(lv, s6316c1f0, ABISELECT(8,4), "S6316C1.s6316c1f0");
    test_class_info(&lv, &cd_S6316C1);
    dp->~S6316C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6316C1(Test_S6316C1, "S6316C1", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S6316C1C1Ev();
extern void _ZN7S6316C1D1Ev();
Name_Map name_map_S6316C1[] = {
  NSPAIR(_ZN7S6316C1C1Ev),
  NSPAIR(_ZN7S6316C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5266C29;
extern VTBL_ENTRY _ZTI8S5266C29[];
static Base_Class bases_S6316C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5266C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6316C1[];
extern void _ZN7S6316C1D1Ev();
extern void _ZN7S6316C1D0Ev();
static  VTBL_ENTRY vtc_S6316C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6316C1[0]),
  (VTBL_ENTRY)&_ZN7S6316C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6316C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S6316C1[];
extern  VTBL_ENTRY _ZTV7S6316C1[];
Class_Descriptor cd_S6316C1 = {  "S6316C1", // class name
  bases_S6316C1, 1,
  &(vtc_S6316C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S6316C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6316C1),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17319C1  {
  __tsi64 s17319c1f0;
  char s17319c1f1;
  __tsi64 s17319c1f2;
  void  mf17319c1(); // _ZN8S17319C19mf17319c1Ev
};
//SIG(1 S17319C1) C1{ m FL Fc FL}


void  S17319C1 ::mf17319c1(){}

static void Test_S17319C1()
{
  {
    init_simple_test("S17319C1");
    S17319C1 lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S17319C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17319C1)");
    check_field_offset(lv, s17319c1f0, 0, "S17319C1.s17319c1f0");
    check_field_offset(lv, s17319c1f1, 8, "S17319C1.s17319c1f1");
    check_field_offset(lv, s17319c1f2, ABISELECT(16,12), "S17319C1.s17319c1f2");
  }
}
static Arrange_To_Call_Me vS17319C1(Test_S17319C1, "S17319C1", ABISELECT(24,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21639C1  {
  int  :0;
  void  mf21639c1(); // _ZN8S21639C19mf21639c1Ev
  virtual  ~S21639C1(); // _ZN8S21639C1D1Ev
  S21639C1(); // tgen
};
//SIG(1 S21639C1) C1{ vd m Fi:0}


void  S21639C1 ::mf21639c1(){}
 S21639C1 ::~S21639C1(){ note_dtor("S21639C1", this);}
S21639C1 ::S21639C1(){ note_ctor("S21639C1", this);} // tgen

static void Test_S21639C1()
{
  extern Class_Descriptor cd_S21639C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S21639C1, buf);
    S21639C1 *dp, &lv = *(dp=new (buf) S21639C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S21639C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21639C1)");
    test_class_info(&lv, &cd_S21639C1);
    dp->~S21639C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21639C1(Test_S21639C1, "S21639C1", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S21639C1C1Ev();
extern void _ZN8S21639C1D1Ev();
Name_Map name_map_S21639C1[] = {
  NSPAIR(_ZN8S21639C1C1Ev),
  NSPAIR(_ZN8S21639C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21639C1[];
extern void _ZN8S21639C1D1Ev();
extern void _ZN8S21639C1D0Ev();
static  VTBL_ENTRY vtc_S21639C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21639C1[0]),
  (VTBL_ENTRY)&_ZN8S21639C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21639C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21639C1[];
extern  VTBL_ENTRY _ZTV8S21639C1[];
Class_Descriptor cd_S21639C1 = {  "S21639C1", // class name
  0,0,//no base classes
  &(vtc_S21639C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S21639C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21639C1),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18947C1  {
  int s18947c1f0;
  virtual  ~S18947C1(); // _ZN8S18947C1D1Ev
  virtual void  v1(); // _ZN8S18947C12v1Ev
  S18947C1(); // tgen
};
//SIG(1 S18947C1) C1{ vd v1 Fi}


 S18947C1 ::~S18947C1(){ note_dtor("S18947C1", this);}
void  S18947C1 ::v1(){vfunc_called(this, "_ZN8S18947C12v1Ev");}
S18947C1 ::S18947C1(){ note_ctor("S18947C1", this);} // tgen

static void Test_S18947C1()
{
  extern Class_Descriptor cd_S18947C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S18947C1, buf);
    S18947C1 *dp, &lv = *(dp=new (buf) S18947C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S18947C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18947C1)");
    check_field_offset(lv, s18947c1f0, ABISELECT(8,4), "S18947C1.s18947c1f0");
    test_class_info(&lv, &cd_S18947C1);
    dp->~S18947C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18947C1(Test_S18947C1, "S18947C1", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S18947C1C1Ev();
extern void _ZN8S18947C1D1Ev();
Name_Map name_map_S18947C1[] = {
  NSPAIR(_ZN8S18947C1C1Ev),
  NSPAIR(_ZN8S18947C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18947C1[];
extern void _ZN8S18947C1D1Ev();
extern void _ZN8S18947C1D0Ev();
extern void _ZN8S18947C12v1Ev();
static  VTBL_ENTRY vtc_S18947C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18947C1[0]),
  (VTBL_ENTRY)&_ZN8S18947C1D1Ev,
  (VTBL_ENTRY)&_ZN8S18947C1D0Ev,
  (VTBL_ENTRY)&_ZN8S18947C12v1Ev,
};
extern VTBL_ENTRY _ZTI8S18947C1[];
extern  VTBL_ENTRY _ZTV8S18947C1[];
Class_Descriptor cd_S18947C1 = {  "S18947C1", // class name
  0,0,//no base classes
  &(vtc_S18947C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S18947C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18947C1),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13486C1  {
  int s13486c1f0[4];
  __tsi64 s13486c1f1;
};
//SIG(1 S13486C1) C1{ Fi[4] FL}



static void Test_S13486C1()
{
  {
    init_simple_test("S13486C1");
    S13486C1 lv;
    check2(sizeof(lv), 24, "sizeof(S13486C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13486C1)");
    check_field_offset(lv, s13486c1f0, 0, "S13486C1.s13486c1f0");
    check_field_offset(lv, s13486c1f1, 16, "S13486C1.s13486c1f1");
  }
}
static Arrange_To_Call_Me vS13486C1(Test_S13486C1, "S13486C1", 24);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14569C1  {
  void *s14569c1f0[20];
};
//SIG(1 S14569C1) C1{ Fp[20]}



static void Test_S14569C1()
{
  {
    init_simple_test("S14569C1");
    S14569C1 lv;
    check2(sizeof(lv), ABISELECT(160,80), "sizeof(S14569C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14569C1)");
    check_field_offset(lv, s14569c1f0, 0, "S14569C1.s14569c1f0");
  }
}
static Arrange_To_Call_Me vS14569C1(Test_S14569C1, "S14569C1", ABISELECT(160,80));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

